<?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>28038</bug_id>
          
          <creation_ts>2009-08-05 22:37:55 -0700</creation_ts>
          <short_desc>WebSocket API implementation</short_desc>
          <delta_ts>2009-09-11 10:29:43 -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>WebCore Misc.</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fumitoshi Ukai">ukai</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>atwilson</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>137520</commentid>
    <comment_count>0</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-05 22:37:55 -0700</bug_when>
    <thetext>WebSocket API implementation based on SocketStreamHandle (cf. http://bugs.webkit.org/show_bug.cgi?id=28037)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138933</commentid>
    <comment_count>1</comment_count>
      <attachid>34548</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-11 03:05:19 -0700</bug_when>
    <thetext>Created attachment 34548
WebSocket API implementation.  depends on bug 28037


---
 20 files changed, 1277 insertions(+), 71 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138999</commentid>
    <comment_count>2</comment_count>
      <attachid>34548</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-11 09:51:40 -0700</bug_when>
    <thetext>Comment on attachment 34548
WebSocket API implementation.  depends on bug 28037

+    $(WebCore)/websockets \
     $(WebCore)/svg \
     $(WebCore)/websockets \

It&apos;s already there.

+	WebCore/websockets/WebSocketRequest.cpp \
+	WebCore/websockets/WebSocketRequest.h \
+	WebCore/websockets/WebSocketResponse.cpp \
+	WebCore/websockets/WebSocketResponse.h

This looks quite wrong - WebSocket does not use a request/response model, so such class names are highly misguiding.

+#if ENABLE(WEB_SOCKETS)
+#include &quot;JSWebSocket.h&quot;
+#include &quot;WebSocket.h&quot;

In some places, generated files are included without guards, and in others, with guards. The guards are only needed if the headers are not generated in ports that do not have this feature enabled - otherwise, similar guards within headers themselves would do the job.

There&apos;s never a need to protect e.g. WebSocket.h with external include guards.

+bool IsValidProtocolString(const WebCore::String&amp; protocol)

This should be static, and inside the WebCore namespace. We don&apos;t normally use anonymous namespaces.

+    // FIXME: need dispatchEvent?

Absolutely - it will dispatch to handlers installed via addEventListener(), as opposed to setting socket.onopen or similar.

+bool CheckWebSocketHandshake(const WebCore::WebSocketRequest &amp;req, const WebCore::WebSocketResponse&amp; resp)

Capitalization, argument naming, &apos;&amp;&apos; positioning. This should also be static.

There are many style issues in protocol implementation, I&apos;m not pointing out most, because they are the same as in other patches.

+            // FIXME: handle overflow.

Please do!

+KURL WebSocketRequest::URLoverHTTP() const

In WebKit style, this would be urlOverHTTP. I&apos;m not sure what this is use for though, hopefully an even better name can be found.

+    if (url().hasFragmentIdentifier()) {
+        builder.append(&quot;#&quot;);
+        builder.append(url().fragmentIdentifier());
+    }

What are fragment identifiers good for when using WebSockets? Seems that they should be forbidden, or dropped immediately when passed in.

+const char* WebSocketResponse::parseHeader(const char* start, const char* end, Vector&lt;std::pair&lt;String, String&gt; &gt;* headers)

Are WebSockets headers case sensitive? Otherwise, it may be better to use HTTPHeaderMap.

I didn&apos;t closely review all the code; please fix style, possibly using check-webkit-style script. The direction looks good to me, except for request/response classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139284</commentid>
    <comment_count>3</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-12 02:35:33 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 34548 [details])
&gt; +    $(WebCore)/websockets \
&gt;      $(WebCore)/svg \
&gt;      $(WebCore)/websockets \
&gt; 
&gt; It&apos;s already there.
&gt; 
&gt; +    WebCore/websockets/WebSocketRequest.cpp \
&gt; +    WebCore/websockets/WebSocketRequest.h \
&gt; +    WebCore/websockets/WebSocketResponse.cpp \
&gt; +    WebCore/websockets/WebSocketResponse.h
&gt; 
&gt; This looks quite wrong - WebSocket does not use a request/response model, so
&gt; such class names are highly misguiding.

Hmm, how about WebSocketClientHandshake and WebSocketServerHandshake?
What name do you recommend?

&gt; 
&gt; +#if ENABLE(WEB_SOCKETS)
&gt; +#include &quot;JSWebSocket.h&quot;
&gt; +#include &quot;WebSocket.h&quot;
&gt; 
&gt; In some places, generated files are included without guards, and in others,
&gt; with guards. The guards are only needed if the headers are not generated in
&gt; ports that do not have this feature enabled - otherwise, similar guards within
&gt; headers themselves would do the job.
&gt; 
&gt; There&apos;s never a need to protect e.g. WebSocket.h with external include guards.
&gt; 
&gt; +bool IsValidProtocolString(const WebCore::String&amp; protocol)
&gt; 
&gt; This should be static, and inside the WebCore namespace. We don&apos;t normally use
&gt; anonymous namespaces.
&gt; 
&gt; +    // FIXME: need dispatchEvent?
&gt; 
&gt; Absolutely - it will dispatch to handlers installed via addEventListener(), as
&gt; opposed to setting socket.onopen or similar.

Should I add the implementation in this patch, or ok in another patch?

&gt; 
&gt; +bool CheckWebSocketHandshake(const WebCore::WebSocketRequest &amp;req, const
&gt; WebCore::WebSocketResponse&amp; resp)
&gt; 
&gt; Capitalization, argument naming, &apos;&amp;&apos; positioning. This should also be static.
&gt; 
&gt; There are many style issues in protocol implementation, I&apos;m not pointing out
&gt; most, because they are the same as in other patches.
&gt; 
&gt; +            // FIXME: handle overflow.
&gt; 
&gt; Please do!

What is the good way to handle overflow?
May I close the connection if too long length is detected?

Do we need to set maximum length of m_buffer? (512KB or so?)

&gt; 
&gt; +KURL WebSocketRequest::URLoverHTTP() const
&gt; 
&gt; In WebKit style, this would be urlOverHTTP. I&apos;m not sure what this is use for
&gt; though, hopefully an even better name can be found.
&gt; 
&gt; +    if (url().hasFragmentIdentifier()) {
&gt; +        builder.append(&quot;#&quot;);
&gt; +        builder.append(url().fragmentIdentifier());
&gt; +    }
&gt; 
&gt; What are fragment identifiers good for when using WebSockets? Seems that they
&gt; should be forbidden, or dropped immediately when passed in.

Sure.
 
&gt; +const char* WebSocketResponse::parseHeader(const char* start, const char* end,
&gt; Vector&lt;std::pair&lt;String, String&gt; &gt;* headers)
&gt; 
&gt; Are WebSockets headers case sensitive? Otherwise, it may be better to use
&gt; HTTPHeaderMap.

Thanks for suggestion.

&gt; 
&gt; I didn&apos;t closely review all the code; please fix style, possibly using
&gt; check-webkit-style script. The direction looks good to me, except for
&gt; request/response classes.

I used check-webkit-style script, but it didn&apos;t catch some style issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139359</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-12 09:34:49 -0700</bug_when>
    <thetext>&gt; Hmm, how about WebSocketClientHandshake and WebSocketServerHandshake?
&gt; What name do you recommend?

That&apos;s less misleading. I was thinking of having a single class to handle handshake, not a pair of classes, but I didn&apos;t fully think it through, so it may be a bad idea.

&gt; &gt; +    // FIXME: need dispatchEvent?
&gt;
&gt; Should I add the implementation in this patch, or ok in another patch?

I think it would be easiest to do it now, while this incomplete code is clearly visible in a patch - hunting it down in trunk will be more difficult. Please also make a test for addEventListener-installed listeners (as usual, to be landed once the code becomes functional).

&gt; What is the good way to handle overflow?
&gt; May I close the connection if too long length is detected?

Sounds good to me. We probably want to log something to console in this case (and in other error cases that can occur in WebSocket lifetime).

&gt; Do we need to set maximum length of m_buffer? (512KB or so?)

It would probably be nice to use tryFastMalloc (to close the connection instead of crashing if the server sends too large frame). If we were to add an artificial limit on received frame size, I think that it should be impractically huge, dozens of megabytes on desktop platforms - all we want is to prevent crashing the browser with an incorrect frame size, right?

This doesn&apos;t seem like something that could happen during normal operation, it&apos;s just a protection from server bugs, and it makes DoS&apos;ing the browser via WebSocket protocol more difficult.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141818</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-20 23:01:01 -0700</bug_when>
    <thetext>Bugzilla has experienced amnesia today, please upload your updated patch again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142266</commentid>
    <comment_count>6</comment_count>
      <attachid>38465</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-23 19:53:03 -0700</bug_when>
    <thetext>Created attachment 38465
WebSocket API implementation. depends on bug 28037


---
 17 files changed, 1276 insertions(+), 78 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142284</commentid>
    <comment_count>7</comment_count>
      <attachid>38471</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-24 00:16:32 -0700</bug_when>
    <thetext>Created attachment 38471
WebSocket API implementation. depends on bug 28037


---
 16 files changed, 1278 insertions(+), 78 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142333</commentid>
    <comment_count>8</comment_count>
      <attachid>38471</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-24 11:01:28 -0700</bug_when>
    <thetext>Comment on attachment 38471
WebSocket API implementation. depends on bug 28037

+static bool IsValidProtocolString(const WebCore::String&amp; protocol)

Function names should start with lowercase letters.

+    if (!protocol.isEmpty() &amp;&amp; !IsValidProtocolString(protocol)) {

Would it make sense to move isEmpty() check to the helper function?

+WebSocketChannel::WebSocketChannel(ScriptExecutionContext* context, WebSocketChannelClient* client, const KURL&amp; url, const String&amp; protocol)
+        : m_context(context)
+        , m_client(client)
+        , m_handshaker(WebSocketHandshaker(url, protocol, context))
+        , m_buffer(0)
+        , m_buffer_size(0)

Please use 4 spaces for indentation.

+    static const char frame_type[1] = {&apos;\0&apos;};
+    static const char frame_end[1] = {&apos;\xff&apos;};

No need to have these static arrays - there&apos;s a version of Vector::append that takes const U&amp;.

+        virtual void didReceivedData(SocketStreamHandle*, const char*, int);

Typo: should be didReceiveData.

+    ASSERT(handle == m_handle.get() || !m_handle.get());

What are the situations when callbacks are called with null m_handle? Is it normal, or could it indicate problems?

+    KURL url(location);
+    m_handshaker.setURL(url);

I&apos;d write this in one line.

+void WebSocketChannel::authenticate(const String&amp; www_authenticate)

This will break the build, because www_authenticate is unused.

Also, this is wrong style, we use camelCase, not underlines for function and variable names. Please grep your patch with some expression like &quot;[a-ln-z]_&quot; to catch all cases, I won&apos;t point out each of them, as there are too many.

+#include &quot;WebSocketHandshaker.h&quot;

I had to google &quot;handshaker&quot;, and although it&apos;s a word indeed, it seems to have too many unrelated meanings :). I think that &quot;WebSocketHandshake&quot; would be just fine.

+#include &quot;StringBuilder.h&quot;
+
+#include &lt;wtf/Vector.h&gt;

No need for an empty line here.

+        return WebCore::String();

This code is already in WebCore namespace, no need for the prefix. Same issue below.

+bool WebSocketHandshaker::headerProcess(const HTTPHeaderMap&amp; headers)

Maybe this should be processHeader()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142541</commentid>
    <comment_count>9</comment_count>
      <attachid>38535</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-25 00:42:12 -0700</bug_when>
    <thetext>Created attachment 38535
WebSocket API implementation. depends on bug 28037


---
 18 files changed, 1295 insertions(+), 78 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142596</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-25 09:52:58 -0700</bug_when>
    <thetext>Coding style looks reasonably close to me now. One thing I did notice is that &quot;Websocket&quot; is still used in several places - since it&apos;s two words, it should be &quot;WebSocket&quot;.

The biggest challenge left is to discuss naming of data and methods in WebSocketHandshake - currently, there are several of names that seem difficult to understand or maybe even misleading. It&apos;s also not yet clear to me how redirects and authentication are supported. I&apos;ll need to read the relevant parts of the spec more closely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142776</commentid>
    <comment_count>11</comment_count>
      <attachid>38594</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-25 21:05:23 -0700</bug_when>
    <thetext>Created attachment 38594
WebSocket API implementation. depends on bug 28037


---
 18 files changed, 1357 insertions(+), 78 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143329</commentid>
    <comment_count>12</comment_count>
      <attachid>38723</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-28 02:31:09 -0700</bug_when>
    <thetext>Created attachment 38723
WebSocket API implementation


---
 18 files changed, 1358 insertions(+), 79 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143608</commentid>
    <comment_count>13</comment_count>
      <attachid>38806</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-31 03:21:18 -0700</bug_when>
    <thetext>Created attachment 38806
WebSocket API implementation


---
 18 files changed, 1382 insertions(+), 79 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143613</commentid>
    <comment_count>14</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-08-31 03:31:29 -0700</bug_when>
    <thetext>Thanks for review.

(In reply to comment #10)
&gt; Coding style looks reasonably close to me now. One thing I did notice is that
&gt; &quot;Websocket&quot; is still used in several places - since it&apos;s two words, it should
&gt; be &quot;WebSocket&quot;.
&gt; 
&gt; The biggest challenge left is to discuss naming of data and methods in
&gt; WebSocketHandshake - currently, there are several of names that seem difficult
&gt; to understand or maybe even misleading. It&apos;s also not yet clear to me how
&gt; redirects and authentication are supported. I&apos;ll need to read the relevant
&gt; parts of the spec more closely.

I&apos;ve updated a patch.
Could you tell me what data and methods are difficult to understand or misleading?  I&apos;ll fix them.

For authentication, I think we need some interface to obtain Credential for the relevant URL over http, to get AuthenticationChallenge from Authorization header or something like that.  What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143721</commentid>
    <comment_count>15</comment_count>
      <attachid>38806</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-08-31 14:16:30 -0700</bug_when>
    <thetext>Comment on attachment 38806
WebSocket API implementation

 #include &quot;JSWebKitPointConstructor.h&quot;
+#include &quot;JSWebSocketConstructor.h&quot;
 #include &quot;JSWorkerConstructor.h&quot;

JSWebSocketConstructor.h doesn&apos;t have an ENABLE(WEB_SOCKETS) include guard inside, so this will break compilation (please add the guard).

+#if ENABLE(WEB_SOCKETS)
+#include &quot;JSWebSocket.h&quot;
+#include &quot;WebSocket.h&quot;
+#endif

It would likely be easier to generate WebSocket files on all platforms than to maintain ENABLE(WEB_SOCKETS) around header includes.

+        void connect(const KURL&amp; url, ExceptionCode&amp;);
+        void connect(const KURL&amp; url, const String&amp; protocol, ExceptionCode&amp;);

Please remove url argument names - they do not convey additional information over the type name.

 void WebSocket::dispatchCloseEvent()
 {
-    // FIXME: implement this.
+    RefPtr&lt;Event&gt; evt = Event::create(eventNames().closeEvent, false, false);

According to the spec, the events for open and close should be queued, as opposed to dispatched synchronously. I&apos;m not sure if this spec provision makes sense, but we should fix either the code of the spec.

+    , m_handshake(WebSocketHandshake(url, protocol, context))

This constructs a WebSocketHandshake object, and then copies it in place. Please make WebSocketHandshake noncopyable by inheriting from WTF::Noncopyable, and either keep it in an OwnPtr, or construct it in place.

+        case WebSocketHandshake::Redirect:
+            LOG(Network, &quot;Redirect to %s&quot;, m_handshake.redirectLocation().utf8().data());
+            redirect(m_handshake.redirectLocation());
+            return;
+        case WebSocketHandshake::Authenticate:
+            authenticate(m_handshake.wwwAuthenticate());
+            return;

I&apos;d suggest removing code related to redirects and authentication for now. Support for redirect has been removed from the spec, and authentication doesn&apos;t seem to be in an implementable state either.

There is no much harm in reading the headers, but it doesn&apos;t seem likely to me that authentication support will be implemented in the form of a synchronous authenticate() function, so it is somewhat confusing.

+const char webSocketUpgradeHeader[] = &quot;Upgrade: WebSocket\r\n&quot;
+        &quot;Connection: Upgrade\r\n&quot;;

These are two headers, so the variable shouldn&apos;t make it look as if it&apos;s just one.

+static bool hadServerHandshake(const char* start, const char* end)

There are two problems with this function&apos;s name:
- due to the use of past tense, it sounds as if it consults some internal state for events that happened earlier;
- it&apos;s not clear what it means to have a server handshake (which turns out to be that it has been received in full).

This is a simple string processing function, a name like &quot;contains two CRLF pairs&quot; would be better. However, with a name like this, it becomes obvious that you can just use strnstr instead of a hand-rolled helper function.

+    builder.append(url().path());

Some functions in WebSocketHandshake use m_url, and others use url(). Please change it to use m_url consistently.

Same for host(), secure() and clientProtocol().

+    if (len &lt; sizeof(webSocketServerHandshakeHeader) - 1) {
+        LOG(Network, &quot;short response header len=%d&quot;, len);
+        return false;

This sounds more grave than it is - nothing is wrong with the header, it just hasn&apos;t been received fully yet. Maybe there is even no need for logging this.

+        LOG(Network, &quot;incomplete server handshake len=%d&quot;, len);

Same here. Perhaps it would be better to check this before parsing other headers?

+        LOG(Network, &quot;header process failed&quot;);

It is fine to have errors logged to console - but it is only available for WebKit developers. Some day, we should log these to Inspector console for the benefit of Web developers.

+size_t WebSocketHandshake::serverHandshakeLength() const
+{
+    return m_serverHandshakeLength;
+}

The need to have public accessors for low-level data members like this seems to indicate that the responsibilities between WebSocketHandshake and WebSocketChannel are divided less than perfectly. I don&apos;t have any specific suggestions though.

+KURL WebSocketHandshake::urlOverHTTP() const

I&apos;d call this httpURLForAuthenticationAndCookies() - a bit wordy, but this method isn&apos;t going to be used often.

+const char* WebSocketHandshake::parseHeader(const char* start, const char* end, HTTPHeaderMap* headers)

This function doesn&apos;t parse one header, it parses all of them, so a name like &quot;readHTTPHeaders()&quot; would be more appropriate. A comment should explain that it reads all headers except for the two predefined ones.

+                    LOG(Network, &quot;CF doesn&apos;t follow LF p=%p end=%p&quot;, p, end);

CR

+            LOG(Network, &quot;CR doesn&apos;t follow LF after value p=%p end=%p&quot;, p, end);

This sounds like too much detail - I think that it&apos;s sufficient for a WebKit developer to know that there&apos;s something wrong with handshake - from there, they could look at a tcpdump trace. Seems fine to leave this in for now, as both server and client are being developed at once, but the logging should be revisited in the future. 

+    LOG(Network, &quot;Unexpected end of header&quot;);

Is this even possible? We have already checked that there&apos;s CRLFCRLF before calling this function.

+            if (it-&gt;first == &quot;websocket-origin&quot;) {
+                if (!m_wsOrigin.isNull())
+                    return false;

Seems that this check is misplaced - there&apos;s always no more than one header with a given name in an HTTPHeaderMap, so uniqueness of headers should be verified before storing them in the map.

+        default:
+            LOG(Network, &quot;unexpected mode: %d&quot;, m_mode);
+            return false;

We usually leave the default clause out to let the compiler complain about missing cases. Then, we put ASSERT_NOT_REACHED below the switch (all cases should end with &quot;return&quot; for this to work).

+void WebSocketHandshake::handshake()

I&apos;d call this checkResponseHeaders().

+#include &quot;CString.h&quot;

CString is only used as a return value, I think that a forward declaration would be sufficient.

+        WebSocketHandshake(const KURL&amp;, const String&amp; protocol, ScriptExecutionContext* context);

Please leave out &quot;context&quot; (but not &quot;protocol&quot;).

+        void setURL(const KURL&amp; url);

Please leave out &quot;url&quot;. There are many cases like this below, I won&apos;t enumerate them all.

Almost all of the comments above are pretty straightforward - the only major comment I had was about dividing responsibilities between handshake and channel classes. I don&apos;t have any ideas right now, but I&apos;ll try to think about this more, and if you have any, please don&apos;t hesitate to make suggestions, of course.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143789</commentid>
    <comment_count>16</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-01 01:30:10 -0700</bug_when>
    <thetext>Thanks for review.

(In reply to comment #15)

&gt; +#if ENABLE(WEB_SOCKETS)
&gt; +#include &quot;JSWebSocket.h&quot;
&gt; +#include &quot;WebSocket.h&quot;
&gt; +#endif
&gt; 
&gt; It would likely be easier to generate WebSocket files on all platforms than to
&gt; maintain ENABLE(WEB_SOCKETS) around header includes.

Other features in the same file has guard. Is it ok to remove the guard?

&gt;  void WebSocket::dispatchCloseEvent()
&gt;  {
&gt; -    // FIXME: implement this.
&gt; +    RefPtr&lt;Event&gt; evt = Event::create(eventNames().closeEvent, false, false);
&gt; 
&gt; According to the spec, the events for open and close should be queued, as
&gt; opposed to dispatched synchronously. I&apos;m not sure if this spec provision makes
&gt; sense, but we should fix either the code of the spec.

Ah, that&apos;s right. I think event for message also should be queued.

&gt; +        case WebSocketHandshake::Redirect:
&gt; +            LOG(Network, &quot;Redirect to %s&quot;,
&gt; m_handshake.redirectLocation().utf8().data());
&gt; +            redirect(m_handshake.redirectLocation());
&gt; +            return;
&gt; +        case WebSocketHandshake::Authenticate:
&gt; +            authenticate(m_handshake.wwwAuthenticate());
&gt; +            return;
&gt; 
&gt; I&apos;d suggest removing code related to redirects and authentication for now.
&gt; Support for redirect has been removed from the spec, and authentication doesn&apos;t
&gt; seem to be in an implementable state either.

Thanks for pointing out redirect has been removed from the spec.
I removed code related to redirects and authentication for now.

&gt; +static bool hadServerHandshake(const char* start, const char* end)
&gt; 
&gt; There are two problems with this function&apos;s name:
&gt; - due to the use of past tense, it sounds as if it consults some internal state
&gt; for events that happened earlier;
&gt; - it&apos;s not clear what it means to have a server handshake (which turns out to
&gt; be that it has been received in full).
&gt; 
&gt; This is a simple string processing function, a name like &quot;contains two CRLF
&gt; pairs&quot; would be better. However, with a name like this, it becomes obvious that
&gt; you can just use strnstr instead of a hand-rolled helper function.

I don&apos;t think strnstr exists in common.  I found memmem, but it is GNU extension.
Renamed containsTwoCRLFPairs().


&gt; +        LOG(Network, &quot;incomplete server handshake len=%d&quot;, len);
&gt; 
&gt; Same here. Perhaps it would be better to check this before parsing other
&gt; headers?

not sure. by checking upgrade header and connection header first, we can find bad handshake as soon as possible.

&gt; +        LOG(Network, &quot;header process failed&quot;);
&gt; 
&gt; It is fine to have errors logged to console - but it is only available for
&gt; WebKit developers. Some day, we should log these to Inspector console for the
&gt; benefit of Web developers.

Yes, that would be great. Will do in later.

&gt; +size_t WebSocketHandshake::serverHandshakeLength() const
&gt; +{
&gt; +    return m_serverHandshakeLength;
&gt; +}
&gt; 
&gt; The need to have public accessors for low-level data members like this seems to
&gt; indicate that the responsibilities between WebSocketHandshake and
&gt; WebSocketChannel are divided less than perfectly. I don&apos;t have any specific
&gt; suggestions though.

Changed to return header length in readServerHandshake() (or return -1 if it has not receive full response header).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143790</commentid>
    <comment_count>17</comment_count>
      <attachid>38849</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-01 01:31:17 -0700</bug_when>
    <thetext>Created attachment 38849
WebSocket API implementation


---
 18 files changed, 1352 insertions(+), 84 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143896</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-01 08:09:44 -0700</bug_when>
    <thetext>&gt; I don&apos;t think strnstr exists in common. 

When some C library extension seems useful enough to use in WebKit, we usually add it to StringExtras in wtf (this is how we can use snprintf, for example).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144115</commentid>
    <comment_count>19</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-01 22:23:43 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; I don&apos;t think strnstr exists in common. 
&gt; 
&gt; When some C library extension seems useful enough to use in WebKit, we usually
&gt; add it to StringExtras in wtf (this is how we can use snprintf, for example).

I see.
File a bug as http://bugs.webkit.org/show_bug.cgi?id=28901</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144116</commentid>
    <comment_count>20</comment_count>
      <attachid>38911</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-01 22:24:14 -0700</bug_when>
    <thetext>Created attachment 38911
WebSocket API implementation


---
 18 files changed, 1336 insertions(+), 84 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144261</commentid>
    <comment_count>21</comment_count>
      <attachid>38911</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-02 12:06:42 -0700</bug_when>
    <thetext>Comment on attachment 38911
WebSocket API implementation

&gt; Other features in the same file has guard. Is it ok to remove the guard?

Looking at EventSource for example, I see that EventSource.idl is not present in WebCore.gypi project file. So, Chromium build would break if not for this ifdef in JSEventTarget.cpp.

However, it is generally better to generate idl files on all platforms, and avoid the need for ifdefs around includes. Given that there is a lot of precedent for ifdefs, this is not something I ask to fix right away, it was just a suggestion for making he life a little easier.

&gt; I removed code related to redirects and authentication for now.

I still see m_wwwAuthenticate and related code in the latest patch, as well as Authenticate enum value. Do you think it&apos;s best to keep them for now? I&apos;d just make sure that the connection fails if authentication is requested, and remove the code.

&gt; not sure. by checking upgrade header and connection header first, we can find
&gt; bad handshake as soon as possible.

Ok.

+    class CString;

No need to forward declare CString in WebSocketHandshake.h, there&apos;s already a forward declaration in PlatformString.h that is included from it.

+    typedef void (WebSocket::*Method)(PassRefPtr&lt;Event&gt;);

The methods don&apos;t take ownership of the event, so a plain Event* should be used for their arguments.

+    static PassRefPtr&lt;ProcessWebSocketEventTask&gt; create(PassRefPtr&lt;WebSocket&gt; webSocket, Method method, PassRefPtr&lt;Event&gt; event)
+    {
+        return new ProcessWebSocketEventTask(webSocket, method, event);
+    }

This will leak - the object is created with initial refcount of 1, and PassRefPtr constructor will referenced it again. Is this modeled after some existing code?

The right way to return a new object is by using adoptRef.

+    virtual ~ProcessWebSocketEventTask() { }

This is equivalent to what a compiler would have generated, and thus should be removed.

I see that you also changed port numbers to match updated spec, thanks! This is pretty close to being landed, hopefully we only need one last iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144369</commentid>
    <comment_count>22</comment_count>
      <attachid>38961</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-02 19:07:49 -0700</bug_when>
    <thetext>Created attachment 38961
WebSocket API implementation


---
 18 files changed, 1310 insertions(+), 84 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144374</commentid>
    <comment_count>23</comment_count>
      <attachid>38963</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-02 19:25:32 -0700</bug_when>
    <thetext>Created attachment 38963
WebSocket API implementation


---
 18 files changed, 1309 insertions(+), 84 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144593</commentid>
    <comment_count>24</comment_count>
      <attachid>38963</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-03 13:51:33 -0700</bug_when>
    <thetext>Comment on attachment 38963
WebSocket API implementation

&gt; +        OwnPtr&lt;char&gt; m_buffer;
&gt; +        int m_bufferSize;

The buffer is allocated with tryFastMalloc, but freed with delete, which will cause problems on some configurations - in debug mode, it will be allocated with malloc, but freed with delete. OwnPtr is not suitable for holding arrays of data, I think that you may need to work with plain pointers here.

I should have noticed this earlier, sorry!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144608</commentid>
    <comment_count>25</comment_count>
      <attachid>38963</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-09-03 15:26:33 -0700</bug_when>
    <thetext>Comment on attachment 38963
WebSocket API implementation

OwnArrayPtr can be used if you use &quot;new (nothrow) char[]&quot; to allocate the memory, but not if you use tryFastMalloc to allocate the memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144692</commentid>
    <comment_count>26</comment_count>
      <attachid>39039</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-03 22:27:17 -0700</bug_when>
    <thetext>Created attachment 39039
WebSocket API implementation


---
 18 files changed, 1312 insertions(+), 84 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144693</commentid>
    <comment_count>27</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-03 22:28:23 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 38963 [details])
&gt; &gt; +        OwnPtr&lt;char&gt; m_buffer;
&gt; &gt; +        int m_bufferSize;
&gt; 
&gt; The buffer is allocated with tryFastMalloc, but freed with delete, which will
&gt; cause problems on some configurations - in debug mode, it will be allocated
&gt; with malloc, but freed with delete. OwnPtr is not suitable for holding arrays
&gt; of data, I think that you may need to work with plain pointers here.
&gt; 
&gt; I should have noticed this earlier, sorry!

Oh, thanks for pointing it out!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144694</commentid>
    <comment_count>28</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-03 22:32:50 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 38963 [details])
&gt; OwnArrayPtr can be used if you use &quot;new (nothrow) char[]&quot; to allocate the
&gt; memory, but not if you use tryFastMalloc to allocate the memory.

Thanks for info.
I found OwnFastMallocPtr and it can be used with tryFastMalloc, right?
But it doesn&apos;t have set(), so I use plain char* and fastFree().

it might be better to add set() and/or clear() in OwnFastMallocPtr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144695</commentid>
    <comment_count>29</comment_count>
      <attachid>39039</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-03 22:36:20 -0700</bug_when>
    <thetext>Comment on attachment 39039
WebSocket API implementation

&gt; +    if (m_buffer)
&gt; +        fastFree(m_buffer);

It&apos;s safe to call fastFree on a null pointer (just like it&apos;s safe to call free() or delete).

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144764</commentid>
    <comment_count>30</comment_count>
      <attachid>39045</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-04 02:10:46 -0700</bug_when>
    <thetext>Created attachment 39045
WebSocket API implementation


---
 18 files changed, 1311 insertions(+), 84 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145092</commentid>
    <comment_count>31</comment_count>
      <attachid>39045</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-06 22:05:19 -0700</bug_when>
    <thetext>Comment on attachment 39045
WebSocket API implementation

Rejecting patch 39045 from commit-queue.  This patch will require manual commit.

[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;] failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145108</commentid>
    <comment_count>32</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-07 00:16:15 -0700</bug_when>
    <thetext>fast/dom/prototype-inheritance-2.html -&gt; failed

That looks like a real failure.  The patch is likely missing some updated results.  Unless you can find a committer to update them when landing, you&apos;ll need to post a new patch with all updated results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145115</commentid>
    <comment_count>33</comment_count>
      <attachid>39134</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-07 01:18:35 -0700</bug_when>
    <thetext>Created attachment 39134
WebSocket API implementation


---
 23 files changed, 1336 insertions(+), 84 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145116</commentid>
    <comment_count>34</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-07 01:21:45 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; fast/dom/prototype-inheritance-2.html -&gt; failed
&gt; 
&gt; That looks like a real failure.  The patch is likely missing some updated
&gt; results.  Unless you can find a committer to update them when landing, you&apos;ll
&gt; need to post a new patch with all updated results.

Sorry!
I found 4 layout tests failed on mac, but it&apos;s ok to rebaseline them (just because WebSocket constructor becomes available in window object).
Posted a new patch with all updated results.
I could pass all 11199 test cases succeeded on mac with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145188</commentid>
    <comment_count>35</comment_count>
      <attachid>39134</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-07 10:02:29 -0700</bug_when>
    <thetext>Comment on attachment 39134
WebSocket API implementation

Clearing flags on attachment: 39134

Committed r48121: &lt;http://trac.webkit.org/changeset/48121&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145189</commentid>
    <comment_count>36</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-07 10:02:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145242</commentid>
    <comment_count>37</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-09-07 15:49:53 -0700</bug_when>
    <thetext>Reverted this patch because it broke the windows build.

We should not check this in until we have build implementations for all platforms, since WEB_SOCKETS is enabled on all platforms.

And, of course, you should stick around to make sure the build goes green after landing patches :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145269</commentid>
    <comment_count>38</comment_count>
      <attachid>39172</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-07 22:56:02 -0700</bug_when>
    <thetext>Created attachment 39172
WebSocket API implementation. (add vcproj build)


---
 27 files changed, 1580 insertions(+), 97 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145270</commentid>
    <comment_count>39</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-07 22:59:04 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; Reverted this patch because it broke the windows build.
&gt; 
&gt; We should not check this in until we have build implementations for all
&gt; platforms, since WEB_SOCKETS is enabled on all platforms.
&gt; 
&gt; And, of course, you should stick around to make sure the build goes green after
&gt; landing patches :)

I think I fixed the windows build.
Is there any other build I need to check?
Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145409</commentid>
    <comment_count>40</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-09-08 10:04:47 -0700</bug_when>
    <thetext>The windows build was the only one that was failing, I believe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145436</commentid>
    <comment_count>41</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-08 10:37:54 -0700</bug_when>
    <thetext>&gt; We should not check this in until we have build implementations for all
&gt; platforms, since WEB_SOCKETS is enabled on all platforms.

I&apos;m confused - why is it enabled on all platforms? If that&apos;s the case, then all build systems need to be updated. The intention was to postpone enabling it on other platforms.

My guess is that Windows build was broken because files were added in DerivedSources.cpp. It&apos;s fine to update the Windows project file, but I&apos;m worried whether it was done for the right reasons now, and I&apos;m worried if other platforms are still affected.

Maybe some platforms also cannot find non-generated include files from the new websockets directory? In this case, at least search paths will need to be updated for all of them.

+        Fix windows build to r48121, that was reverted by r48137.

Since the patch was already reverted, this is not a build fix any more. This line can be just removed from all ChangeLogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145514</commentid>
    <comment_count>42</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-09-08 13:25:38 -0700</bug_when>
    <thetext>FYI, ENABLE_WEB_SOCKETS is enabled on every platform (from build-webkit):
    { option =&gt; &quot;web-sockets&quot;, desc =&gt; &quot;Toggle Web Sockets support&quot;,
      define =&gt; &quot;ENABLE_WEB_SOCKETS&quot;, default =&gt; 1, value=&gt; \$webSocketsSupport },

Also, part of this change updates test expections:

* fast/dom/Window/window-properties-expected.txt:
&gt; +        * fast/dom/prototype-inheritance-2-expected.txt:
&gt; +        * fast/dom/prototype-inheritance-expected.txt:
&gt; +        * fast/js/global-constructors-expected.txt:

You can&apos;t do that if the feature is only enabled on some platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145583</commentid>
    <comment_count>43</comment_count>
      <attachid>39226</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-08 16:24:42 -0700</bug_when>
    <thetext>Created attachment 39226
WebSocket API implementation. (add vcproj build)


---
 27 files changed, 1518 insertions(+), 90 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145593</commentid>
    <comment_count>44</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-08 17:05:36 -0700</bug_when>
    <thetext>&gt; You can&apos;t do that if the feature is only enabled on some platforms.

Actually, these tests are skipped on Qt. Not on Windows, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146069</commentid>
    <comment_count>45</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-09 20:07:49 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; &gt; We should not check this in until we have build implementations for all
&gt; &gt; platforms, since WEB_SOCKETS is enabled on all platforms.
&gt; 
&gt; I&apos;m confused - why is it enabled on all platforms? If that&apos;s the case, then all
&gt; build systems need to be updated. The intention was to postpone enabling it on
&gt; other platforms.
&gt; 
&gt; My guess is that Windows build was broken because files were added in
&gt; DerivedSources.cpp. It&apos;s fine to update the Windows project file, but I&apos;m
&gt; worried whether it was done for the right reasons now, and I&apos;m worried if other
&gt; platforms are still affected.
&gt; 
&gt; Maybe some platforms also cannot find non-generated include files from the new
&gt; websockets directory? In this case, at least search paths will need to be
&gt; updated for all of them.
&gt; 
&gt; +        Fix windows build to r48121, that was reverted by r48137.
&gt; 
&gt; Since the patch was already reverted, this is not a build fix any more. This
&gt; line can be just removed from all ChangeLogs.

Fixed ChangeLogs.
Is there anything I need to fix more?(In reply to comment #41)
&gt; &gt; We should not check this in until we have build implementations for all
&gt; &gt; platforms, since WEB_SOCKETS is enabled on all platforms.
&gt; 
&gt; I&apos;m confused - why is it enabled on all platforms? If that&apos;s the case, then all
&gt; build systems need to be updated. The intention was to postpone enabling it on
&gt; other platforms.
&gt; 
&gt; My guess is that Windows build was broken because files were added in
&gt; DerivedSources.cpp. It&apos;s fine to update the Windows project file, but I&apos;m
&gt; worried whether it was done for the right reasons now, and I&apos;m worried if other
&gt; platforms are still affected.
&gt; 
&gt; Maybe some platforms also cannot find non-generated include files from the new
&gt; websockets directory? In this case, at least search paths will need to be
&gt; updated for all of them.
&gt; 
&gt; +        Fix windows build to r48121, that was reverted by r48137.
&gt; 
&gt; Since the patch was already reverted, this is not a build fix any more. This
&gt; line can be just removed from all ChangeLogs.

Fixed ChangeLogs.
Is there anything I need to fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146082</commentid>
    <comment_count>46</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-09 22:36:45 -0700</bug_when>
    <thetext>Which of the two patches that are marked for review is the right one? Please don&apos;t forget to obsolete old patches (I previously said that review- flags should not be removed when obsoleting, but obsoleting is important).

Since one of the build problems was that websockets/WebSocket.h could not be found, you likely need to add this directory to Qt and wx search paths. Also, per comment 42, this feature is enabled on all platforms, so you need to either disable it for Qt and wx, or to fully update their project files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146151</commentid>
    <comment_count>47</comment_count>
      <attachid>39338</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-10 03:21:30 -0700</bug_when>
    <thetext>Created attachment 39338
WebSocket API implementation. (add vcproj build, fix qt and wx build)


---
 30 files changed, 1538 insertions(+), 94 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146153</commentid>
    <comment_count>48</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2009-09-10 03:26:34 -0700</bug_when>
    <thetext>(In reply to comment #46)
&gt; Which of the two patches that are marked for review is the right one? Please
&gt; don&apos;t forget to obsolete old patches (I previously said that review- flags
&gt; should not be removed when obsoleting, but obsoleting is important).

Sorry. Obsoleted old patches.  Do I need to obsolete a patch that was reverted, too?

&gt; Since one of the build problems was that websockets/WebSocket.h could not be
&gt; found, you likely need to add this directory to Qt and wx search paths. Also,
&gt; per comment 42, this feature is enabled on all platforms, so you need to either
&gt; disable it for Qt and wx, or to fully update their project files.

Added websockets directory in Qt and wx build systems.
Does it fix the build issues?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146337</commentid>
    <comment_count>49</comment_count>
      <attachid>39338</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-10 14:24:05 -0700</bug_when>
    <thetext>Comment on attachment 39338
WebSocket API implementation. (add vcproj build, fix qt and wx build)

I can&apos;t tell if it does, let&apos;s try landing this again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146393</commentid>
    <comment_count>50</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-10 16:28:43 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/projects/webkit/changeset/48270&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146629</commentid>
    <comment_count>51</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-11 10:29:43 -0700</bug_when>
    <thetext>Windows build fix in&lt;http://trac.webkit.org/projects/webkit/changeset/48282&gt;, crash on launch fix in &lt;http://trac.webkit.org/projects/webkit/changeset/48285&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34548</attachid>
            <date>2009-08-11 03:05:19 -0700</date>
            <delta_ts>2009-08-23 19:52:58 -0700</delta_ts>
            <desc>WebSocket API implementation.  depends on bug 28037</desc>
            <filename>bug-28038-20090811190517.patch</filename>
            <type>text/plain</type>
            <size>61411</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTNjMjY5MC4uNzU0NGVlZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAorMjAwOS0wOC0xMSAgRnVtaXRvc2hpIFVr
YWkgIDx1a2FpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZWJTb2NrZXQgQVBJIGltcGxlbWVudGF0aW9uLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgwMzgKKworICAgICAgICBB
ZGQgYnVpbGQgc3lzdGVtcyBvbmx5IGZvciBHTlVtYWtlZmlsZS5hbSBhbmQgV2ViQ29yZS54Y29k
ZXByb2ogbm93LgorICAgICAgICBPdGhlciBidWlsZCBzeXN0ZW1zIHdpbGwgYmUgdXBkYXRlZCBv
bmNlIHRoZSBjb2RlIGlzIGZ1bmN0aW9uYWwuCisgICAgICAgIERlcGVuZHMgb24gcGF0Y2ggb2Yg
YnVnIDI4MDM3LgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojp3
ZWJTb2NrZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjp0b0V2ZW50VGFyZ2V0KToK
KyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6dG9XZWJTb2NrZXQpOgorICAgICAg
ICAqIGRvbS9FdmVudFRhcmdldC5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKyAg
ICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXQ6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpzZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0OjpidWZmZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRp
ZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2Fn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENsb3NlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldDo6ZGlzcGF0Y2hPcGVuRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0OjpkaXNwYXRjaE1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXQ6OmRpc3BhdGNoQ2xvc2VFdmVudCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldDo6KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2V0T25v
cGVuKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6b25vcGVuKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldDo6c2V0T25tZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldDo6b25tZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2V0T25jbG9z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Om9uY2xvc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Ojp0b1dlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGVyZWZF
dmVudFRhcmdldCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDog
QWRkZWQuCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6IEFkZGVkLgor
ICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldFJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiB3ZWJzb2NrZXRzL1dlYlNvY2tldFJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgICogd2Vic29j
a2V0cy9XZWJTb2NrZXRSZXNwb25zZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMv
V2ViU29ja2V0UmVzcG9uc2UuaDogQWRkZWQuCisKIDIwMDktMDgtMTEgIFNpbW9uIEhhdXNtYW5u
ICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEhvbGdl
ciBGcmV5dGhlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwIGIvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggYjAzMTFlMi4uYmFmYTllNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5jcHAKQEAgLTMzMyw2ICszMzMsNyBAQAogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTTWF0cml4LmNw
cCIKICNpbmNsdWRlICJKU1dlYktpdFBvaW50LmNwcCIKICNpbmNsdWRlICJKU1dlYktpdFRyYW5z
aXRpb25FdmVudC5jcHAiCisjaW5jbHVkZSAiSlNXZWJTb2NrZXQuY3BwIgogI2luY2x1ZGUgIkpT
V2hlZWxFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNXb3JrZXIuY3BwIgogI2luY2x1ZGUgIkpTV29y
a2VyQ29udGV4dC5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNzg4YzVlZS4uNmYzOTk2ZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQpAQCAtNDEsNiArNDEsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYkNvcmUp
L3htbCBcCiAgICAgJChXZWJDb3JlKS93bWwgXAogICAgICQoV2ViQ29yZSkvd29ya2VycyBcCisg
ICAgJChXZWJDb3JlKS93ZWJzb2NrZXRzIFwKICAgICAkKFdlYkNvcmUpL3N2ZyBcCiAgICAgJChX
ZWJDb3JlKS93ZWJzb2NrZXRzIFwKICMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDVjYzFmZDYuLjk5NGM3OTggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQpAQCAtMzE1NSw3ICszMTU1LDE0IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYlNvY2tldENvbnN0cnVjdG9yLmggXAogCVdlYkNvcmUvYmluZGluZ3Mv
anMvSlNXZWJTb2NrZXRDdXN0b20uY3BwIFwKIAlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcCBcCi0JV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisJV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAgXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggXAorCVdlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggXAorCVdlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRSZXF1ZXN0LmNwcCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldFJl
cXVlc3QuaCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldFJlc3BvbnNlLmNwcCBcCisJ
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldFJlc3BvbnNlLmgKIAogZWxzZQogd2ViY29yZV9j
cHBmbGFncyArPSAtREVOQUJMRV9XRUJfU09DS0VUUz0wCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA3NTNkYzcuLjY3YzA4OWEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MTksNiArODE5LDEzIEBACiAJCTRF
MTk1OTJFMEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RTE5NTkyODBBMzlEQUNDMDAyMjBGRTUg
LyogTWVkaWFRdWVyeUV4cC5oICovOyB9OwogCQk1MTAxODQ2OTBCMDg2MDJBMDA0QTgyNUYgLyog
Q2FjaGVkUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTAxODQ2QTBCMDg2MDJBMDA0
QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAg
Ki87IH07CisJCTUxMEQ0QTRFMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTQ3
MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLzsgfTsKKwkJNTEwRDRB
NEYxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAv
KiBXZWJTb2NrZXRDaGFubmVsLmggKi87IH07CisJCTUxMEQ0QTUwMTAzMTc3QTIwMDQ5RUE1NCAv
KiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTBENEE0OTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hh
bm5lbENsaWVudC5oICovOyB9OworCQk1MTBENEE1MTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29j
a2V0UmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTBENEE0QTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0UmVxdWVzdC5jcHAgKi87
IH07CisJCTUxMEQ0QTUyMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRSZXF1ZXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEE0QjEwMzE3
N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0UmVxdWVzdC5oICovOyB9OworCQk1MTBENEE1MzEwMzE3
N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0UmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBNEMxMDMxNzdBMjAwNDlFQTU0IC8qIFdl
YlNvY2tldFJlc3BvbnNlLmNwcCAqLzsgfTsKKwkJNTEwRDRBNTQxMDMxNzdBMjAwNDlFQTU0IC8q
IFdlYlNvY2tldFJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTBENEE0RDEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0UmVzcG9uc2Uu
aCAqLzsgfTsKIAkJNTExNkQ5NzcwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExNkQ5NzUw
Q0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMUYyMzE3MERDMTYwREEwMDRGMDAzMiAv
KiBMb2NhbFN0b3JhZ2VUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMUYyMzEzMERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNr
LmNwcCAqLzsgfTsKIAkJNTExRjIzMTgwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRh
c2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYy
MzE0MERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmggKi87IH07CkBAIC01ODQ5
LDYgKzU4NTYsMTMgQEAKIAkJNEUxOTU5MjgwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlF
eHAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUXVlcnlFeHAuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8q
IENhY2hlZFBhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUGFn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgy
NUYgLyogQ2FjaGVkUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDYWNoZWRQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRBNDcx
MDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxMEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFu
bmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldENoYW5uZWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0
IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTBENEE0QTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0UmVxdWVzdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRSZXF1ZXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRBNEIxMDMxNzdBMjAwNDlFQTU0IC8q
IFdlYlNvY2tldFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
U29ja2V0UmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEE0QzEw
MzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0UmVzcG9uc2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0UmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MTBENEE0RDEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0UmVz
cG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0UmVzcG9u
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExNkQ5NzUwQ0YxNzdCRDAwQzJC
ODREIC8qIERhdGFiYXNlRGV0YWlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEYXRhYmFzZURldGFpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjIz
MTMwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxTdG9yYWdlVGFzay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxMUYyMzE0MERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3Jh
Z2VUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsU3RvcmFnZVRh
c2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzAwLDYgKzEwMzE0LDEzIEBA
CiAJCTUxOEEzNEJEMTAyNkM4MzEwMDFCNjg5NiAvKiB3ZWJzb2NrZXRzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MTBENEE0NzEwMzE3N0EyMDA0OUVB
NTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8sCisJCQkJNTEwRDRBNDgxMDMxNzdBMjAwNDlF
QTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCAqLywKKwkJCQk1MTBENEE0OTEwMzE3N0EyMDA0OUVB
NTQgLyogV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oICovLAorCQkJCTUxMEQ0QTRBMTAzMTc3QTIw
MDQ5RUE1NCAvKiBXZWJTb2NrZXRSZXF1ZXN0LmNwcCAqLywKKwkJCQk1MTBENEE0QjEwMzE3N0Ey
MDA0OUVBNTQgLyogV2ViU29ja2V0UmVxdWVzdC5oICovLAorCQkJCTUxMEQ0QTRDMTAzMTc3QTIw
MDQ5RUE1NCAvKiBXZWJTb2NrZXRSZXNwb25zZS5jcHAgKi8sCisJCQkJNTEwRDRBNEQxMDMxNzdB
MjAwNDlFQTU0IC8qIFdlYlNvY2tldFJlc3BvbnNlLmggKi8sCiAJCQkJNTE4QTM0QkUxMDI2Qzgz
MTAwMUI2ODk2IC8qIFdlYlNvY2tldC5jcHAgKi8sCiAJCQkJNTE4QTM0QkYxMDI2QzgzMTAwMUI2
ODk2IC8qIFdlYlNvY2tldC5oICovLAogCQkJCTUxOEEzNEMwMTAyNkM4MzEwMDFCNjg5NiAvKiBX
ZWJTb2NrZXQuaWRsICovLApAQCAtMTcxODUsNiArMTcyMDYsMTAgQEAKIAkJCQk0OTQ4NEZDODEw
MkNGMjNDMDAxODdERDMgLyogQ2FudmFzUGl4ZWxBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDk0ODRGQ0IxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDk0ODRGQ0UxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1N0eWxl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTBENEE0RjEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29j
a2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRBNTAxMDMxNzdBMjAwNDlFQTU0
IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMEQ0QTUy
MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTBENEE1NDEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0UmVzcG9uc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtMTkyMzYsNiArMTkyNjEsOSBAQAogCQkJCTQ5NDg0RkM3MTAyQ0YyM0MwMDE4
N0REMyAvKiBDYW52YXNQaXhlbEFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5NDg0RkNB
MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDk0ODRGQ0QxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1N0eWxlLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTUxMEQ0QTRFMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRD
aGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMEQ0QTUxMTAzMTc3QTIwMDQ5RUE1NCAv
KiBXZWJTb2NrZXRSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMEQ0QTUzMTAzMTc3
QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggOTc5ODk3Mi4uYjM3ZmY1
NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTQ4LDYg
KzQ4LDcgQEAKICNpbmNsdWRlICJKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTV2ViS2l0UG9p
bnRDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTV2ViU29ja2V0Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJKU1dvcmtlckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNYTUxIdHRwUmVxdWVz
dENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuaCIK
QEAgLTQ4Niw2ICs0ODcsMTMgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2hhcmVkV29ya2VyKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRT
KQorSlNWYWx1ZSBKU0RPTVdpbmRvdzo6d2ViU29ja2V0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QK
K3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNXZWJTb2NrZXRDb25zdHJ1Y3Rvcj4o
ZXhlYywgdGhpcyk7Cit9CisjZW5kaWYKKwogLy8gQ3VzdG9tIGZ1bmN0aW9ucwogCiAvLyBIZWxw
ZXIgZm9yIHdpbmRvdy5vcGVuKCkgYW5kIHdpbmRvdy5zaG93TW9kYWxEaWFsb2coKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAKaW5kZXggYzM0ZTEwZS4uMDIxMzVjMyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCkBAIC02MCw2ICs2MCwxMSBAQAogI2luY2x1
ZGUgIldvcmtlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisjaW5jbHVk
ZSAiSlNXZWJTb2NrZXQuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXQuaCIKKyNlbmRpZgorCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTEsNiArMTE2LDEx
IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEV2ZW50VGFyZ2V0KiB0YXJnCiAgICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFs
T2JqZWN0KHdvcmtlckNvbnRleHQpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMp
CisgICAgaWYgKFdlYlNvY2tldCogd2Vic29ja2V0ID0gdGFyZ2V0LT50b1dlYlNvY2tldCgpKQor
ICAgICAgICByZXR1cm4gdG9KUyhleGVjLCB3ZWJzb2NrZXQpOworI2VuZGlmCisKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4ganNOdWxsKCk7CiB9CkBAIC0xNDcsNiArMTU3
LDEwIEBAIEV2ZW50VGFyZ2V0KiB0b0V2ZW50VGFyZ2V0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAg
ICBDT05WRVJUX1RPX0VWRU5UX1RBUkdFVChTaGFyZWRXb3JrZXJDb250ZXh0KQogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJHRVQoV2Vi
U29ja2V0KQorI2VuZGlmCisKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5oIGIvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IDkyYTc0
ZGUuLjIwZGI5YTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9X
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTEzMSw2ICsxMzEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgXAogICAgIG1hY3JvKHdlYmtpdFRyYW5zaXRpb25FbmQpIFwKICAgICBcCisg
ICAgbWFjcm8ob3BlbikgXAogLy8gZW5kIG9mIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSAogCiAg
ICAgY2xhc3MgRXZlbnROYW1lcyB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dC5jcHAgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggN2JhMDU4NC4uZTMyNjkx
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtNzgsNiArNzgsMTMgQEAgU1ZHRWxlbWVudEluc3RhbmNl
KiBFdmVudFRhcmdldDo6dG9TVkdFbGVtZW50SW5zdGFuY2UoKQogfQogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoV0VCX1NPQ0tFVFMpCitXZWJTb2NrZXQqIEV2ZW50VGFyZ2V0Ojp0b1dlYlNvY2tldCgp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogTWVzc2FnZVBvcnQqIEV2ZW50VGFyZ2V0
Ojp0b01lc3NhZ2VQb3J0KCkKIHsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmggYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IDJlZGVk
ZGEuLjA4NmY3MDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBTaGFy
ZWRXb3JrZXI7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyQ29udGV4dDsKKyAgICBjbGFzcyBXZWJT
b2NrZXQ7CiAgICAgY2xhc3MgV29ya2VyOwogICAgIGNsYXNzIFhNTEh0dHBSZXF1ZXN0OwogICAg
IGNsYXNzIFhNTEh0dHBSZXF1ZXN0VXBsb2FkOwpAQCAtNzIsMTEgKzczLDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBXb3JrZXIqIHRvV29ya2VyKCk7CiAgICAgICAg
IHZpcnR1YWwgRGVkaWNhdGVkV29ya2VyQ29udGV4dCogdG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0
KCk7CiAjZW5kaWYKLQogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKICAgICAgICAgdmlydHVh
bCBTaGFyZWRXb3JrZXIqIHRvU2hhcmVkV29ya2VyKCk7CiAgICAgICAgIHZpcnR1YWwgU2hhcmVk
V29ya2VyQ29udGV4dCogdG9TaGFyZWRXb3JrZXJDb250ZXh0KCk7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIHZpcnR1YWwgV2ViU29ja2V0KiB0b1dlYlNvY2tldCgp
OworI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IGU5NjBi
YjguLjQ4NzU2N2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBi
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC00NjksNiArNDY5LDEwIEBAIG1vZHVsZSB3
aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0pTQ0N1c3RvbUdldHRlcl0gU2hhcmVkV29ya2Vy
Q29uc3RydWN0b3IgU2hhcmVkV29ya2VyOyAvLyBVc2FibGUgd2l0aCB0aGUgbmV3IG9wZXJhdG9y
CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoRU5BQkxFX1dFQl9TT0NLRVRTKSAmJiBFTkFCTEVfV0VC
X1NPQ0tFVFMKKyAgICAgICAgYXR0cmlidXRlIFtKU0NDdXN0b21HZXR0ZXJdIFdlYlNvY2tldENv
bnN0cnVjdG9yIFdlYlNvY2tldDsgLy8gVXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRvcgorI2Vu
ZGlmCisKICAgICAgICAgYXR0cmlidXRlIFBsdWdpbkNvbnN0cnVjdG9yIFBsdWdpbjsKICAgICAg
ICAgYXR0cmlidXRlIFBsdWdpbkFycmF5Q29uc3RydWN0b3IgUGx1Z2luQXJyYXk7CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggOTk5YzFmZi4uMjZjMDYxYiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAKQEAgLTM0LDExICszNCwzNCBAQAogCiAjaW5jbHVkZSAiV2ViU29ja2V0Lmgi
CiAKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVk
ZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV2ZW50
TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIldlYlNvY2tl
dENoYW5uZWwuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCituYW1lc3BhY2UgeworCitib29sIElzVmFsaWRQcm90b2NvbFN0
cmluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHByb3RvY29sKQoreworICAgIGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzID0gcHJvdG9jb2wuY2hhcmFjdGVycygpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcHJvdG9jb2wubGVuZ3RoKCk7IGkrKykgeworICAgICAgICBpZiAoY2hhcmFjdGVy
c1tpXSA8IDB4MjEgfHwgY2hhcmFjdGVyc1tpXSA+IDB4N0UpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit9ICAvLyBhbm9ueW1vdXMgbmFt
ZXNwYWNlCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV2ViU29ja2V0OjpXZWJTb2NrZXQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTU5LDEwICs4MiwxMiBAQCB2b2lkIFdl
YlNvY2tldDo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiB2
b2lkIFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
ICVwIGNvbm5lY3QgdG8gJXMgcHJvdG9jb2w9JXMiLCB0aGlzLCB1cmwuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgcHJvdG9jb2wudXRmOCgpLmRhdGEoKSk7CiAgICAgbV91cmwgPSB1cmw7CiAgICAg
bV9wcm90b2NvbCA9IHByb3RvY29sOwogCiAgICAgaWYgKCFtX3VybC5wcm90b2NvbElzKCJ3cyIp
ICYmICFtX3VybC5wcm90b2NvbElzKCJ3c3MiKSkgeworICAgICAgICBMT0dfRVJST1IoIkVycm9y
OiB3cm9uZyB1cmwgZm9yIFdlYlNvY2tldCAlcyIsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwog
ICAgICAgICByZXR1cm47CkBAIC03MiwyNiArOTcsNDAgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5l
Y3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2Rl
JgogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
Ly8gRklYTUU6IENoZWNrIHByb3RvY29sIGlzIHZhbGlkIGZvcm0uCi0gICAgLy8gRklYTUU6IENv
bm5lY3QgV2ViU29ja2V0Q2hhbm5lbC4KKyAgICBpZiAoIXByb3RvY29sLmlzRW1wdHkoKSAmJiAh
SXNWYWxpZFByb3RvY29sU3RyaW5nKHByb3RvY29sKSkgeworICAgICAgICBMT0dfRVJST1IoIkVy
cm9yOiB3cm9uZyBwcm90b2NvbCBmb3IgV2ViU29ja2V0ICVzIiwgcHJvdG9jb2wudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIG1fc3RhdGUgPSBDTE9TRUQ7CisgICAgICAgIGVjID0gU1lOVEFYX0VS
UjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhNRTogaWYgbV91cmwucG9ydCgp
IGlzIGJsb2NraW5nIHBvcnQsIHJhaXNlIFNFQ1VSSVRZX0VSUi4KKworICAgIFdlYlNvY2tldFJl
cXVlc3QgcmVxdWVzdChtX3VybCwgbV9wcm90b2NvbCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKKyAgICBtX2NoYW5uZWwgPSBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCB0aGlzLCByZXF1ZXN0KTsKKyAgICBtX2NoYW5uZWwtPmNvbm5lY3QoKTsK
IH0KIAotYm9vbCBXZWJTb2NrZXQ6OnNlbmQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitib29sIFdlYlNvY2tldDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewotICAgIGlmIChtX3N0YXRlICE9IE9QRU4pIHsKKyAgICBMT0coTmV0d29y
aywgIldlYlNvY2tldCAlcCBzZW5kICVzIiwgdGhpcywgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsK
KyAgICBpZiAobV9zdGF0ZSA9PSBDT05ORUNUSU5HKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgLy8gRklYTUU6IHNl
bmQgbWVzc2FnZSBvbiBXZWJTb2NrZXRDaGFubmVsLgotICAgIHJldHVybiBmYWxzZTsKKyAgICAv
LyBObyBleGNlcHRpb24gaXMgcmFpc2VkIGlmIHRoZSBjb25uZWN0aW9uIHdhcyBvbmNlIGVzdGFi
bGlzaGVkIGJ1dCBoYXMgc3Vic2VxdWVudGx5IGJlZW4gY2xvc2VkLgorICAgIGlmIChtX3N0YXRl
ID09IENMT1NFRCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIEZJWE1FOiBjaGVjayBt
ZXNzYWdlIGlzIHZhbGlkIHV0ZjguCisgICAgcmV0dXJuIG1fY2hhbm5lbC0+c2VuZChtZXNzYWdl
KTsKIH0KIAogdm9pZCBXZWJTb2NrZXQ6OmNsb3NlKCkKIHsKKyAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldCAlcCBjbG9zZSIsIHRoaXMpOwogICAgIGlmIChtX3N0YXRlID09IENMT1NFRCkKICAg
ICAgICAgcmV0dXJuOwogICAgIG1fc3RhdGUgPSBDTE9TRUQ7Ci0gICAgLy8gRklYTUU6IGNsb3Nl
IFdlYlNvY2tldENoYW5uZWwuCisgICAgbV9jaGFubmVsLT5jbG9zZSgpOwogfQogCiBjb25zdCBL
VVJMJiBXZWJTb2NrZXQ6OnVybCgpIGNvbnN0CkBAIC0xMDYsNyArMTQ1LDggQEAgV2ViU29ja2V0
OjpTdGF0ZSBXZWJTb2NrZXQ6OnJlYWR5U3RhdGUoKSBjb25zdAogCiB1bnNpZ25lZCBsb25nIFdl
YlNvY2tldDo6YnVmZmVyZWRBbW91bnQoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBhc2sgcGxh
dGZvcm0gY29kZSB0byBnZXQgYnVmZmVyZWQgYW1vdW50IHRvIGJlIHNlbnQuCisgICAgaWYgKG1f
c3RhdGUgPT0gT1BFTikKKyAgICAgICAgcmV0dXJuIG1fY2hhbm5lbC0+YnVmZmVyZWRBbW91bnQo
KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTMzLDYgKzE3Myw3IEBAIGJvb2wgV2ViU29ja2V0
OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBFeGNlcHRpb25Db2RlJikKIAogdm9p
ZCBXZWJTb2NrZXQ6OmRpZENvbm5lY3QoKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
ICVwIGRpZENvbm5lY3QiLCB0aGlzKTsKICAgICBpZiAobV9zdGF0ZSAhPSBDT05ORUNUSU5HKSB7
CiAgICAgICAgIGRpZENsb3NlKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE0Myw2ICsxODQsNyBA
QCB2b2lkIFdlYlNvY2tldDo6ZGlkQ29ubmVjdCgpCiAKIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNl
aXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZykKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNv
Y2tldCAlcCBkaWRSZWNlaXZlTWVzc2FnZSAlcyIsIHRoaXMsIG1zZy51dGY4KCkuZGF0YSgpKTsK
ICAgICBpZiAobV9zdGF0ZSAhPSBPUEVOKQogICAgICAgICByZXR1cm47CiAgICAgZGlzcGF0Y2hN
ZXNzYWdlRXZlbnQobXNnKTsKQEAgLTE1MCwyMyArMTkyLDQ0IEBAIHZvaWQgV2ViU29ja2V0Ojpk
aWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZykKIAogdm9pZCBXZWJTb2NrZXQ6OmRp
ZENsb3NlKCkKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRDbG9zZSIsIHRo
aXMpOwogICAgIG1fc3RhdGUgPSBDTE9TRUQ7CiAgICAgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CiB9
CiAKIHZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaE9wZW5FdmVudCgpCiB7Ci0gICAgLy8gRklYTUU6
IGltcGxlbWVudCB0aGlzLgorICAgIFJlZlB0cjxFdmVudD4gZXZ0ID0gRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkub3BlbkV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgIGlmIChtX29ub3Blbikg
eworICAgICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50
VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29ub3Blbi0+aGFuZGxlRXZlbnQoZXZ0LmdldCgpLCBm
YWxzZSk7CisgICAgfQorICAgIC8vIEZJWE1FOiBuZWVkIGRpc3BhdGNoRXZlbnQ/CiB9CiAKLXZv
aWQgV2ViU29ja2V0OjpkaXNwYXRjaE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmKQordm9pZCBX
ZWJTb2NrZXQ6OmRpc3BhdGNoTWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgbXNnKQogewotICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBSZWZQdHI8TWVzc2FnZUV2ZW50PiBldnQg
PSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZSgpOworICAgIC8vIEZJWE1FOiBvcmlnaW4sIGxhc3RFdmVu
dElkLCBzb3VyY2UsIG1lc3NhZ2VQb3J0LgorICAgIGV2dC0+aW5pdE1lc3NhZ2VFdmVudChldmVu
dE5hbWVzKCkubWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UsIG1zZywgIiIsICIiLCAwLCAwKTsK
KyAgICBpZiAobV9vbm1lc3NhZ2UpIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7Cisg
ICAgICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbm1lc3NhZ2Ut
PmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwgZmFsc2UpOworICAgIH0KKyAgICAvLyBGSVhNRTogbmVl
ZCBkaXNwYXRjaEV2ZW50PwogfQogCiB2b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hDbG9zZUV2ZW50
KCkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisgICAgUmVmUHRyPEV2ZW50PiBl
dnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwgZmFsc2Up
OworICAgIGlmIChtX29uY2xvc2UpIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7Cisg
ICAgICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbmNsb3NlLT5o
YW5kbGVFdmVudChldnQuZ2V0KCksIGZhbHNlKTsKKyAgICB9CisgICAgLy8gRklYTUU6IG5lZWQg
ZGlzcGF0Y2hFdmVudD8KIH0KIAogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaAppbmRleCA0ODVlMmNjLi4xYjc0NGYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmgKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBA
IC0zNiw4NyArMzYsODkgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hh
bm5lbENsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFN0cmluZzsKKyAgICBj
bGFzcyBTdHJpbmc7CisgICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbDsKIAotY2xhc3MgV2ViU29j
a2V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGljIEV2ZW50VGFyZ2V0LCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
ZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7IHJldHVy
biBhZG9wdFJlZihuZXcgV2ViU29ja2V0KGNvbnRleHQpKTsgfQotICAgIHZpcnR1YWwgfldlYlNv
Y2tldCgpOworICAgIGNsYXNzIFdlYlNvY2tldCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlNvY2tl
dD4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFdl
YlNvY2tldENoYW5uZWxDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlNvY2tldChjb250ZXh0KSk7IH0KKyAgICAgICAgdmly
dHVhbCB+V2ViU29ja2V0KCk7CiAKLSAgICBlbnVtIFN0YXRlIHsKLSAgICAgICAgQ09OTkVDVElO
RyA9IDAsCi0gICAgICAgIE9QRU4gPSAxLAotICAgICAgICBDTE9TRUQgPSAyCi0gICAgfTsKKyAg
ICAgICAgZW51bSBTdGF0ZSB7CisgICAgICAgICAgICBDT05ORUNUSU5HID0gMCwKKyAgICAgICAg
ICAgIE9QRU4gPSAxLAorICAgICAgICAgICAgQ0xPU0VEID0gMgorICAgICAgICB9OwogCi0gICAg
dm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQg
Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgRXhjZXB0aW9u
Q29kZSYpOworICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBib29sIHNlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIGJvb2wgc2VuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZvaWQgY2xvc2UoKTsKKyAg
ICAgICAgdm9pZCBjbG9zZSgpOwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7Ci0gICAg
U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwotICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91
bnQoKSBjb25zdDsKKyAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7CisgICAgICAgIFN0
YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFt
b3VudCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRPbm9wZW4oUGFzc1JlZlB0cjxFdmVudExpc3Rl
bmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25vcGVuID0gZXZlbnRMaXN0ZW5lcjsgfQotICAgIEV2
ZW50TGlzdGVuZXIqIG9ub3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fb25vcGVuLmdldCgpOyB9Ci0g
ICAgdm9pZCBzZXRPbm1lc3NhZ2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3Rl
bmVyKSB7IG1fb25tZXNzYWdlID0gZXZlbnRMaXN0ZW5lcjsgfQotICAgIEV2ZW50TGlzdGVuZXIq
IG9ubWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25tZXNzYWdlLmdldCgpOyB9Ci0gICAgdm9p
ZCBzZXRPbmNsb3NlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBt
X29uY2xvc2UgPSBldmVudExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25jbG9zZSgp
IGNvbnN0IHsgcmV0dXJuIG1fb25jbG9zZS5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldE9ub3Bl
bihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbm9wZW4gPSBl
dmVudExpc3RlbmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9ub3BlbigpIGNvbnN0IHsg
cmV0dXJuIG1fb25vcGVuLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0T25tZXNzYWdlKFBhc3NS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29ubWVzc2FnZSA9IGV2ZW50
TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25tZXNzYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9vbm1lc3NhZ2UuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRPbmNsb3NlKFBhc3NS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uY2xvc2UgPSBldmVudExp
c3RlbmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uY2xvc2UoKSBjb25zdCB7IHJldHVy
biBtX29uY2xvc2UuZ2V0KCk7IH0KIAotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBX
ZWJTb2NrZXQqIHRvV2ViU29ja2V0KCkgeyByZXR1cm4gdGhpczsgfQorICAgICAgICAvLyBFdmVu
dFRhcmdldAorICAgICAgICB2aXJ0dWFsIFdlYlNvY2tldCogdG9XZWJTb2NrZXQoKSB7IHJldHVy
biB0aGlzOyB9CiAKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1Jl
ZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRM
aXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7Ci0gICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBF
dmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAgICAgICAgdmlydHVhbCBib29sIGRp
c3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIC8v
IEFjdGl2ZURPTU9iamVjdAotICAgIC8vIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdDsKLSAgICAvLyB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwotICAgIC8v
IHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Q7Ci0gICAgLy8gdmlydHVhbCB2b2lkIHN1
c3BlbmQoKTsKLSAgICAvLyB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7Ci0gICAgLy8gdmlydHVhbCB2
b2lkIHN0b3AoKTsKKyAgICAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CisgICAgICAgIC8vIHZpcnR1
YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKKyAgICAgICAgLy8gdmlydHVhbCB2
b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKKyAgICAgICAgLy8gdmlydHVhbCBib29sIGNhblN1c3Bl
bmQoKSBjb25zdDsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lkIHN1c3BlbmQoKTsKKyAgICAgICAg
Ly8gdmlydHVhbCB2b2lkIHJlc3VtZSgpOworICAgICAgICAvLyB2aXJ0dWFsIHZvaWQgc3RvcCgp
OwogCi0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJTb2NrZXQ+OjpyZWY7Ci0gICAgdXNpbmcgUmVm
Q291bnRlZDxXZWJTb2NrZXQ+OjpkZXJlZjsKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJT
b2NrZXQ+OjpyZWY7CisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Pjo6ZGVyZWY7
CiAKLXByaXZhdGU6Ci0gICAgV2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAg
ICAgICAgLy8gV2ViU29ja2V0Q2hhbm5lbENsaWVudAorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q29ubmVjdCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtc2cpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgICAgcHJpdmF0ZToKKyAgICAgICAg
V2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAotICAgIC8vIFdlYlNvY2tldENo
YW5uZWxDbGllbnQKLSAgICB2b2lkIGRpZENvbm5lY3QoKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKTsKLSAgICB2b2lkIGRpZENsb3NlKCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICAgICAgdmlydHVh
bCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KIAotICAgIHZvaWQgZGlzcGF0
Y2hPcGVuRXZlbnQoKTsKLSAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUV2ZW50KGNvbnN0IFN0cmlu
ZyYgbXNnKTsKLSAgICB2b2lkIGRpc3BhdGNoQ2xvc2VFdmVudCgpOworICAgICAgICB2b2lkIGRp
c3BhdGNoT3BlbkV2ZW50KCk7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRXZlbnQoY29u
c3QgU3RyaW5nJiBtc2cpOworICAgICAgICB2b2lkIGRpc3BhdGNoQ2xvc2VFdmVudCgpOwogCi0g
ICAgLy8gRklYTUU6IGFkZCBXZWJTb2NrZXRDaGFubmVsLgorICAgICAgICBSZWZQdHI8V2ViU29j
a2V0Q2hhbm5lbD4gbV9jaGFubmVsOwogCi0gICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25v
cGVuOwotICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ubWVzc2FnZTsKLSAgICBSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gbV9vbmNsb3NlOworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
bV9vbm9wZW47CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ubWVzc2FnZTsKKyAg
ICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25jbG9zZTsKIAotICAgIFN0YXRlIG1fc3Rh
dGU7Ci0gICAgS1VSTCBtX3VybDsKLSAgICBTdHJpbmcgbV9wcm90b2NvbDsKLX07CisgICAgICAg
IFN0YXRlIG1fc3RhdGU7CisgICAgICAgIEtVUkwgbV91cmw7CisgICAgICAgIFN0cmluZyBtX3By
b3RvY29sOworICAgIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4wNzY1OTBhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwCkBAIC0wLDAgKzEsMjM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCisKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZS5o
IgorI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorCituYW1lc3BhY2UgeworCitib29sIENoZWNrV2ViU29ja2V0SGFuZHNoYWtlKGNvbnN0IFdl
YkNvcmU6OldlYlNvY2tldFJlcXVlc3QgJnJlcSwgY29uc3QgV2ViQ29yZTo6V2ViU29ja2V0UmVz
cG9uc2UmIHJlc3ApCit7CisgICAgaWYgKCFyZXNwLmlzVmFsaWRIZWFkZXIoKSkgeworICAgICAg
ICBMT0coTmV0d29yaywgIldyb25nIHJlc3BvbnNlIGhlYWRlciIpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIGlmIChyZXEub3JpZ2luKCkgIT0gcmVzcC53ZWJzb2NrZXRfb3Jp
Z2luKCkpIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJNaXNtYXRjaCBvcmlnaW46ICVzICE9ICVz
IiwgcmVxLm9yaWdpbigpLnV0ZjgoKS5kYXRhKCksIHJlc3Aud2Vic29ja2V0X29yaWdpbigpLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChyZXEu
bG9jYXRpb24oKSAhPSByZXNwLndlYnNvY2tldF9sb2NhdGlvbigpKSB7CisgICAgICAgIExPRyhO
ZXR3b3JrLCAiTWlzbWF0Y2ggbG9jYXRpb246ICVzICE9ICVzIiwgcmVxLmxvY2F0aW9uKCkudXRm
OCgpLmRhdGEoKSwgcmVzcC53ZWJzb2NrZXRfbG9jYXRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoIXJlcS5wcm90b2NvbCgpLmlzRW1w
dHkoKSAmJiByZXEucHJvdG9jb2woKSAhPSByZXNwLndlYnNvY2tldF9wcm90b2NvbCgpKSB7Cisg
ICAgICAgIExPRyhOZXR3b3JrLCAiTWlzbWF0Y2ggcHJvdG9jb2w6ICVzICE9ICVzIiwgcmVxLnBy
b3RvY29sKCkudXRmOCgpLmRhdGEoKSwgcmVzcC53ZWJzb2NrZXRfcHJvdG9jb2woKS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1dlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBjb25zdCBXZWJTb2Nr
ZXRSZXF1ZXN0JiByZXF1ZXN0KQorICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICAg
ICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKKyAgICAg
ICAgLCBtX2hhbmRzaGFrZWQoZmFsc2UpCit7Cit9CisKK1dlYlNvY2tldENoYW5uZWw6On5XZWJT
b2NrZXRDaGFubmVsKCkKK3sKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KCkK
K3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVjdCIsIHRoaXMp
OworICAgIG1faGFuZHNoYWtlZCA9IGZhbHNlOworICAgIG1fcmVzcG9uc2UuY2xlYXIoKTsKKyAg
ICBtX2hhbmRsZSA9IFNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlKG1fcmVxdWVzdC51cmwoKSwg
dGhpcyk7Cit9CisKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1z
ZykKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCAlcyIsIHRo
aXMsIG1zZy51dGY4KCkuZGF0YSgpKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBmcmFtZV90eXBl
WzFdID0geydcMCd9OworICAgIHN0YXRpYyBjb25zdCBjaGFyIGZyYW1lX2VuZFsxXSA9IHsnXHhm
Zid9OworICAgIFZlY3RvcjxjaGFyPiBidWY7CisgICAgYnVmLmFwcGVuZChmcmFtZV90eXBlLCBz
aXplb2YoZnJhbWVfdHlwZSkpOworICAgIGJ1Zi5hcHBlbmQobXNnLnV0ZjgoKS5kYXRhKCksIG1z
Zy51dGY4KCkubGVuZ3RoKCkpOworICAgIGJ1Zi5hcHBlbmQoZnJhbWVfZW5kLCBzaXplb2YoZnJh
bWVfZW5kKSk7CisgICAgcmV0dXJuIG1faGFuZGxlLT5zZW5kKGJ1Zi5kYXRhKCksIGJ1Zi5zaXpl
KCkpOworfQorCit1bnNpZ25lZCBsb25nIFdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50
KCkgY29uc3QKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgYnVmZmVy
ZWRBbW91bnQiLCB0aGlzKTsKKyAgICByZXR1cm4gbV9oYW5kbGUtPmJ1ZmZlcmVkQW1vdW50KCk7
Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoKQoreworICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjbG9zZSIsIHRoaXMpOworICAgIGlmIChtX2hhbmRsZS5n
ZXQoKSkKKyAgICAgICAgbV9oYW5kbGUtPmNsb3NlKCk7ICAvLyB3aWxsIGNhbGwgZGlkQ2xvc2Uo
KQorfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OndpbGxPcGVuU3RyZWFtKFNvY2tldFN0cmVh
bUhhbmRsZSosIGNvbnN0IEtVUkwmKQoreworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6Ondp
bGxTZW5kRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50KQoreworfQor
Cit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZE9wZW4oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5k
bGUpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZE9wZW4iLCB0
aGlzKTsKKyAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdldCgpIHx8ICFtX2hhbmRsZS5n
ZXQoKSk7CisgICAgaWYgKCFtX2hhbmRsZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGNv
bnN0IENTdHJpbmcmIHJlcXVlc3RfbWVzc2FnZSA9IG1fcmVxdWVzdC5mbGF0dGVuVG9TdHJpbmco
KTsKKyAgICBtX2hhbmRsZS0+c2VuZChyZXF1ZXN0X21lc3NhZ2UuZGF0YSgpLCByZXF1ZXN0X21l
c3NhZ2UubGVuZ3RoKCkpOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZENsb3NlKFNv
Y2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
Q2hhbm5lbCAlcCBkaWRDbG9zZSIsIHRoaXMpOworICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5k
bGUuZ2V0KCkgfHwgIW1faGFuZGxlLmdldCgpKTsKKyAgICBpZiAoIW1faGFuZGxlLmdldCgpKQor
ICAgICAgICByZXR1cm47CisgICAgbV9oYW5kbGUgPSAwOworICAgIFdlYlNvY2tldENoYW5uZWxD
bGllbnQqIGNsaWVudCA9IG1fY2xpZW50OworICAgIG1fY2xpZW50ID0gMDsKKyAgICBjbGllbnQt
PmRpZENsb3NlKCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZWREYXRh
KFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQor
eworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRSZWNlaXZlRGF0YSAl
ZCIsIHRoaXMsIGxlbik7CisgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hhbmRsZS5nZXQoKSB8fCAh
bV9oYW5kbGUuZ2V0KCkpOworICAgIGlmICghbV9oYW5kbGUuZ2V0KCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgbGVuKTsKKyAgICBpZiAoIW1faGFuZHNoYWtl
ZCkgeworICAgICAgICBpZiAoIW1fcmVzcG9uc2UucmVhZEhhbmRzaGFrZVJlc3BvbnNlKCZtX2J1
ZmZlclswXSwgbV9idWZmZXIuc2l6ZSgpKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
aWYgKG1fcmVzcG9uc2UubW9kZSgpID09IFdlYlNvY2tldFJlc3BvbnNlOjpSZWRpcmVjdCkgewor
ICAgICAgICAgICAgTE9HKE5ldHdvcmssICJSZWRpcmVjdCB0byAlcyIsIG1fcmVzcG9uc2UubG9j
YXRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJlZGlyZWN0KG1fcmVzcG9uc2Uu
bG9jYXRpb24oKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYg
KG1fcmVzcG9uc2UubW9kZSgpID09IFdlYlNvY2tldFJlc3BvbnNlOjpBdXRoZW50aWNhdGUpIHsK
KyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZShtX3Jlc3BvbnNlLnd3d19hdXRoZW50aWNhdGUoKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQobV9yZXNw
b25zZS5tb2RlKCkgPT0gV2ViU29ja2V0UmVzcG9uc2U6Ok5vcm1hbCk7CisgICAgICAgIG1faGFu
ZHNoYWtlZCA9IENoZWNrV2ViU29ja2V0SGFuZHNoYWtlKG1fcmVxdWVzdCwgbV9yZXNwb25zZSk7
CisgICAgICAgIGlmIChtX2hhbmRzaGFrZWQpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAi
V2ViU29ja2V0Q2hhbm5lbCAlcCBjb25uZWN0ZWQiLCB0aGlzKTsKKyAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRDb25uZWN0KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMT0coTmV0
d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVjdGlvbiBmYWlsZWQiLCB0aGlzKTsKKyAg
ICAgICAgICAgIGRpZENsb3NlKGhhbmRsZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fcmVz
cG9uc2UuaGVhZGVyTGVuZ3RoKCkgPT0gbV9idWZmZXIuc2l6ZSgpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBMT0coTmV0d29yaywgInJlbWFpbmluZyBpbiByZWFkIGJ1ZiAldWwiLCBt
X2J1ZmZlci5zaXplKCkgLSBtX3Jlc3BvbnNlLmhlYWRlckxlbmd0aCgpKTsKKyAgICAgICAgVmVj
dG9yPGNoYXI+IGJ1ZjsKKyAgICAgICAgYnVmLmFwcGVuZCgmbV9idWZmZXJbbV9yZXNwb25zZS5o
ZWFkZXJMZW5ndGgoKV0sIG1fYnVmZmVyLnNpemUoKSAtIG1fcmVzcG9uc2UuaGVhZGVyTGVuZ3Ro
KCkpOworICAgICAgICBtX2J1ZmZlci5zd2FwKGJ1Zik7CisgICAgfQorICAgIFZlY3RvcjxjaGFy
PiBidWY7CisgICAgYnVmLnN3YXAobV9idWZmZXIpOworCisgICAgY29uc3QgY2hhciAqbmV4dF9m
cmFtZSA9IGJ1Zi5kYXRhKCk7CisgICAgY29uc3QgY2hhciAqcCA9IGJ1Zi5kYXRhKCk7CisgICAg
Y29uc3QgY2hhciAqZW5kID0gcCArIGJ1Zi5zaXplKCk7CisgICAgd2hpbGUgKHAgPCBlbmQpIHsK
KyAgICAgICAgdW5zaWduZWQgY2hhciBmcmFtZV9ieXRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oKnArKyk7CisgICAgICAgIGlmICgoZnJhbWVfYnl0ZSAmIDB4ODApID09IDB4ODApIHsK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBoYW5kbGUgb3ZlcmZsb3cuCisgICAgICAgICAgICBpbnQg
bGVuZ3RoID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChwIDwgZW5kICYmICgqcCAmIDB4ODApID09
IDB4ODApIHsKKyAgICAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGggKiAxMjcgKyAqcCAmIDB4
N2Y7CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KHAgKyBsZW5ndGggPCBlbmQpIHsKKyAgICAgICAgICAgICAgICBwICs9IGxlbmd0aDsKKyAgICAg
ICAgICAgICAgICBuZXh0X2ZyYW1lID0gcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1zZ19zdGFydCA9IHA7CisgICAgICAgICAgICB3
aGlsZSAocCA8IGVuZCAmJiAqcCAhPSAnXHhmZicpCisgICAgICAgICAgICAgICAgKytwOworICAg
ICAgICAgICAgaWYgKHAgPCBlbmQgJiYgKnAgPT0gJ1x4ZmYnKSB7CisgICAgICAgICAgICAgICAg
aWYgKGZyYW1lX2J5dGUgPT0gMHgwMCkKKyAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVNZXNzYWdlKFN0cmluZzo6ZnJvbVVURjgobXNnX3N0YXJ0LCBwIC0gbXNnX3N0YXJ0
KSk7CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgIG5leHRfZnJhbWUgPSBw
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGlmIChuZXh0X2ZyYW1lIDwg
ZW5kKQorICAgICAgICBtX2J1ZmZlci5hcHBlbmQobmV4dF9mcmFtZSwgZW5kIC0gbmV4dF9mcmFt
ZSk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmFpbChTb2NrZXRTdHJlYW1IYW5k
bGUqIGhhbmRsZSwgY29uc3QgU29ja2V0U3RyZWFtSGFuZGxlRXJyb3ImIGVycikKK3sKKyAgICBM
T0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkRmFpbGUiLCB0aGlzKTsKKyAgICBB
U1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdldCgpIHx8ICFtX2hhbmRsZS5nZXQoKSk7CisgICAg
ZGlkQ2xvc2UoaGFuZGxlKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpyZWRpcmVjdChj
b25zdCBTdHJpbmcmIGxvY2F0aW9uKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hh
bm5lbCAlcCByZWRpcmVjdCB0byAlcyIsIHRoaXMsIGxvY2F0aW9uLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIEtVUkwgdXJsKGxvY2F0aW9uKTsKKyAgICBtX3JlcXVlc3Quc2V0VVJMKHVybCk7CisgICAg
Y29ubmVjdCgpOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmF1dGhlbnRpY2F0ZShjb25z
dCBTdHJpbmcmIHd3d19hdXRoZW50aWNhdGUpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCB0
aGlzLgorICAgIGRpZENsb3NlKG1faGFuZGxlLmdldCgpKTsKK30KKworfSAgLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhZGRlYzkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJTb2NrZXRDaGFubmVsX2gKKyNkZWZpbmUgV2ViU29ja2V0Q2hhbm5lbF9oCisKKyNpbmNsdWRl
ICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRSZXF1ZXN0
LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0UmVzcG9uc2UuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CisgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBjbGFzcyBTdHJpbmc7Cisg
ICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlOworICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRs
ZUVycm9yOworICAgIGNsYXNzIFdlYlNvY2tldENoYW5uZWxDbGllbnQ7CisKKyAgICBjbGFzcyBX
ZWJTb2NrZXRDaGFubmVsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5lbD4sIHB1
YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgeworICAgICAgcHVibGljOgorICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBjb25zdCBX
ZWJTb2NrZXRSZXF1ZXN0JiByZXF1ZXN0KSB7IHJldHVybiBuZXcgV2ViU29ja2V0Q2hhbm5lbChj
b250ZXh0LCBjbGllbnQsIHJlcXVlc3QpOyB9CisgICAgICAgIHZpcnR1YWwgfldlYlNvY2tldENo
YW5uZWwoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdCgpOworCisgICAgICAgIHZp
cnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbXNnKTsKKyAgICAgICAgdmlydHVhbCB1bnNp
Z25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CisKKyAgICAgICAgdmlydHVhbCB2b2lk
IGNsb3NlKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxPcGVuU3RyZWFtKFNvY2tldFN0
cmVhbUhhbmRsZSosIGNvbnN0IEtVUkwmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5k
RGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50KTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZE9wZW4oU29ja2V0U3RyZWFtSGFuZGxlKik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRDbG9zZShTb2NrZXRTdHJlYW1IYW5kbGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVkRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50KTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3Qg
U29ja2V0U3RyZWFtSGFuZGxlRXJyb3ImKTsKKworICAgICAgcHJpdmF0ZToKKyAgICAgICAgV2Vi
U29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViU29ja2V0Q2hhbm5lbENs
aWVudCosIGNvbnN0IFdlYlNvY2tldFJlcXVlc3QmKTsKKworICAgICAgICB2b2lkIHJlZGlyZWN0
KGNvbnN0IFN0cmluZyYgbG9jYXRpb24pOworICAgICAgICB2b2lkIGF1dGhlbnRpY2F0ZShjb25z
dCBTdHJpbmcmIHd3d19hdXRoZW50aWNhdGUpOworCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIG1fY29udGV4dDsKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogbV9jbGll
bnQ7CisgICAgICAgIFdlYlNvY2tldFJlcXVlc3QgbV9yZXF1ZXN0OworICAgICAgICBXZWJTb2Nr
ZXRSZXNwb25zZSBtX3Jlc3BvbnNlOworICAgICAgICBSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxl
PiBtX2hhbmRsZTsKKyAgICAgICAgYm9vbCBtX2hhbmRzaGFrZWQ7CisgICAgICAgIFZlY3Rvcjxj
aGFyPiBtX2J1ZmZlcjsKKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgIC8vIFdlYlNvY2tldENoYW5uZWxfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWxDbGllbnQuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVlMDQ1
ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
Q2xpZW50LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldENoYW5uZWxDbGllbnRf
aAorI2RlZmluZSBXZWJTb2NrZXRDaGFubmVsQ2xpZW50X2gKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisgICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENsaWVudCB7CisgICAgICBwdWJsaWM6Cisg
ICAgICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWxDbGllbnQoKSB7fQorICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29ubmVjdCgpIHt9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZykge30KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENs
b3NlKCkge30KKworICAgICAgcHJvdGVjdGVkOgorICAgICAgICBXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50KCkge30KKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8v
IFdlYlNvY2tldENoYW5uZWxDbGllbnRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldFJlcXVlc3QuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldFJlcXVl
c3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0ZWVhZjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0UmVxdWVzdC5jcHAKQEAg
LTAsMCArMSwxNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNvY2tldFJl
cXVlc3QuaCIKKworI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTdHJpbmdC
dWlsZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViU29ja2V0UmVxdWVzdDo6V2Vi
U29ja2V0UmVxdWVzdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgICAgIDogbV91cmwodXJsKQorICAg
ICAgICAsIG1fcHJvdG9jb2wocHJvdG9jb2wpCisgICAgICAgICwgbV9zZWN1cmUobV91cmwucHJv
dG9jb2xJcygid3NzIikpCisgICAgICAgICwgbV9jb250ZXh0KGNvbnRleHQpCit7Cit9CisKK1dl
YlNvY2tldFJlcXVlc3Q6On5XZWJTb2NrZXRSZXF1ZXN0KCkKK3sKK30KKworY29uc3QgS1VSTCYg
V2ViU29ja2V0UmVxdWVzdDo6dXJsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91cmw7Cit9CisK
K3ZvaWQgV2ViU29ja2V0UmVxdWVzdDo6c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICBt
X3VybCA9IHVybC5jb3B5KCk7Cit9CisKK2NvbnN0IFN0cmluZyBXZWJTb2NrZXRSZXF1ZXN0Ojpo
b3N0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91cmwuaG9zdCgpLmxvd2VyKCk7Cit9CisKK2Nv
bnN0IFN0cmluZyYgV2ViU29ja2V0UmVxdWVzdDo6cHJvdG9jb2woKSBjb25zdAoreworICAgIHJl
dHVybiBtX3Byb3RvY29sOworfQorCit2b2lkIFdlYlNvY2tldFJlcXVlc3Q6OnNldFByb3RvY29s
KGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCit7CisgICAgbV9wcm90b2NvbCA9IHByb3RvY29sOwor
fQorCitib29sIFdlYlNvY2tldFJlcXVlc3Q6OnNlY3VyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fc2VjdXJlOworfQorCit2b2lkIFdlYlNvY2tldFJlcXVlc3Q6OnNldFNlY3VyZShib29sIHNl
Y3VyZSkKK3sKKyAgICBtX3NlY3VyZSA9IHNlY3VyZTsKK30KKworU3RyaW5nIFdlYlNvY2tldFJl
cXVlc3Q6Om9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKS0+dG9TdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlNvY2tldFJlcXVlc3Q6OmxvY2F0
aW9uKCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5h
cHBlbmQobV9zZWN1cmUgPyAid3NzIiA6ICJ3cyIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCI6Ly8i
KTsKKyAgICBidWlsZGVyLmFwcGVuZChob3N0KCkpOworICAgIGlmIChtX3VybC5wb3J0KCkpIHsK
KyAgICAgICAgaWYgKCghbV9zZWN1cmUgJiYgbV91cmwucG9ydCgpICE9IDgxKSB8fCAobV9zZWN1
cmUgJiYgbV91cmwucG9ydCgpICE9IDgxNSkpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCI6Iik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihtX3VybC5w
b3J0KCkpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZChtX3VybC5wYXRo
KCkpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK0tVUkwgV2ViU29ja2V0
UmVxdWVzdDo6VVJMb3ZlckhUVFAoKSBjb25zdAoreworICAgIEtVUkwgdXJsID0gbV91cmwuY29w
eSgpOworICAgIHVybC5zZXRQcm90b2NvbChtX3NlY3VyZSA/ICJodHRwcyIgOiAiaHR0cCIpOwor
ICAgIGludCBwb3J0ID0gdXJsLnBvcnQoKTsKKyAgICBpZiAoIXBvcnQpCisgICAgICAgIHBvcnQg
PSBtX3NlY3VyZSA/IDgxNSA6IDgxOworICAgIHVybC5zZXRQb3J0KHBvcnQpOworICAgIHJldHVy
biB1cmw7Cit9CisKK0NTdHJpbmcgV2ViU29ja2V0UmVxdWVzdDo6ZmxhdHRlblRvU3RyaW5nKCkg
Y29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAgICBidWlsZGVyLmFwcGVu
ZCgiR0VUICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKHVybCgpLnBhdGgoKSk7CisgICAgaWYgKCF1
cmwoKS5xdWVyeSgpLmlzRW1wdHkoKSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZCgiPyIpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZCh1cmwoKS5xdWVyeSgpKTsKKyAgICB9CisgICAgaWYgKHVy
bCgpLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIj
Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpKTsK
KyAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoIiBIVFRQLzEuMVxyXG4iKTsKKyAgICBidWlsZGVy
LmFwcGVuZCgiVXBncmFkZTogV2ViU29ja2V0XHJcbiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJD
b25uZWN0aW9uOiBVcGdyYWRlXHJcbiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJIb3N0OiAiKTsK
KyAgICBidWlsZGVyLmFwcGVuZChob3N0KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7
CisgICAgYnVpbGRlci5hcHBlbmQoIk9yaWdpbjogIik7CisgICAgYnVpbGRlci5hcHBlbmQob3Jp
Z2luKCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisgICAgaWYgKCFwcm90b2NvbCgp
LmlzRW1wdHkoKSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZCgiV2ViU29ja2V0LVByb3RvY29s
OiAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQocHJvdG9jb2woKSk7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCJcclxuIik7CisgICAgfQorICAgIEtVUkwgdXJsID0gVVJMb3ZlckhUVFAoKTsK
KyAgICAvLyBGSVhNRTogc2V0IGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uIG9yIGNvb2tpZXMg
Zm9yIHVybC4KKyAgICBidWlsZGVyLmFwcGVuZCgiXHJcbiIpOworICAgIHJldHVybiBidWlsZGVy
LnRvU3RyaW5nKCkudXRmOCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldFJlcXVlc3QuaCBiL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uOTkzOTFiNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRSZXF1ZXN0LmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldFJlcXVlc3Rf
aAorI2RlZmluZSBXZWJTb2NrZXRSZXF1ZXN0X2gKKworI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworICAgIGNs
YXNzIFdlYlNvY2tldFJlcXVlc3QgeworICAgICAgcHVibGljOgorICAgICAgICBXZWJTb2NrZXRS
ZXF1ZXN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KTsKKyAgICAgICAgfldlYlNvY2tldFJlcXVlc3QoKTsKKworICAg
ICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRVUkwoY29uc3Qg
S1VSTCYgdXJsKTsKKyAgICAgICAgY29uc3QgU3RyaW5nIGhvc3QoKSBjb25zdDsKKworICAgICAg
ICBjb25zdCBTdHJpbmcmIHByb3RvY29sKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0UHJvdG9j
b2woY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CisKKyAgICAgICAgYm9vbCBzZWN1cmUoKSBjb25z
dDsKKyAgICAgICAgdm9pZCBzZXRTZWN1cmUoYm9vbCBzZWN1cmUpOworCisgICAgICAgIFN0cmlu
ZyBvcmlnaW4oKSBjb25zdDsKKyAgICAgICAgU3RyaW5nIGxvY2F0aW9uKCkgY29uc3Q7CisKKyAg
ICAgICAgS1VSTCBVUkxvdmVySFRUUCgpIGNvbnN0OworCisgICAgICAgIENTdHJpbmcgZmxhdHRl
blRvU3RyaW5nKCkgY29uc3Q7CisKKyAgICAgIHByaXZhdGU6CisgICAgICAgIEtVUkwgbV91cmw7
CisgICAgICAgIFN0cmluZyBtX3Byb3RvY29sOworICAgICAgICBib29sIG1fc2VjdXJlOworICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CisgICAgfTsKKworfSAgLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBXZWJTb2NrZXRSZXF1ZXN0X2gKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRSZXNwb25zZS5jcHAgYi9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0UmVzcG9uc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmUwMDRhNTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0UmVzcG9uc2UuY3BwCkBAIC0wLDAgKzEsMzI5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRSZXNwb25zZS5oIgorCisjaW5jbHVkZSAiQ1N0cmlu
Zy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIHsKKworV2ViQ29yZTo6U3Ry
aW5nIGV4dHJhY3RSZXNwb25zZUNvZGUoY29uc3QgY2hhciogaGVhZGVyLCBpbnQgbGVuKQorewor
ICAgIGNvbnN0IGNoYXIqIHNwYWNlMSA9IDA7CisgICAgY29uc3QgY2hhciogc3BhY2UyID0gMDsK
KyAgICBjb25zdCBjaGFyKiBwOworICAgIGZvciAocCA9IGhlYWRlcjsgcCAtIGhlYWRlciA8IGxl
bjsgcCsrKSB7CisgICAgICAgIGlmICgqcCA9PSAnICcpIHsKKyAgICAgICAgICAgIGlmICghc3Bh
Y2UxKQorICAgICAgICAgICAgICAgIHNwYWNlMSA9IHA7CisgICAgICAgICAgICBlbHNlIGlmICgh
c3BhY2UyKQorICAgICAgICAgICAgICAgIHNwYWNlMiA9IHA7CisgICAgICAgIH0gZWxzZSBpZiAo
KnAgPT0gJ1xuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAocCAtIGhlYWRl
ciA9PSBsZW4pCisgICAgICAgIHJldHVybiBXZWJDb3JlOjpTdHJpbmcoKTsKKyAgICBpZiAoIXNw
YWNlMSB8fCAhc3BhY2UyKQorICAgICAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIFdlYkNvcmU6
OlN0cmluZyhzcGFjZTEgKyAxLCBzcGFjZTIgLSBzcGFjZTEgLSAxKTsKK30KKworYm9vbCBoYWRS
ZXNwb25zZUhlYWRlcihjb25zdCBjaGFyICpzdGFydCwgY29uc3QgY2hhciAqZW5kKQoreworICAg
IGZvciAoY29uc3QgY2hhciAqcCA9IHN0YXJ0OyBwICYmIHAgPCBlbmQ7IHArKykgeworICAgICAg
ICBwID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihtZW1jaHIocCwgJ1xyJywgZW5kIC0gcCkp
OworICAgICAgICBpZiAoIXApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
aWYgKHAgKyAzIDwgZW5kICYmICoocCArIDEpID09ICdcbicgJiYgKihwICsgMikgPT0gJ1xyJyAm
JiAqKHAgKyAzKSA9PSAnXG4nKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IHJldHVybiBmYWxzZTsKK30KKworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGNo
YXIgd2ViU29ja2V0UmVzcG9uc2VIZWFkZXJbXSA9ICJIVFRQLzEuMSAxMDEgV2ViIFNvY2tldCBQ
cm90b2NvbCBIYW5kc2hha2VcclxuIjsKK2NvbnN0IGNoYXIgd2ViU29ja2V0VXBncmFkZUhlYWRl
cltdID0gIlVwZ3JhZGU6IFdlYlNvY2tldFxyXG4iCisgICAgICAgICJDb25uZWN0aW9uOiBVcGdy
YWRlXHJcbiI7CisKK1dlYlNvY2tldFJlc3BvbnNlOjpXZWJTb2NrZXRSZXNwb25zZSgpCisgICAg
ICAgIDogbV92YWxpZChmYWxzZSkKKyAgICAgICAgLCBtX2hlYWRlcl9sZW5ndGgoMCkKKyAgICAg
ICAgLCBtX21vZGUoSW5jb21wbGV0ZSkKK3sKK30KKworV2ViU29ja2V0UmVzcG9uc2U6On5XZWJT
b2NrZXRSZXNwb25zZSgpCit7Cit9CisKK3ZvaWQgV2ViU29ja2V0UmVzcG9uc2U6OmNsZWFyKCkK
K3sKKyAgICBtX3ZhbGlkID0gZmFsc2U7CisgICAgbV9oZWFkZXJfbGVuZ3RoID0gMDsKKyAgICBt
X21vZGUgPSBJbmNvbXBsZXRlOworCisgICAgbV93c19vcmlnaW4gPSBTdHJpbmcoKTsKKyAgICBt
X3dzX2xvY2F0aW9uID0gU3RyaW5nKCk7CisgICAgbV93c19wcm90b2NvbCA9IFN0cmluZygpOwor
ICAgIG1fbG9jYXRpb24gPSBTdHJpbmcoKTsKKyAgICBtX3d3d19hdXRoZW50aWNhdGUgPSBTdHJp
bmcoKTsKK30KKworY29uc3QgY2hhciogV2ViU29ja2V0UmVzcG9uc2U6OnBhcnNlSGVhZGVyKGNv
bnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5n
LCBTdHJpbmc+ID4qIGhlYWRlcnMpCit7CisgICAgVmVjdG9yPGNoYXI+IG5hbWU7CisgICAgVmVj
dG9yPGNoYXI+IHZhbHVlOworICAgIGZvciAoY29uc3QgY2hhciogcCA9IHN0YXJ0OyBwIDwgZW5k
OyBwKyspIHsKKyAgICAgICAgbmFtZS5jbGVhcigpOworICAgICAgICB2YWx1ZS5jbGVhcigpOwor
CisgICAgICAgIGZvciAoOyBwIDwgZW5kOyBwKyspIHsKKyAgICAgICAgICAgIHN3aXRjaCAoKnAp
IHsKKyAgICAgICAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgICAgICAgICBpZiAobmFtZS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHAgKyAxIDwgZW5kICYmICoocCArIDEp
ID09ICdcbicpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcCArIDI7CisgICAgICAg
ICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiQ0YgZG9lc24ndCBmb2xsb3cgTEYgcD0lcCBlbmQ9
JXAiLCBwLCBlbmQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgTE9HKE5ldHdvcmssICJVbmV4cGVjdGVkIENSIGluIG5h
bWUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGNhc2UgJ1xuJzoK
KyAgICAgICAgICAgICAgICBMT0coTmV0d29yaywgIlVuZXhwZWN0ZWQgTEYgaW4gbmFtZSIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgY2FzZSAnOic6CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGlm
ICgqcCA+PSAweDQxICYmICpwIDw9IDB4NWEpCisgICAgICAgICAgICAgICAgICAgIG5hbWUuYXBw
ZW5kKCpwICsgMHgyMCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBuYW1lLmFwcGVuZCgqcCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoKnAgPT0gJzonKSB7CisgICAgICAgICAgICAgICAgKytwOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgZm9yICg7IHAgPCBlbmQgJiYgKnAgPT0gMHgyMDsgcCsrKSB7IH0KKworICAgICAgICBmb3Ig
KDsgcCA8IGVuZDsgcCsrKSB7CisgICAgICAgICAgICBzd2l0Y2ggKCpwKSB7CisgICAgICAgICAg
ICBjYXNlICdccic6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdc
bic6CisgICAgICAgICAgICAgICAgTE9HKE5ldHdvcmssICJVbmV4cGVjdGVkIExGIGluIHZhbHVl
Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIHZhbHVlLmFwcGVuZCgqcCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoKnAgPT0gJ1xyJykgeworICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAocCA+PSBlbmQg
fHwgKnAgIT0gJ1xuJykgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDUiBkb2Vzbid0IGZv
bGxvdyBMRiBhZnRlciB2YWx1ZSBwPSVwIGVuZD0lcCIsIHAsIGVuZCk7CisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgbmFtZV9zdHIgPSBTdHJpbmc6OmZy
b21VVEY4KG5hbWUuZGF0YSgpLCBuYW1lLnNpemUoKSk7CisgICAgICAgIFN0cmluZyB2YWx1ZV9z
dHIgPSBTdHJpbmc6OmZyb21VVEY4KHZhbHVlLmRhdGEoKSwgdmFsdWUuc2l6ZSgpKTsKKyAgICAg
ICAgTE9HKE5ldHdvcmssICJuYW1lPSVzIHZhbHVlPSVzIiwgbmFtZV9zdHIudXRmOCgpLmRhdGEo
KSwgdmFsdWVfc3RyLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBoZWFkZXJzLT5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIobmFtZV9zdHIsIHZhbHVlX3N0cikpOworICAgIH0KKyAgICBMT0coTmV0d29y
aywgIlVuZXhwZWN0ZWQgZW5kIG9mIGhlYWRlciIpOworICAgIHJldHVybiAwOworfQorCitib29s
IFdlYlNvY2tldFJlc3BvbnNlOjpyZWFkSGFuZHNoYWtlUmVzcG9uc2UoY29uc3QgY2hhciogaGVh
ZGVyLCBzaXplX3QgbGVuKQoreworICAgIG1fdmFsaWQgPSBmYWxzZTsKKyAgICBtX2hlYWRlcl9s
ZW5ndGggPSAwOworICAgIG1fbW9kZSA9IEluY29tcGxldGU7CisgICAgaWYgKGxlbiA8IHNpemVv
Zih3ZWJTb2NrZXRSZXNwb25zZUhlYWRlcikgLSAxKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAi
c2hvcnQgcmVzcG9uc2UgaGVhZGVyIGxlbj0lZCIsIGxlbik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgaWYgKCFtZW1jbXAoaGVhZGVyLCB3ZWJTb2NrZXRSZXNwb25zZUhlYWRl
ciwgc2l6ZW9mKHdlYlNvY2tldFJlc3BvbnNlSGVhZGVyKSAtIDEpKQorICAgICAgICBtX21vZGUg
PSBOb3JtYWw7CisgICAgZWxzZSB7CisgICAgICAgIGNvbnN0IFN0cmluZyYgY29kZSA9IGV4dHJh
Y3RSZXNwb25zZUNvZGUoaGVhZGVyLCBsZW4pOworICAgICAgICBpZiAoY29kZS5pc051bGwoKSkg
eworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJzaG9ydCByZXNwb25zZSBoZWFkZXI6ICVzIiwg
aGVhZGVyKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoY29kZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAibm8gcmVzcG9u
c2UgY29kZSBmb3VuZDogJXMiLCBoZWFkZXIpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICAgICAgTE9HKE5ldHdvcmssICJyZXNwb25zZSBjb2RlOiAlcyIsIGNvZGUu
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGlmIChjb2RlID09ICIzMDEiIHx8IGNvZGUgPT0gIjMw
MiIgfHwgY29kZSA9PSAiMzAzIiB8fCBjb2RlID09ICIzMDciKQorICAgICAgICAgICAgbV9tb2Rl
ID0gUmVkaXJlY3Q7CisgICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gIjQwMSIpCisgICAgICAgICAg
ICBtX21vZGUgPSBBdXRoZW50aWNhdGU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgTE9H
KE5ldHdvcmssICJNaXNtYXRjaCByZXNwb25zZSBoZWFkZXI6ICVzIiwgaGVhZGVyKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIGNvbnN0IGNoYXIgKnAg
PSBoZWFkZXIgKyBzaXplb2Yod2ViU29ja2V0UmVzcG9uc2VIZWFkZXIpIC0gMTsKKyAgICBjb25z
dCBjaGFyICplbmQgPSBoZWFkZXIgKyBsZW4gKyAxOworCisgICAgaWYgKG1fbW9kZSA9PSBOb3Jt
YWwpIHsKKyAgICAgICAgaWYgKGVuZCAtIHAgPCBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRl
cikgLSAxKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAobWVtY21wKHAs
IHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIsIHNpemVvZih3ZWJTb2NrZXRVcGdyYWRlSGVhZGVyKSAt
IDEpKSB7CisgICAgICAgICAgICBMT0coTmV0d29yaywgIkJhZCB1cGdyYWRlIGhlYWRlcjogJXMi
LCBwKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHAgKz0g
c2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMTsKKyAgICB9CisKKyAgICBpZiAoIWhh
ZFJlc3BvbnNlSGVhZGVyKHAsIGVuZCkpIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJpbmNvbXBs
ZXRlIHJlc3BvbnNlIGhlYWRlciBsZW49JWQiLCBsZW4pOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+ID4gaGVhZGVyczsK
KyAgICBwID0gcGFyc2VIZWFkZXIocCwgZW5kLCAmaGVhZGVycyk7CisgICAgaWYgKCFwKSB7Cisg
ICAgICAgIExPRyhOZXR3b3JrLCAicGFyc2VIZWFkZXIgZmFpbGVkIik7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICAvLyBfSGVhZGVycyBwcm9jZXNzaW5nXworICAgIGZvciAoVmVj
dG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4gPjo6aXRlcmF0b3IgaXQgPSBoZWFkZXJzLmJl
Z2luKCk7IGl0ICE9IGhlYWRlcnMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgc3dpdGNoIChtX21v
ZGUpIHsKKyAgICAgICAgY2FzZSBOb3JtYWw6CisgICAgICAgICAgICBpZiAoaXQtPmZpcnN0ID09
ICJ3ZWJzb2NrZXQtb3JpZ2luIikgeworICAgICAgICAgICAgICAgIGlmICghbV93c19vcmlnaW4u
aXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
ICAgIG1fd3Nfb3JpZ2luID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQt
PmZpcnN0ID09ICJ3ZWJzb2NrZXQtbG9jYXRpb24iKSB7CisgICAgICAgICAgICAgICAgaWYgKCFt
X3dzX2xvY2F0aW9uLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBtX3dzX2xvY2F0aW9uID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJ3ZWJzb2NrZXQtcHJvdG9jb2wiKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFtX3dzX3Byb3RvY29sLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtX3dzX3Byb3RvY29sID0gaXQtPnNlY29u
ZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJlZGly
ZWN0OgorICAgICAgICAgICAgaWYgKGl0LT5maXJzdCA9PSAibG9jYXRpb24iKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFtX2xvY2F0aW9uLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtX2xvY2F0aW9uID0gaXQtPnNlY29uZDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF1dGhlbnRpY2F0
ZToKKyAgICAgICAgICAgIGlmIChpdC0+Zmlyc3QgPT0gInd3dy1hdXRoZW50aWNhdGUiKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFtX3d3d19hdXRoZW50aWNhdGUuaXNOdWxsKCkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIG1fd3d3X2F1dGhlbnRp
Y2F0ZSA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAidW5leHBlY3RlZCBtb2Rl
OiAlZCIsIG1fbW9kZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBpZiAobV9tb2RlID09IE5vcm1hbCAmJiAobV93c19vcmlnaW4uaXNOdWxsKCkgfHwg
bV93c19sb2NhdGlvbi5pc051bGwoKSkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICht
X21vZGUgPT0gUmVkaXJlY3QgJiYgbV9sb2NhdGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgaWYgKG1fbW9kZSA9PSBBdXRoZW50aWNhdGUgJiYgbV93d3dfYXV0aGVudGlj
YXRlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBtX3ZhbGlkID0gdHJ1ZTsK
KyAgICBtX2hlYWRlcl9sZW5ndGggPSBwIC0gaGVhZGVyOworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIFdlYlNvY2tldFJlc3BvbnNlOjppc1ZhbGlkSGVhZGVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV92YWxpZDsKK30KKworc2l6ZV90IFdlYlNvY2tldFJlc3BvbnNlOjpoZWFkZXJMZW5n
dGgoKSBjb25zdAoreworICAgIHJldHVybiBtX2hlYWRlcl9sZW5ndGg7Cit9CisKK1dlYlNvY2tl
dFJlc3BvbnNlOjpNb2RlIFdlYlNvY2tldFJlc3BvbnNlOjptb2RlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9tb2RlOworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldFJlc3BvbnNlOjp3ZWJz
b2NrZXRfb3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93c19vcmlnaW47Cit9CisKK3Zv
aWQgV2ViU29ja2V0UmVzcG9uc2U6OnNldFdlYlNvY2tldE9yaWdpbihjb25zdCBTdHJpbmcmIHdl
YnNvY2tldF9vcmlnaW4pCit7CisgICAgbV93c19vcmlnaW4gPSB3ZWJzb2NrZXRfb3JpZ2luOwor
fQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldFJlc3BvbnNlOjp3ZWJzb2NrZXRfbG9jYXRpb24o
KSBjb25zdAoreworICAgIHJldHVybiBtX3dzX2xvY2F0aW9uOworfQorCit2b2lkIFdlYlNvY2tl
dFJlc3BvbnNlOjpzZXRXZWJTb2NrZXRMb2NhdGlvbihjb25zdCBTdHJpbmcmIHdlYnNvY2tldF9s
b2NhdGlvbikKK3sKKyAgICBtX3dzX2xvY2F0aW9uID0gd2Vic29ja2V0X2xvY2F0aW9uOworfQor
Citjb25zdCBTdHJpbmcmIFdlYlNvY2tldFJlc3BvbnNlOjp3ZWJzb2NrZXRfcHJvdG9jb2woKSBj
b25zdAoreworICAgIHJldHVybiBtX3dzX3Byb3RvY29sOworfQorCit2b2lkIFdlYlNvY2tldFJl
c3BvbnNlOjpzZXRXZWJTb2NrZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHdlYnNvY2tldF9wcm90
b2NvbCkKK3sKKyAgICBtX3dzX3Byb3RvY29sID0gd2Vic29ja2V0X3Byb3RvY29sOworfQorCitj
b25zdCBTdHJpbmcmIFdlYlNvY2tldFJlc3BvbnNlOjpsb2NhdGlvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fbG9jYXRpb247Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0UmVzcG9uc2U6
Ond3d19hdXRoZW50aWNhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3d3d19hdXRoZW50aWNh
dGU7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0UmVzcG9uc2UuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRSZXNwb25zZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyODI2N2QK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0UmVzcG9uc2Uu
aApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0UmVzcG9uc2VfaAorI2RlZmluZSBX
ZWJTb2NrZXRSZXNwb25zZV9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgV2Vi
U29ja2V0UmVzcG9uc2UgeworICAgICAgcHVibGljOgorICAgICAgICBlbnVtIE1vZGUgeworICAg
ICAgICAgICAgSW5jb21wbGV0ZSwgTm9ybWFsLCBSZWRpcmVjdCwgQXV0aGVudGljYXRlCisgICAg
ICAgIH07CisgICAgICAgIFdlYlNvY2tldFJlc3BvbnNlKCk7CisgICAgICAgIH5XZWJTb2NrZXRS
ZXNwb25zZSgpOworCisgICAgICAgIHZvaWQgY2xlYXIoKTsKKworICAgICAgICBib29sIHJlYWRI
YW5kc2hha2VSZXNwb25zZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBsZW4pOworCisgICAg
ICAgIGJvb2wgaXNWYWxpZEhlYWRlcigpIGNvbnN0OworICAgICAgICBzaXplX3QgaGVhZGVyTGVu
Z3RoKCkgY29uc3Q7CisgICAgICAgIE1vZGUgbW9kZSgpIGNvbnN0OworCisgICAgICAgIGNvbnN0
IFN0cmluZyYgd2Vic29ja2V0X29yaWdpbigpIGNvbnN0OworICAgICAgICB2b2lkIHNldFdlYlNv
Y2tldE9yaWdpbihjb25zdCBTdHJpbmcmIHdlYnNvY2tldF9vcmlnaW4pOworCisgICAgICAgIGNv
bnN0IFN0cmluZyYgd2Vic29ja2V0X2xvY2F0aW9uKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0
V2ViU29ja2V0TG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzb2NrZXRfbG9jYXRpb24pOworCisg
ICAgICAgIGNvbnN0IFN0cmluZyYgd2Vic29ja2V0X3Byb3RvY29sKCkgY29uc3Q7CisgICAgICAg
IHZvaWQgc2V0V2ViU29ja2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJiB3ZWJzb2NrZXRfcHJvdG9j
b2wpOworCisgICAgICAgIGNvbnN0IFN0cmluZyYgbG9jYXRpb24oKSBjb25zdDsKKyAgICAgICAg
Y29uc3QgU3RyaW5nJiB3d3dfYXV0aGVudGljYXRlKCkgY29uc3Q7CisKKyAgICAgIHByaXZhdGU6
CisgICAgICAgIGNvbnN0IGNoYXIqIHBhcnNlSGVhZGVyKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25z
dCBjaGFyKiBlbmQsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+ID4gKmhlYWRlcnMp
OworCisgICAgICAgIGJvb2wgbV92YWxpZDsKKyAgICAgICAgc2l6ZV90IG1faGVhZGVyX2xlbmd0
aDsKKyAgICAgICAgTW9kZSBtX21vZGU7CisKKyAgICAgICAgU3RyaW5nIG1fd3Nfb3JpZ2luOwor
ICAgICAgICBTdHJpbmcgbV93c19sb2NhdGlvbjsKKyAgICAgICAgU3RyaW5nIG1fd3NfcHJvdG9j
b2w7CisgICAgICAgIFN0cmluZyBtX2xvY2F0aW9uOworICAgICAgICBTdHJpbmcgbV93d3dfYXV0
aGVudGljYXRlOworICAgIH07CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAg
Ly8gV2ViU29ja2V0UmVzcG9uc2VfaA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38465</attachid>
            <date>2009-08-23 19:53:03 -0700</date>
            <delta_ts>2009-08-24 00:16:28 -0700</delta_ts>
            <desc>WebSocket API implementation. depends on bug 28037</desc>
            <filename>bug-28038-20090824115301.patch</filename>
            <type>text/plain</type>
            <size>62426</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGVkYTM5ZC4uZjhkYjc2YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAwOS0wOC0yNCAgRnVtaXRvc2hpIFVr
YWkgIDx1a2FpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZWJTb2NrZXQgQVBJIGltcGxlbWVudGF0aW9uLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgwMzgKKyAgICAgICAgCisg
ICAgICAgIEFkZCBidWlsZCBzeXN0ZW1zIG9ubHkgZm9yIEdOVW1ha2VmaWxlLmFtIGFuZCBXZWJD
b3JlLnhjb2RlcHJvaiBub3cuCisgICAgICAgIE90aGVyIGJ1aWxkIHN5c3RlbXMgd2lsbCBiZSB1
cGRhdGVkIG9uY2UgdGhlIGNvZGUgaXMgZnVuY3Rpb25hbC4KKyAgICAgICAgVGVzdHMgd2lsbCBi
ZSBsYW5kZWQgb25jZSB0aGUgY29kZSBpcyBjb21wbGV0ZWQgYW5kIGZ1bmN0aW9uYWwuCisgICAg
ICAgIERlcGVuZHMgb24gcGF0Y2ggb2YgYnVnIDI4MDM3LgorCisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMuY3BwOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6d2ViU29ja2V0
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9FdmVudFRhcmdldCk6CisgICAgICAg
ICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnRvV2ViU29ja2V0KToKKyAgICAgICAgKiBkb20v
RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICog
d2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SXNWYWxpZFByb3Rv
Y29sU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y29ubmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmJ1ZmZlcmVkQW1vdW50
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldDo6ZGlkQ29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZFJl
Y2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkQ2xvc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaXNwYXRjaE9wZW5FdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNoTWVzc2FnZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldDo6ZGlzcGF0Y2hDbG9zZUV2ZW50KToKKyAgICAgICAgKiB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjopOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjpzZXRPbm9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojpvbm9wZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpzZXRPbm1lc3NhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Ojpvbm1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
OjpzZXRPbmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6b25jbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnRvV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6ZXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRlcmVm
RXZlbnRUYXJnZXQpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6
IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOiBBZGRlZC4K
KyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaDogQWRkZWQuCisg
ICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VyLmNwcDogQWRkZWQuCisgICAg
ICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VyLmg6IEFkZGVkLgorCiAyMDA5LTA4
LTIzICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5jcHAgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAppbmRleCBkMTI3YzQ4Li41YmMy
OWNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAorKysgYi9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMzM3LDYgKzMzNyw3IEBACiAjaW5jbHVkZSAiSlNXZWJL
aXRDU1NNYXRyaXguY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0UG9pbnQuY3BwIgogI2luY2x1ZGUg
IkpTV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCIKKyNpbmNsdWRlICJKU1dlYlNvY2tldC5jcHAi
CiAjaW5jbHVkZSAiSlNXaGVlbEV2ZW50LmNwcCIKICNpbmNsdWRlICJKU1dvcmtlci5jcHAiCiAj
aW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0LmNwcCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDY1ODI0YjQuLjI3Y2E4ZGQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQpAQCAtMzIxMyw3ICszMjEzLDEyIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldENvbnN0cnVjdG9yLmggXAogCVdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwIFwKIAlXZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcCBcCi0JV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisJV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldC5oIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5jcHAgXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggXAorCVdl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggXAorCVdlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VyLmNwcCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZXIuaAogCiBlbHNlCiB3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxF
X1dFQl9TT0NLRVRTPTAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZjczMzAzNy4uNDNiMTc4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTgzMiw2ICs4MzIsOSBAQAogCQk0RTE5NTkyRTBBMzlEQUNDMDAyMjBG
RTUgLyogTWVkaWFRdWVyeUV4cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEUxOTU5MjgwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCAq
LzsgfTsKIAkJNTEwMTg0NjkwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY3MEIwODYwMkEw
MDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTEwMTg0NkEwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0
NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovOyB9OworCQk1MTBENEE0RTEw
MzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEE0NzEwMzE3N0EyMDA0OUVBNTQgLyog
V2ViU29ja2V0Q2hhbm5lbC5jcHAgKi87IH07CisJCTUxMEQ0QTRGMTAzMTc3QTIwMDQ5RUE1NCAv
KiBXZWJTb2NrZXRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5o
ICovOyB9OworCQk1MTBENEE1MDEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbENs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
RDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCAqLzsgfTsK
IAkJNTExNkQ5NzcwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExNkQ5NzUwQ0YxNzdCRDAw
QzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUxMUYyMzE3MERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0
b3JhZ2VUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMUYyMzEzMERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmNwcCAqLzsg
fTsKIAkJNTExRjIzMTgwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYyMzE0MERDMTYw
REEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmggKi87IH07CkBAIC05MTUsNiArOTE4LDgg
QEAKIAkJNTFBOTI2N0UwRDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblVzYWdlUmVjb3JkLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTkyNjdBMEQ1
M0YwNTcwMDYzRUNDMiAvKiBPcmlnaW5Vc2FnZVJlY29yZC5jcHAgKi87IH07CiAJCTUxQTkyNjdG
MEQ1M0YwNTcwMDYzRUNDMiAvKiBPcmlnaW5Vc2FnZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBOTI2N0IwRDUzRjA1NzAwNjNFQ0MyIC8q
IE9yaWdpblVzYWdlUmVjb3JkLmggKi87IH07CiAJCTUxQUEzRjZGMEJENUFBOUUwMDg5Mjk3MSAv
KiBSZXNvdXJjZUxvYWRlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQUEzRjZFMEJENUFBOUUwMDg5Mjk3MSAvKiBSZXNvdXJjZUxvYWRlck1h
Yy5tbSAqLzsgfTsKKwkJNTFBQkFFMkUxMDNENEY3NTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRz
aGFrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFBQkFFMkMxMDNENEY3NTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuY3BwICovOyB9
OworCQk1MUFCQUUyRjEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFMkQxMDNE
NEY3NTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuaCAqLzsgfTsKIAkJNTFCMjQxN0Iw
RDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIyNDE3QTBEOTMxRjNGMDBFODNGNUMg
LyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSAqLzsgfTsKIAkJNTFCRTM3RTAwREFFRTAwRTAwMTA4
NUZDIC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUJFMzdERTBEQUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCAqLzsg
fTsKIAkJNTFDMEFBMzkwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQUEzODBGMkFBMTBBMDAx
NjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNTg5OSw2ICs1OTA0LDkgQEAKIAkJNEUxOTU5MjgwQTM5REFDQzAw
MjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhUXVlcnlFeHAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0
NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2FjaGVkUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0Q2hhbm5l
bC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0QTQ4MTAzMTc3QTIwMDQ5
RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlNvY2tldENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEw
RDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTE2RDk3NTBDRjE3N0JEMDBDMkI4NEQgLyogRGF0
YWJhc2VEZXRhaWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNl
RGV0YWlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFGMjMxMzBEQzE2MERB
MDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBMb2NhbFN0b3JhZ2VUYXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTExRjIzMTQwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxTdG9yYWdlVGFzay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTk4OSw2ICs1OTk3LDggQEAKIAkJNTFBOTI2N0Ew
RDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblVzYWdlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9yaWdpblVzYWdlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTFBOTI2N0IwRDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblVzYWdl
UmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9yaWdpblVzYWdlUmVj
b3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQUEzRjZFMEJENUFBOUUwMDg5
Mjk3MSAvKiBSZXNvdXJjZUxvYWRlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFJlc291cmNlTG9hZGVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MUFCQUUyQzEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hh
a2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFMkQxMDNENEY3NTAw
OEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUIyNDE3QTBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExlZ2FjeVdlYkFyY2hpdmVN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkUzN0RFMERBRUUwMEUwMDEw
ODVGQyAvKiBTdG9yYWdlQXJlYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dG9yYWdlQXJlYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUEzODBGMkFB
MTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2FjaGVkRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNDA2
LDYgKzEwNDE2LDExIEBACiAJCTUxOEEzNEJEMTAyNkM4MzEwMDFCNjg5NiAvKiB3ZWJzb2NrZXRz
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MUFCQUUy
QzEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5jcHAgKi8sCisJCQkJNTFB
QkFFMkQxMDNENEY3NTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuaCAqLywKKwkJCQk1
MTBENEE0NzEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8sCisJCQkJ
NTEwRDRBNDgxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCAqLywKKwkJCQk1
MTBENEE0OTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oICovLAog
CQkJCTUxOEEzNEJFMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJTb2NrZXQuY3BwICovLAogCQkJCTUx
OEEzNEJGMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJTb2NrZXQuaCAqLywKIAkJCQk1MThBMzRDMDEw
MjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmlkbCAqLywKQEAgLTE3MzMwLDYgKzE3MzQ1LDkg
QEAKIAkJCQlCQ0ZBOTMwODEwMzMzMTkzMDA3QjI1RDEgLyogUmVuZGVyT3ZlcmZsb3cuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTAwMTQ2MjhCMTAzQ0QxREUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NF
bnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjUxQkY2RjExMDJDOUU1OTAwMDJDMTVBIC8qIFNR
TFRyYW5zYWN0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTBENEE0RjEwMzE3N0Ey
MDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRB
NTAxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUxQUJBRTJGMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE5Mzk4LDYgKzE5NDE2LDggQEAKIAkJCQlCNUMxMTIzQjEw
MkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwMDE0NjI4QTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnku
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjUxQkY2RjAxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRy
YW5zYWN0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMEQ0QTRFMTAzMTc3QTIw
MDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxQUJB
RTJFMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA0NGEx
MWU0Li44MzQ1Y2ZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
SlNXZWJLaXRQb2ludENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNXZWJTb2NrZXRDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIkpTV29ya2VyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1hN
TEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1hTTFRQcm9jZXNzb3JDb25z
dHJ1Y3Rvci5oIgpAQCAtNDk3LDYgKzQ5OCwxMyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzaGFy
ZWRXb3JrZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
V0VCX1NPQ0tFVFMpCitKU1ZhbHVlIEpTRE9NV2luZG93Ojp3ZWJTb2NrZXQoRXhlY1N0YXRlKiBl
eGVjKSBjb25zdAoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1dlYlNvY2tldENv
bnN0cnVjdG9yPihleGVjLCB0aGlzKTsKK30KKyNlbmRpZgorCiAvLyBDdXN0b20gZnVuY3Rpb25z
CiAKIC8vIEhlbHBlciBmb3Igd2luZG93Lm9wZW4oKSBhbmQgd2luZG93LnNob3dNb2RhbERpYWxv
ZygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAppbmRleCA1ODI1ZWU1Li5hYjZl
ZmVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAKQEAgLTcwLDYgKzcwLDEx
IEBACiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKKyNpbmNsdWRlICJKU1dlYlNvY2tldC5oIgorI2luY2x1ZGUgIldlYlNvY2tldC5o
IgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTEzMSw2ICsxMzYsMTEgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXZlbnRUYXJnZXQqIHRhcmcKICAgICAgICAgcmV0
dXJuIHRvSlMoZXhlYywgbm90aWZpY2F0aW9uKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9T
T0NLRVRTKQorICAgIGlmIChXZWJTb2NrZXQqIHdlYnNvY2tldCA9IHRhcmdldC0+dG9XZWJTb2Nr
ZXQoKSkKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgd2Vic29ja2V0KTsKKyNlbmRpZgorCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwogfQpAQCAtMTc1
LDYgKzE4NSwxMCBAQCBFdmVudFRhcmdldCogdG9FdmVudFRhcmdldChKU0M6OkpTVmFsdWUgdmFs
dWUpCiAgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJHRVQoTm90aWZpY2F0aW9uKQogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJHRVQoV2Vi
U29ja2V0KQorI2VuZGlmCisKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5oIGIvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IDcyNjYw
NDQuLjVjNjE5NTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9X
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTEzNCw2ICsxMzQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgXAogICAgIG1hY3JvKHdlYmtpdFRyYW5zaXRpb25FbmQpIFwKICAgICBcCisg
ICAgbWFjcm8ob3BlbikgXAogLy8gZW5kIG9mIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSAogCiAg
ICAgY2xhc3MgRXZlbnROYW1lcyB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dC5jcHAgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggMmYxM2RhOC4uNjUyNjQ0
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtODMsNiArODMsMTMgQEAgU1ZHRWxlbWVudEluc3RhbmNl
KiBFdmVudFRhcmdldDo6dG9TVkdFbGVtZW50SW5zdGFuY2UoKQogfQogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoV0VCX1NPQ0tFVFMpCitXZWJTb2NrZXQqIEV2ZW50VGFyZ2V0Ojp0b1dlYlNvY2tldCgp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogTWVzc2FnZVBvcnQqIEV2ZW50VGFyZ2V0
Ojp0b01lc3NhZ2VQb3J0KCkKIHsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmggYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IDZkM2Ni
N2MuLjZiY2MzZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtNTEsNiArNTEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBTaGFy
ZWRXb3JrZXI7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyQ29udGV4dDsKKyAgICBjbGFzcyBXZWJT
b2NrZXQ7CiAgICAgY2xhc3MgV29ya2VyOwogICAgIGNsYXNzIFhNTEh0dHBSZXF1ZXN0OwogICAg
IGNsYXNzIFhNTEh0dHBSZXF1ZXN0VXBsb2FkOwpAQCAtNzUsMTEgKzc2LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBXb3JrZXIqIHRvV29ya2VyKCk7CiAgICAgICAg
IHZpcnR1YWwgRGVkaWNhdGVkV29ya2VyQ29udGV4dCogdG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0
KCk7CiAjZW5kaWYKLQogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKICAgICAgICAgdmlydHVh
bCBTaGFyZWRXb3JrZXIqIHRvU2hhcmVkV29ya2VyKCk7CiAgICAgICAgIHZpcnR1YWwgU2hhcmVk
V29ya2VyQ29udGV4dCogdG9TaGFyZWRXb3JrZXJDb250ZXh0KCk7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIHZpcnR1YWwgV2ViU29ja2V0KiB0b1dlYlNvY2tldCgp
OworI2VuZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICAgICAgdmlydHVhbCBO
b3RpZmljYXRpb24qIHRvTm90aWZpY2F0aW9uKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDZlNTIwZTMu
LjhiN2MzYWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC00NzcsNiArNDc3LDEwIEBAIG1vZHVsZSB3aW5k
b3cgewogICAgICAgICBhdHRyaWJ1dGUgW0pTQ0N1c3RvbUdldHRlcl0gU2hhcmVkV29ya2VyQ29u
c3RydWN0b3IgU2hhcmVkV29ya2VyOyAvLyBVc2FibGUgd2l0aCB0aGUgbmV3IG9wZXJhdG9yCiAj
ZW5kaWYKIAorI2lmIGRlZmluZWQoRU5BQkxFX1dFQl9TT0NLRVRTKSAmJiBFTkFCTEVfV0VCX1NP
Q0tFVFMKKyAgICAgICAgYXR0cmlidXRlIFtKU0NDdXN0b21HZXR0ZXJdIFdlYlNvY2tldENvbnN0
cnVjdG9yIFdlYlNvY2tldDsgLy8gVXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRvcgorI2VuZGlm
CisKICAgICAgICAgYXR0cmlidXRlIFBsdWdpbkNvbnN0cnVjdG9yIFBsdWdpbjsKICAgICAgICAg
YXR0cmlidXRlIFBsdWdpbkFycmF5Q29uc3RydWN0b3IgUGx1Z2luQXJyYXk7CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAKaW5kZXggOTk5YzFmZi4uOGYwMGM0OCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAKQEAgLTM0LDEzICszNCwzMSBAQAogCiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCiAK
KyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAi
RXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV2ZW50TGlz
dGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIldlYlNvY2tldENo
YW5uZWwuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorc3RhdGljIGJvb2wgSXNWYWxpZFByb3RvY29sU3RyaW5nKGNvbnN0IFdlYkNvcmU6
OlN0cmluZyYgcHJvdG9jb2wpCit7CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBwcm90
b2NvbC5jaGFyYWN0ZXJzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm90b2NvbC5s
ZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldIDwgMHgyMSB8fCBjaGFy
YWN0ZXJzW2ldID4gMHg3RSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIFdlYlNvY2tldDo6V2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAg
ICAsIG1fc3RhdGUoQ09OTkVDVElORykKQEAgLTU5LDEwICs3NywxMiBAQCB2b2lkIFdlYlNvY2tl
dDo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiB2b2lkIFdl
YlNvY2tldDo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2ws
IEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNv
bm5lY3QgdG8gJXMgcHJvdG9jb2w9JXMiLCB0aGlzLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgcHJvdG9jb2wudXRmOCgpLmRhdGEoKSk7CiAgICAgbV91cmwgPSB1cmw7CiAgICAgbV9wcm90
b2NvbCA9IHByb3RvY29sOwogCiAgICAgaWYgKCFtX3VybC5wcm90b2NvbElzKCJ3cyIpICYmICFt
X3VybC5wcm90b2NvbElzKCJ3c3MiKSkgeworICAgICAgICBMT0dfRVJST1IoIkVycm9yOiB3cm9u
ZyB1cmwgZm9yIFdlYlNvY2tldCAlcyIsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAg
ICAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAg
ICByZXR1cm47CkBAIC03MiwyNiArOTIsMzkgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlJgogICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgLy8gRklY
TUU6IENoZWNrIHByb3RvY29sIGlzIHZhbGlkIGZvcm0uCi0gICAgLy8gRklYTUU6IENvbm5lY3Qg
V2ViU29ja2V0Q2hhbm5lbC4KKyAgICBpZiAoIXByb3RvY29sLmlzRW1wdHkoKSAmJiAhSXNWYWxp
ZFByb3RvY29sU3RyaW5nKHByb3RvY29sKSkgeworICAgICAgICBMT0dfRVJST1IoIkVycm9yOiB3
cm9uZyBwcm90b2NvbCBmb3IgV2ViU29ja2V0ICVzIiwgcHJvdG9jb2wudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIG1fc3RhdGUgPSBDTE9TRUQ7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhNRTogaWYgbV91cmwucG9ydCgpIGlzIGJs
b2NraW5nIHBvcnQsIHJhaXNlIFNFQ1VSSVRZX0VSUi4KKworICAgIG1fY2hhbm5lbCA9IFdlYlNv
Y2tldENoYW5uZWw6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIG1fdXJs
LCBtX3Byb3RvY29sKTsKKyAgICBtX2NoYW5uZWwtPmNvbm5lY3QoKTsKIH0KIAotYm9vbCBXZWJT
b2NrZXQ6OnNlbmQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgZWMpCitib29sIFdlYlNv
Y2tldDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewot
ICAgIGlmIChtX3N0YXRlICE9IE9QRU4pIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAl
cCBzZW5kICVzIiwgdGhpcywgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAobV9zdGF0
ZSA9PSBDT05ORUNUSU5HKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgLy8gRklYTUU6IHNlbmQgbWVzc2FnZSBvbiBX
ZWJTb2NrZXRDaGFubmVsLgotICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBObyBleGNlcHRpb24g
aXMgcmFpc2VkIGlmIHRoZSBjb25uZWN0aW9uIHdhcyBvbmNlIGVzdGFibGlzaGVkIGJ1dCBoYXMg
c3Vic2VxdWVudGx5IGJlZW4gY2xvc2VkLgorICAgIGlmIChtX3N0YXRlID09IENMT1NFRCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIEZJWE1FOiBjaGVjayBtZXNzYWdlIGlzIHZhbGlk
IHV0ZjguCisgICAgcmV0dXJuIG1fY2hhbm5lbC0+c2VuZChtZXNzYWdlKTsKIH0KIAogdm9pZCBX
ZWJTb2NrZXQ6OmNsb3NlKCkKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBjbG9z
ZSIsIHRoaXMpOwogICAgIGlmIChtX3N0YXRlID09IENMT1NFRCkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fc3RhdGUgPSBDTE9TRUQ7Ci0gICAgLy8gRklYTUU6IGNsb3NlIFdlYlNvY2tldENoYW5u
ZWwuCisgICAgbV9jaGFubmVsLT5jbG9zZSgpOwogfQogCiBjb25zdCBLVVJMJiBXZWJTb2NrZXQ6
OnVybCgpIGNvbnN0CkBAIC0xMDYsNyArMTM5LDggQEAgV2ViU29ja2V0OjpTdGF0ZSBXZWJTb2Nr
ZXQ6OnJlYWR5U3RhdGUoKSBjb25zdAogCiB1bnNpZ25lZCBsb25nIFdlYlNvY2tldDo6YnVmZmVy
ZWRBbW91bnQoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBhc2sgcGxhdGZvcm0gY29kZSB0byBn
ZXQgYnVmZmVyZWQgYW1vdW50IHRvIGJlIHNlbnQuCisgICAgaWYgKG1fc3RhdGUgPT0gT1BFTikK
KyAgICAgICAgcmV0dXJuIG1fY2hhbm5lbC0+YnVmZmVyZWRBbW91bnQoKTsKICAgICByZXR1cm4g
MDsKIH0KIApAQCAtMTE1LDI0ICsxNDksNTcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogV2Vi
U29ja2V0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gQWN0aXZl
RE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiB9CiAKLXZvaWQgV2ViU29ja2V0
OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYsIFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4sIGJvb2wpCit2b2lkIFdlYlNvY2tldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExp
c3RlbmVyLCBib29sKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBFdmVu
dExpc3RlbmVyc01hcDo6aXRlcmF0b3IgaXRlciA9IG1fZXZlbnRMaXN0ZW5lcnMuZmluZChldmVu
dFR5cGUpOworICAgIGlmIChpdGVyID09IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCkpIHsKKyAgICAg
ICAgTGlzdGVuZXJWZWN0b3IgbGlzdGVuZXJzOworICAgICAgICBsaXN0ZW5lcnMuYXBwZW5kKGV2
ZW50TGlzdGVuZXIpOworICAgICAgICBtX2V2ZW50TGlzdGVuZXJzLmFkZChldmVudFR5cGUsIGxp
c3RlbmVycyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTGlzdGVuZXJWZWN0b3ImIGxpc3RlbmVy
cyA9IGl0ZXItPnNlY29uZDsKKyAgICAgICAgZm9yIChMaXN0ZW5lclZlY3Rvcjo6aXRlcmF0b3Ig
bGlzdGVuZXJJdGVyID0gbGlzdGVuZXJzLmJlZ2luKCk7IGxpc3RlbmVySXRlciAhPSBsaXN0ZW5l
cnMuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKQorICAgICAgICAgICAgaWYgKCpsaXN0ZW5lckl0ZXIg
PT0gZXZlbnRMaXN0ZW5lcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGlz
dGVuZXJzLmFwcGVuZChldmVudExpc3RlbmVyKTsKKyAgICAgICAgbV9ldmVudExpc3RlbmVycy5h
ZGQoZXZlbnRUeXBlLCBsaXN0ZW5lcnMpOworICAgIH0KIH0KIAotdm9pZCBXZWJTb2NrZXQ6OnJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiwgRXZlbnRMaXN0ZW5lciosIGJv
b2wpCit2b2lkIFdlYlNvY2tldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5lciwgYm9vbCkKIHsKLSAg
ICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisgICAgRXZlbnRMaXN0ZW5lcnNNYXA6Oml0ZXJh
dG9yIGl0ZXIgPSBtX2V2ZW50TGlzdGVuZXJzLmZpbmQoZXZlbnRUeXBlKTsKKyAgICBpZiAoaXRl
ciA9PSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBMaXN0
ZW5lclZlY3RvciYgbGlzdGVuZXJzID0gaXRlci0+c2Vjb25kOworICAgIGZvciAoTGlzdGVuZXJW
ZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGxpc3RlbmVySXRlciA9IGxpc3RlbmVycy5iZWdpbigpOyBs
aXN0ZW5lckl0ZXIgIT0gbGlzdGVuZXJzLmVuZCgpOyArK2xpc3RlbmVySXRlcikKKyAgICAgICAg
aWYgKCpsaXN0ZW5lckl0ZXIgPT0gZXZlbnRMaXN0ZW5lcikgeworICAgICAgICAgICAgbGlzdGVu
ZXJzLnJlbW92ZShsaXN0ZW5lckl0ZXIgLSBsaXN0bmVycy5iZWdpbigpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQogfQogCi1ib29sIFdlYlNvY2tldDo6ZGlzcGF0Y2hFdmVudChQ
YXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpCitib29sIFdlYlNvY2tldDo6ZGlzcGF0
Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFl
dnQgfHwgZXZ0LT50eXBlKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGVjID0gRXZlbnRFeGNlcHRp
b246OlVOU1BFQ0lGSUVEX0VWRU5UX1RZUEVfRVJSOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBMaXN0ZW5lclZlY3RvciBsaXN0ZW5lcnNDb3B5ID0gbV9ldmVudExpc3RlbmVy
cy5nZXQoZXZ0LT50eXBlKCkpOworICAgIGZvciAoTGlzdGVuZXJWZWN0b3I6OmNvbnN0X2l0ZXJh
dG9yIGxpc3RlbmVySXRlciA9IGxpc3RlbmVyc0NvcHkuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9
IGxpc3RlbmVyc0NvcHkuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKSB7CisgICAgICAgIGV2dC0+c2V0
VGFyZ2V0KHRoaXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAg
ICAgIGxpc3RlbmVySXRlci0+Z2V0KCktPmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwgZmFsc2UpOwor
ICAgIH0KKyAgICByZXR1cm4gIWV2dC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogfQogCiB2b2lkIFdl
YlNvY2tldDo6ZGlkQ29ubmVjdCgpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAg
ZGlkQ29ubmVjdCIsIHRoaXMpOwogICAgIGlmIChtX3N0YXRlICE9IENPTk5FQ1RJTkcpIHsKICAg
ICAgICAgZGlkQ2xvc2UoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTQzLDYgKzIxMCw3IEBAIHZv
aWQgV2ViU29ja2V0OjpkaWRDb25uZWN0KCkKIAogdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
ICVwIGRpZFJlY2VpdmVNZXNzYWdlICVzIiwgdGhpcywgbXNnLnV0ZjgoKS5kYXRhKCkpOwogICAg
IGlmIChtX3N0YXRlICE9IE9QRU4pCiAgICAgICAgIHJldHVybjsKICAgICBkaXNwYXRjaE1lc3Nh
Z2VFdmVudChtc2cpOwpAQCAtMTUwLDIzICsyMTgsNTMgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKQogCiB2b2lkIFdlYlNvY2tldDo6ZGlkQ2xv
c2UoKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZENsb3NlIiwgdGhpcyk7
CiAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAgICBkaXNwYXRjaENsb3NlRXZlbnQoKTsKIH0KIAog
dm9pZCBXZWJTb2NrZXQ6OmRpc3BhdGNoT3BlbkV2ZW50KCkKIHsKLSAgICAvLyBGSVhNRTogaW1w
bGVtZW50IHRoaXMuCisgICAgUmVmUHRyPEV2ZW50PiBldnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5vcGVuRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgaWYgKG1fb25vcGVuKSB7Cisg
ICAgICAgIGV2dC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJn
ZXQodGhpcyk7CisgICAgICAgIG1fb25vcGVuLT5oYW5kbGVFdmVudChldnQuZ2V0KCksIGZhbHNl
KTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50
KGV2dC5yZWxlYXNlKCksIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKIH0KIAotdm9pZCBXZWJTb2Nr
ZXQ6OmRpc3BhdGNoTWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYpCit2b2lkIFdlYlNvY2tldDo6
ZGlzcGF0Y2hNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBtc2cpCiB7Ci0gICAgLy8gRklYTUU6
IGltcGxlbWVudCB0aGlzLgorICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2dCA9IE1lc3NhZ2VF
dmVudDo6Y3JlYXRlKCk7CisgICAgLy8gRklYTUU6IG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJj
ZSwgbWVzc2FnZVBvcnQuCisgICAgZXZ0LT5pbml0TWVzc2FnZUV2ZW50KGV2ZW50TmFtZXMoKS5t
ZXNzYWdlRXZlbnQsIGZhbHNlLCBmYWxzZSwgbXNnLCAiIiwgIiIsIDAsIDApOworICAgIGlmICht
X29ubWVzc2FnZSkgeworICAgICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0
LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29ubWVzc2FnZS0+aGFuZGxlRXZl
bnQoZXZ0LmdldCgpLCBmYWxzZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7
CiB9CiAKIHZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaENsb3NlRXZlbnQoKQogewotICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBSZWZQdHI8RXZlbnQ+IGV2dCA9IEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgaWYgKG1fb25j
bG9zZSkgeworICAgICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRD
dXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29uY2xvc2UtPmhhbmRsZUV2ZW50KGV2dC5n
ZXQoKSwgZmFsc2UpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRp
c3BhdGNoRXZlbnQoZXZ0LnJlbGVhc2UoKSwgZWMpOworICAgIEFTU0VSVCghZWMpOwogfQogCiB9
ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldC5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IDQ4NWUyY2Mu
LmEyOTg2NDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysg
Yi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTMxLDkzICszMSwxMDEgQEAKICNp
Zm5kZWYgV2ViU29ja2V0X2gKICNkZWZpbmUgV2ViU29ja2V0X2gKIAorI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKKwogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkF0b21p
Y1N0cmluZ0hhc2guaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZl
bnRUYXJnZXQuaCIKICNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5l
bENsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFN0cmluZzsKKyAgICBjbGFz
cyBTdHJpbmc7CisgICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbDsKIAotY2xhc3MgV2ViU29ja2V0
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJT
b2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViU29ja2V0KGNvbnRleHQpKTsgfQotICAgIHZpcnR1YWwgfldlYlNvY2tl
dCgpOworICAgIGNsYXNzIFdlYlNvY2tldCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlNvY2tldD4s
IHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFdlYlNv
Y2tldENoYW5uZWxDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYlNvY2tldChjb250ZXh0KSk7IH0KKyAgICAgICAgdmlydHVh
bCB+V2ViU29ja2V0KCk7CiAKLSAgICBlbnVtIFN0YXRlIHsKLSAgICAgICAgQ09OTkVDVElORyA9
IDAsCi0gICAgICAgIE9QRU4gPSAxLAotICAgICAgICBDTE9TRUQgPSAyCi0gICAgfTsKKyAgICAg
ICAgZW51bSBTdGF0ZSB7CisgICAgICAgICAgICBDT05ORUNUSU5HID0gMCwKKyAgICAgICAgICAg
IE9QRU4gPSAxLAorICAgICAgICAgICAgQ0xPU0VEID0gMgorICAgICAgICB9OwogCi0gICAgdm9p
ZCBjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgY29u
bmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgRXhjZXB0aW9uQ29k
ZSYpOworICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBib29sIHNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIGJvb2wgc2VuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZvaWQgY2xvc2UoKTsKKyAgICAg
ICAgdm9pZCBjbG9zZSgpOwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7Ci0gICAgU3Rh
dGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwotICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQo
KSBjb25zdDsKKyAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7CisgICAgICAgIFN0YXRl
IHJlYWR5U3RhdGUoKSBjb25zdDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3Vu
dCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRPbm9wZW4oUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiBldmVudExpc3RlbmVyKSB7IG1fb25vcGVuID0gZXZlbnRMaXN0ZW5lcjsgfQotICAgIEV2ZW50
TGlzdGVuZXIqIG9ub3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fb25vcGVuLmdldCgpOyB9Ci0gICAg
dm9pZCBzZXRPbm1lc3NhZ2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVy
KSB7IG1fb25tZXNzYWdlID0gZXZlbnRMaXN0ZW5lcjsgfQotICAgIEV2ZW50TGlzdGVuZXIqIG9u
bWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25tZXNzYWdlLmdldCgpOyB9Ci0gICAgdm9pZCBz
ZXRPbmNsb3NlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29u
Y2xvc2UgPSBldmVudExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25jbG9zZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb25jbG9zZS5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldE9ub3BlbihQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbm9wZW4gPSBldmVu
dExpc3RlbmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9ub3BlbigpIGNvbnN0IHsgcmV0
dXJuIG1fb25vcGVuLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0T25tZXNzYWdlKFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29ubWVzc2FnZSA9IGV2ZW50TGlz
dGVuZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25tZXNzYWdlKCkgY29uc3QgeyByZXR1
cm4gbV9vbm1lc3NhZ2UuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRPbmNsb3NlKFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uY2xvc2UgPSBldmVudExpc3Rl
bmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uY2xvc2UoKSBjb25zdCB7IHJldHVybiBt
X29uY2xvc2UuZ2V0KCk7IH0KIAotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBXZWJT
b2NrZXQqIHRvV2ViU29ja2V0KCkgeyByZXR1cm4gdGhpczsgfQorICAgICAgICAvLyBFdmVudFRh
cmdldAorICAgICAgICB2aXJ0dWFsIFdlYlNvY2tldCogdG9XZWJTb2NrZXQoKSB7IHJldHVybiB0
aGlzOyB9CiAKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0
cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0
ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7Ci0gICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQo
UGFzc1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVu
dExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAgICAgICAgdmlydHVhbCBib29sIGRpc3Bh
dGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgRXZl
bnRMaXN0ZW5lcnNNYXAmIGV2ZW50TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9ldmVudExpc3RlbmVy
czsgfQogCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0Ci0gICAgLy8gdmlydHVhbCBib29sIGhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0OwotICAgIC8vIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJv
eWVkKCk7Ci0gICAgLy8gdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKLSAgICAvLyB2
aXJ0dWFsIHZvaWQgc3VzcGVuZCgpOwotICAgIC8vIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKLSAg
ICAvLyB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgICAgICAvLyBBY3RpdmVET01PYmplY3QKKyAg
ICAgICAgLy8gIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKKyAgICAg
ICAgLy8gdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKKyAgICAgICAgLy8gdmlydHVh
bCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lkIHN1c3Bl
bmQoKTsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lkIHJlc3VtZSgpOworICAgICAgICAvLyB2aXJ0
dWFsIHZvaWQgc3RvcCgpOwogCi0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJTb2NrZXQ+OjpyZWY7
Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJTb2NrZXQ+OjpkZXJlZjsKKyAgICAgICAgdXNpbmcg
UmVmQ291bnRlZDxXZWJTb2NrZXQ+OjpyZWY7CisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2Vi
U29ja2V0Pjo6ZGVyZWY7CiAKLXByaXZhdGU6Ci0gICAgV2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKKyAgICAgICAgLy8gV2ViU29ja2V0Q2hhbm5lbENsaWVudAorICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ29ubmVjdCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtc2cpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xv
c2UoKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgIHByaXZh
dGU6CisgICAgICAgIFdlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICAv
LyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50Ci0gICAgdm9pZCBkaWRDb25uZWN0KCk7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZyk7Ci0gICAgdm9pZCBkaWRDbG9z
ZSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CiAKLSAg
ICB2b2lkIGRpc3BhdGNoT3BlbkV2ZW50KCk7Ci0gICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VFdmVu
dChjb25zdCBTdHJpbmcmIG1zZyk7Ci0gICAgdm9pZCBkaXNwYXRjaENsb3NlRXZlbnQoKTsKKyAg
ICAgICAgdm9pZCBkaXNwYXRjaE9wZW5FdmVudCgpOworICAgICAgICB2b2lkIGRpc3BhdGNoTWVz
c2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgbXNnKTsKKyAgICAgICAgdm9pZCBkaXNwYXRjaENsb3Nl
RXZlbnQoKTsKIAotICAgIC8vIEZJWE1FOiBhZGQgV2ViU29ja2V0Q2hhbm5lbC4KKyAgICAgICAg
UmVmUHRyPFdlYlNvY2tldENoYW5uZWw+IG1fY2hhbm5lbDsKIAotICAgIFJlZlB0cjxFdmVudExp
c3RlbmVyPiBtX29ub3BlbjsKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbm1lc3NhZ2U7
Ci0gICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25jbG9zZTsKKyAgICAgICAgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IG1fb25vcGVuOworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9v
bm1lc3NhZ2U7CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29uY2xvc2U7CisgICAg
ICAgIEV2ZW50TGlzdGVuZXJzTWFwIG1fZXZlbnRMaXN0ZW5lcnM7CiAKLSAgICBTdGF0ZSBtX3N0
YXRlOwotICAgIEtVUkwgbV91cmw7Ci0gICAgU3RyaW5nIG1fcHJvdG9jb2w7Ci19OworICAgICAg
ICBTdGF0ZSBtX3N0YXRlOworICAgICAgICBLVVJMIG1fdXJsOworICAgICAgICBTdHJpbmcgbV9w
cm90b2NvbDsKKyAgICB9OwogCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZW5kaWYgIC8v
IEVOQUJMRShXRUJfU09DS0VUUykKKwogI2VuZGlmICAvLyBXZWJTb2NrZXRfaApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjE1NGYwZDMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKQEAgLTAsMCArMSwyNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5o
IgorCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
KyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKKyNpbmNsdWRlICJTdHJpbmdIYXNoLmgi
CisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIgorCisjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQorICAgICAgICA6IG1fY29udGV4dChjb250ZXh0
KQorICAgICAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAgICAgLCBtX2hhbmRzaGFrZXIoV2Vi
U29ja2V0SGFuZHNoYWtlcih1cmwsIHByb3RvY29sLCBjb250ZXh0KSkKKyAgICAgICAgLCBtX2J1
ZmZlcigwKQorICAgICAgICAsIG1fYnVmZmVyX3NpemUoMCkKK3sKK30KKworV2ViU29ja2V0Q2hh
bm5lbDo6fldlYlNvY2tldENoYW5uZWwoKQoreworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmNvbm5lY3QoKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjb25u
ZWN0IiwgdGhpcyk7CisgICAgbV9oYW5kc2hha2VyLnJlc2V0KCk7CisgICAgbV9oYW5kbGUgPSBT
b2NrZXRTdHJlYW1IYW5kbGU6OmNyZWF0ZShtX2hhbmRzaGFrZXIudXJsKCksIHRoaXMpOworfQor
Citib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtc2cpCit7CisgICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQgJXMiLCB0aGlzLCBtc2cudXRm
OCgpLmRhdGEoKSk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgZnJhbWVfdHlwZVsxXSA9IHsnXDAn
fTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBmcmFtZV9lbmRbMV0gPSB7J1x4ZmYnfTsKKyAgICBW
ZWN0b3I8Y2hhcj4gYnVmOworICAgIGJ1Zi5hcHBlbmQoZnJhbWVfdHlwZSwgc2l6ZW9mKGZyYW1l
X3R5cGUpKTsKKyAgICBidWYuYXBwZW5kKG1zZy51dGY4KCkuZGF0YSgpLCBtc2cudXRmOCgpLmxl
bmd0aCgpKTsKKyAgICBidWYuYXBwZW5kKGZyYW1lX2VuZCwgc2l6ZW9mKGZyYW1lX2VuZCkpOwor
ICAgIHJldHVybiBtX2hhbmRsZS0+c2VuZChidWYuZGF0YSgpLCBidWYuc2l6ZSgpKTsKK30KKwor
dW5zaWduZWQgbG9uZyBXZWJTb2NrZXRDaGFubmVsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0Cit7
CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGJ1ZmZlcmVkQW1vdW50Iiwg
dGhpcyk7CisgICAgcmV0dXJuIG1faGFuZGxlLT5idWZmZXJlZEFtb3VudCgpOworfQorCit2b2lk
IFdlYlNvY2tldENoYW5uZWw6OmNsb3NlKCkKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tl
dENoYW5uZWwgJXAgY2xvc2UiLCB0aGlzKTsKKyAgICBpZiAobV9oYW5kbGUuZ2V0KCkpCisgICAg
ICAgIG1faGFuZGxlLT5jbG9zZSgpOyAgLy8gd2lsbCBjYWxsIGRpZENsb3NlKCkKK30KKwordm9p
ZCBXZWJTb2NrZXRDaGFubmVsOjp3aWxsT3BlblN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqLCBj
b25zdCBLVVJMJikKK3sKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjp3aWxsU2VuZERhdGEo
U29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgY2hhciosIGludCkKK3sKK30KKwordm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpkaWRPcGVuKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQoreworICAg
IExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRPcGVuIiwgdGhpcyk7CisgICAg
QVNTRVJUKGhhbmRsZSA9PSBtX2hhbmRsZS5nZXQoKSB8fCAhbV9oYW5kbGUuZ2V0KCkpOworICAg
IGlmICghbV9oYW5kbGUuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBjb25zdCBDU3RyaW5n
JiBoYW5kc2hha2VfbWVzc2FnZSA9IG1faGFuZHNoYWtlci5jbGllbnRfaGFuZHNoYWtlX21lc3Nh
Z2UoKTsKKyAgICBtX2hhbmRsZS0+c2VuZChoYW5kc2hha2VfbWVzc2FnZS5kYXRhKCksIGhhbmRz
aGFrZV9tZXNzYWdlLmxlbmd0aCgpKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRD
bG9zZShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKK3sKKyAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldENoYW5uZWwgJXAgZGlkQ2xvc2UiLCB0aGlzKTsKKyAgICBBU1NFUlQoaGFuZGxlID09
IG1faGFuZGxlLmdldCgpIHx8ICFtX2hhbmRsZS5nZXQoKSk7CisgICAgaWYgKCFtX2hhbmRsZS5n
ZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faGFuZGxlID0gMDsKKyAgICBXZWJTb2NrZXRD
aGFubmVsQ2xpZW50KiBjbGllbnQgPSBtX2NsaWVudDsKKyAgICBtX2NsaWVudCA9IDA7CisgICAg
Y2xpZW50LT5kaWRDbG9zZSgpOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2Vp
dmVkRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbikKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkUmVjZWl2
ZURhdGEgJWQiLCB0aGlzLCBsZW4pOworICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5kbGUuZ2V0
KCkgfHwgIW1faGFuZGxlLmdldCgpKTsKKyAgICBpZiAoIW1faGFuZGxlLmdldCgpKQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKCFhcHBlbmRUb0J1ZmZlcihkYXRhLCBsZW4pKSB7CisgICAgICAg
IGRpZENsb3NlKGhhbmRsZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1faGFu
ZHNoYWtlci5tb2RlKCkgIT0gV2ViU29ja2V0SGFuZHNoYWtlcjo6Q29ubmVjdGVkKSB7CisgICAg
ICAgIGlmICghbV9oYW5kc2hha2VyLnJlYWRTZXJ2ZXJIYW5kc2hha2UobV9idWZmZXIuZ2V0KCks
IG1fYnVmZmVyX3NpemUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzd2l0Y2ggKG1f
aGFuZHNoYWtlci5tb2RlKCkpIHsKKyAgICAgICAgY2FzZSBXZWJTb2NrZXRIYW5kc2hha2VyOjpD
b25uZWN0ZWQ6CisgICAgICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAg
Y29ubmVjdGVkIiwgdGhpcyk7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ29ubmVjdCgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViU29ja2V0SGFuZHNoYWtlcjo6UmVk
aXJlY3Q6CisgICAgICAgICAgICBMT0coTmV0d29yaywgIlJlZGlyZWN0IHRvICVzIiwgbV9oYW5k
c2hha2VyLnNlcnZlcl9sb2NhdGlvbigpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmVk
aXJlY3QobV9oYW5kc2hha2VyLnNlcnZlcl9sb2NhdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgY2FzZSBXZWJTb2NrZXRIYW5kc2hha2VyOjpBdXRoZW50aWNhdGU6CisgICAg
ICAgICAgICBhdXRoZW50aWNhdGUobV9oYW5kc2hha2VyLnNlcnZlcl93d3dfYXV0aGVudGljYXRl
KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNvbm5lY3Rpb24gZmFpbGVkIiwgdGhp
cyk7CisgICAgICAgICAgICBkaWRDbG9zZShoYW5kbGUpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIHNraXBCdWZmZXIobV9oYW5kc2hha2VyLnNlcnZlckhhbmRzaGFr
ZUxlbmd0aCgpKTsKKyAgICAgICAgaWYgKCFtX2J1ZmZlci5nZXQoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgTE9HKE5ldHdvcmssICJyZW1haW5pbmcgaW4gcmVhZCBidWYgJXVsIiwg
bV9idWZmZXJfc2l6ZSk7CisgICAgfQorCisgICAgY29uc3QgY2hhciogbmV4dF9mcmFtZSA9IG1f
YnVmZmVyLmdldCgpOworICAgIGNvbnN0IGNoYXIqIHAgPSBtX2J1ZmZlci5nZXQoKTsKKyAgICBj
b25zdCBjaGFyKiBlbmQgPSBwICsgbV9idWZmZXJfc2l6ZTsKKyAgICB3aGlsZSAocCA8IGVuZCkg
eworICAgICAgICB1bnNpZ25lZCBjaGFyIGZyYW1lX2J5dGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPigqcCsrKTsKKyAgICAgICAgaWYgKChmcmFtZV9ieXRlICYgMHg4MCkgPT0gMHg4MCkg
eworICAgICAgICAgICAgLy8gRklYTUU6IGhhbmRsZSBvdmVyZmxvdy4KKyAgICAgICAgICAgIGlu
dCBsZW5ndGggPSAwOworICAgICAgICAgICAgd2hpbGUgKHAgPCBlbmQgJiYgKCpwICYgMHg4MCkg
PT0gMHg4MCkgeworICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludD46Om1heCgpIC8gMTI4KSB7CisgICAgICAgICAgICAgICAgICAgIExPRyhOZXR3b3Jr
LCAiZnJhbWUgbGVuZ3RoIG92ZXJmbG93ICVkIiwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAg
ICAgZGlkQ2xvc2UoaGFuZGxlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGggKiAxMjcgKyAqcCAm
IDB4N2Y7CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKHAgKyBsZW5ndGggPCBlbmQpIHsKKyAgICAgICAgICAgICAgICBwICs9IGxlbmd0aDsKKyAg
ICAgICAgICAgICAgICBuZXh0X2ZyYW1lID0gcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1zZ19zdGFydCA9IHA7CisgICAgICAgICAg
ICB3aGlsZSAocCA8IGVuZCAmJiAqcCAhPSAnXHhmZicpCisgICAgICAgICAgICAgICAgKytwOwor
ICAgICAgICAgICAgaWYgKHAgPCBlbmQgJiYgKnAgPT0gJ1x4ZmYnKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGZyYW1lX2J5dGUgPT0gMHgwMCkKKyAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVNZXNzYWdlKFN0cmluZzo6ZnJvbVVURjgobXNnX3N0YXJ0LCBwIC0gbXNnX3N0
YXJ0KSk7CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgIG5leHRfZnJhbWUg
PSBwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHNraXBCdWZmZXIobmV4
dF9mcmFtZSAtIG1fYnVmZmVyLmdldCgpKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpk
aWRGYWlsKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlLCBjb25zdCBTb2NrZXRTdHJlYW1IYW5k
bGVFcnJvciYgZXJyKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBk
aWRGYWlsZSIsIHRoaXMpOworICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5kbGUuZ2V0KCkgfHwg
IW1faGFuZGxlLmdldCgpKTsKKyAgICBkaWRDbG9zZShoYW5kbGUpOworfQorCit2b2lkIFdlYlNv
Y2tldENoYW5uZWw6OnJlZGlyZWN0KGNvbnN0IFN0cmluZyYgbG9jYXRpb24pCit7CisgICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHJlZGlyZWN0IHRvICVzIiwgdGhpcywgbG9j
YXRpb24udXRmOCgpLmRhdGEoKSk7CisgICAgS1VSTCB1cmwobG9jYXRpb24pOworICAgIG1faGFu
ZHNoYWtlci5zZXRVUkwodXJsKTsKKyAgICBjb25uZWN0KCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6YXV0aGVudGljYXRlKGNvbnN0IFN0cmluZyYgd3d3X2F1dGhlbnRpY2F0ZSkKK3sK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisgICAgZGlkQ2xvc2UobV9oYW5kbGUuZ2V0
KCkpOworfQorCitib29sIFdlYlNvY2tldENoYW5uZWw6OmFwcGVuZFRvQnVmZmVyKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW4pCit7CisgICAgY2hhciogbmV3X2J1ZmZlciA9IDA7CisgICAgaWYg
KHRyeUZhc3RNYWxsb2MobV9idWZmZXJfc2l6ZSArIGxlbikuZ2V0VmFsdWUobmV3X2J1ZmZlcikp
IHsKKyAgICAgICAgaWYgKG1fYnVmZmVyLmdldCgpKQorICAgICAgICAgICAgbWVtY3B5KG5ld19i
dWZmZXIsIG1fYnVmZmVyLmdldCgpLCBtX2J1ZmZlcl9zaXplKTsKKyAgICAgICAgbWVtY3B5KG5l
d19idWZmZXIgKyBtX2J1ZmZlcl9zaXplLCBkYXRhLCBsZW4pOworICAgICAgICBtX2J1ZmZlci5z
ZXQobmV3X2J1ZmZlcik7CisgICAgICAgIG1fYnVmZmVyX3NpemUgKz0gbGVuOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgTE9HKE5ldHdvcmssICJUb28gbG9uZyB3ZWJzb2NrZXQg
ZnJhbWUgJWQiLCBtX2J1ZmZlcl9zaXplICsgbGVuKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2tpcEJ1ZmZlcihpbnQgbGVuKQoreworICAgIEFTU0VS
VChsZW4gPD0gbV9idWZmZXJfc2l6ZSk7CisgICAgbV9idWZmZXJfc2l6ZSAtPSBsZW47CisgICAg
aWYgKCFtX2J1ZmZlcl9zaXplKSB7CisgICAgICAgIG1fYnVmZmVyLnNldCgwKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBtZW1tb3ZlKG1fYnVmZmVyLmdldCgpLCBtX2J1ZmZlci5nZXQo
KSArIGxlbiwgbV9idWZmZXJfc2l6ZSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBkYTQ4MQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAg
LTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldENoYW5uZWxfaAorI2RlZmluZSBXZWJTb2Nr
ZXRDaGFubmVsX2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIlNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZXIuaCIK
KyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
KyAgICBjbGFzcyBTdHJpbmc7CisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlOworICAgIGNs
YXNzIFNvY2tldFN0cmVhbUhhbmRsZUVycm9yOworICAgIGNsYXNzIFdlYlNvY2tldENoYW5uZWxD
bGllbnQ7CisKKyAgICBjbGFzcyBXZWJTb2NrZXRDaGFubmVsIDogcHVibGljIFJlZkNvdW50ZWQ8
V2ViU29ja2V0Q2hhbm5lbD4sIHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgeworICAg
IHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0Q2hhbm5lbD4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYlNvY2tldENoYW5uZWxDbGll
bnQqIGNsaWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSB7IHJl
dHVybiBuZXcgV2ViU29ja2V0Q2hhbm5lbChjb250ZXh0LCBjbGllbnQsIHVybCwgcHJvdG9jb2wp
OyB9CisgICAgICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWwoKTsKKworICAgICAgICB2aXJ0
dWFsIHZvaWQgY29ubmVjdCgpOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0
cmluZyYgbXNnKTsKKyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50
KCkgY29uc3Q7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCk7CisKKyAgICAgICAgdmly
dHVhbCB2b2lkIHdpbGxPcGVuU3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEtVUkwm
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUq
LCBjb25zdCBjaGFyKiwgaW50KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZE9wZW4oU29ja2V0
U3RyZWFtSGFuZGxlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShTb2NrZXRTdHJl
YW1IYW5kbGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVkRGF0YShTb2NrZXRT
dHJlYW1IYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgU29ja2V0U3RyZWFtSGFuZGxlRXJyb3Im
KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdlYlNvY2tldENoYW5uZWxDbGllbnQqLCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJik7CisKKyAgICAgICAgdm9pZCByZWRpcmVjdChjb25zdCBTdHJpbmcmIGxvY2F0aW9u
KTsKKyAgICAgICAgdm9pZCBhdXRoZW50aWNhdGUoY29uc3QgU3RyaW5nJiB3d3dfYXV0aGVudGlj
YXRlKTsKKworICAgICAgICBib29sIGFwcGVuZFRvQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW4pOworICAgICAgICB2b2lkIHNraXBCdWZmZXIoaW50IGxlbik7CisKKyAgICAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OworICAgICAgICBXZWJTb2NrZXRDaGFubmVs
Q2xpZW50KiBtX2NsaWVudDsKKyAgICAgICAgV2ViU29ja2V0SGFuZHNoYWtlciBtX2hhbmRzaGFr
ZXI7CisgICAgICAgIFJlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IG1faGFuZGxlOworICAgICAg
ICBPd25QdHI8Y2hhcj4gbV9idWZmZXI7CisgICAgICAgIGludCBtX2J1ZmZlcl9zaXplOworICAg
IH07CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9T
T0NLRVRTKQorCisjZW5kaWYgIC8vIFdlYlNvY2tldENoYW5uZWxfaApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaCBiL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNDYzY2FkYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tl
dENoYW5uZWxDbGllbnRfaAorI2RlZmluZSBXZWJTb2NrZXRDaGFubmVsQ2xpZW50X2gKKworI2lm
IEVOQUJMRShXRUJfU09DS0VUUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3Mg
V2ViU29ja2V0Q2hhbm5lbENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5X
ZWJTb2NrZXRDaGFubmVsQ2xpZW50KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDb25u
ZWN0KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBT
dHJpbmcmKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKCkgeyB9CisKKyAgICBw
cm90ZWN0ZWQ6CisgICAgICAgIFdlYlNvY2tldENoYW5uZWxDbGllbnQoKSB7IH0KKyAgICB9Owor
Cit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VU
UykKKworI2VuZGlmICAvLyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VyLmNwcCBiL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iMzQ0YWViCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZXIuY3BwCkBAIC0wLDAgKzEsNDcxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIldlYlNvY2tldEhhbmRz
aGFrZXIuaCIKKworI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgorI2luY2x1ZGUgIkhUVFBIZWFk
ZXJNYXAuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU3RyaW5nQnVp
bGRlci5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NvbnN0IGNoYXIgd2ViU29ja2V0U2VydmVySGFuZHNoYWtlSGVhZGVyW10gPSAiSFRUUC8x
LjEgMTAxIFdlYiBTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbiI7Citjb25zdCBjaGFyIHdl
YlNvY2tldFVwZ3JhZGVIZWFkZXJbXSA9ICJVcGdyYWRlOiBXZWJTb2NrZXRcclxuIgorICAgICAg
ICAiQ29ubmVjdGlvbjogVXBncmFkZVxyXG4iOworCitzdGF0aWMgU3RyaW5nIGV4dHJhY3RSZXNw
b25zZUNvZGUoY29uc3QgY2hhciogaGVhZGVyLCBpbnQgbGVuKQoreworICAgIGNvbnN0IGNoYXIq
IHNwYWNlMSA9IDA7CisgICAgY29uc3QgY2hhciogc3BhY2UyID0gMDsKKyAgICBjb25zdCBjaGFy
KiBwOworICAgIGZvciAocCA9IGhlYWRlcjsgcCAtIGhlYWRlciA8IGxlbjsgcCsrKSB7CisgICAg
ICAgIGlmICgqcCA9PSAnICcpIHsKKyAgICAgICAgICAgIGlmICghc3BhY2UxKQorICAgICAgICAg
ICAgICAgIHNwYWNlMSA9IHA7CisgICAgICAgICAgICBlbHNlIGlmICghc3BhY2UyKQorICAgICAg
ICAgICAgICAgIHNwYWNlMiA9IHA7CisgICAgICAgIH0gZWxzZSBpZiAoKnAgPT0gJ1xuJykKKyAg
ICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAocCAtIGhlYWRlciA9PSBsZW4pCisgICAg
ICAgIHJldHVybiBXZWJDb3JlOjpTdHJpbmcoKTsKKyAgICBpZiAoIXNwYWNlMSB8fCAhc3BhY2Uy
KQorICAgICAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIFdlYkNvcmU6OlN0cmluZyhzcGFjZTEg
KyAxLCBzcGFjZTIgLSBzcGFjZTEgLSAxKTsKK30KKworc3RhdGljIGJvb2wgaGFkU2VydmVySGFu
ZHNoYWtlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpCit7CisgICAgZm9yIChj
b25zdCBjaGFyKiBwID0gc3RhcnQ7IHAgJiYgcCA8IGVuZDsgcCsrKSB7CisgICAgICAgIHAgPSBz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtY2hyKHAsICdccicsIGVuZCAtIHApKTsKKyAgICAg
ICAgaWYgKCFwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChwICsg
MyA8IGVuZCAmJiAqKHAgKyAxKSA9PSAnXG4nICYmICoocCArIDIpID09ICdccicgJiYgKihwICsg
MykgPT0gJ1xuJykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZXI6OldlYlNvY2tldEhhbmRzaGFrZXIoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQorICAgIDogbV91cmwodXJsKQorICAgICwgbV9jbGllbnRfcHJvdG9jb2wo
cHJvdG9jb2wpCisgICAgLCBtX3NlY3VyZShtX3VybC5wcm90b2NvbElzKCJ3c3MiKSkKKyAgICAs
IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9zZXJ2ZXJfaGFuZHNoYWtlX2xlbmd0aCgwKQor
ICAgICwgbV9tb2RlKEluY29tcGxldGUpCit7Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZXI6On5X
ZWJTb2NrZXRIYW5kc2hha2VyKCkKK3sKK30KKworY29uc3QgS1VSTCYgV2ViU29ja2V0SGFuZHNo
YWtlcjo6dXJsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91cmw7Cit9CisKK3ZvaWQgV2ViU29j
a2V0SGFuZHNoYWtlcjo6c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICBtX3VybCA9IHVy
bC5jb3B5KCk7Cit9CisKK2NvbnN0IFN0cmluZyBXZWJTb2NrZXRIYW5kc2hha2VyOjpob3N0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV91cmwuaG9zdCgpLmxvd2VyKCk7Cit9CisKK2NvbnN0IFN0
cmluZyYgV2ViU29ja2V0SGFuZHNoYWtlcjo6Y2xpZW50X3Byb3RvY29sKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9jbGllbnRfcHJvdG9jb2w7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtl
cjo6c2V0Q2xpZW50UHJvdG9jb2woY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3sKKyAgICBtX2Ns
aWVudF9wcm90b2NvbCA9IHByb3RvY29sOworfQorCitib29sIFdlYlNvY2tldEhhbmRzaGFrZXI6
OnNlY3VyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VjdXJlOworfQorCit2b2lkIFdlYlNv
Y2tldEhhbmRzaGFrZXI6OnNldFNlY3VyZShib29sIHNlY3VyZSkKK3sKKyAgICBtX3NlY3VyZSA9
IHNlY3VyZTsKK30KKworU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZXI6OmNsaWVudF9vcmlnaW4o
KSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3Ry
aW5nKCk7Cit9CisKK1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2VyOjpjbGllbnRfbG9jYXRpb24o
KSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVu
ZChtX3NlY3VyZSA/ICJ3c3MiIDogIndzIik7CisgICAgYnVpbGRlci5hcHBlbmQoIjovLyIpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKGhvc3QoKSk7CisgICAgaWYgKG1fdXJsLnBvcnQoKSkgeworICAg
ICAgICBpZiAoKCFtX3NlY3VyZSAmJiBtX3VybC5wb3J0KCkgIT0gODEpIHx8IChtX3NlY3VyZSAm
JiBtX3VybC5wb3J0KCkgIT0gODE1KSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjoi
KTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG1fdXJsLnBvcnQo
KSkpOworICAgICAgICB9CisgICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKG1fdXJsLnBhdGgoKSk7
CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworQ1N0cmluZyBXZWJTb2NrZXRI
YW5kc2hha2VyOjpjbGllbnRfaGFuZHNoYWtlX21lc3NhZ2UoKSBjb25zdAoreworICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKKworICAgIGJ1aWxkZXIuYXBwZW5kKCJHRVQgIik7CisgICAgYnVp
bGRlci5hcHBlbmQodXJsKCkucGF0aCgpKTsKKyAgICBpZiAoIXVybCgpLnF1ZXJ5KCkuaXNFbXB0
eSgpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI/Iik7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHVybCgpLnF1ZXJ5KCkpOworICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZCgiIEhUVFAvMS4x
XHJcbiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJVcGdyYWRlOiBXZWJTb2NrZXRcclxuIik7Cisg
ICAgYnVpbGRlci5hcHBlbmQoIkNvbm5lY3Rpb246IFVwZ3JhZGVcclxuIik7CisgICAgYnVpbGRl
ci5hcHBlbmQoIkhvc3Q6ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKGhvc3QoKSk7ICAvLyBYWFgK
KyAgICBidWlsZGVyLmFwcGVuZCgiXHJcbiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJPcmlnaW46
ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKGNsaWVudF9vcmlnaW4oKSk7CisgICAgYnVpbGRlci5h
cHBlbmQoIlxyXG4iKTsKKyAgICBpZiAoIWNsaWVudF9wcm90b2NvbCgpLmlzRW1wdHkoKSkgewor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiV2ViU29ja2V0LVByb3RvY29sOiAiKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoY2xpZW50X3Byb3RvY29sKCkpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiXHJcbiIpOworICAgIH0KKyAgICBLVVJMIHVybCA9IHVybE92ZXJIVFRQKCk7CisgICAgLy8g
RklYTUU6IHNldCBhdXRoZW50aWNhdGlvbiBpbmZvcm1hdGlvbiBvciBjb29raWVzIGZvciB1cmwu
CisgICAgYnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpLnV0ZjgoKTsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2VyOjpyZXNldCgpCit7Cisg
ICAgbV9zZXJ2ZXJfaGFuZHNoYWtlX2xlbmd0aCA9IDA7CisgICAgbV9tb2RlID0gSW5jb21wbGV0
ZTsKKworICAgIG1fd3Nfb3JpZ2luID0gU3RyaW5nKCk7CisgICAgbV93c19sb2NhdGlvbiA9IFN0
cmluZygpOworICAgIG1fd3NfcHJvdG9jb2wgPSBTdHJpbmcoKTsKKyAgICBtX2xvY2F0aW9uID0g
U3RyaW5nKCk7CisgICAgbV93d3dfYXV0aGVudGljYXRlID0gU3RyaW5nKCk7Cit9CisKK2Jvb2wg
V2ViU29ja2V0SGFuZHNoYWtlcjo6cmVhZFNlcnZlckhhbmRzaGFrZShjb25zdCBjaGFyKiBoZWFk
ZXIsIHNpemVfdCBsZW4pCit7CisgICAgbV9zZXJ2ZXJfaGFuZHNoYWtlX2xlbmd0aCA9IDA7Cisg
ICAgbV9tb2RlID0gSW5jb21wbGV0ZTsKKyAgICBpZiAobGVuIDwgc2l6ZW9mKHdlYlNvY2tldFNl
cnZlckhhbmRzaGFrZUhlYWRlcikgLSAxKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAic2hvcnQg
cmVzcG9uc2UgaGVhZGVyIGxlbj0lZCIsIGxlbik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgaWYgKCFtZW1jbXAoaGVhZGVyLCB3ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hha2VIZWFk
ZXIsIHNpemVvZih3ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hha2VIZWFkZXIpIC0gMSkpCisgICAgICAg
IG1fbW9kZSA9IE5vcm1hbDsKKyAgICBlbHNlIHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBjb2Rl
ID0gZXh0cmFjdFJlc3BvbnNlQ29kZShoZWFkZXIsIGxlbik7CisgICAgICAgIGlmIChjb2RlLmlz
TnVsbCgpKSB7CisgICAgICAgICAgICBMT0coTmV0d29yaywgInNob3J0IHNlcnZlciBoYW5kc2hh
a2U6ICVzIiwgaGVhZGVyKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoY29kZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAi
bm8gcmVzcG9uc2UgY29kZSBmb3VuZDogJXMiLCBoZWFkZXIpOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgTE9HKE5ldHdvcmssICJyZXNwb25zZSBjb2RlOiAl
cyIsIGNvZGUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGlmIChjb2RlID09ICIzMDEiIHx8IGNv
ZGUgPT0gIjMwMiIgfHwgY29kZSA9PSAiMzAzIiB8fCBjb2RlID09ICIzMDciKQorICAgICAgICAg
ICAgbV9tb2RlID0gUmVkaXJlY3Q7CisgICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gIjQwMSIpCisg
ICAgICAgICAgICBtX21vZGUgPSBBdXRoZW50aWNhdGU7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgTE9HKE5ldHdvcmssICJNaXNtYXRjaCBzZXJ2ZXIgaGFuZHNoYWtlOiAlcyIsIGhlYWRl
cik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjb25z
dCBjaGFyKiBwID0gaGVhZGVyICsgc2l6ZW9mKHdlYlNvY2tldFNlcnZlckhhbmRzaGFrZUhlYWRl
cikgLSAxOworICAgIGNvbnN0IGNoYXIqIGVuZCA9IGhlYWRlciArIGxlbiArIDE7CisKKyAgICBp
ZiAobV9tb2RlID09IE5vcm1hbCkgeworICAgICAgICBpZiAoZW5kIC0gcCA8IHNpemVvZih3ZWJT
b2NrZXRVcGdyYWRlSGVhZGVyKSAtIDEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmIChtZW1jbXAocCwgd2ViU29ja2V0VXBncmFkZUhlYWRlciwgc2l6ZW9mKHdlYlNvY2tl
dFVwZ3JhZGVIZWFkZXIpIC0gMSkpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiQmFkIHVw
Z3JhZGUgaGVhZGVyOiAlcyIsIHApOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgcCArPSBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRlcikgLSAxOworICAg
IH0KKworICAgIGlmICghaGFkU2VydmVySGFuZHNoYWtlKHAsIGVuZCkpIHsKKyAgICAgICAgTE9H
KE5ldHdvcmssICJpbmNvbXBsZXRlIHNlcnZlciBoYW5kc2hha2UgbGVuPSVkIiwgbGVuKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBIVFRQSGVhZGVyTWFwIGhlYWRlcnM7Cisg
ICAgcCA9IHBhcnNlSGVhZGVyKHAsIGVuZCwgJmhlYWRlcnMpOworICAgIGlmICghcCkgeworICAg
ICAgICBMT0coTmV0d29yaywgInBhcnNlSGVhZGVyIGZhaWxlZCIpOworICAgICAgICBtX21vZGUg
PSBGYWlsZWQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoIWhlYWRlclBy
b2Nlc3MoaGVhZGVycykpIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJoZWFkZXIgcHJvY2VzcyBm
YWlsZWQiKTsKKyAgICAgICAgbV9tb2RlID0gRmFpbGVkOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgc3dpdGNoIChtX21vZGUpIHsKKyAgICBjYXNlIE5vcm1hbDoKKyAgICAgICAg
aGFuZHNoYWtlKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUmVkaXJlY3Q6CisgICAgICAg
IGlmIChtX2xvY2F0aW9uLmlzTnVsbCgpKQorICAgICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1dGhlbnRpY2F0ZToKKyAgICAgICAgaWYgKG1fd3d3
X2F1dGhlbnRpY2F0ZS5pc051bGwoKSkKKyAgICAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbV9tb2RlID0gRmFpbGVkOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgbV9zZXJ2ZXJfaGFuZHNoYWtlX2xlbmd0aCA9IHAgLSBo
ZWFkZXI7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3NpemVfdCBXZWJTb2NrZXRIYW5kc2hha2Vy
OjpzZXJ2ZXJIYW5kc2hha2VMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3NlcnZlcl9o
YW5kc2hha2VfbGVuZ3RoOworfQorCitXZWJTb2NrZXRIYW5kc2hha2VyOjpNb2RlIFdlYlNvY2tl
dEhhbmRzaGFrZXI6Om1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX21vZGU7Cit9CisKK2Nv
bnN0IFN0cmluZyYgV2ViU29ja2V0SGFuZHNoYWtlcjo6c2VydmVyX3dlYnNvY2tldF9vcmlnaW4o
KSBjb25zdAoreworICAgIHJldHVybiBtX3dzX29yaWdpbjsKK30KKwordm9pZCBXZWJTb2NrZXRI
YW5kc2hha2VyOjpzZXRTZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oY29uc3QgU3RyaW5nJiB3ZWJzb2Nr
ZXRfb3JpZ2luKQoreworICAgIG1fd3Nfb3JpZ2luID0gd2Vic29ja2V0X29yaWdpbjsKK30KKwor
Y29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2VyOjpzZXJ2ZXJfd2Vic29ja2V0X2xvY2F0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93c19sb2NhdGlvbjsKK30KKwordm9pZCBXZWJT
b2NrZXRIYW5kc2hha2VyOjpzZXRTZXJ2ZXJXZWJTb2NrZXRMb2NhdGlvbihjb25zdCBTdHJpbmcm
IHdlYnNvY2tldF9sb2NhdGlvbikKK3sKKyAgICBtX3dzX2xvY2F0aW9uID0gd2Vic29ja2V0X2xv
Y2F0aW9uOworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZXI6OnNlcnZlcl93
ZWJzb2NrZXRfcHJvdG9jb2woKSBjb25zdAoreworICAgIHJldHVybiBtX3dzX3Byb3RvY29sOwor
fQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZXI6OnNldFNlcnZlcldlYlNvY2tldFByb3RvY29s
KGNvbnN0IFN0cmluZyYgd2Vic29ja2V0X3Byb3RvY29sKQoreworICAgIG1fd3NfcHJvdG9jb2wg
PSB3ZWJzb2NrZXRfcHJvdG9jb2w7Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0SGFuZHNo
YWtlcjo6c2VydmVyX2xvY2F0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sb2NhdGlvbjsK
K30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2VyOjpzZXJ2ZXJfd3d3X2F1dGhl
bnRpY2F0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3d3X2F1dGhlbnRpY2F0ZTsKK30KKwor
S1VSTCBXZWJTb2NrZXRIYW5kc2hha2VyOjp1cmxPdmVySFRUUCgpIGNvbnN0Cit7CisgICAgS1VS
TCB1cmwgPSBtX3VybC5jb3B5KCk7CisgICAgdXJsLnNldFByb3RvY29sKG1fc2VjdXJlID8gImh0
dHBzIiA6ICJodHRwIik7CisgICAgaW50IHBvcnQgPSB1cmwucG9ydCgpOworICAgIGlmICghcG9y
dCkKKyAgICAgICAgcG9ydCA9IG1fc2VjdXJlID8gODE1IDogODE7CisgICAgdXJsLnNldFBvcnQo
cG9ydCk7CisgICAgcmV0dXJuIHVybDsKK30KKworY29uc3QgY2hhciogV2ViU29ja2V0SGFuZHNo
YWtlcjo6cGFyc2VIZWFkZXIoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCwgSFRU
UEhlYWRlck1hcCogaGVhZGVycykKK3sKKyAgICBWZWN0b3I8Y2hhcj4gbmFtZTsKKyAgICBWZWN0
b3I8Y2hhcj4gdmFsdWU7CisgICAgZm9yIChjb25zdCBjaGFyKiBwID0gc3RhcnQ7IHAgPCBlbmQ7
IHArKykgeworICAgICAgICBuYW1lLmNsZWFyKCk7CisgICAgICAgIHZhbHVlLmNsZWFyKCk7CisK
KyAgICAgICAgZm9yICg7IHAgPCBlbmQ7IHArKykgeworICAgICAgICAgICAgc3dpdGNoICgqcCkg
eworICAgICAgICAgICAgY2FzZSAnXHInOgorICAgICAgICAgICAgICAgIGlmIChuYW1lLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAocCArIDEgPCBlbmQgJiYgKihwICsgMSkg
PT0gJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwICsgMjsKKyAgICAgICAg
ICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDRiBkb2Vzbid0IGZvbGxvdyBMRiBwPSVwIGVuZD0l
cCIsIHAsIGVuZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBMT0coTmV0d29yaywgIlVuZXhwZWN0ZWQgQ1IgaW4gbmFt
ZSIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgY2FzZSAnXG4nOgor
ICAgICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiVW5leHBlY3RlZCBMRiBpbiBuYW1lIik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBjYXNlICc6JzoKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgaWYg
KCpwID49IDB4NDEgJiYgKnAgPD0gMHg1YSkKKyAgICAgICAgICAgICAgICAgICAgbmFtZS5hcHBl
bmQoKnAgKyAweDIwKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IG5hbWUuYXBwZW5kKCpwKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmICgqcCA9PSAnOicpIHsKKyAgICAgICAgICAgICAgICArK3A7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBmb3IgKDsgcCA8IGVuZCAmJiAqcCA9PSAweDIwOyBwKyspIHsgfQorCisgICAgICAgIGZvciAo
OyBwIDwgZW5kOyBwKyspIHsKKyAgICAgICAgICAgIHN3aXRjaCAoKnApIHsKKyAgICAgICAgICAg
IGNhc2UgJ1xyJzoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ1xu
JzoKKyAgICAgICAgICAgICAgICBMT0coTmV0d29yaywgIlVuZXhwZWN0ZWQgTEYgaW4gdmFsdWUi
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgdmFsdWUuYXBwZW5kKCpwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmICgqcCA9PSAnXHInKSB7CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChwID49IGVuZCB8
fCAqcCAhPSAnXG4nKSB7CisgICAgICAgICAgICBMT0coTmV0d29yaywgIkNSIGRvZXNuJ3QgZm9s
bG93IExGIGFmdGVyIHZhbHVlIHA9JXAgZW5kPSVwIiwgcCwgZW5kKTsKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICB9CisgICAgICAgIEF0b21pY1N0cmluZyBuYW1lX3N0cihTdHJpbmc6
OmZyb21VVEY4KG5hbWUuZGF0YSgpLCBuYW1lLnNpemUoKSkpOworICAgICAgICBTdHJpbmcgdmFs
dWVfc3RyID0gU3RyaW5nOjpmcm9tVVRGOCh2YWx1ZS5kYXRhKCksIHZhbHVlLnNpemUoKSk7Cisg
ICAgICAgIExPRyhOZXR3b3JrLCAibmFtZT0lcyB2YWx1ZT0lcyIsIG5hbWVfc3RyLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCksIHZhbHVlX3N0ci51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaGVhZGVy
cy0+YWRkKG5hbWVfc3RyLCB2YWx1ZV9zdHIpOworICAgIH0KKyAgICBMT0coTmV0d29yaywgIlVu
ZXhwZWN0ZWQgZW5kIG9mIGhlYWRlciIpOworICAgIHJldHVybiAwOworfQorCitib29sIFdlYlNv
Y2tldEhhbmRzaGFrZXI6OmhlYWRlclByb2Nlc3MoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVy
cykKK3sKKyAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVy
cy5iZWdpbigpOyBpdCAhPSBoZWFkZXJzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIHN3aXRjaCAo
bV9tb2RlKSB7CisgICAgICAgIGNhc2UgTm9ybWFsOgorICAgICAgICAgICAgaWYgKGl0LT5maXJz
dCA9PSAid2Vic29ja2V0LW9yaWdpbiIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fd3Nfb3Jp
Z2luLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgbV93c19vcmlnaW4gPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgfSBlbHNlIGlm
IChpdC0+Zmlyc3QgPT0gIndlYnNvY2tldC1sb2NhdGlvbiIpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIW1fd3NfbG9jYXRpb24uaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICBtX3dzX2xvY2F0aW9uID0gaXQtPnNlY29uZDsKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJ3ZWJzb2NrZXQtcHJvdG9jb2wiKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFtX3dzX3Byb3RvY29sLmlzTnVsbCgpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgbV93c19wcm90b2NvbCA9IGl0
LT5zZWNvbmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBSZWRpcmVjdDoKKyAgICAgICAgICAgIGlmIChpdC0+Zmlyc3QgPT0gImxvY2F0aW9uIikgewor
ICAgICAgICAgICAgICAgIGlmICghbV9sb2NhdGlvbi5pc051bGwoKSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG1fbG9jYXRpb24gPSBpdC0+c2Vj
b25kOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXV0
aGVudGljYXRlOgorICAgICAgICAgICAgaWYgKGl0LT5maXJzdCA9PSAid3d3LWF1dGhlbnRpY2F0
ZSIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fd3d3X2F1dGhlbnRpY2F0ZS5pc051bGwoKSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG1fd3d3
X2F1dGhlbnRpY2F0ZSA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAidW5leHBl
Y3RlZCBtb2RlOiAlZCIsIG1fbW9kZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNo
YWtlcjo6aGFuZHNoYWtlKCkKK3sKKyAgICBBU1NFUlQobV9tb2RlID09IE5vcm1hbCk7CisgICAg
bV9tb2RlID0gRmFpbGVkOworICAgIGlmIChtX3dzX29yaWdpbi5pc051bGwoKSB8fCBtX3dzX2xv
Y2F0aW9uLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoY2xpZW50X29yaWdp
bigpICE9IG1fd3Nfb3JpZ2luKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiTWlzbWF0Y2ggb3Jp
Z2luOiAlcyAhPSAlcyIsIGNsaWVudF9vcmlnaW4oKS51dGY4KCkuZGF0YSgpLCBtX3dzX29yaWdp
bi51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoY2xpZW50
X2xvY2F0aW9uKCkgIT0gbV93c19sb2NhdGlvbikgeworICAgICAgICBMT0coTmV0d29yaywgIk1p
c21hdGNoIGxvY2F0aW9uOiAlcyAhPSAlcyIsIGNsaWVudF9sb2NhdGlvbigpLnV0ZjgoKS5kYXRh
KCksIG1fd3NfbG9jYXRpb24udXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaWYgKCFtX2NsaWVudF9wcm90b2NvbC5pc0VtcHR5KCkgJiYgbV9jbGllbnRfcHJvdG9j
b2wgIT0gbV93c19wcm90b2NvbCkgeworICAgICAgICBMT0coTmV0d29yaywgIk1pc21hdGNoIHBy
b3RvY29sOiAlcyAhPSAlcyIsIG1fY2xpZW50X3Byb3RvY29sLnV0ZjgoKS5kYXRhKCksIG1fd3Nf
cHJvdG9jb2wudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9t
b2RlID0gQ29ubmVjdGVkOworICAgIHJldHVybiB0cnVlOworfQorCit9ICAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VyLmggYi9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjJkYTE0NjcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlci5oCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0SGFuZHNo
YWtlcl9oCisjZGVmaW5lIFdlYlNvY2tldEhhbmRzaGFrZXJfaAorCisjaWYgRU5BQkxFKFdFQl9T
T0NLRVRTKQorCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIGNsYXNzIEhUVFBIZWFkZXJNYXA7CisKKyAg
ICBjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2VyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGVudW0g
TW9kZSB7CisgICAgICAgICAgICBJbmNvbXBsZXRlLCBOb3JtYWwsIFJlZGlyZWN0LCBBdXRoZW50
aWNhdGUsIEZhaWxlZCwgQ29ubmVjdGVkCisgICAgICAgIH07CisgICAgICAgIFdlYlNvY2tldEhh
bmRzaGFrZXIoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpOworICAgICAgICB+V2ViU29ja2V0SGFuZHNoYWtlcigpOwor
CisgICAgICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFVSTChj
b25zdCBLVVJMJiB1cmwpOworICAgICAgICBjb25zdCBTdHJpbmcgaG9zdCgpIGNvbnN0OworCisg
ICAgICAgIGNvbnN0IFN0cmluZyYgY2xpZW50X3Byb3RvY29sKCkgY29uc3Q7CisgICAgICAgIHZv
aWQgc2V0Q2xpZW50UHJvdG9jb2woY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CisKKyAgICAgICAg
Ym9vbCBzZWN1cmUoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTZWN1cmUoYm9vbCBzZWN1cmUp
OworCisgICAgICAgIFN0cmluZyBjbGllbnRfb3JpZ2luKCkgY29uc3Q7CisgICAgICAgIFN0cmlu
ZyBjbGllbnRfbG9jYXRpb24oKSBjb25zdDsKKworICAgICAgICBDU3RyaW5nIGNsaWVudF9oYW5k
c2hha2VfbWVzc2FnZSgpIGNvbnN0OworCisgICAgICAgIHZvaWQgcmVzZXQoKTsKKworICAgICAg
ICBib29sIHJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgbGVu
KTsKKyAgICAgICAgc2l6ZV90IHNlcnZlckhhbmRzaGFrZUxlbmd0aCgpOworICAgICAgICBNb2Rl
IG1vZGUoKSBjb25zdDsKKworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZlcl93ZWJzb2NrZXRf
b3JpZ2luKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2VydmVyV2ViU29ja2V0T3JpZ2luKGNv
bnN0IFN0cmluZyYgd2Vic29ja2V0X29yaWdpbik7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiBz
ZXJ2ZXJfd2Vic29ja2V0X2xvY2F0aW9uKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2VydmVy
V2ViU29ja2V0TG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJzb2NrZXRfbG9jYXRpb24pOworCisg
ICAgICAgIGNvbnN0IFN0cmluZyYgc2VydmVyX3dlYnNvY2tldF9wcm90b2NvbCgpIGNvbnN0Owor
ICAgICAgICB2b2lkIHNldFNlcnZlcldlYlNvY2tldFByb3RvY29sKGNvbnN0IFN0cmluZyYgd2Vi
c29ja2V0X3Byb3RvY29sKTsKKworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZlcl9sb2NhdGlv
bigpIGNvbnN0OworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZlcl93d3dfYXV0aGVudGljYXRl
KCkgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBLVVJMIHVybE92ZXJIVFRQKCkgY29u
c3Q7CisgICAgICAgIGNvbnN0IGNoYXIqIHBhcnNlSGVhZGVyKGNvbnN0IGNoYXIqIHN0YXJ0LCBj
b25zdCBjaGFyKiBlbmQsIEhUVFBIZWFkZXJNYXAqIGhlYWRlcnMpOworICAgICAgICBib29sIGhl
YWRlclByb2Nlc3MoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycyk7CisgICAgICAgIHZvaWQg
aGFuZHNoYWtlKCk7CisKKyAgICAgICAgS1VSTCBtX3VybDsKKyAgICAgICAgU3RyaW5nIG1fY2xp
ZW50X3Byb3RvY29sOworICAgICAgICBib29sIG1fc2VjdXJlOworICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CisKKyAgICAgICAgc2l6ZV90IG1fc2VydmVyX2hhbmRz
aGFrZV9sZW5ndGg7CisgICAgICAgIE1vZGUgbV9tb2RlOworCisgICAgICAgIFN0cmluZyBtX3dz
X29yaWdpbjsKKyAgICAgICAgU3RyaW5nIG1fd3NfbG9jYXRpb247CisgICAgICAgIFN0cmluZyBt
X3dzX3Byb3RvY29sOworICAgICAgICBTdHJpbmcgbV9sb2NhdGlvbjsKKyAgICAgICAgU3RyaW5n
IG1fd3d3X2F1dGhlbnRpY2F0ZTsKKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlmICAvLyBXZWJTb2NrZXRI
YW5kc2hha2VyX2g=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38471</attachid>
            <date>2009-08-24 00:16:32 -0700</date>
            <delta_ts>2009-08-25 00:42:08 -0700</delta_ts>
            <desc>WebSocket API implementation. depends on bug 28037</desc>
            <filename>bug-28038-20090824161631.patch</filename>
            <type>text/plain</type>
            <size>62256</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGVkYTM5ZC4uOWI4ZDFiMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAwOS0wOC0yNCAgRnVtaXRvc2hpIFVr
YWkgIDx1a2FpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZWJTb2NrZXQgQVBJIGltcGxlbWVudGF0aW9uLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgwMzgKKyAgICAgICAgCisg
ICAgICAgIEFkZCBidWlsZCBzeXN0ZW1zIG9ubHkgZm9yIEdOVW1ha2VmaWxlLmFtIGFuZCBXZWJD
b3JlLnhjb2RlcHJvaiBub3cuCisgICAgICAgIE90aGVyIGJ1aWxkIHN5c3RlbXMgd2lsbCBiZSB1
cGRhdGVkIG9uY2UgdGhlIGNvZGUgaXMgZnVuY3Rpb25hbC4KKyAgICAgICAgVGVzdHMgd2lsbCBi
ZSBsYW5kZWQgb25jZSB0aGUgY29kZSBpcyBjb21wbGV0ZWQgYW5kIGZ1bmN0aW9uYWwuCisgICAg
ICAgIERlcGVuZHMgb24gcGF0Y2ggb2YgYnVnIDI4MDM3LgorCisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMuY3BwOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6d2ViU29ja2V0
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9FdmVudFRhcmdldCk6CisgICAgICAg
ICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojp0
b1dlYlNvY2tldCk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklzVmFsaWRQcm90b2NvbFN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXQ6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpzZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0OjpidWZmZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpyZW1v
dmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlzcGF0Y2hF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENvbm5lY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXQ6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
ZGlzcGF0Y2hPcGVuRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaXNwYXRj
aE1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNoQ2xv
c2VFdmVudCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2V0T25vcGVuKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldDo6b25vcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
c2V0T25tZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6b25tZXNzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2V0T25jbG9zZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXQ6Om9uY2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojp0
b1dlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmV2ZW50TGlzdGVuZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiB3ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuaDogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlci5jcHA6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlci5oOiBBZGRlZC4KKwogMjAwOS0wOC0yMyAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVj
a0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwIGIvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5jcHAKaW5kZXggZDEyN2M0OC4uNWJjMjljZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5jcHAKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTMzNyw2
ICszMzcsNyBAQAogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTTWF0cml4LmNwcCIKICNpbmNsdWRlICJK
U1dlYktpdFBvaW50LmNwcCIKICNpbmNsdWRlICJKU1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAi
CisjaW5jbHVkZSAiSlNXZWJTb2NrZXQuY3BwIgogI2luY2x1ZGUgIkpTV2hlZWxFdmVudC5jcHAi
CiAjaW5jbHVkZSAiSlNXb3JrZXIuY3BwIgogI2luY2x1ZGUgIkpTV29ya2VyQ29udGV4dC5jcHAi
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQppbmRleCA2NTgyNGI0Li4yN2NhOGRkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTMyMTMsNyArMzIxMywxMiBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRD
b25zdHJ1Y3Rvci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNw
cCBcCiAJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgXAotCVdlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXQuaAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBcCisJV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIFwKKwlXZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5oIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbENsaWVudC5oIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlci5j
cHAgXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VyLmgKIAogZWxzZQog
d2ViY29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9XRUJfU09DS0VUUz0wCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY3MzMwMzcuLjQzYjE3ODUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MzIsNiArODMyLDkg
QEAKIAkJNEUxOTU5MkUwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRFMTk1OTI4MEEzOURBQ0Mw
MDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggKi87IH07CiAJCTUxMDE4NDY5MEIwODYwMkEwMDRB
ODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMDE4NDZBMEIw
ODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQ
YWdlLmNwcCAqLzsgfTsKKwkJNTEwRDRBNEUxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENo
YW5uZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwICovOyB9Owor
CQk1MTBENEE0RjEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBNDgxMDMxNzdBMjAw
NDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCAqLzsgfTsKKwkJNTEwRDRBNTAxMDMxNzdBMjAw
NDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50LmggKi87IH07CiAJCTUxMTZEOTc3MENGMTc3QkQwMEMyQjg0RCAv
KiBEYXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTFGMjMx
NzBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGMjMxMzBEQzE2MERBMDA0RjAwMzIg
LyogTG9jYWxTdG9yYWdlVGFzay5jcHAgKi87IH07CiAJCTUxMUYyMzE4MERDMTYwREEwMDRGMDAz
MiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTFGMjMxNDBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFz
ay5oICovOyB9OwpAQCAtOTE1LDYgKzkxOCw4IEBACiAJCTUxQTkyNjdFMEQ1M0YwNTcwMDYzRUND
MiAvKiBPcmlnaW5Vc2FnZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUE5MjY3QTBENTNGMDU3MDA2M0VDQzIgLyogT3JpZ2luVXNhZ2VS
ZWNvcmQuY3BwICovOyB9OwogCQk1MUE5MjY3RjBENTNGMDU3MDA2M0VDQzIgLyogT3JpZ2luVXNh
Z2VSZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQTkyNjdCMEQ1M0YwNTcwMDYzRUNDMiAvKiBPcmlnaW5Vc2FnZVJlY29yZC5oICovOyB9Owog
CQk1MUFBM0Y2RjBCRDVBQTlFMDA4OTI5NzEgLyogUmVzb3VyY2VMb2FkZXJNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFBM0Y2RTBCRDVBQTlF
MDA4OTI5NzEgLyogUmVzb3VyY2VMb2FkZXJNYWMubW0gKi87IH07CisJCTUxQUJBRTJFMTAzRDRG
NzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTJDMTAzRDRGNzUwMDhDNTI2MCAvKiBX
ZWJTb2NrZXRIYW5kc2hha2VyLmNwcCAqLzsgfTsKKwkJNTFBQkFFMkYxMDNENEY3NTAwOEM1MjYw
IC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQUJBRTJEMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5k
c2hha2VyLmggKi87IH07CiAJCTUxQjI0MTdCMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lXZWJB
cmNoaXZlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFCMjQxN0EwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gKi87
IH07CiAJCTUxQkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTM3REUwREFFRTAwRTAw
MTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi87IH07CiAJCTUxQzBBQTM5MEYyQUExMEEwMDE2NDhD
MiAvKiBDYWNoZWRGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU4OTksNiArNTkw
NCw5IEBACiAJCTRFMTk1OTI4MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVF1ZXJ5RXhwLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQ
YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFBhZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENh
Y2hlZFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVk
UGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0QTQ3MTAzMTc3QTIw
MDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlNvY2tldENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRDaGFubmVsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlNvY2tldENoYW5uZWxDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEx
NkQ5NzUwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZURldGFpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTExRjIzMTMwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxTdG9yYWdlVGFz
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYyMzE0MERDMTYwREEwMDRG
MDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IExvY2FsU3RvcmFnZVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5
ODksNiArNTk5Nyw4IEBACiAJCTUxQTkyNjdBMEQ1M0YwNTcwMDYzRUNDMiAvKiBPcmlnaW5Vc2Fn
ZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcmlnaW5V
c2FnZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQTkyNjdCMEQ1
M0YwNTcwMDYzRUNDMiAvKiBPcmlnaW5Vc2FnZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBPcmlnaW5Vc2FnZVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUFBM0Y2RTBCRDVBQTlFMDA4OTI5NzEgLyogUmVzb3VyY2VMb2FkZXJNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRlck1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFMkMxMDNENEY3NTAwOEM1
MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxQUJBRTJEMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMjQxN0EwRDkzMUYzRjAwRTgzRjVD
IC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUJFMzdERTBEQUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUFyZWEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEZyYW1lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDQwNiw2ICsxMDQxNiwxMSBAQAogCQk1MThBMzRCRDEw
MjZDODMxMDAxQjY4OTYgLyogd2Vic29ja2V0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJNTFBQkFFMkMxMDNENEY3NTAwOEM1MjYwIC8qIFdlYlNvY2tl
dEhhbmRzaGFrZXIuY3BwICovLAorCQkJCTUxQUJBRTJEMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJT
b2NrZXRIYW5kc2hha2VyLmggKi8sCisJCQkJNTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdl
YlNvY2tldENoYW5uZWwuY3BwICovLAorCQkJCTUxMEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBX
ZWJTb2NrZXRDaGFubmVsLmggKi8sCisJCQkJNTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdl
YlNvY2tldENoYW5uZWxDbGllbnQuaCAqLywKIAkJCQk1MThBMzRCRTEwMjZDODMxMDAxQjY4OTYg
LyogV2ViU29ja2V0LmNwcCAqLywKIAkJCQk1MThBMzRCRjEwMjZDODMxMDAxQjY4OTYgLyogV2Vi
U29ja2V0LmggKi8sCiAJCQkJNTE4QTM0QzAxMDI2QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tldC5p
ZGwgKi8sCkBAIC0xNzMzMCw2ICsxNzM0NSw5IEBACiAJCQkJQkNGQTkzMDgxMDMzMzE5MzAwN0Iy
NUQxIC8qIFJlbmRlck92ZXJmbG93LmggaW4gSGVhZGVycyAqLywKIAkJCQkwMDE0NjI4QjEwM0NE
MURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1
MUJGNkYxMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTEwRDRBNEYxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwu
aCBpbiBIZWFkZXJzICovLAorCQkJCTUxMEQ0QTUwMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUFCQUUyRjEwM0Q0Rjc1MDA4
QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xOTM5OCw2
ICsxOTQxNiw4IEBACiAJCQkJQjVDMTEyM0IxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDAxNDYyOEExMDNDRDFERTAw
MEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1MUJG
NkYwMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MTBENEE0RTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUFCQUUyRTEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29j
a2V0SGFuZHNoYWtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggNDRhMTFlNC4uODM0NWNmYSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRl
ICJKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NNYXRy
aXhDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5oIgor
I2luY2x1ZGUgIkpTV2ViU29ja2V0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1dvcmtlckNv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuaCIKQEAgLTQ5Nyw2ICs0OTgsMTMg
QEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2hhcmVkV29ya2VyKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorSlNWYWx1ZSBKU0RPTVdp
bmRvdzo6d2ViU29ja2V0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8SlNXZWJTb2NrZXRDb25zdHJ1Y3Rvcj4oZXhlYywgdGhpcyk7Cit9Cisj
ZW5kaWYKKwogLy8gQ3VzdG9tIGZ1bmN0aW9ucwogCiAvLyBIZWxwZXIgZm9yIHdpbmRvdy5vcGVu
KCkgYW5kIHdpbmRvdy5zaG93TW9kYWxEaWFsb2coKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRh
cmdldC5jcHAKaW5kZXggNTgyNWVlNS4uYWI2ZWZlZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRUYXJnZXQuY3BwCkBAIC03MCw2ICs3MCwxMSBAQAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5o
IgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisjaW5jbHVkZSAiSlNXZWJTb2Nr
ZXQuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXQuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzEsNiArMTM2LDExIEBAIEpTVmFsdWUg
dG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV2
ZW50VGFyZ2V0KiB0YXJnCiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIG5vdGlmaWNhdGlvbik7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBpZiAoV2ViU29ja2V0KiB3
ZWJzb2NrZXQgPSB0YXJnZXQtPnRvV2ViU29ja2V0KCkpCisgICAgICAgIHJldHVybiB0b0pTKGV4
ZWMsIHdlYnNvY2tldCk7CisjZW5kaWYKKwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBqc051bGwoKTsKIH0KQEAgLTE3NSw2ICsxODUsMTAgQEAgRXZlbnRUYXJnZXQqIHRv
RXZlbnRUYXJnZXQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgIENPTlZFUlRfVE9fRVZFTlRfVEFS
R0VUKE5vdGlmaWNhdGlvbikKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAg
IENPTlZFUlRfVE9fRVZFTlRfVEFSR0VUKFdlYlNvY2tldCkKKyNlbmRpZgorCiAgICAgcmV0dXJu
IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCAyZjEzZGE4Li42NTI2NDRmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuY3BwCkBAIC04Myw2ICs4MywxMyBAQCBTVkdFbGVtZW50SW5zdGFuY2UqIEV2ZW50VGFyZ2V0
Ojp0b1NWR0VsZW1lbnRJbnN0YW5jZSgpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfU09D
S0VUUykKK1dlYlNvY2tldCogRXZlbnRUYXJnZXQ6OnRvV2ViU29ja2V0KCkKK3sKKyAgICByZXR1
cm4gMDsKK30KKyNlbmRpZgorCiBNZXNzYWdlUG9ydCogRXZlbnRUYXJnZXQ6OnRvTWVzc2FnZVBv
cnQoKQogewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuaCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggNmQzY2I3Yy4uNmJjYzNmYiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5oCkBAIC01MSw2ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIGNsYXNzIFNoYXJlZFdvcmtlcjsKICAg
ICBjbGFzcyBTaGFyZWRXb3JrZXJDb250ZXh0OworICAgIGNsYXNzIFdlYlNvY2tldDsKICAgICBj
bGFzcyBXb3JrZXI7CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CiAgICAgY2xhc3MgWE1MSHR0
cFJlcXVlc3RVcGxvYWQ7CkBAIC03NSwxMSArNzYsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIFdvcmtlciogdG9Xb3JrZXIoKTsKICAgICAgICAgdmlydHVhbCBEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0KiB0b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKTsKICNlbmRpZgot
CiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogICAgICAgICB2aXJ0dWFsIFNoYXJlZFdvcmtl
ciogdG9TaGFyZWRXb3JrZXIoKTsKICAgICAgICAgdmlydHVhbCBTaGFyZWRXb3JrZXJDb250ZXh0
KiB0b1NoYXJlZFdvcmtlckNvbnRleHQoKTsKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKKyAgICAgICAgdmlydHVhbCBXZWJTb2NrZXQqIHRvV2ViU29ja2V0KCk7CisjZW5kaWYKIAog
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvbiog
dG9Ob3RpZmljYXRpb24oKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
IGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggNmU1MjBlMy4uOGI3YzNhYSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwKQEAgLTQ3Nyw2ICs0NzcsMTAgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAg
IGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyXSBTaGFyZWRXb3JrZXJDb25zdHJ1Y3RvciBTaGFy
ZWRXb3JrZXI7IC8vIFVzYWJsZSB3aXRoIHRoZSBuZXcgb3BlcmF0b3IKICNlbmRpZgogCisjaWYg
ZGVmaW5lZChFTkFCTEVfV0VCX1NPQ0tFVFMpICYmIEVOQUJMRV9XRUJfU09DS0VUUworICAgICAg
ICBhdHRyaWJ1dGUgW0pTQ0N1c3RvbUdldHRlcl0gV2ViU29ja2V0Q29uc3RydWN0b3IgV2ViU29j
a2V0OyAvLyBVc2FibGUgd2l0aCB0aGUgbmV3IG9wZXJhdG9yCisjZW5kaWYKKwogICAgICAgICBh
dHRyaWJ1dGUgUGx1Z2luQ29uc3RydWN0b3IgUGx1Z2luOwogICAgICAgICBhdHRyaWJ1dGUgUGx1
Z2luQXJyYXlDb25zdHJ1Y3RvciBQbHVnaW5BcnJheTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cAppbmRleCA5OTljMWZmLi43ZmY5YzNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAt
MzQsMTMgKzM0LDMxIEBACiAKICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKIAorI2luY2x1ZGUgIkNT
dHJpbmcuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2lu
Y2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgorI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVz
c2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0
aWMgYm9vbCBJc1ZhbGlkUHJvdG9jb2xTdHJpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBwcm90
b2NvbCkKK3sKKyAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHByb3RvY29sLmNoYXJhY3Rl
cnMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3RvY29sLmxlbmd0aCgpOyBpKysp
IHsKKyAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gPCAweDIxIHx8IGNoYXJhY3RlcnNbaV0gPiAw
eDdFKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogV2ViU29ja2V0OjpXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9zdGF0ZShD
T05ORUNUSU5HKQpAQCAtNTksMTAgKzc3LDEyIEBAIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNv
bnN0IEtVUkwmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIHZvaWQgV2ViU29ja2V0Ojpjb25u
ZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY29ubmVjdCB0byAlcyBw
cm90b2NvbD0lcyIsIHRoaXMsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBwcm90b2NvbC51
dGY4KCkuZGF0YSgpKTsKICAgICBtX3VybCA9IHVybDsKICAgICBtX3Byb3RvY29sID0gcHJvdG9j
b2w7CiAKICAgICBpZiAoIW1fdXJsLnByb3RvY29sSXMoIndzIikgJiYgIW1fdXJsLnByb3RvY29s
SXMoIndzcyIpKSB7CisgICAgICAgIExPR19FUlJPUigiRXJyb3I6IHdyb25nIHVybCBmb3IgV2Vi
U29ja2V0ICVzIiwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBtX3N0YXRl
ID0gQ0xPU0VEOwogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsKQEAg
LTcyLDI2ICs5MiwzOSBAQCB2b2lkIFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmCiAgICAgICAgIGVjID0gU1lO
VEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAvLyBGSVhNRTogQ2hlY2sgcHJv
dG9jb2wgaXMgdmFsaWQgZm9ybS4KLSAgICAvLyBGSVhNRTogQ29ubmVjdCBXZWJTb2NrZXRDaGFu
bmVsLgorICAgIGlmICghcHJvdG9jb2wuaXNFbXB0eSgpICYmICFJc1ZhbGlkUHJvdG9jb2xTdHJp
bmcocHJvdG9jb2wpKSB7CisgICAgICAgIExPR19FUlJPUigiRXJyb3I6IHdyb25nIHByb3RvY29s
IGZvciBXZWJTb2NrZXQgJXMiLCBwcm90b2NvbC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgbV9z
dGF0ZSA9IENMT1NFRDsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIC8vIEZJWE1FOiBpZiBtX3VybC5wb3J0KCkgaXMgYmxvY2tpbmcgcG9ydCwg
cmFpc2UgU0VDVVJJVFlfRVJSLgorCisgICAgbV9jaGFubmVsID0gV2ViU29ja2V0Q2hhbm5lbDo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcywgbV91cmwsIG1fcHJvdG9jb2wp
OworICAgIG1fY2hhbm5lbC0+Y29ubmVjdCgpOwogfQogCi1ib29sIFdlYlNvY2tldDo6c2VuZChj
b25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiBlYykKK2Jvb2wgV2ViU29ja2V0OjpzZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKG1fc3Rh
dGUgIT0gT1BFTikgeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIHNlbmQgJXMiLCB0
aGlzLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChtX3N0YXRlID09IENPTk5FQ1RJ
TkcpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KLSAgICAvLyBGSVhNRTogc2VuZCBtZXNzYWdlIG9uIFdlYlNvY2tldENoYW5u
ZWwuCi0gICAgcmV0dXJuIGZhbHNlOworICAgIC8vIE5vIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYg
dGhlIGNvbm5lY3Rpb24gd2FzIG9uY2UgZXN0YWJsaXNoZWQgYnV0IGhhcyBzdWJzZXF1ZW50bHkg
YmVlbiBjbG9zZWQuCisgICAgaWYgKG1fc3RhdGUgPT0gQ0xPU0VEKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgLy8gRklYTUU6IGNoZWNrIG1lc3NhZ2UgaXMgdmFsaWQgdXRmOC4KKyAgICBy
ZXR1cm4gbV9jaGFubmVsLT5zZW5kKG1lc3NhZ2UpOwogfQogCiB2b2lkIFdlYlNvY2tldDo6Y2xv
c2UoKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlIiwgdGhpcyk7CiAg
ICAgaWYgKG1fc3RhdGUgPT0gQ0xPU0VEKQogICAgICAgICByZXR1cm47CiAgICAgbV9zdGF0ZSA9
IENMT1NFRDsKLSAgICAvLyBGSVhNRTogY2xvc2UgV2ViU29ja2V0Q2hhbm5lbC4KKyAgICBtX2No
YW5uZWwtPmNsb3NlKCk7CiB9CiAKIGNvbnN0IEtVUkwmIFdlYlNvY2tldDo6dXJsKCkgY29uc3QK
QEAgLTEwNiw3ICsxMzksOCBAQCBXZWJTb2NrZXQ6OlN0YXRlIFdlYlNvY2tldDo6cmVhZHlTdGF0
ZSgpIGNvbnN0CiAKIHVuc2lnbmVkIGxvbmcgV2ViU29ja2V0OjpidWZmZXJlZEFtb3VudCgpIGNv
bnN0CiB7Ci0gICAgLy8gRklYTUU6IGFzayBwbGF0Zm9ybSBjb2RlIHRvIGdldCBidWZmZXJlZCBh
bW91bnQgdG8gYmUgc2VudC4KKyAgICBpZiAobV9zdGF0ZSA9PSBPUEVOKQorICAgICAgICByZXR1
cm4gbV9jaGFubmVsLT5idWZmZXJlZEFtb3VudCgpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0x
MTUsMjQgKzE0OSw1NyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBXZWJTb2NrZXQ6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIH0KIAotdm9pZCBXZWJTb2NrZXQ6OmFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9v
bCkKK3ZvaWQgV2ViU29ja2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIsIGJvb2wp
CiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgorICAgIEV2ZW50TGlzdGVuZXJzTWFw
OjppdGVyYXRvciBpdGVyID0gbV9ldmVudExpc3RlbmVycy5maW5kKGV2ZW50VHlwZSk7CisgICAg
aWYgKGl0ZXIgPT0gbV9ldmVudExpc3RlbmVycy5lbmQoKSkgeworICAgICAgICBMaXN0ZW5lclZl
Y3RvciBsaXN0ZW5lcnM7CisgICAgICAgIGxpc3RlbmVycy5hcHBlbmQoZXZlbnRMaXN0ZW5lcik7
CisgICAgICAgIG1fZXZlbnRMaXN0ZW5lcnMuYWRkKGV2ZW50VHlwZSwgbGlzdGVuZXJzKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBMaXN0ZW5lclZlY3RvciYgbGlzdGVuZXJzID0gaXRlci0+c2Vj
b25kOworICAgICAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjppdGVyYXRvciBsaXN0ZW5lckl0ZXIg
PSBsaXN0ZW5lcnMuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9IGxpc3RlbmVycy5lbmQoKTsgKyts
aXN0ZW5lckl0ZXIpCisgICAgICAgICAgICBpZiAoKmxpc3RlbmVySXRlciA9PSBldmVudExpc3Rl
bmVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsaXN0ZW5lcnMuYXBwZW5k
KGV2ZW50TGlzdGVuZXIpOworICAgICAgICBtX2V2ZW50TGlzdGVuZXJzLmFkZChldmVudFR5cGUs
IGxpc3RlbmVycyk7CisgICAgfQogfQogCi12b2lkIFdlYlNvY2tldDo6cmVtb3ZlRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmLCBFdmVudExpc3RlbmVyKiwgYm9vbCkKK3ZvaWQgV2Vi
U29ja2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyLCBib29sKQogewotICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQgdGhpcy4KKyAgICBFdmVudExpc3RlbmVyc01hcDo6aXRlcmF0b3IgaXRlciA9IG1f
ZXZlbnRMaXN0ZW5lcnMuZmluZChldmVudFR5cGUpOworICAgIGlmIChpdGVyID09IG1fZXZlbnRM
aXN0ZW5lcnMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIExpc3RlbmVyVmVjdG9yJiBs
aXN0ZW5lcnMgPSBpdGVyLT5zZWNvbmQ7CisgICAgZm9yIChMaXN0ZW5lclZlY3Rvcjo6Y29uc3Rf
aXRlcmF0b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVuZXJzLmJlZ2luKCk7IGxpc3RlbmVySXRlciAh
PSBsaXN0ZW5lcnMuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKQorICAgICAgICBpZiAoKmxpc3RlbmVy
SXRlciA9PSBldmVudExpc3RlbmVyKSB7CisgICAgICAgICAgICBsaXN0ZW5lcnMucmVtb3ZlKGxp
c3RlbmVySXRlciAtIGxpc3RlbmVycy5iZWdpbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQogfQogCi1ib29sIFdlYlNvY2tldDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2
ZW50PiwgRXhjZXB0aW9uQ29kZSYpCitib29sIFdlYlNvY2tldDo6ZGlzcGF0Y2hFdmVudChQYXNz
UmVmUHRyPEV2ZW50PiBldnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQgdGhpcy4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFldnQgfHwgZXZ0LT50
eXBlKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGVjID0gRXZlbnRFeGNlcHRpb246OlVOU1BFQ0lG
SUVEX0VWRU5UX1RZUEVfRVJSOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBM
aXN0ZW5lclZlY3RvciBsaXN0ZW5lcnNDb3B5ID0gbV9ldmVudExpc3RlbmVycy5nZXQoZXZ0LT50
eXBlKCkpOworICAgIGZvciAoTGlzdGVuZXJWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGxpc3RlbmVy
SXRlciA9IGxpc3RlbmVyc0NvcHkuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9IGxpc3RlbmVyc0Nv
cHkuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKSB7CisgICAgICAgIGV2dC0+c2V0VGFyZ2V0KHRoaXMp
OworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIGxpc3RlbmVy
SXRlci0+Z2V0KCktPmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwgZmFsc2UpOworICAgIH0KKyAgICBy
ZXR1cm4gIWV2dC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogfQogCiB2b2lkIFdlYlNvY2tldDo6ZGlk
Q29ubmVjdCgpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkQ29ubmVjdCIs
IHRoaXMpOwogICAgIGlmIChtX3N0YXRlICE9IENPTk5FQ1RJTkcpIHsKICAgICAgICAgZGlkQ2xv
c2UoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTQzLDYgKzIxMCw3IEBAIHZvaWQgV2ViU29ja2V0
OjpkaWRDb25uZWN0KCkKIAogdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0
IFN0cmluZyYgbXNnKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZFJlY2Vp
dmVNZXNzYWdlICVzIiwgdGhpcywgbXNnLnV0ZjgoKS5kYXRhKCkpOwogICAgIGlmIChtX3N0YXRl
ICE9IE9QRU4pCiAgICAgICAgIHJldHVybjsKICAgICBkaXNwYXRjaE1lc3NhZ2VFdmVudChtc2cp
OwpAQCAtMTUwLDIzICsyMTgsNTMgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNzYWdl
KGNvbnN0IFN0cmluZyYgbXNnKQogCiB2b2lkIFdlYlNvY2tldDo6ZGlkQ2xvc2UoKQogeworICAg
IExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZENsb3NlIiwgdGhpcyk7CiAgICAgbV9zdGF0
ZSA9IENMT1NFRDsKICAgICBkaXNwYXRjaENsb3NlRXZlbnQoKTsKIH0KIAogdm9pZCBXZWJTb2Nr
ZXQ6OmRpc3BhdGNoT3BlbkV2ZW50KCkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMu
CisgICAgUmVmUHRyPEV2ZW50PiBldnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5vcGVu
RXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgaWYgKG1fb25vcGVuKSB7CisgICAgICAgIGV2dC0+
c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7Cisg
ICAgICAgIG1fb25vcGVuLT5oYW5kbGVFdmVudChldnQuZ2V0KCksIGZhbHNlKTsKKyAgICB9CisK
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNl
KCksIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKIH0KIAotdm9pZCBXZWJTb2NrZXQ6OmRpc3BhdGNo
TWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYpCit2b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hNZXNz
YWdlRXZlbnQoY29uc3QgU3RyaW5nJiBtc2cpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0
aGlzLgorICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2dCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KCk7CisgICAgLy8gRklYTUU6IG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgbWVzc2FnZVBv
cnQuCisgICAgZXZ0LT5pbml0TWVzc2FnZUV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQs
IGZhbHNlLCBmYWxzZSwgbXNnLCAiIiwgIiIsIDAsIDApOworICAgIGlmIChtX29ubWVzc2FnZSkg
eworICAgICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50
VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29ubWVzc2FnZS0+aGFuZGxlRXZlbnQoZXZ0LmdldCgp
LCBmYWxzZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlzcGF0
Y2hFdmVudChldnQucmVsZWFzZSgpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7CiB9CiAKIHZvaWQg
V2ViU29ja2V0OjpkaXNwYXRjaENsb3NlRXZlbnQoKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQgdGhpcy4KKyAgICBSZWZQdHI8RXZlbnQ+IGV2dCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmNsb3NlRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgaWYgKG1fb25jbG9zZSkgeworICAg
ICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50VGFyZ2V0
KHRoaXMpOworICAgICAgICBtX29uY2xvc2UtPmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwgZmFsc2Up
OworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQo
ZXZ0LnJlbGVhc2UoKSwgZWMpOworICAgIEFTU0VSVCghZWMpOwogfQogCiB9ICAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IDQ4NWUyY2MuLjZhYjc4NTUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTMxLDkzICszMSwxMDQgQEAKICNpZm5kZWYgV2ViU29j
a2V0X2gKICNkZWZpbmUgV2ViU29ja2V0X2gKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKwog
I2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkF0b21pY1N0cmluZ0hhc2gu
aCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIK
ICNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFN0cmluZzsKKyAgICBjbGFzcyBTdHJpbmc7Cisg
ICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbDsKIAotY2xhc3MgV2ViU29ja2V0IDogcHVibGljIFJl
ZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9N
T2JqZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcg
V2ViU29ja2V0KGNvbnRleHQpKTsgfQotICAgIHZpcnR1YWwgfldlYlNvY2tldCgpOworICAgIGNs
YXNzIFdlYlNvY2tldCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlNvY2tldD4sIHB1YmxpYyBFdmVu
dFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFdlYlNvY2tldENoYW5uZWxD
bGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYlNvY2tldChjb250ZXh0KSk7IH0KKyAgICAgICAgdmlydHVhbCB+V2ViU29ja2V0
KCk7CiAKLSAgICBlbnVtIFN0YXRlIHsKLSAgICAgICAgQ09OTkVDVElORyA9IDAsCi0gICAgICAg
IE9QRU4gPSAxLAotICAgICAgICBDTE9TRUQgPSAyCi0gICAgfTsKKyAgICAgICAgZW51bSBTdGF0
ZSB7CisgICAgICAgICAgICBDT05ORUNUSU5HID0gMCwKKyAgICAgICAgICAgIE9QRU4gPSAxLAor
ICAgICAgICAgICAgQ0xPU0VEID0gMgorICAgICAgICB9OwogCi0gICAgdm9pZCBjb25uZWN0KGNv
bnN0IEtVUkwmIHVybCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgY29ubmVjdChjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAg
ICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgRXhjZXB0aW9uQ29kZSYpOworICAgICAg
ICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBF
eGNlcHRpb25Db2RlJik7CiAKLSAgICBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBF
eGNlcHRpb25Db2RlJik7CisgICAgICAgIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZvaWQgY2xvc2UoKTsKKyAgICAgICAgdm9pZCBjbG9z
ZSgpOwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7Ci0gICAgU3RhdGUgcmVhZHlTdGF0
ZSgpIGNvbnN0OwotICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKKyAg
ICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7CisgICAgICAgIFN0YXRlIHJlYWR5U3RhdGUo
KSBjb25zdDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0Owog
Ci0gICAgdm9pZCBzZXRPbm9wZW4oUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3Rl
bmVyKSB7IG1fb25vcGVuID0gZXZlbnRMaXN0ZW5lcjsgfQotICAgIEV2ZW50TGlzdGVuZXIqIG9u
b3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fb25vcGVuLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRPbm1l
c3NhZ2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25tZXNz
YWdlID0gZXZlbnRMaXN0ZW5lcjsgfQotICAgIEV2ZW50TGlzdGVuZXIqIG9ubWVzc2FnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb25tZXNzYWdlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRPbmNsb3NlKFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uY2xvc2UgPSBldmVu
dExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25jbG9zZSgpIGNvbnN0IHsgcmV0dXJu
IG1fb25jbG9zZS5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldE9ub3BlbihQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbm9wZW4gPSBldmVudExpc3RlbmVyOyB9
CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9ub3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fb25vcGVu
LmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0T25tZXNzYWdlKFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29ubWVzc2FnZSA9IGV2ZW50TGlzdGVuZXI7IH0KKyAg
ICAgICAgRXZlbnRMaXN0ZW5lciogb25tZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9vbm1lc3Nh
Z2UuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRPbmNsb3NlKFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uY2xvc2UgPSBldmVudExpc3RlbmVyOyB9CisgICAg
ICAgIEV2ZW50TGlzdGVuZXIqIG9uY2xvc2UoKSBjb25zdCB7IHJldHVybiBtX29uY2xvc2UuZ2V0
KCk7IH0KIAotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBXZWJTb2NrZXQqIHRvV2Vi
U29ja2V0KCkgeyByZXR1cm4gdGhpczsgfQorICAgICAgICAvLyBFdmVudFRhcmdldAorICAgICAg
ICB2aXJ0dWFsIFdlYlNvY2tldCogdG9XZWJTb2NrZXQoKSB7IHJldHVybiB0aGlzOyB9CiAKLSAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3Rl
bmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wg
dXNlQ2FwdHVyZSk7Ci0gICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEV2
ZW50TGlzdGVuZXI+ID4gTGlzdGVuZXJWZWN0b3I7CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxB
dG9taWNTdHJpbmcsIExpc3RlbmVyVmVjdG9yPiBFdmVudExpc3RlbmVyc01hcDsKIAotICAgIC8v
IEFjdGl2ZURPTU9iamVjdAotICAgIC8vIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdDsKLSAgICAvLyB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwotICAgIC8v
IHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Q7Ci0gICAgLy8gdmlydHVhbCB2b2lkIHN1
c3BlbmQoKTsKLSAgICAvLyB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7Ci0gICAgLy8gdmlydHVhbCB2
b2lkIHN0b3AoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wg
dXNlQ2FwdHVyZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0
dXJlKTsKKyAgICAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAmIGV2ZW50TGlz
dGVuZXJzKCkgeyByZXR1cm4gbV9ldmVudExpc3RlbmVyczsgfQogCi0gICAgdXNpbmcgUmVmQ291
bnRlZDxXZWJTb2NrZXQ+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJTb2NrZXQ+Ojpk
ZXJlZjsKKyAgICAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CisgICAgICAgIC8vICB2aXJ0dWFsIGJv
b2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CisgICAgICAgIC8vIHZpcnR1YWwgdm9pZCBj
b250ZXh0RGVzdHJveWVkKCk7CisgICAgICAgIC8vIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkg
Y29uc3Q7CisgICAgICAgIC8vIHZpcnR1YWwgdm9pZCBzdXNwZW5kKCk7CisgICAgICAgIC8vIHZp
cnR1YWwgdm9pZCByZXN1bWUoKTsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lkIHN0b3AoKTsKIAot
cHJpdmF0ZToKLSAgICBXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgICAg
ICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldD46OnJlZjsKKyAgICAgICAgdXNpbmcgUmVmQ291
bnRlZDxXZWJTb2NrZXQ+OjpkZXJlZjsKIAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdl
dCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVy
ZWYoKTsgfQorICAgICAgICAvLyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50CisgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRDb25uZWN0KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShjb25zdCBTdHJpbmcmIG1zZyk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZSgp
OwogCi0gICAgLy8gV2ViU29ja2V0Q2hhbm5lbENsaWVudAotICAgIHZvaWQgZGlkQ29ubmVjdCgp
OwotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtc2cpOwotICAgIHZv
aWQgZGlkQ2xvc2UoKTsKKyAgICBwcml2YXRlOgorICAgICAgICBXZWJTb2NrZXQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOwogCi0gICAgdm9pZCBkaXNwYXRjaE9wZW5FdmVudCgpOwotICAgIHZv
aWQgZGlzcGF0Y2hNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBtc2cpOwotICAgIHZvaWQgZGlz
cGF0Y2hDbG9zZUV2ZW50KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgp
IHsgcmVmKCk7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRl
cmVmKCk7IH0KIAotICAgIC8vIEZJWE1FOiBhZGQgV2ViU29ja2V0Q2hhbm5lbC4KKyAgICAgICAg
dm9pZCBkaXNwYXRjaE9wZW5FdmVudCgpOworICAgICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUV2
ZW50KGNvbnN0IFN0cmluZyYgbXNnKTsKKyAgICAgICAgdm9pZCBkaXNwYXRjaENsb3NlRXZlbnQo
KTsKIAotICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ub3BlbjsKLSAgICBSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gbV9vbm1lc3NhZ2U7Ci0gICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25j
bG9zZTsKKyAgICAgICAgUmVmUHRyPFdlYlNvY2tldENoYW5uZWw+IG1fY2hhbm5lbDsKIAotICAg
IFN0YXRlIG1fc3RhdGU7Ci0gICAgS1VSTCBtX3VybDsKLSAgICBTdHJpbmcgbV9wcm90b2NvbDsK
LX07CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ub3BlbjsKKyAgICAgICAgUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IG1fb25tZXNzYWdlOworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gbV9vbmNsb3NlOworICAgICAgICBFdmVudExpc3RlbmVyc01hcCBtX2V2ZW50TGlzdGVu
ZXJzOworCisgICAgICAgIFN0YXRlIG1fc3RhdGU7CisgICAgICAgIEtVUkwgbV91cmw7CisgICAg
ICAgIFN0cmluZyBtX3Byb3RvY29sOworICAgIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCiAjZW5kaWYgIC8vIFdlYlNvY2tl
dF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAg
Yi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMTU0ZjBkMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMCwwICsxLDI0NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRlICJXZWJT
b2NrZXRDaGFubmVsLmgiCisKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZS5oIgorI2luY2x1ZGUg
IlN0cmluZ0hhc2guaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCisKKyNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1dlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCisgICAgICAgIDogbV9j
b250ZXh0KGNvbnRleHQpCisgICAgICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICAgICAsIG1f
aGFuZHNoYWtlcihXZWJTb2NrZXRIYW5kc2hha2VyKHVybCwgcHJvdG9jb2wsIGNvbnRleHQpKQor
ICAgICAgICAsIG1fYnVmZmVyKDApCisgICAgICAgICwgbV9idWZmZXJfc2l6ZSgwKQoreworfQor
CitXZWJTb2NrZXRDaGFubmVsOjp+V2ViU29ja2V0Q2hhbm5lbCgpCit7Cit9CisKK3ZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6Y29ubmVjdCgpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIGNvbm5lY3QiLCB0aGlzKTsKKyAgICBtX2hhbmRzaGFrZXIucmVzZXQoKTsKKyAg
ICBtX2hhbmRsZSA9IFNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlKG1faGFuZHNoYWtlci51cmwo
KSwgdGhpcyk7Cit9CisKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcm
IG1zZykKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCAlcyIs
IHRoaXMsIG1zZy51dGY4KCkuZGF0YSgpKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBmcmFtZV90
eXBlWzFdID0geydcMCd9OworICAgIHN0YXRpYyBjb25zdCBjaGFyIGZyYW1lX2VuZFsxXSA9IHsn
XHhmZid9OworICAgIFZlY3RvcjxjaGFyPiBidWY7CisgICAgYnVmLmFwcGVuZChmcmFtZV90eXBl
LCBzaXplb2YoZnJhbWVfdHlwZSkpOworICAgIGJ1Zi5hcHBlbmQobXNnLnV0ZjgoKS5kYXRhKCks
IG1zZy51dGY4KCkubGVuZ3RoKCkpOworICAgIGJ1Zi5hcHBlbmQoZnJhbWVfZW5kLCBzaXplb2Yo
ZnJhbWVfZW5kKSk7CisgICAgcmV0dXJuIG1faGFuZGxlLT5zZW5kKGJ1Zi5kYXRhKCksIGJ1Zi5z
aXplKCkpOworfQorCit1bnNpZ25lZCBsb25nIFdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1v
dW50KCkgY29uc3QKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgYnVm
ZmVyZWRBbW91bnQiLCB0aGlzKTsKKyAgICByZXR1cm4gbV9oYW5kbGUtPmJ1ZmZlcmVkQW1vdW50
KCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoKQoreworICAgIExPRyhOZXR3
b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjbG9zZSIsIHRoaXMpOworICAgIGlmIChtX2hhbmRs
ZS5nZXQoKSkKKyAgICAgICAgbV9oYW5kbGUtPmNsb3NlKCk7ICAvLyB3aWxsIGNhbGwgZGlkQ2xv
c2UoKQorfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OndpbGxPcGVuU3RyZWFtKFNvY2tldFN0
cmVhbUhhbmRsZSosIGNvbnN0IEtVUkwmKQoreworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6
OndpbGxTZW5kRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50KQorewor
fQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZE9wZW4oU29ja2V0U3RyZWFtSGFuZGxlKiBo
YW5kbGUpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZE9wZW4i
LCB0aGlzKTsKKyAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdldCgpIHx8ICFtX2hhbmRs
ZS5nZXQoKSk7CisgICAgaWYgKCFtX2hhbmRsZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGNvbnN0IENTdHJpbmcmIGhhbmRzaGFrZV9tZXNzYWdlID0gbV9oYW5kc2hha2VyLmNsaWVudF9o
YW5kc2hha2VfbWVzc2FnZSgpOworICAgIG1faGFuZGxlLT5zZW5kKGhhbmRzaGFrZV9tZXNzYWdl
LmRhdGEoKSwgaGFuZHNoYWtlX21lc3NhZ2UubGVuZ3RoKCkpOworfQorCit2b2lkIFdlYlNvY2tl
dENoYW5uZWw6OmRpZENsb3NlKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQoreworICAgIExP
RyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRDbG9zZSIsIHRoaXMpOworICAgIEFT
U0VSVChoYW5kbGUgPT0gbV9oYW5kbGUuZ2V0KCkgfHwgIW1faGFuZGxlLmdldCgpKTsKKyAgICBp
ZiAoIW1faGFuZGxlLmdldCgpKQorICAgICAgICByZXR1cm47CisgICAgbV9oYW5kbGUgPSAwOwor
ICAgIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCA9IG1fY2xpZW50OworICAgIG1fY2xp
ZW50ID0gMDsKKyAgICBjbGllbnQtPmRpZENsb3NlKCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6ZGlkUmVjZWl2ZWREYXRhKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5l
bCAlcCBkaWRSZWNlaXZlRGF0YSAlZCIsIHRoaXMsIGxlbik7CisgICAgQVNTRVJUKGhhbmRsZSA9
PSBtX2hhbmRsZS5nZXQoKSB8fCAhbV9oYW5kbGUuZ2V0KCkpOworICAgIGlmICghbV9oYW5kbGUu
Z2V0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWFwcGVuZFRvQnVmZmVyKGRhdGEsIGxl
bikpIHsKKyAgICAgICAgZGlkQ2xvc2UoaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAobV9oYW5kc2hha2VyLm1vZGUoKSAhPSBXZWJTb2NrZXRIYW5kc2hha2VyOjpDb25u
ZWN0ZWQpIHsKKyAgICAgICAgaWYgKCFtX2hhbmRzaGFrZXIucmVhZFNlcnZlckhhbmRzaGFrZSht
X2J1ZmZlci5nZXQoKSwgbV9idWZmZXJfc2l6ZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIHN3aXRjaCAobV9oYW5kc2hha2VyLm1vZGUoKSkgeworICAgICAgICBjYXNlIFdlYlNvY2tl
dEhhbmRzaGFrZXI6OkNvbm5lY3RlZDoKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29j
a2V0Q2hhbm5lbCAlcCBjb25uZWN0ZWQiLCB0aGlzKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRDb25uZWN0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJTb2NrZXRI
YW5kc2hha2VyOjpSZWRpcmVjdDoKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiUmVkaXJlY3Qg
dG8gJXMiLCBtX2hhbmRzaGFrZXIuc2VydmVyX2xvY2F0aW9uKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgICAgICByZWRpcmVjdChtX2hhbmRzaGFrZXIuc2VydmVyX2xvY2F0aW9uKCkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFdlYlNvY2tldEhhbmRzaGFrZXI6OkF1dGhl
bnRpY2F0ZToKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZShtX2hhbmRzaGFrZXIuc2VydmVyX3d3
d19hdXRoZW50aWNhdGUoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVjdGlv
biBmYWlsZWQiLCB0aGlzKTsKKyAgICAgICAgICAgIGRpZENsb3NlKGhhbmRsZSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc2tpcEJ1ZmZlcihtX2hhbmRzaGFrZXIu
c2VydmVySGFuZHNoYWtlTGVuZ3RoKCkpOworICAgICAgICBpZiAoIW1fYnVmZmVyLmdldCgpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBMT0coTmV0d29yaywgInJlbWFpbmluZyBpbiBy
ZWFkIGJ1ZiAldWwiLCBtX2J1ZmZlcl9zaXplKTsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyKiBu
ZXh0X2ZyYW1lID0gbV9idWZmZXIuZ2V0KCk7CisgICAgY29uc3QgY2hhciogcCA9IG1fYnVmZmVy
LmdldCgpOworICAgIGNvbnN0IGNoYXIqIGVuZCA9IHAgKyBtX2J1ZmZlcl9zaXplOworICAgIHdo
aWxlIChwIDwgZW5kKSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgZnJhbWVfYnl0ZSA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KCpwKyspOworICAgICAgICBpZiAoKGZyYW1lX2J5dGUgJiAw
eDgwKSA9PSAweDgwKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogaGFuZGxlIG92ZXJmbG93Lgor
ICAgICAgICAgICAgaW50IGxlbmd0aCA9IDA7CisgICAgICAgICAgICB3aGlsZSAocCA8IGVuZCAm
JiAoKnAgJiAweDgwKSA9PSAweDgwKSB7CisgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkgLyAxMjgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgTE9HKE5ldHdvcmssICJmcmFtZSBsZW5ndGggb3ZlcmZsb3cgJWQiLCBsZW5ndGgpOworICAg
ICAgICAgICAgICAgICAgICBkaWRDbG9zZShoYW5kbGUpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0
aCAqIDEyNyArICpwICYgMHg3ZjsKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAocCArIGxlbmd0aCA8IGVuZCkgeworICAgICAgICAgICAgICAgIHAg
Kz0gbGVuZ3RoOworICAgICAgICAgICAgICAgIG5leHRfZnJhbWUgPSBwOworICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29uc3QgY2hhciogbXNnX3N0YXJ0ID0g
cDsKKyAgICAgICAgICAgIHdoaWxlIChwIDwgZW5kICYmICpwICE9ICdceGZmJykKKyAgICAgICAg
ICAgICAgICArK3A7CisgICAgICAgICAgICBpZiAocCA8IGVuZCAmJiAqcCA9PSAnXHhmZicpIHsK
KyAgICAgICAgICAgICAgICBpZiAoZnJhbWVfYnl0ZSA9PSAweDAwKQorICAgICAgICAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2UoU3RyaW5nOjpmcm9tVVRGOChtc2dfc3Rh
cnQsIHAgLSBtc2dfc3RhcnQpKTsKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAg
ICAgbmV4dF9mcmFtZSA9IHA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAg
c2tpcEJ1ZmZlcihuZXh0X2ZyYW1lIC0gbV9idWZmZXIuZ2V0KCkpOworfQorCit2b2lkIFdlYlNv
Y2tldENoYW5uZWw6OmRpZEZhaWwoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFNv
Y2tldFN0cmVhbUhhbmRsZUVycm9yJiBlcnIpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2Nr
ZXRDaGFubmVsICVwIGRpZEZhaWxlIiwgdGhpcyk7CisgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hh
bmRsZS5nZXQoKSB8fCAhbV9oYW5kbGUuZ2V0KCkpOworICAgIGRpZENsb3NlKGhhbmRsZSk7Cit9
CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cmVkaXJlY3QoY29uc3QgU3RyaW5nJiBsb2NhdGlv
bikKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgcmVkaXJlY3QgdG8g
JXMiLCB0aGlzLCBsb2NhdGlvbi51dGY4KCkuZGF0YSgpKTsKKyAgICBLVVJMIHVybChsb2NhdGlv
bik7CisgICAgbV9oYW5kc2hha2VyLnNldFVSTCh1cmwpOworICAgIGNvbm5lY3QoKTsKK30KKwor
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjphdXRoZW50aWNhdGUoY29uc3QgU3RyaW5nJiB3d3dfYXV0
aGVudGljYXRlKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBkaWRDbG9z
ZShtX2hhbmRsZS5nZXQoKSk7Cit9CisKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9C
dWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKK3sKKyAgICBjaGFyKiBuZXdfYnVmZmVy
ID0gMDsKKyAgICBpZiAodHJ5RmFzdE1hbGxvYyhtX2J1ZmZlcl9zaXplICsgbGVuKS5nZXRWYWx1
ZShuZXdfYnVmZmVyKSkgeworICAgICAgICBpZiAobV9idWZmZXIuZ2V0KCkpCisgICAgICAgICAg
ICBtZW1jcHkobmV3X2J1ZmZlciwgbV9idWZmZXIuZ2V0KCksIG1fYnVmZmVyX3NpemUpOworICAg
ICAgICBtZW1jcHkobmV3X2J1ZmZlciArIG1fYnVmZmVyX3NpemUsIGRhdGEsIGxlbik7CisgICAg
ICAgIG1fYnVmZmVyLnNldChuZXdfYnVmZmVyKTsKKyAgICAgICAgbV9idWZmZXJfc2l6ZSArPSBs
ZW47CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBMT0coTmV0d29yaywgIlRvbyBs
b25nIHdlYnNvY2tldCBmcmFtZSAlZCIsIG1fYnVmZmVyX3NpemUgKyBsZW4pOworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpza2lwQnVmZmVyKGludCBsZW4p
Cit7CisgICAgQVNTRVJUKGxlbiA8PSBtX2J1ZmZlcl9zaXplKTsKKyAgICBtX2J1ZmZlcl9zaXpl
IC09IGxlbjsKKyAgICBpZiAoIW1fYnVmZmVyX3NpemUpIHsKKyAgICAgICAgbV9idWZmZXIuc2V0
KDApOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1lbW1vdmUobV9idWZmZXIuZ2V0KCks
IG1fYnVmZmVyLmdldCgpICsgbGVuLCBtX2J1ZmZlcl9zaXplKTsKK30KKworfSAgLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5jMGRhNDgxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0Q2hhbm5lbF9oCisj
ZGVmaW5lIFdlYlNvY2tldENoYW5uZWxfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisj
aW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0
SGFuZHNoYWtlci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OworICAgIGNsYXNzIFN0cmluZzsKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1I
YW5kbGU7CisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlRXJyb3I7CisgICAgY2xhc3MgV2Vi
U29ja2V0Q2hhbm5lbENsaWVudDsKKworICAgIGNsYXNzIFdlYlNvY2tldENoYW5uZWwgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJTb2NrZXRDaGFubmVsPiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2Nr
ZXRDaGFubmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29j
a2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wpIHsgcmV0dXJuIG5ldyBXZWJTb2NrZXRDaGFubmVsKGNvbnRleHQsIGNsaWVudCwg
dXJsLCBwcm90b2NvbCk7IH0KKyAgICAgICAgdmlydHVhbCB+V2ViU29ja2V0Q2hhbm5lbCgpOwor
CisgICAgICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KCk7CisKKyAgICAgICAgdmlydHVhbCBib29s
IHNlbmQoY29uc3QgU3RyaW5nJiBtc2cpOworICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcg
YnVmZmVyZWRBbW91bnQoKSBjb25zdDsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsK
KworICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbE9wZW5TdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxl
KiwgY29uc3QgS1VSTCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmREYXRhKFNvY2tl
dFN0cmVhbUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkT3BlbihTb2NrZXRTdHJlYW1IYW5kbGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENs
b3NlKFNvY2tldFN0cmVhbUhhbmRsZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZWREYXRhKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmFpbChTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBTb2NrZXRTdHJl
YW1IYW5kbGVFcnJvciYpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5l
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCosIGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmKTsKKworICAgICAgICB2b2lkIHJlZGlyZWN0KGNvbnN0IFN0
cmluZyYgbG9jYXRpb24pOworICAgICAgICB2b2lkIGF1dGhlbnRpY2F0ZShjb25zdCBTdHJpbmcm
IHd3d19hdXRoZW50aWNhdGUpOworCisgICAgICAgIGJvb2wgYXBwZW5kVG9CdWZmZXIoY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbik7CisgICAgICAgIHZvaWQgc2tpcEJ1ZmZlcihpbnQgbGVuKTsK
KworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CisgICAgICAgIFdl
YlNvY2tldENoYW5uZWxDbGllbnQqIG1fY2xpZW50OworICAgICAgICBXZWJTb2NrZXRIYW5kc2hh
a2VyIG1faGFuZHNoYWtlcjsKKyAgICAgICAgUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gbV9o
YW5kbGU7CisgICAgICAgIE93blB0cjxjaGFyPiBtX2J1ZmZlcjsKKyAgICAgICAgaW50IG1fYnVm
ZmVyX3NpemU7CisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAv
LyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAgLy8gV2ViU29ja2V0Q2hhbm5lbF9oCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIGIv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjNjYWRhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaApAQCAtMCwwICsxLDUzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViU29ja2V0Q2hhbm5lbENsaWVudF9oCisjZGVmaW5lIFdlYlNvY2tldENoYW5uZWxD
bGllbnRfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKyAgICBjbGFzcyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWxDbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVh
bCB2b2lkIGRpZENvbm5lY3QoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKGNvbnN0IFN0cmluZyYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2Uo
KSB7IH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCgp
IHsgfQorICAgIH07CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5B
QkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYgIC8vIFdlYlNvY2tldENoYW5uZWxDbGllbnRfaApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZXIuY3BwIGIv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkNmU2YjcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlci5jcHAKQEAgLTAsMCArMSw0NzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAi
V2ViU29ja2V0SGFuZHNoYWtlci5oIgorCisjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCisjaW5j
bHVkZSAiSFRUUEhlYWRlck1hcC5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNs
dWRlICJTdHJpbmdCdWlsZGVyLmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY29uc3QgY2hhciB3ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hha2VIZWFk
ZXJbXSA9ICJIVFRQLzEuMSAxMDEgV2ViIFNvY2tldCBQcm90b2NvbCBIYW5kc2hha2VcclxuIjsK
K2NvbnN0IGNoYXIgd2ViU29ja2V0VXBncmFkZUhlYWRlcltdID0gIlVwZ3JhZGU6IFdlYlNvY2tl
dFxyXG4iCisgICAgICAgICJDb25uZWN0aW9uOiBVcGdyYWRlXHJcbiI7CisKK3N0YXRpYyBTdHJp
bmcgZXh0cmFjdFJlc3BvbnNlQ29kZShjb25zdCBjaGFyKiBoZWFkZXIsIGludCBsZW4pCit7Cisg
ICAgY29uc3QgY2hhciogc3BhY2UxID0gMDsKKyAgICBjb25zdCBjaGFyKiBzcGFjZTIgPSAwOwor
ICAgIGNvbnN0IGNoYXIqIHA7CisgICAgZm9yIChwID0gaGVhZGVyOyBwIC0gaGVhZGVyIDwgbGVu
OyBwKyspIHsKKyAgICAgICAgaWYgKCpwID09ICcgJykgeworICAgICAgICAgICAgaWYgKCFzcGFj
ZTEpCisgICAgICAgICAgICAgICAgc3BhY2UxID0gcDsKKyAgICAgICAgICAgIGVsc2UgaWYgKCFz
cGFjZTIpCisgICAgICAgICAgICAgICAgc3BhY2UyID0gcDsKKyAgICAgICAgfSBlbHNlIGlmICgq
cCA9PSAnXG4nKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChwIC0gaGVhZGVy
ID09IGxlbikKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlN0cmluZygpOworICAgIGlmICghc3Bh
Y2UxIHx8ICFzcGFjZTIpCisgICAgICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gV2ViQ29yZTo6
U3RyaW5nKHNwYWNlMSArIDEsIHNwYWNlMiAtIHNwYWNlMSAtIDEpOworfQorCitzdGF0aWMgYm9v
bCBoYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCkK
K3sKKyAgICBmb3IgKGNvbnN0IGNoYXIqIHAgPSBzdGFydDsgcCAmJiBwIDwgZW5kOyBwKyspIHsK
KyAgICAgICAgcCA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1jaHIocCwgJ1xyJywgZW5k
IC0gcCkpOworICAgICAgICBpZiAoIXApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgaWYgKHAgKyAzIDwgZW5kICYmICoocCArIDEpID09ICdcbicgJiYgKihwICsgMikgPT0g
J1xyJyAmJiAqKHAgKyAzKSA9PSAnXG4nKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKworV2ViU29ja2V0SGFuZHNoYWtlcjo6V2ViU29ja2V0
SGFuZHNoYWtlcihjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBtX3VybCh1cmwpCisgICAgLCBtX2Ns
aWVudF9wcm90b2NvbChwcm90b2NvbCkKKyAgICAsIG1fc2VjdXJlKG1fdXJsLnByb3RvY29sSXMo
IndzcyIpKQorICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3NlcnZlcl9oYW5kc2hh
a2VfbGVuZ3RoKDApCisgICAgLCBtX21vZGUoSW5jb21wbGV0ZSkKK3sKK30KKworV2ViU29ja2V0
SGFuZHNoYWtlcjo6fldlYlNvY2tldEhhbmRzaGFrZXIoKQoreworfQorCitjb25zdCBLVVJMJiBX
ZWJTb2NrZXRIYW5kc2hha2VyOjp1cmwoKSBjb25zdAoreworICAgIHJldHVybiBtX3VybDsKK30K
Kwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2VyOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQorewor
ICAgIG1fdXJsID0gdXJsLmNvcHkoKTsKK30KKworY29uc3QgU3RyaW5nIFdlYlNvY2tldEhhbmRz
aGFrZXI6Omhvc3QoKSBjb25zdAoreworICAgIHJldHVybiBtX3VybC5ob3N0KCkubG93ZXIoKTsK
K30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2VyOjpjbGllbnRfcHJvdG9jb2wo
KSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudF9wcm90b2NvbDsKK30KKwordm9pZCBXZWJT
b2NrZXRIYW5kc2hha2VyOjpzZXRDbGllbnRQcm90b2NvbChjb25zdCBTdHJpbmcmIHByb3RvY29s
KQoreworICAgIG1fY2xpZW50X3Byb3RvY29sID0gcHJvdG9jb2w7Cit9CisKK2Jvb2wgV2ViU29j
a2V0SGFuZHNoYWtlcjo6c2VjdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZWN1cmU7Cit9
CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlcjo6c2V0U2VjdXJlKGJvb2wgc2VjdXJlKQorewor
ICAgIG1fc2VjdXJlID0gc2VjdXJlOworfQorCitTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlcjo6
Y2xpZW50X29yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKS0+dG9TdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZXI6OmNs
aWVudF9sb2NhdGlvbigpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
IGJ1aWxkZXIuYXBwZW5kKG1fc2VjdXJlID8gIndzcyIgOiAid3MiKTsKKyAgICBidWlsZGVyLmFw
cGVuZCgiOi8vIik7CisgICAgYnVpbGRlci5hcHBlbmQoaG9zdCgpKTsKKyAgICBpZiAobV91cmwu
cG9ydCgpKSB7CisgICAgICAgIGlmICgoIW1fc2VjdXJlICYmIG1fdXJsLnBvcnQoKSAhPSA4MSkg
fHwgKG1fc2VjdXJlICYmIG1fdXJsLnBvcnQoKSAhPSA4MTUpKSB7CisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgiOiIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1i
ZXIobV91cmwucG9ydCgpKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgYnVpbGRlci5hcHBlbmQo
bV91cmwucGF0aCgpKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitDU3Ry
aW5nIFdlYlNvY2tldEhhbmRzaGFrZXI6OmNsaWVudF9oYW5kc2hha2VfbWVzc2FnZSgpIGNvbnN0
Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworCisgICAgYnVpbGRlci5hcHBlbmQoIkdF
VCAiKTsKKyAgICBidWlsZGVyLmFwcGVuZCh1cmwoKS5wYXRoKCkpOworICAgIGlmICghdXJsKCku
cXVlcnkoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIj8iKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQodXJsKCkucXVlcnkoKSk7CisgICAgfQorICAgIGJ1aWxkZXIuYXBw
ZW5kKCIgSFRUUC8xLjFcclxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIlVwZ3JhZGU6IFdlYlNv
Y2tldFxyXG4iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQ29ubmVjdGlvbjogVXBncmFkZVxyXG4i
KTsKKyAgICBidWlsZGVyLmFwcGVuZCgiSG9zdDogIik7CisgICAgYnVpbGRlci5hcHBlbmQoaG9z
dCgpKTsgIC8vIFhYWAorICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisgICAgYnVpbGRlci5h
cHBlbmQoIk9yaWdpbjogIik7CisgICAgYnVpbGRlci5hcHBlbmQoY2xpZW50X29yaWdpbigpKTsK
KyAgICBidWlsZGVyLmFwcGVuZCgiXHJcbiIpOworICAgIGlmICghY2xpZW50X3Byb3RvY29sKCku
aXNFbXB0eSgpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJXZWJTb2NrZXQtUHJvdG9jb2w6
ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChjbGllbnRfcHJvdG9jb2woKSk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisgICAgfQorICAgIEtVUkwgdXJsID0gdXJsT3ZlckhU
VFAoKTsKKyAgICAvLyBGSVhNRTogc2V0IGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uIG9yIGNv
b2tpZXMgZm9yIHVybC4KKyAgICBidWlsZGVyLmFwcGVuZCgiXHJcbiIpOworICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZXI6
OnJlc2V0KCkKK3sKKyAgICBtX3NlcnZlcl9oYW5kc2hha2VfbGVuZ3RoID0gMDsKKyAgICBtX21v
ZGUgPSBJbmNvbXBsZXRlOworCisgICAgbV93c19vcmlnaW4gPSBTdHJpbmcoKTsKKyAgICBtX3dz
X2xvY2F0aW9uID0gU3RyaW5nKCk7CisgICAgbV93c19wcm90b2NvbCA9IFN0cmluZygpOworICAg
IG1fbG9jYXRpb24gPSBTdHJpbmcoKTsKKyAgICBtX3d3d19hdXRoZW50aWNhdGUgPSBTdHJpbmco
KTsKK30KKworYm9vbCBXZWJTb2NrZXRIYW5kc2hha2VyOjpyZWFkU2VydmVySGFuZHNoYWtlKGNv
bnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKK3sKKyAgICBtX3NlcnZlcl9oYW5kc2hha2Vf
bGVuZ3RoID0gMDsKKyAgICBtX21vZGUgPSBJbmNvbXBsZXRlOworICAgIGlmIChsZW4gPCBzaXpl
b2Yod2ViU29ja2V0U2VydmVySGFuZHNoYWtlSGVhZGVyKSAtIDEpIHsKKyAgICAgICAgTE9HKE5l
dHdvcmssICJzaG9ydCByZXNwb25zZSBoZWFkZXIgbGVuPSVkIiwgbGVuKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoIW1lbWNtcChoZWFkZXIsIHdlYlNvY2tldFNlcnZl
ckhhbmRzaGFrZUhlYWRlciwgc2l6ZW9mKHdlYlNvY2tldFNlcnZlckhhbmRzaGFrZUhlYWRlcikg
LSAxKSkKKyAgICAgICAgbV9tb2RlID0gTm9ybWFsOworICAgIGVsc2UgeworICAgICAgICBjb25z
dCBTdHJpbmcmIGNvZGUgPSBleHRyYWN0UmVzcG9uc2VDb2RlKGhlYWRlciwgbGVuKTsKKyAgICAg
ICAgaWYgKGNvZGUuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAic2hvcnQg
c2VydmVyIGhhbmRzaGFrZTogJXMiLCBoZWFkZXIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgICAgIGlmIChjb2RlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
TE9HKE5ldHdvcmssICJubyByZXNwb25zZSBjb2RlIGZvdW5kOiAlcyIsIGhlYWRlcik7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBMT0coTmV0d29yaywgInJl
c3BvbnNlIGNvZGU6ICVzIiwgY29kZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKGNvZGUg
PT0gIjMwMSIgfHwgY29kZSA9PSAiMzAyIiB8fCBjb2RlID09ICIzMDMiIHx8IGNvZGUgPT0gIjMw
NyIpCisgICAgICAgICAgICBtX21vZGUgPSBSZWRpcmVjdDsKKyAgICAgICAgZWxzZSBpZiAoY29k
ZSA9PSAiNDAxIikKKyAgICAgICAgICAgIG1fbW9kZSA9IEF1dGhlbnRpY2F0ZTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBMT0coTmV0d29yaywgIk1pc21hdGNoIHNlcnZlciBoYW5kc2hh
a2U6ICVzIiwgaGVhZGVyKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgfQorICAgIGNvbnN0IGNoYXIqIHAgPSBoZWFkZXIgKyBzaXplb2Yod2ViU29ja2V0U2VydmVy
SGFuZHNoYWtlSGVhZGVyKSAtIDE7CisgICAgY29uc3QgY2hhciogZW5kID0gaGVhZGVyICsgbGVu
ICsgMTsKKworICAgIGlmIChtX21vZGUgPT0gTm9ybWFsKSB7CisgICAgICAgIHNpemVfdCBoZWFk
ZXJfc2l6ZSA9IGVuZCAtIHA7CisgICAgICAgIGlmIChoZWFkZXJfc2l6ZSA8IHNpemVvZih3ZWJT
b2NrZXRVcGdyYWRlSGVhZGVyKSAtIDEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmIChtZW1jbXAocCwgd2ViU29ja2V0VXBncmFkZUhlYWRlciwgc2l6ZW9mKHdlYlNvY2tl
dFVwZ3JhZGVIZWFkZXIpIC0gMSkpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiQmFkIHVw
Z3JhZGUgaGVhZGVyOiAlcyIsIHApOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgcCArPSBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRlcikgLSAxOworICAg
IH0KKworICAgIGlmICghaGFkU2VydmVySGFuZHNoYWtlKHAsIGVuZCkpIHsKKyAgICAgICAgTE9H
KE5ldHdvcmssICJpbmNvbXBsZXRlIHNlcnZlciBoYW5kc2hha2UgbGVuPSVkIiwgbGVuKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBIVFRQSGVhZGVyTWFwIGhlYWRlcnM7Cisg
ICAgcCA9IHBhcnNlSGVhZGVyKHAsIGVuZCwgJmhlYWRlcnMpOworICAgIGlmICghcCkgeworICAg
ICAgICBMT0coTmV0d29yaywgInBhcnNlSGVhZGVyIGZhaWxlZCIpOworICAgICAgICBtX21vZGUg
PSBGYWlsZWQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoIWhlYWRlclBy
b2Nlc3MoaGVhZGVycykpIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJoZWFkZXIgcHJvY2VzcyBm
YWlsZWQiKTsKKyAgICAgICAgbV9tb2RlID0gRmFpbGVkOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgc3dpdGNoIChtX21vZGUpIHsKKyAgICBjYXNlIE5vcm1hbDoKKyAgICAgICAg
aGFuZHNoYWtlKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUmVkaXJlY3Q6CisgICAgICAg
IGlmIChtX2xvY2F0aW9uLmlzTnVsbCgpKQorICAgICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1dGhlbnRpY2F0ZToKKyAgICAgICAgaWYgKG1fd3d3
X2F1dGhlbnRpY2F0ZS5pc051bGwoKSkKKyAgICAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbV9tb2RlID0gRmFpbGVkOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgbV9zZXJ2ZXJfaGFuZHNoYWtlX2xlbmd0aCA9IHAgLSBo
ZWFkZXI7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3NpemVfdCBXZWJTb2NrZXRIYW5kc2hha2Vy
OjpzZXJ2ZXJIYW5kc2hha2VMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3NlcnZlcl9o
YW5kc2hha2VfbGVuZ3RoOworfQorCitXZWJTb2NrZXRIYW5kc2hha2VyOjpNb2RlIFdlYlNvY2tl
dEhhbmRzaGFrZXI6Om1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX21vZGU7Cit9CisKK2Nv
bnN0IFN0cmluZyYgV2ViU29ja2V0SGFuZHNoYWtlcjo6c2VydmVyX3dlYnNvY2tldF9vcmlnaW4o
KSBjb25zdAoreworICAgIHJldHVybiBtX3dzX29yaWdpbjsKK30KKwordm9pZCBXZWJTb2NrZXRI
YW5kc2hha2VyOjpzZXRTZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oY29uc3QgU3RyaW5nJiB3ZWJzb2Nr
ZXRfb3JpZ2luKQoreworICAgIG1fd3Nfb3JpZ2luID0gd2Vic29ja2V0X29yaWdpbjsKK30KKwor
Y29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2VyOjpzZXJ2ZXJfd2Vic29ja2V0X2xvY2F0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93c19sb2NhdGlvbjsKK30KKwordm9pZCBXZWJT
b2NrZXRIYW5kc2hha2VyOjpzZXRTZXJ2ZXJXZWJTb2NrZXRMb2NhdGlvbihjb25zdCBTdHJpbmcm
IHdlYnNvY2tldF9sb2NhdGlvbikKK3sKKyAgICBtX3dzX2xvY2F0aW9uID0gd2Vic29ja2V0X2xv
Y2F0aW9uOworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZXI6OnNlcnZlcl93
ZWJzb2NrZXRfcHJvdG9jb2woKSBjb25zdAoreworICAgIHJldHVybiBtX3dzX3Byb3RvY29sOwor
fQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZXI6OnNldFNlcnZlcldlYlNvY2tldFByb3RvY29s
KGNvbnN0IFN0cmluZyYgd2Vic29ja2V0X3Byb3RvY29sKQoreworICAgIG1fd3NfcHJvdG9jb2wg
PSB3ZWJzb2NrZXRfcHJvdG9jb2w7Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0SGFuZHNo
YWtlcjo6c2VydmVyX2xvY2F0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sb2NhdGlvbjsK
K30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2VyOjpzZXJ2ZXJfd3d3X2F1dGhl
bnRpY2F0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3d3X2F1dGhlbnRpY2F0ZTsKK30KKwor
S1VSTCBXZWJTb2NrZXRIYW5kc2hha2VyOjp1cmxPdmVySFRUUCgpIGNvbnN0Cit7CisgICAgS1VS
TCB1cmwgPSBtX3VybC5jb3B5KCk7CisgICAgdXJsLnNldFByb3RvY29sKG1fc2VjdXJlID8gImh0
dHBzIiA6ICJodHRwIik7CisgICAgaW50IHBvcnQgPSB1cmwucG9ydCgpOworICAgIGlmICghcG9y
dCkKKyAgICAgICAgcG9ydCA9IG1fc2VjdXJlID8gODE1IDogODE7CisgICAgdXJsLnNldFBvcnQo
cG9ydCk7CisgICAgcmV0dXJuIHVybDsKK30KKworY29uc3QgY2hhciogV2ViU29ja2V0SGFuZHNo
YWtlcjo6cGFyc2VIZWFkZXIoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCwgSFRU
UEhlYWRlck1hcCogaGVhZGVycykKK3sKKyAgICBWZWN0b3I8Y2hhcj4gbmFtZTsKKyAgICBWZWN0
b3I8Y2hhcj4gdmFsdWU7CisgICAgZm9yIChjb25zdCBjaGFyKiBwID0gc3RhcnQ7IHAgPCBlbmQ7
IHArKykgeworICAgICAgICBuYW1lLmNsZWFyKCk7CisgICAgICAgIHZhbHVlLmNsZWFyKCk7CisK
KyAgICAgICAgZm9yICg7IHAgPCBlbmQ7IHArKykgeworICAgICAgICAgICAgc3dpdGNoICgqcCkg
eworICAgICAgICAgICAgY2FzZSAnXHInOgorICAgICAgICAgICAgICAgIGlmIChuYW1lLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAocCArIDEgPCBlbmQgJiYgKihwICsgMSkg
PT0gJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwICsgMjsKKyAgICAgICAg
ICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDRiBkb2Vzbid0IGZvbGxvdyBMRiBwPSVwIGVuZD0l
cCIsIHAsIGVuZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBMT0coTmV0d29yaywgIlVuZXhwZWN0ZWQgQ1IgaW4gbmFt
ZSIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgY2FzZSAnXG4nOgor
ICAgICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiVW5leHBlY3RlZCBMRiBpbiBuYW1lIik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBjYXNlICc6JzoKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgaWYg
KCpwID49IDB4NDEgJiYgKnAgPD0gMHg1YSkKKyAgICAgICAgICAgICAgICAgICAgbmFtZS5hcHBl
bmQoKnAgKyAweDIwKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IG5hbWUuYXBwZW5kKCpwKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmICgqcCA9PSAnOicpIHsKKyAgICAgICAgICAgICAgICArK3A7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBmb3IgKDsgcCA8IGVuZCAmJiAqcCA9PSAweDIwOyBwKyspIHsgfQorCisgICAgICAgIGZvciAo
OyBwIDwgZW5kOyBwKyspIHsKKyAgICAgICAgICAgIHN3aXRjaCAoKnApIHsKKyAgICAgICAgICAg
IGNhc2UgJ1xyJzoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ1xu
JzoKKyAgICAgICAgICAgICAgICBMT0coTmV0d29yaywgIlVuZXhwZWN0ZWQgTEYgaW4gdmFsdWUi
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgdmFsdWUuYXBwZW5kKCpwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmICgqcCA9PSAnXHInKSB7CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChwID49IGVuZCB8
fCAqcCAhPSAnXG4nKSB7CisgICAgICAgICAgICBMT0coTmV0d29yaywgIkNSIGRvZXNuJ3QgZm9s
bG93IExGIGFmdGVyIHZhbHVlIHA9JXAgZW5kPSVwIiwgcCwgZW5kKTsKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICB9CisgICAgICAgIEF0b21pY1N0cmluZyBuYW1lX3N0cihTdHJpbmc6
OmZyb21VVEY4KG5hbWUuZGF0YSgpLCBuYW1lLnNpemUoKSkpOworICAgICAgICBTdHJpbmcgdmFs
dWVfc3RyID0gU3RyaW5nOjpmcm9tVVRGOCh2YWx1ZS5kYXRhKCksIHZhbHVlLnNpemUoKSk7Cisg
ICAgICAgIExPRyhOZXR3b3JrLCAibmFtZT0lcyB2YWx1ZT0lcyIsIG5hbWVfc3RyLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCksIHZhbHVlX3N0ci51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaGVhZGVy
cy0+YWRkKG5hbWVfc3RyLCB2YWx1ZV9zdHIpOworICAgIH0KKyAgICBMT0coTmV0d29yaywgIlVu
ZXhwZWN0ZWQgZW5kIG9mIGhlYWRlciIpOworICAgIHJldHVybiAwOworfQorCitib29sIFdlYlNv
Y2tldEhhbmRzaGFrZXI6OmhlYWRlclByb2Nlc3MoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVy
cykKK3sKKyAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVy
cy5iZWdpbigpOyBpdCAhPSBoZWFkZXJzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIHN3aXRjaCAo
bV9tb2RlKSB7CisgICAgICAgIGNhc2UgTm9ybWFsOgorICAgICAgICAgICAgaWYgKGl0LT5maXJz
dCA9PSAid2Vic29ja2V0LW9yaWdpbiIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fd3Nfb3Jp
Z2luLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgbV93c19vcmlnaW4gPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgfSBlbHNlIGlm
IChpdC0+Zmlyc3QgPT0gIndlYnNvY2tldC1sb2NhdGlvbiIpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIW1fd3NfbG9jYXRpb24uaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICBtX3dzX2xvY2F0aW9uID0gaXQtPnNlY29uZDsKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJ3ZWJzb2NrZXQtcHJvdG9jb2wiKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFtX3dzX3Byb3RvY29sLmlzTnVsbCgpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgbV93c19wcm90b2NvbCA9IGl0
LT5zZWNvbmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBSZWRpcmVjdDoKKyAgICAgICAgICAgIGlmIChpdC0+Zmlyc3QgPT0gImxvY2F0aW9uIikgewor
ICAgICAgICAgICAgICAgIGlmICghbV9sb2NhdGlvbi5pc051bGwoKSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG1fbG9jYXRpb24gPSBpdC0+c2Vj
b25kOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXV0
aGVudGljYXRlOgorICAgICAgICAgICAgaWYgKGl0LT5maXJzdCA9PSAid3d3LWF1dGhlbnRpY2F0
ZSIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fd3d3X2F1dGhlbnRpY2F0ZS5pc051bGwoKSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG1fd3d3
X2F1dGhlbnRpY2F0ZSA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAidW5leHBl
Y3RlZCBtb2RlOiAlZCIsIG1fbW9kZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNo
YWtlcjo6aGFuZHNoYWtlKCkKK3sKKyAgICBBU1NFUlQobV9tb2RlID09IE5vcm1hbCk7CisgICAg
bV9tb2RlID0gRmFpbGVkOworICAgIGlmIChtX3dzX29yaWdpbi5pc051bGwoKSB8fCBtX3dzX2xv
Y2F0aW9uLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoY2xpZW50X29yaWdp
bigpICE9IG1fd3Nfb3JpZ2luKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiTWlzbWF0Y2ggb3Jp
Z2luOiAlcyAhPSAlcyIsIGNsaWVudF9vcmlnaW4oKS51dGY4KCkuZGF0YSgpLCBtX3dzX29yaWdp
bi51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoY2xpZW50
X2xvY2F0aW9uKCkgIT0gbV93c19sb2NhdGlvbikgeworICAgICAgICBMT0coTmV0d29yaywgIk1p
c21hdGNoIGxvY2F0aW9uOiAlcyAhPSAlcyIsIGNsaWVudF9sb2NhdGlvbigpLnV0ZjgoKS5kYXRh
KCksIG1fd3NfbG9jYXRpb24udXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaWYgKCFtX2NsaWVudF9wcm90b2NvbC5pc0VtcHR5KCkgJiYgbV9jbGllbnRfcHJvdG9j
b2wgIT0gbV93c19wcm90b2NvbCkgeworICAgICAgICBMT0coTmV0d29yaywgIk1pc21hdGNoIHBy
b3RvY29sOiAlcyAhPSAlcyIsIG1fY2xpZW50X3Byb3RvY29sLnV0ZjgoKS5kYXRhKCksIG1fd3Nf
cHJvdG9jb2wudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9t
b2RlID0gQ29ubmVjdGVkOworICAgIHJldHVybjsKK30KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlci5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44
ZGEzOTc0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZXIuaApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldEhhbmRzaGFrZXJf
aAorI2RlZmluZSBXZWJTb2NrZXRIYW5kc2hha2VyX2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKKworI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBjbGFzcyBIVFRQSGVhZGVyTWFwOworCisgICAgY2xh
c3MgV2ViU29ja2V0SGFuZHNoYWtlciB7CisgICAgcHVibGljOgorICAgICAgICBlbnVtIE1vZGUg
eworICAgICAgICAgICAgSW5jb21wbGV0ZSwgTm9ybWFsLCBSZWRpcmVjdCwgQXV0aGVudGljYXRl
LCBGYWlsZWQsIENvbm5lY3RlZAorICAgICAgICB9OworICAgICAgICBXZWJTb2NrZXRIYW5kc2hh
a2VyKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KTsKKyAgICAgICAgfldlYlNvY2tldEhhbmRzaGFrZXIoKTsKKworICAg
ICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRVUkwoY29uc3Qg
S1VSTCYgdXJsKTsKKyAgICAgICAgY29uc3QgU3RyaW5nIGhvc3QoKSBjb25zdDsKKworICAgICAg
ICBjb25zdCBTdHJpbmcmIGNsaWVudF9wcm90b2NvbCgpIGNvbnN0OworICAgICAgICB2b2lkIHNl
dENsaWVudFByb3RvY29sKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOworCisgICAgICAgIGJvb2wg
c2VjdXJlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2VjdXJlKGJvb2wgc2VjdXJlKTsKKwor
ICAgICAgICBTdHJpbmcgY2xpZW50X29yaWdpbigpIGNvbnN0OworICAgICAgICBTdHJpbmcgY2xp
ZW50X2xvY2F0aW9uKCkgY29uc3Q7CisKKyAgICAgICAgQ1N0cmluZyBjbGllbnRfaGFuZHNoYWtl
X21lc3NhZ2UoKSBjb25zdDsKKworICAgICAgICB2b2lkIHJlc2V0KCk7CisKKyAgICAgICAgYm9v
bCByZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbik7Cisg
ICAgICAgIHNpemVfdCBzZXJ2ZXJIYW5kc2hha2VMZW5ndGgoKSBjb25zdDsKKyAgICAgICAgTW9k
ZSBtb2RlKCkgY29uc3Q7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJfd2Vic29ja2V0
X29yaWdpbigpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNlcnZlcldlYlNvY2tldE9yaWdpbihj
b25zdCBTdHJpbmcmIHdlYnNvY2tldF9vcmlnaW4pOworCisgICAgICAgIGNvbnN0IFN0cmluZyYg
c2VydmVyX3dlYnNvY2tldF9sb2NhdGlvbigpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNlcnZl
cldlYlNvY2tldExvY2F0aW9uKGNvbnN0IFN0cmluZyYgd2Vic29ja2V0X2xvY2F0aW9uKTsKKwor
ICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZlcl93ZWJzb2NrZXRfcHJvdG9jb2woKSBjb25zdDsK
KyAgICAgICAgdm9pZCBzZXRTZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHdl
YnNvY2tldF9wcm90b2NvbCk7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJfbG9jYXRp
b24oKSBjb25zdDsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJfd3d3X2F1dGhlbnRpY2F0
ZSgpIGNvbnN0OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgS1VSTCB1cmxPdmVySFRUUCgpIGNv
bnN0OworICAgICAgICBjb25zdCBjaGFyKiBwYXJzZUhlYWRlcihjb25zdCBjaGFyKiBzdGFydCwg
Y29uc3QgY2hhciogZW5kLCBIVFRQSGVhZGVyTWFwKiBoZWFkZXJzKTsKKyAgICAgICAgYm9vbCBo
ZWFkZXJQcm9jZXNzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpOworICAgICAgICB2b2lk
IGhhbmRzaGFrZSgpOworCisgICAgICAgIEtVUkwgbV91cmw7CisgICAgICAgIFN0cmluZyBtX2Ns
aWVudF9wcm90b2NvbDsKKyAgICAgICAgYm9vbCBtX3NlY3VyZTsKKyAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogbV9jb250ZXh0OworCisgICAgICAgIHNpemVfdCBtX3NlcnZlcl9oYW5k
c2hha2VfbGVuZ3RoOworICAgICAgICBNb2RlIG1fbW9kZTsKKworICAgICAgICBTdHJpbmcgbV93
c19vcmlnaW47CisgICAgICAgIFN0cmluZyBtX3dzX2xvY2F0aW9uOworICAgICAgICBTdHJpbmcg
bV93c19wcm90b2NvbDsKKyAgICAgICAgU3RyaW5nIG1fbG9jYXRpb247CisgICAgICAgIFN0cmlu
ZyBtX3d3d19hdXRoZW50aWNhdGU7CisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAgLy8gV2ViU29ja2V0
SGFuZHNoYWtlcl9o
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38535</attachid>
            <date>2009-08-25 00:42:12 -0700</date>
            <delta_ts>2009-08-25 21:05:18 -0700</delta_ts>
            <desc>WebSocket API implementation. depends on bug 28037</desc>
            <filename>bug-28038-20090825164211.patch</filename>
            <type>text/plain</type>
            <size>63082</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA2ZmRlZmU1Li5jYmUzNzlkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMDktMDgtMjUgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IFdURjo6
dHJ5RmFzdE1hbGxvYygpIHVzZWQgaW4gV2ViU29ja2V0Q2hhbm5lbC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MDM4CisKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5leHA6CisKIDIwMDktMDgtMjQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZXhwCmluZGV4IDE0ZmVjZWIuLjQ3Zjc0NDAgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5leHAKQEAgLTI4Niw2ICsyODYsNyBAQCBfX1pOM1dURjEyZGV0YWNoVGhyZWFkRWoK
IF9fWk4zV1RGMTJpc01haW5UaHJlYWRFdgogX19aTjNXVEYxMnJhbmRvbU51bWJlckV2CiBfX1pO
M1dURjEzY3VycmVudFRocmVhZEV2CitfX1pOM1dURjEzdHJ5RmFzdE1hbGxvY0VtCiBfX1pOM1dU
RjEzdHJ5RmFzdENhbGxvY0VtbQogX19aTjNXVEYxNVRocmVhZENvbmRpdGlvbjR3YWl0RVJOU181
TXV0ZXhFCiBfX1pOM1dURjE1VGhyZWFkQ29uZGl0aW9uNnNpZ25hbEV2CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEwN2M5ZDMuLmRjMzMw
M2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNjEgQEAKKzIwMDktMDgtMjUgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2ViU29ja2V0IEFQSSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MDM4CisgICAgICAgIAorICAgICAgICBBZGQgYnVp
bGQgc3lzdGVtcyBvbmx5IGZvciBHTlVtYWtlZmlsZS5hbSBhbmQgV2ViQ29yZS54Y29kZXByb2og
bm93LgorICAgICAgICBPdGhlciBidWlsZCBzeXN0ZW1zIHdpbGwgYmUgdXBkYXRlZCBvbmNlIHRo
ZSBjb2RlIGlzIGZ1bmN0aW9uYWwuCisgICAgICAgIFRlc3RzIHdpbGwgYmUgbGFuZGVkIG9uY2Ug
dGhlIGNvZGUgaXMgY29tcGxldGVkIGFuZCBmdW5jdGlvbmFsLgorICAgICAgICBEZXBlbmRzIG9u
IHBhdGNoIG9mIGJ1ZyAyODAzNy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OndlYlNvY2tldCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvRXZlbnRUYXJnZXQpOgorICAgICAgICAqIGRvbS9FdmVudFRh
cmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6dG9XZWJTb2NrZXQpOgor
ICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmlk
bDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc1ZhbGlkUHJvdG9jb2xTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojpj
b25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXQ6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjphZGRFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6cmVtb3ZlRXZlbnRMaXN0ZW5l
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNoRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
OjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNoT3BlbkV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaXNwYXRjaENsb3NlRXZlbnQpOgorICAg
ICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Oik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXQ6OnNldE9ub3Blbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6Om9ub3Blbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNldE9ubWVzc2FnZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Om9ubWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXQ6OnNldE9uY2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
OjpvbmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6dG9XZWJTb2NrZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpldmVudExpc3RlbmVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXQ6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldDo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcDogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmg6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVu
dC5oOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6
IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmg6IEFkZGVk
LgorCiAyMDA5LTA4LTI0ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMuY3BwIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggZDEy
N2M0OC4uNWJjMjljZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysr
IGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTMzNyw2ICszMzcsNyBAQAogI2luY2x1
ZGUgIkpTV2ViS2l0Q1NTTWF0cml4LmNwcCIKICNpbmNsdWRlICJKU1dlYktpdFBvaW50LmNwcCIK
ICNpbmNsdWRlICJKU1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAiCisjaW5jbHVkZSAiSlNXZWJT
b2NrZXQuY3BwIgogI2luY2x1ZGUgIkpTV2hlZWxFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNXb3Jr
ZXIuY3BwIgogI2luY2x1ZGUgIkpTV29ya2VyQ29udGV4dC5jcHAiCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA5OTViNzc1
Li4xYWIzNjBkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KQEAgLTMyMTUsNyArMzIxNSwxMiBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDb25zdHJ1Y3Rvci5oIFwKIAlX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAgXAotCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAor
CVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5oIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIFwKKwlX
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBcCisJV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCiAKIGVsc2UKIHdlYmNvcmVfY3BwZmxhZ3MgKz0g
LURFTkFCTEVfV0VCX1NPQ0tFVFM9MApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBmNzMzMDM3Li5kNmVmYzRkIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODMyLDYgKzgzMiw5IEBACiAJCTRFMTk1OTJFMEEzOURB
Q0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0RTE5NTkyODBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVy
eUV4cC5oICovOyB9OwogCQk1MTAxODQ2OTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0Njcw
QjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTAxODQ2QTBCMDg2MDJBMDA0QTgyNUYgLyogQ2Fj
aGVkUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi87IH07CisJCTUx
MEQ0QTRFMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTQ3MTAzMTc3QTIwMDQ5
RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLzsgfTsKKwkJNTEwRDRBNEYxMDMxNzdBMjAw
NDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRD
aGFubmVsLmggKi87IH07CisJCTUxMEQ0QTUwMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRD
aGFubmVsQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTBENEE0OTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbENsaWVudC5o
ICovOyB9OwogCQk1MTE2RDk3NzBDRjE3N0JEMDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTE2RDk3NTBD
RjE3N0JEMDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTExRjIzMTcwREMxNjBEQTAwNEYwMDMyIC8q
IExvY2FsU3RvcmFnZVRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTExRjIzMTMwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2su
Y3BwICovOyB9OwogCQk1MTFGMjMxODBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFz
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjIz
MTQwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suaCAqLzsgfTsKQEAgLTkxNSw2
ICs5MTgsOCBAQAogCQk1MUE5MjY3RTBENTNGMDU3MDA2M0VDQzIgLyogT3JpZ2luVXNhZ2VSZWNv
cmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFB
OTI2N0EwRDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblVzYWdlUmVjb3JkLmNwcCAqLzsgfTsKIAkJ
NTFBOTI2N0YwRDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblVzYWdlUmVjb3JkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE5MjY3QjBENTNGMDU3MDA2
M0VDQzIgLyogT3JpZ2luVXNhZ2VSZWNvcmQuaCAqLzsgfTsKIAkJNTFBQTNGNkYwQkQ1QUE5RTAw
ODkyOTcxIC8qIFJlc291cmNlTG9hZGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQTNGNkUwQkQ1QUE5RTAwODkyOTcxIC8qIFJlc291cmNl
TG9hZGVyTWFjLm1tICovOyB9OworCQk1MUFCQUU0NDEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29j
a2V0SGFuZHNoYWtlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUJBRTQyMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3Bw
ICovOyB9OworCQk1MUFCQUU0NTEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUU0
MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggKi87IH07CiAJCTUxQjI0
MTdCMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMjQxN0EwRDkzMUYzRjAwRTgz
RjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gKi87IH07CiAJCTUxQkUzN0UwMERBRUUwMEUw
MDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFCRTM3REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmgg
Ki87IH07CiAJCTUxQzBBQTM5MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEFBMzgwRjJBQTEw
QTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU4OTksNiArNTkwNCw5IEBACiAJCTRFMTk1OTI4MEEzOURB
Q0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYVF1ZXJ5RXhwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
MDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENhY2hlZFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxMEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFu
bmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldENo
YW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEE0ODEwMzE3N0Ey
MDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJTb2NrZXRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldENoYW5uZWxDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExNkQ5NzUwQ0YxNzdCRDAwQzJCODREIC8q
IERhdGFiYXNlRGV0YWlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRh
YmFzZURldGFpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjIzMTMwREMx
NjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxTdG9yYWdlVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxMUYyMzE0MERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsU3RvcmFnZVRhc2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5ODksNiArNTk5Nyw4IEBACiAJCTUxQTky
NjdBMEQ1M0YwNTcwMDYzRUNDMiAvKiBPcmlnaW5Vc2FnZVJlY29yZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcmlnaW5Vc2FnZVJlY29yZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQTkyNjdCMEQ1M0YwNTcwMDYzRUNDMiAvKiBPcmlnaW5V
c2FnZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcmlnaW5Vc2Fn
ZVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUFBM0Y2RTBCRDVBQTlF
MDA4OTI5NzEgLyogUmVzb3VyY2VMb2FkZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTFBQkFFNDIxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFr
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRIYW5k
c2hha2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUFCQUU0MzEwNDNBQjRB
MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUIyNDE3QTBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExlZ2FjeVdlYkFyY2hpdmVN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkUzN0RFMERBRUUwMEUwMDEw
ODVGQyAvKiBTdG9yYWdlQXJlYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dG9yYWdlQXJlYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUEzODBGMkFB
MTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2FjaGVkRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNDA2
LDYgKzEwNDE2LDExIEBACiAJCTUxOEEzNEJEMTAyNkM4MzEwMDFCNjg5NiAvKiB3ZWJzb2NrZXRz
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MUFCQUU0
MjEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCAqLywKKwkJCQk1MUFC
QUU0MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggKi8sCisJCQkJNTEw
RDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwICovLAorCQkJCTUx
MEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggKi8sCisJCQkJNTEw
RDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCAqLywKIAkJ
CQk1MThBMzRCRTEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmNwcCAqLywKIAkJCQk1MThB
MzRCRjEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmggKi8sCiAJCQkJNTE4QTM0QzAxMDI2
QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tldC5pZGwgKi8sCkBAIC0xNzMzMCw2ICsxNzM0NSw5IEBA
CiAJCQkJQkNGQTkzMDgxMDMzMzE5MzAwN0IyNUQxIC8qIFJlbmRlck92ZXJmbG93LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwMDE0NjI4QjEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50
cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1MUJGNkYxMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxU
cmFuc2FjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRBNEYxMDMxNzdBMjAw
NDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMEQ0QTUw
MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MUFCQUU0NTEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTE5Mzk4LDYgKzE5NDE2LDggQEAKIAkJCQlCNUMxMTIzQjEwMkI2
QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwMDE0NjI4QTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjUxQkY2RjAxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5z
YWN0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMEQ0QTRFMTAzMTc3QTIwMDQ5
RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxQUJBRTQ0
MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDhhYWVmYzQu
LmQxMTliMTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBA
IC01Myw2ICs1Myw3IEBACiAKICNpbmNsdWRlICJKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiSlNXZWJLaXRQb2ludENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNX
ZWJTb2NrZXRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTV29ya2VyQ29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1hT
TFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5oIgpAQCAtNTAxLDYgKzUwMiwxMyBAQCBKU1ZhbHVlIEpT
RE9NV2luZG93OjpzaGFyZWRXb3JrZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCitKU1ZhbHVlIEpTRE9NV2luZG93Ojp3ZWJTb2Nr
ZXQoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rv
cjxKU1dlYlNvY2tldENvbnN0cnVjdG9yPihleGVjLCB0aGlzKTsKK30KKyNlbmRpZgorCiAvLyBD
dXN0b20gZnVuY3Rpb25zCiAKIC8vIEhlbHBlciBmb3Igd2luZG93Lm9wZW4oKSBhbmQgd2luZG93
LnNob3dNb2RhbERpYWxvZygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRUYXJnZXQuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAppbmRl
eCBlZDgwZDgwLi4zODAxNTcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRUYXJnZXQuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAK
QEAgLTc4LDYgKzc4LDExIEBACiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyNpbmNsdWRlICJKU1dlYlNvY2tldC5oIgorI2luY2x1
ZGUgIldlYlNvY2tldC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTEzOSw2ICsxNDQsMTEgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXZlbnRUYXJnZXQqIHRh
cmcKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgbm90aWZpY2F0aW9uKTsKICNlbmRpZgogCisj
aWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGlmIChXZWJTb2NrZXQqIHdlYnNvY2tldCA9IHRh
cmdldC0+dG9XZWJTb2NrZXQoKSkKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgd2Vic29ja2V0
KTsKKyNlbmRpZgorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGpzTnVs
bCgpOwogfQpAQCAtMTgzLDYgKzE5MywxMCBAQCBFdmVudFRhcmdldCogdG9FdmVudFRhcmdldChK
U0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJHRVQoTm90aWZpY2F0
aW9uKQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgQ09OVkVSVF9UT19F
VkVOVF9UQVJHRVQoV2ViU29ja2V0KQorI2VuZGlmCisKICAgICByZXR1cm4gMDsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuY3BwCmluZGV4IDJmMTNkYTguLjY1MjY0NGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTgz
LDYgKzgzLDEzIEBAIFNWR0VsZW1lbnRJbnN0YW5jZSogRXZlbnRUYXJnZXQ6OnRvU1ZHRWxlbWVu
dEluc3RhbmNlKCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorV2ViU29j
a2V0KiBFdmVudFRhcmdldDo6dG9XZWJTb2NrZXQoKQoreworICAgIHJldHVybiAwOworfQorI2Vu
ZGlmCisKIE1lc3NhZ2VQb3J0KiBFdmVudFRhcmdldDo6dG9NZXNzYWdlUG9ydCgpCiB7CiAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCA2ZDNjYjdjLi42YmNjM2ZiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgK
QEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyOwogICAgIGNsYXNzIFNoYXJl
ZFdvcmtlckNvbnRleHQ7CisgICAgY2xhc3MgV2ViU29ja2V0OwogICAgIGNsYXNzIFdvcmtlcjsK
ICAgICBjbGFzcyBYTUxIdHRwUmVxdWVzdDsKICAgICBjbGFzcyBYTUxIdHRwUmVxdWVzdFVwbG9h
ZDsKQEAgLTc1LDExICs3NiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgV29ya2VyKiB0b1dvcmtlcigpOwogICAgICAgICB2aXJ0dWFsIERlZGljYXRlZFdvcmtlckNv
bnRleHQqIHRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpOwogI2VuZGlmCi0KICNpZiBFTkFCTEUo
U0hBUkVEX1dPUktFUlMpCiAgICAgICAgIHZpcnR1YWwgU2hhcmVkV29ya2VyKiB0b1NoYXJlZFdv
cmtlcigpOwogICAgICAgICB2aXJ0dWFsIFNoYXJlZFdvcmtlckNvbnRleHQqIHRvU2hhcmVkV29y
a2VyQ29udGV4dCgpOwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgICAgICB2
aXJ0dWFsIFdlYlNvY2tldCogdG9XZWJTb2NrZXQoKTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCiAgICAgICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uKiB0b05vdGlmaWNhdGlv
bigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbAppbmRleCA2ZTUyMGUzLi44YjdjM2FhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApA
QCAtNDc3LDYgKzQ3NywxMCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIFtK
U0NDdXN0b21HZXR0ZXJdIFNoYXJlZFdvcmtlckNvbnN0cnVjdG9yIFNoYXJlZFdvcmtlcjsgLy8g
VXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRvcgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJM
RV9XRUJfU09DS0VUUykgJiYgRU5BQkxFX1dFQl9TT0NLRVRTCisgICAgICAgIGF0dHJpYnV0ZSBb
SlNDQ3VzdG9tR2V0dGVyXSBXZWJTb2NrZXRDb25zdHJ1Y3RvciBXZWJTb2NrZXQ7IC8vIFVzYWJs
ZSB3aXRoIHRoZSBuZXcgb3BlcmF0b3IKKyNlbmRpZgorCiAgICAgICAgIGF0dHJpYnV0ZSBQbHVn
aW5Db25zdHJ1Y3RvciBQbHVnaW47CiAgICAgICAgIGF0dHJpYnV0ZSBQbHVnaW5BcnJheUNvbnN0
cnVjdG9yIFBsdWdpbkFycmF5OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDk5OWMx
ZmYuLmIzMGFiZGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
CisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0zNCwxMyArMzQsMzMg
QEAKIAogI2luY2x1ZGUgIldlYlNvY2tldC5oIgogCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2lu
Y2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRF
eGNlcHRpb24uaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIK
KyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBib29sIGlzVmFs
aWRQcm90b2NvbFN0cmluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHByb3RvY29sKQoreworICAg
IGlmIChwcm90b2NvbC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjb25z
dCBVQ2hhciogY2hhcmFjdGVycyA9IHByb3RvY29sLmNoYXJhY3RlcnMoKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHByb3RvY29sLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgaWYgKGNo
YXJhY3RlcnNbaV0gPCAweDIxIHx8IGNoYXJhY3RlcnNbaV0gPiAweDdFKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogV2ViU29ja2V0OjpX
ZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURP
TU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9zdGF0ZShDT05ORUNUSU5HKQpAQCAtNTks
MTAgKzc5LDEyIEBAIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAKIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY29ubmVjdCB0byAlcyBwcm90b2NvbD0lcyIsIHRoaXMs
IHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBwcm90b2NvbC51dGY4KCkuZGF0YSgpKTsKICAg
ICBtX3VybCA9IHVybDsKICAgICBtX3Byb3RvY29sID0gcHJvdG9jb2w7CiAKICAgICBpZiAoIW1f
dXJsLnByb3RvY29sSXMoIndzIikgJiYgIW1fdXJsLnByb3RvY29sSXMoIndzcyIpKSB7CisgICAg
ICAgIExPR19FUlJPUigiRXJyb3I6IHdyb25nIHVybCBmb3IgV2ViU29ja2V0ICVzIiwgdXJsLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOwogICAgICAg
ICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTcyLDI2ICs5NCwzOSBAQCB2
b2lkIFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wsIEV4Y2VwdGlvbkNvZGUmCiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICAvLyBGSVhNRTogQ2hlY2sgcHJvdG9jb2wgaXMgdmFsaWQgZm9y
bS4KLSAgICAvLyBGSVhNRTogQ29ubmVjdCBXZWJTb2NrZXRDaGFubmVsLgorICAgIGlmICghaXNW
YWxpZFByb3RvY29sU3RyaW5nKHByb3RvY29sKSkgeworICAgICAgICBMT0dfRVJST1IoIkVycm9y
OiB3cm9uZyBwcm90b2NvbCBmb3IgV2ViU29ja2V0ICVzIiwgcHJvdG9jb2wudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIG1fc3RhdGUgPSBDTE9TRUQ7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhNRTogaWYgbV91cmwucG9ydCgpIGlz
IGJsb2NraW5nIHBvcnQsIHJhaXNlIFNFQ1VSSVRZX0VSUi4KKworICAgIG1fY2hhbm5lbCA9IFdl
YlNvY2tldENoYW5uZWw6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIG1f
dXJsLCBtX3Byb3RvY29sKTsKKyAgICBtX2NoYW5uZWwtPmNvbm5lY3QoKTsKIH0KIAotYm9vbCBX
ZWJTb2NrZXQ6OnNlbmQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgZWMpCitib29sIFdl
YlNvY2tldDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewotICAgIGlmIChtX3N0YXRlICE9IE9QRU4pIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tl
dCAlcCBzZW5kICVzIiwgdGhpcywgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAobV9z
dGF0ZSA9PSBDT05ORUNUSU5HKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgLy8gRklYTUU6IHNlbmQgbWVzc2FnZSBv
biBXZWJTb2NrZXRDaGFubmVsLgotICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBObyBleGNlcHRp
b24gaXMgcmFpc2VkIGlmIHRoZSBjb25uZWN0aW9uIHdhcyBvbmNlIGVzdGFibGlzaGVkIGJ1dCBo
YXMgc3Vic2VxdWVudGx5IGJlZW4gY2xvc2VkLgorICAgIGlmIChtX3N0YXRlID09IENMT1NFRCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIEZJWE1FOiBjaGVjayBtZXNzYWdlIGlzIHZh
bGlkIHV0ZjguCisgICAgcmV0dXJuIG1fY2hhbm5lbC0+c2VuZChtZXNzYWdlKTsKIH0KIAogdm9p
ZCBXZWJTb2NrZXQ6OmNsb3NlKCkKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBj
bG9zZSIsIHRoaXMpOwogICAgIGlmIChtX3N0YXRlID09IENMT1NFRCkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fc3RhdGUgPSBDTE9TRUQ7Ci0gICAgLy8gRklYTUU6IGNsb3NlIFdlYlNvY2tldENo
YW5uZWwuCisgICAgbV9jaGFubmVsLT5jbG9zZSgpOwogfQogCiBjb25zdCBLVVJMJiBXZWJTb2Nr
ZXQ6OnVybCgpIGNvbnN0CkBAIC0xMDYsNyArMTQxLDggQEAgV2ViU29ja2V0OjpTdGF0ZSBXZWJT
b2NrZXQ6OnJlYWR5U3RhdGUoKSBjb25zdAogCiB1bnNpZ25lZCBsb25nIFdlYlNvY2tldDo6YnVm
ZmVyZWRBbW91bnQoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBhc2sgcGxhdGZvcm0gY29kZSB0
byBnZXQgYnVmZmVyZWQgYW1vdW50IHRvIGJlIHNlbnQuCisgICAgaWYgKG1fc3RhdGUgPT0gT1BF
TikKKyAgICAgICAgcmV0dXJuIG1fY2hhbm5lbC0+YnVmZmVyZWRBbW91bnQoKTsKICAgICByZXR1
cm4gMDsKIH0KIApAQCAtMTE1LDI0ICsxNTEsNTcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
V2ViU29ja2V0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gQWN0
aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiB9CiAKLXZvaWQgV2ViU29j
a2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYsIFBhc3NSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4sIGJvb2wpCit2b2lkIFdlYlNvY2tldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVu
dExpc3RlbmVyLCBib29sKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBF
dmVudExpc3RlbmVyc01hcDo6aXRlcmF0b3IgaXRlciA9IG1fZXZlbnRMaXN0ZW5lcnMuZmluZChl
dmVudFR5cGUpOworICAgIGlmIChpdGVyID09IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCkpIHsKKyAg
ICAgICAgTGlzdGVuZXJWZWN0b3IgbGlzdGVuZXJzOworICAgICAgICBsaXN0ZW5lcnMuYXBwZW5k
KGV2ZW50TGlzdGVuZXIpOworICAgICAgICBtX2V2ZW50TGlzdGVuZXJzLmFkZChldmVudFR5cGUs
IGxpc3RlbmVycyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTGlzdGVuZXJWZWN0b3ImIGxpc3Rl
bmVycyA9IGl0ZXItPnNlY29uZDsKKyAgICAgICAgZm9yIChMaXN0ZW5lclZlY3Rvcjo6aXRlcmF0
b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVuZXJzLmJlZ2luKCk7IGxpc3RlbmVySXRlciAhPSBsaXN0
ZW5lcnMuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKQorICAgICAgICAgICAgaWYgKCpsaXN0ZW5lckl0
ZXIgPT0gZXZlbnRMaXN0ZW5lcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
bGlzdGVuZXJzLmFwcGVuZChldmVudExpc3RlbmVyKTsKKyAgICAgICAgbV9ldmVudExpc3RlbmVy
cy5hZGQoZXZlbnRUeXBlLCBsaXN0ZW5lcnMpOworICAgIH0KIH0KIAotdm9pZCBXZWJTb2NrZXQ6
OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiwgRXZlbnRMaXN0ZW5lcios
IGJvb2wpCit2b2lkIFdlYlNvY2tldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5lciwgYm9vbCkKIHsK
LSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisgICAgRXZlbnRMaXN0ZW5lcnNNYXA6Oml0
ZXJhdG9yIGl0ZXIgPSBtX2V2ZW50TGlzdGVuZXJzLmZpbmQoZXZlbnRUeXBlKTsKKyAgICBpZiAo
aXRlciA9PSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBM
aXN0ZW5lclZlY3RvciYgbGlzdGVuZXJzID0gaXRlci0+c2Vjb25kOworICAgIGZvciAoTGlzdGVu
ZXJWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGxpc3RlbmVySXRlciA9IGxpc3RlbmVycy5iZWdpbigp
OyBsaXN0ZW5lckl0ZXIgIT0gbGlzdGVuZXJzLmVuZCgpOyArK2xpc3RlbmVySXRlcikKKyAgICAg
ICAgaWYgKCpsaXN0ZW5lckl0ZXIgPT0gZXZlbnRMaXN0ZW5lcikgeworICAgICAgICAgICAgbGlz
dGVuZXJzLnJlbW92ZShsaXN0ZW5lckl0ZXIgLSBsaXN0ZW5lcnMuYmVnaW4oKSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KIH0KIAotYm9vbCBXZWJTb2NrZXQ6OmRpc3BhdGNoRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKQorYm9vbCBXZWJTb2NrZXQ6OmRp
c3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZ0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCi0gICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghZXZ0IHx8IGV2dC0+dHlwZSgpLmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IEV2ZW50RXhj
ZXB0aW9uOjpVTlNQRUNJRklFRF9FVkVOVF9UWVBFX0VSUjsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgTGlzdGVuZXJWZWN0b3IgbGlzdGVuZXJzQ29weSA9IG1fZXZlbnRMaXN0
ZW5lcnMuZ2V0KGV2dC0+dHlwZSgpKTsKKyAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjpjb25zdF9p
dGVyYXRvciBsaXN0ZW5lckl0ZXIgPSBsaXN0ZW5lcnNDb3B5LmJlZ2luKCk7IGxpc3RlbmVySXRl
ciAhPSBsaXN0ZW5lcnNDb3B5LmVuZCgpOyArK2xpc3RlbmVySXRlcikgeworICAgICAgICBldnQt
PnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMpOwor
ICAgICAgICBsaXN0ZW5lckl0ZXItPmdldCgpLT5oYW5kbGVFdmVudChldnQuZ2V0KCksIGZhbHNl
KTsKKyAgICB9CisgICAgcmV0dXJuICFldnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KIAogdm9p
ZCBXZWJTb2NrZXQ6OmRpZENvbm5lY3QoKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
ICVwIGRpZENvbm5lY3QiLCB0aGlzKTsKICAgICBpZiAobV9zdGF0ZSAhPSBDT05ORUNUSU5HKSB7
CiAgICAgICAgIGRpZENsb3NlKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE0Myw2ICsyMTIsNyBA
QCB2b2lkIFdlYlNvY2tldDo6ZGlkQ29ubmVjdCgpCiAKIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNl
aXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZykKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNv
Y2tldCAlcCBkaWRSZWNlaXZlTWVzc2FnZSAlcyIsIHRoaXMsIG1zZy51dGY4KCkuZGF0YSgpKTsK
ICAgICBpZiAobV9zdGF0ZSAhPSBPUEVOKQogICAgICAgICByZXR1cm47CiAgICAgZGlzcGF0Y2hN
ZXNzYWdlRXZlbnQobXNnKTsKQEAgLTE1MCwyMyArMjIwLDUzIEBAIHZvaWQgV2ViU29ja2V0Ojpk
aWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZykKIAogdm9pZCBXZWJTb2NrZXQ6OmRp
ZENsb3NlKCkKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRDbG9zZSIsIHRo
aXMpOwogICAgIG1fc3RhdGUgPSBDTE9TRUQ7CiAgICAgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CiB9
CiAKIHZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaE9wZW5FdmVudCgpCiB7Ci0gICAgLy8gRklYTUU6
IGltcGxlbWVudCB0aGlzLgorICAgIFJlZlB0cjxFdmVudD4gZXZ0ID0gRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkub3BlbkV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgIGlmIChtX29ub3Blbikg
eworICAgICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50
VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29ub3Blbi0+aGFuZGxlRXZlbnQoZXZ0LmdldCgpLCBm
YWxzZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hF
dmVudChldnQucmVsZWFzZSgpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7CiB9CiAKLXZvaWQgV2Vi
U29ja2V0OjpkaXNwYXRjaE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmKQordm9pZCBXZWJTb2Nr
ZXQ6OmRpc3BhdGNoTWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgbXNnKQogewotICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBSZWZQdHI8TWVzc2FnZUV2ZW50PiBldnQgPSBNZXNz
YWdlRXZlbnQ6OmNyZWF0ZSgpOworICAgIC8vIEZJWE1FOiBvcmlnaW4sIGxhc3RFdmVudElkLCBz
b3VyY2UsIG1lc3NhZ2VQb3J0LgorICAgIGV2dC0+aW5pdE1lc3NhZ2VFdmVudChldmVudE5hbWVz
KCkubWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UsIG1zZywgIiIsICIiLCAwLCAwKTsKKyAgICBp
ZiAobV9vbm1lc3NhZ2UpIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAg
IGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbm1lc3NhZ2UtPmhhbmRs
ZUV2ZW50KGV2dC5nZXQoKSwgZmFsc2UpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZ0LnJlbGVhc2UoKSwgZWMpOworICAgIEFTU0VSVCgh
ZWMpOwogfQogCiB2b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hDbG9zZUV2ZW50KCkKIHsKLSAgICAv
LyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisgICAgUmVmUHRyPEV2ZW50PiBldnQgPSBFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAgIGlmICht
X29uY2xvc2UpIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2dC0+
c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbmNsb3NlLT5oYW5kbGVFdmVudChl
dnQuZ2V0KCksIGZhbHNlKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBkaXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNlKCksIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKIH0K
IAogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCA0ODVl
MmNjLi42YWI3ODU1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgK
KysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC0zMSw5MyArMzEsMTA0IEBA
CiAjaWZuZGVmIFdlYlNvY2tldF9oCiAjZGVmaW5lIFdlYlNvY2tldF9oCiAKKyNpZiBFTkFCTEUo
V0VCX1NPQ0tFVFMpCisKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJB
dG9taWNTdHJpbmdIYXNoLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
IkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIldlYlNvY2tldENo
YW5uZWxDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTdHJpbmc7CisgICAg
Y2xhc3MgU3RyaW5nOworICAgIGNsYXNzIFdlYlNvY2tldENoYW5uZWw7CiAKLWNsYXNzIFdlYlNv
Y2tldCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlNvY2tldD4sIHB1YmxpYyBFdmVudFRhcmdldCwg
cHVibGljIEFjdGl2ZURPTU9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYlNvY2tldChjb250ZXh0KSk7IH0KLSAgICB2aXJ0dWFsIH5XZWJT
b2NrZXQoKTsKKyAgICBjbGFzcyBXZWJTb2NrZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTb2Nr
ZXQ+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpOyB9CisgICAgICAgIHZp
cnR1YWwgfldlYlNvY2tldCgpOwogCi0gICAgZW51bSBTdGF0ZSB7Ci0gICAgICAgIENPTk5FQ1RJ
TkcgPSAwLAotICAgICAgICBPUEVOID0gMSwKLSAgICAgICAgQ0xPU0VEID0gMgotICAgIH07Cisg
ICAgICAgIGVudW0gU3RhdGUgeworICAgICAgICAgICAgQ09OTkVDVElORyA9IDAsCisgICAgICAg
ICAgICBPUEVOID0gMSwKKyAgICAgICAgICAgIENMT1NFRCA9IDIKKyAgICAgICAgfTsKIAotICAg
IHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lk
IGNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRp
b25Db2RlJik7CisgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiB1cmwsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgYm9vbCBzZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICBib29sIHNlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICB2b2lkIGNsb3NlKCk7Cisg
ICAgICAgIHZvaWQgY2xvc2UoKTsKIAotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OwotICAg
IFN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKLSAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1v
dW50KCkgY29uc3Q7CisgICAgICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OworICAgICAgICBT
dGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRB
bW91bnQoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0T25vcGVuKFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29ub3BlbiA9IGV2ZW50TGlzdGVuZXI7IH0KLSAgICBF
dmVudExpc3RlbmVyKiBvbm9wZW4oKSBjb25zdCB7IHJldHVybiBtX29ub3Blbi5nZXQoKTsgfQot
ICAgIHZvaWQgc2V0T25tZXNzYWdlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0
ZW5lcikgeyBtX29ubWVzc2FnZSA9IGV2ZW50TGlzdGVuZXI7IH0KLSAgICBFdmVudExpc3RlbmVy
KiBvbm1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX29ubWVzc2FnZS5nZXQoKTsgfQotICAgIHZv
aWQgc2V0T25jbG9zZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsg
bV9vbmNsb3NlID0gZXZlbnRMaXN0ZW5lcjsgfQotICAgIEV2ZW50TGlzdGVuZXIqIG9uY2xvc2Uo
KSBjb25zdCB7IHJldHVybiBtX29uY2xvc2UuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRPbm9w
ZW4oUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25vcGVuID0g
ZXZlbnRMaXN0ZW5lcjsgfQorICAgICAgICBFdmVudExpc3RlbmVyKiBvbm9wZW4oKSBjb25zdCB7
IHJldHVybiBtX29ub3Blbi5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldE9ubWVzc2FnZShQYXNz
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbm1lc3NhZ2UgPSBldmVu
dExpc3RlbmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9ubWVzc2FnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fb25tZXNzYWdlLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0T25jbG9zZShQYXNz
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbmNsb3NlID0gZXZlbnRM
aXN0ZW5lcjsgfQorICAgICAgICBFdmVudExpc3RlbmVyKiBvbmNsb3NlKCkgY29uc3QgeyByZXR1
cm4gbV9vbmNsb3NlLmdldCgpOyB9CiAKLSAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwg
V2ViU29ja2V0KiB0b1dlYlNvY2tldCgpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICAgICAgLy8gRXZl
bnRUYXJnZXQKKyAgICAgICAgdmlydHVhbCBXZWJTb2NrZXQqIHRvV2ViU29ja2V0KCkgeyByZXR1
cm4gdGhpczsgfQogCi0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2
b2lkIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7Ci0gICAgdmlydHVhbCB2b2lk
IHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOwotICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHR5cGVkZWYg
VmVjdG9yPFJlZlB0cjxFdmVudExpc3RlbmVyPiA+IExpc3RlbmVyVmVjdG9yOworICAgICAgICB0
eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBMaXN0ZW5lclZlY3Rvcj4gRXZlbnRMaXN0ZW5l
cnNNYXA7CiAKLSAgICAvLyBBY3RpdmVET01PYmplY3QKLSAgICAvLyB2aXJ0dWFsIGJvb2wgaGFz
UGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7Ci0gICAgLy8gdmlydHVhbCB2b2lkIGNvbnRleHREZXN0
cm95ZWQoKTsKLSAgICAvLyB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0OwotICAgIC8v
IHZpcnR1YWwgdm9pZCBzdXNwZW5kKCk7Ci0gICAgLy8gdmlydHVhbCB2b2lkIHJlc3VtZSgpOwot
ICAgIC8vIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5l
ciosIGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+LCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIEV2ZW50TGlzdGVu
ZXJzTWFwJiBldmVudExpc3RlbmVycygpIHsgcmV0dXJuIG1fZXZlbnRMaXN0ZW5lcnM7IH0KIAot
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Pjo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50
ZWQ8V2ViU29ja2V0Pjo6ZGVyZWY7CisgICAgICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgICAg
ICAvLyAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OworICAgICAgICAv
LyB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOworICAgICAgICAvLyB2aXJ0dWFsIGJv
b2wgY2FuU3VzcGVuZCgpIGNvbnN0OworICAgICAgICAvLyB2aXJ0dWFsIHZvaWQgc3VzcGVuZCgp
OworICAgICAgICAvLyB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7CisgICAgICAgIC8vIHZpcnR1YWwg
dm9pZCBzdG9wKCk7CiAKLXByaXZhdGU6Ci0gICAgV2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJTb2NrZXQ+OjpyZWY7CisgICAg
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Pjo6ZGVyZWY7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KKyAgICAgICAgLy8gV2ViU29ja2V0Q2hhbm5lbENsaWVu
dAorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29ubmVjdCgpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtc2cpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2xvc2UoKTsKIAotICAgIC8vIFdlYlNvY2tldENoYW5uZWxDbGllbnQKLSAgICB2
b2lkIGRpZENvbm5lY3QoKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYgbXNnKTsKLSAgICB2b2lkIGRpZENsb3NlKCk7CisgICAgcHJpdmF0ZToKKyAgICAgICAgV2Vi
U29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAotICAgIHZvaWQgZGlzcGF0Y2hPcGVu
RXZlbnQoKTsKLSAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgbXNn
KTsKLSAgICB2b2lkIGRpc3BhdGNoQ2xvc2VFdmVudCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CiAKLSAgICAvLyBGSVhNRTogYWRkIFdlYlNvY2tldENo
YW5uZWwuCisgICAgICAgIHZvaWQgZGlzcGF0Y2hPcGVuRXZlbnQoKTsKKyAgICAgICAgdm9pZCBk
aXNwYXRjaE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIG1zZyk7CisgICAgICAgIHZvaWQgZGlz
cGF0Y2hDbG9zZUV2ZW50KCk7CiAKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbm9wZW47
Ci0gICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25tZXNzYWdlOwotICAgIFJlZlB0cjxFdmVu
dExpc3RlbmVyPiBtX29uY2xvc2U7CisgICAgICAgIFJlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBt
X2NoYW5uZWw7CiAKLSAgICBTdGF0ZSBtX3N0YXRlOwotICAgIEtVUkwgbV91cmw7Ci0gICAgU3Ry
aW5nIG1fcHJvdG9jb2w7Ci19OworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbm9w
ZW47CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ubWVzc2FnZTsKKyAgICAgICAg
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25jbG9zZTsKKyAgICAgICAgRXZlbnRMaXN0ZW5lcnNN
YXAgbV9ldmVudExpc3RlbmVyczsKKworICAgICAgICBTdGF0ZSBtX3N0YXRlOworICAgICAgICBL
VVJMIG1fdXJsOworICAgICAgICBTdHJpbmcgbV9wcm90b2NvbDsKKyAgICB9OwogCiB9ICAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCisjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKwogI2Vu
ZGlmICAvLyBXZWJTb2NrZXRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmZjllNzQKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTAsMCAr
MSwyNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQor
CisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgorCisjaW5jbHVkZSAiQ1N0cmluZy5oIgor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJv
ci5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZS5oIgorI2luY2x1ZGUgIlN0cmluZ0hh
c2guaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCisKKyNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViU29ja2V0Q2hhbm5lbDo6V2Vi
U29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXZWJTb2NrZXRD
aGFubmVsQ2xpZW50KiBjbGllbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90
b2NvbCkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9jbGllbnQoY2xpZW50KQor
ICAgICwgbV9oYW5kc2hha2UoV2ViU29ja2V0SGFuZHNoYWtlKHVybCwgcHJvdG9jb2wsIGNvbnRl
eHQpKQorICAgICwgbV9idWZmZXIoMCkKKyAgICAsIG1fYnVmZmVyU2l6ZSgwKQorICAgICwgbV91
bmhhbmRsZWRCdWZmZXJTaXplKDApCit7Cit9CisKK1dlYlNvY2tldENoYW5uZWw6On5XZWJTb2Nr
ZXRDaGFubmVsKCkKK3sKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KCkKK3sK
KyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVjdCIsIHRoaXMpOwor
ICAgIEFTU0VSVCghbV9oYW5kbGUuZ2V0KCkpOworICAgIG1faGFuZHNoYWtlLnJlc2V0KCk7Cisg
ICAgbV9oYW5kbGUgPSBTb2NrZXRTdHJlYW1IYW5kbGU6OmNyZWF0ZShtX2hhbmRzaGFrZS51cmwo
KSwgdGhpcyk7Cit9CisKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcm
IG1zZykKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCAlcyIs
IHRoaXMsIG1zZy51dGY4KCkuZGF0YSgpKTsKKyAgICBWZWN0b3I8Y2hhcj4gYnVmOworICAgIGJ1
Zi5hcHBlbmQoJ1wwJyk7ICAvLyBmcmFtZSB0eXBlCisgICAgYnVmLmFwcGVuZChtc2cudXRmOCgp
LmRhdGEoKSwgbXNnLnV0ZjgoKS5sZW5ndGgoKSk7CisgICAgYnVmLmFwcGVuZCgnXHhmZicpOyAg
Ly8gZnJhbWUgZW5kCisgICAgaWYgKCFtX2hhbmRsZS5nZXQoKSkgeworICAgICAgICBtX3VuaGFu
ZGxlZEJ1ZmZlclNpemUgKz0gYnVmLnNpemUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gbV9oYW5kbGUtPnNlbmQoYnVmLmRhdGEoKSwgYnVmLnNpemUoKSk7Cit9
CisKK3Vuc2lnbmVkIGxvbmcgV2ViU29ja2V0Q2hhbm5lbDo6YnVmZmVyZWRBbW91bnQoKSBjb25z
dAoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBidWZmZXJlZEFtb3Vu
dCIsIHRoaXMpOworICAgIGlmICghbV9oYW5kbGUuZ2V0KCkpCisgICAgICAgIHJldHVybiBtX3Vu
aGFuZGxlZEJ1ZmZlclNpemU7CisgICAgcmV0dXJuIG1faGFuZGxlLT5idWZmZXJlZEFtb3VudCgp
OworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNsb3NlKCkKK3sKKyAgICBMT0coTmV0d29y
aywgIldlYlNvY2tldENoYW5uZWwgJXAgY2xvc2UiLCB0aGlzKTsKKyAgICBpZiAobV9oYW5kbGUu
Z2V0KCkpCisgICAgICAgIG1faGFuZGxlLT5jbG9zZSgpOyAgLy8gd2lsbCBjYWxsIGRpZENsb3Nl
KCkKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjp3aWxsT3BlblN0cmVhbShTb2NrZXRTdHJl
YW1IYW5kbGUqLCBjb25zdCBLVVJMJikKK3sKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjp3
aWxsU2VuZERhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgY2hhciosIGludCkKK3sKK30K
Kwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVuKFNvY2tldFN0cmVhbUhhbmRsZSogaGFu
ZGxlKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRPcGVuIiwg
dGhpcyk7CisgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hhbmRsZS5nZXQoKSk7CisgICAgY29uc3Qg
Q1N0cmluZyYgaGFuZHNoYWtlTWVzc2FnZSA9IG1faGFuZHNoYWtlLmNsaWVudEhhbmRzaGFrZU1l
c3NhZ2UoKTsKKyAgICBoYW5kbGUtPnNlbmQoaGFuZHNoYWtlTWVzc2FnZS5kYXRhKCksIGhhbmRz
aGFrZU1lc3NhZ2UubGVuZ3RoKCkpOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZENs
b3NlKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQoreworICAgIExPRyhOZXR3b3JrLCAiV2Vi
U29ja2V0Q2hhbm5lbCAlcCBkaWRDbG9zZSIsIHRoaXMpOworICAgIEFTU0VSVChoYW5kbGUgPT0g
bV9oYW5kbGUuZ2V0KCkgfHwgIW1faGFuZGxlLmdldCgpKTsKKyAgICBpZiAoIW1faGFuZGxlLmdl
dCgpKQorICAgICAgICByZXR1cm47CisgICAgbV91bmhhbmRsZWRCdWZmZXJTaXplID0gaGFuZGxl
LT5idWZmZXJlZEFtb3VudCgpOworICAgIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCA9
IG1fY2xpZW50OworICAgIG1fY2xpZW50ID0gMDsKKyAgICBtX2hhbmRsZSA9IDA7CisgICAgY2xp
ZW50LT5kaWRDbG9zZSgpOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVE
YXRhKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
KQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRSZWNlaXZlRGF0
YSAlZCIsIHRoaXMsIGxlbik7CisgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hhbmRsZS5nZXQoKSk7
CisgICAgaWYgKCFhcHBlbmRUb0J1ZmZlcihkYXRhLCBsZW4pKSB7CisgICAgICAgIGRpZENsb3Nl
KGhhbmRsZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1faGFuZHNoYWtlLm1v
ZGUoKSAhPSBXZWJTb2NrZXRIYW5kc2hha2U6OkNvbm5lY3RlZCkgeworICAgICAgICBpZiAoIW1f
aGFuZHNoYWtlLnJlYWRTZXJ2ZXJIYW5kc2hha2UobV9idWZmZXIuZ2V0KCksIG1fYnVmZmVyU2l6
ZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN3aXRjaCAobV9oYW5kc2hha2UubW9k
ZSgpKSB7CisgICAgICAgIGNhc2UgV2ViU29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQ6CisgICAg
ICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVjdGVkIiwgdGhp
cyk7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ29ubmVjdCgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgV2ViU29ja2V0SGFuZHNoYWtlOjpSZWRpcmVjdDoKKyAgICAgICAg
ICAgIExPRyhOZXR3b3JrLCAiUmVkaXJlY3QgdG8gJXMiLCBtX2hhbmRzaGFrZS5zZXJ2ZXJMb2Nh
dGlvbigpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmVkaXJlY3QobV9oYW5kc2hha2Uu
c2VydmVyTG9jYXRpb24oKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgV2Vi
U29ja2V0SGFuZHNoYWtlOjpBdXRoZW50aWNhdGU6CisgICAgICAgICAgICBhdXRoZW50aWNhdGUo
bV9oYW5kc2hha2Uuc2VydmVyV3d3QXV0aGVudGljYXRlKCkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIGNvbm5lY3Rpb24gZmFpbGVkIiwgdGhpcyk7CisgICAgICAgICAgICBkaWRDbG9z
ZShoYW5kbGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHNraXBC
dWZmZXIobV9oYW5kc2hha2Uuc2VydmVySGFuZHNoYWtlTGVuZ3RoKCkpOworICAgICAgICBpZiAo
IW1fYnVmZmVyLmdldCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBMT0coTmV0d29y
aywgInJlbWFpbmluZyBpbiByZWFkIGJ1ZiAldWwiLCBtX2J1ZmZlclNpemUpOworICAgIH0KKwor
ICAgIGNvbnN0IGNoYXIqIG5leHRGcmFtZSA9IG1fYnVmZmVyLmdldCgpOworICAgIGNvbnN0IGNo
YXIqIHAgPSBtX2J1ZmZlci5nZXQoKTsKKyAgICBjb25zdCBjaGFyKiBlbmQgPSBwICsgbV9idWZm
ZXJTaXplOworICAgIHdoaWxlIChwIDwgZW5kKSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgZnJh
bWVCeXRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKnArKyk7CisgICAgICAgIGlmICgo
ZnJhbWVCeXRlICYgMHg4MCkgPT0gMHg4MCkgeworICAgICAgICAgICAgLy8gRklYTUU6IGhhbmRs
ZSBvdmVyZmxvdy4KKyAgICAgICAgICAgIGludCBsZW5ndGggPSAwOworICAgICAgICAgICAgd2hp
bGUgKHAgPCBlbmQgJiYgKCpwICYgMHg4MCkgPT0gMHg4MCkgeworICAgICAgICAgICAgICAgIGlm
IChsZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpIC8gMTI4KSB7CisgICAg
ICAgICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiZnJhbWUgbGVuZ3RoIG92ZXJmbG93ICVkIiwg
bGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgZGlkQ2xvc2UoaGFuZGxlKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBs
ZW5ndGggPSBsZW5ndGggKiAxMjcgKyAqcCAmIDB4N2Y7CisgICAgICAgICAgICAgICAgKytwOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHAgKyBsZW5ndGggPCBlbmQpIHsKKyAgICAg
ICAgICAgICAgICBwICs9IGxlbmd0aDsKKyAgICAgICAgICAgICAgICBuZXh0RnJhbWUgPSBwOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29uc3QgY2hhciog
bXNnU3RhcnQgPSBwOworICAgICAgICAgICAgd2hpbGUgKHAgPCBlbmQgJiYgKnAgIT0gJ1x4ZmYn
KQorICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgIGlmIChwIDwgZW5kICYmICpwID09
ICdceGZmJykgeworICAgICAgICAgICAgICAgIGlmIChmcmFtZUJ5dGUgPT0gMHgwMCkKKyAgICAg
ICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKFN0cmluZzo6ZnJvbVVU
RjgobXNnU3RhcnQsIHAgLSBtc2dTdGFydCkpOworICAgICAgICAgICAgICAgICsrcDsKKyAgICAg
ICAgICAgICAgICBuZXh0RnJhbWUgPSBwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIHNraXBCdWZmZXIobmV4dEZyYW1lIC0gbV9idWZmZXIuZ2V0KCkpOworfQorCit2b2lk
IFdlYlNvY2tldENoYW5uZWw6OmRpZEZhaWwoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUsIGNv
bnN0IFNvY2tldFN0cmVhbUVycm9yJikKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENo
YW5uZWwgJXAgZGlkRmFpbGUgZXJyPSVkIiwgdGhpcywgZXJyLmVycm9yQ29kZSgpKTsKKyAgICBB
U1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdldCgpIHx8ICFtX2hhbmRsZS5nZXQoKSk7CisgICAg
ZGlkQ2xvc2UoaGFuZGxlKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpyZWRpcmVjdChj
b25zdCBTdHJpbmcmIGxvY2F0aW9uKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hh
bm5lbCAlcCByZWRpcmVjdCB0byAlcyIsIHRoaXMsIGxvY2F0aW9uLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIG1faGFuZHNoYWtlLnNldFVSTChLVVJMKGxvY2F0aW9uKSk7CisgICAgY29ubmVjdCgpOwor
fQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmF1dGhlbnRpY2F0ZShjb25zdCBTdHJpbmcmKQor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBkaWRDbG9zZShtX2hhbmRsZS5n
ZXQoKSk7Cit9CisKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIoY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbikKK3sKKyAgICBjaGFyKiBuZXdCdWZmZXIgPSAwOworICAgIGlm
ICh0cnlGYXN0TWFsbG9jKG1fYnVmZmVyU2l6ZSArIGxlbikuZ2V0VmFsdWUobmV3QnVmZmVyKSkg
eworICAgICAgICBpZiAobV9idWZmZXIuZ2V0KCkpCisgICAgICAgICAgICBtZW1jcHkobmV3QnVm
ZmVyLCBtX2J1ZmZlci5nZXQoKSwgbV9idWZmZXJTaXplKTsKKyAgICAgICAgbWVtY3B5KG5ld0J1
ZmZlciArIG1fYnVmZmVyU2l6ZSwgZGF0YSwgbGVuKTsKKyAgICAgICAgbV9idWZmZXIuc2V0KG5l
d0J1ZmZlcik7CisgICAgICAgIG1fYnVmZmVyU2l6ZSArPSBsZW47CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICBMT0coTmV0d29yaywgIlRvbyBsb25nIHdlYnNvY2tldCBmcmFtZSAl
ZCIsIG1fYnVmZmVyU2l6ZSArIGxlbik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdl
YlNvY2tldENoYW5uZWw6OnNraXBCdWZmZXIoaW50IGxlbikKK3sKKyAgICBBU1NFUlQobGVuIDw9
IG1fYnVmZmVyU2l6ZSk7CisgICAgbV9idWZmZXJTaXplIC09IGxlbjsKKyAgICBpZiAoIW1fYnVm
ZmVyU2l6ZSkgeworICAgICAgICBtX2J1ZmZlci5zZXQoMCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgbWVtbW92ZShtX2J1ZmZlci5nZXQoKSwgbV9idWZmZXIuZ2V0KCkgKyBsZW4sIG1f
YnVmZmVyU2l6ZSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8g
RU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZmMmQxYgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTAsMCArMSw5MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlNvY2tldENoYW5uZWxfaAorI2RlZmluZSBXZWJTb2NrZXRDaGFubmVsX2gK
KworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZS5oIgorI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIGNsYXNzIFN0
cmluZzsKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGU7CisgICAgY2xhc3MgU29ja2V0U3Ry
ZWFtRXJyb3I7CisgICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENsaWVudDsKKworICAgIGNsYXNz
IFdlYlNvY2tldENoYW5uZWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTb2NrZXRDaGFubmVsPiwg
cHVibGljIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIHsgcmV0dXJuIG5ldyBXZWJTb2NrZXRD
aGFubmVsKGNvbnRleHQsIGNsaWVudCwgdXJsLCBwcm90b2NvbCk7IH0KKyAgICAgICAgdmlydHVh
bCB+V2ViU29ja2V0Q2hhbm5lbCgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KCk7
CisKKyAgICAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtc2cpOworICAgICAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKKworICAgICAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbE9wZW5T
dHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgS1VSTCYpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFNlbmREYXRhKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbihTb2NrZXRTdHJlYW1IYW5kbGUqKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKFNvY2tldFN0cmVhbUhhbmRsZSopOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3Qg
Y2hhciosIGludCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFNvY2tldFN0cmVhbUhh
bmRsZSosIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJik7CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOworCisgICAgICAgIHZvaWQg
cmVkaXJlY3QoY29uc3QgU3RyaW5nJiBsb2NhdGlvbik7CisgICAgICAgIHZvaWQgYXV0aGVudGlj
YXRlKGNvbnN0IFN0cmluZyYgd3d3QXV0aGVudGljYXRlKTsKKworICAgICAgICBib29sIGFwcGVu
ZFRvQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pOworICAgICAgICB2b2lkIHNraXBC
dWZmZXIoaW50IGxlbik7CisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250
ZXh0OworICAgICAgICBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBtX2NsaWVudDsKKyAgICAgICAg
V2ViU29ja2V0SGFuZHNoYWtlIG1faGFuZHNoYWtlOworICAgICAgICBSZWZQdHI8U29ja2V0U3Ry
ZWFtSGFuZGxlPiBtX2hhbmRsZTsKKyAgICAgICAgT3duUHRyPGNoYXI+IG1fYnVmZmVyOworICAg
ICAgICBpbnQgbV9idWZmZXJTaXplOworICAgICAgICB1bnNpZ25lZCBsb25nIG1fdW5oYW5kbGVk
QnVmZmVyU2l6ZTsKKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
IC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlmICAvLyBXZWJTb2NrZXRDaGFubmVsX2gK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmgg
Yi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2M2NhZGEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oCkBAIC0wLDAgKzEsNTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50X2gKKyNkZWZpbmUgV2ViU29ja2V0Q2hhbm5l
bENsaWVudF9oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworICAgIGNsYXNzIFdlYlNvY2tldENoYW5uZWxDbGllbnQgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgdmlydHVhbCB+V2ViU29ja2V0Q2hhbm5lbENsaWVudCgpIHsgfQorICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29ubmVjdCgpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9z
ZSgpIHsgfQorCisgICAgcHJvdGVjdGVkOgorICAgICAgICBXZWJTb2NrZXRDaGFubmVsQ2xpZW50
KCkgeyB9CisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBF
TkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAgLy8gV2ViU29ja2V0Q2hhbm5lbENsaWVudF9o
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBi
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMTgwMTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtMCwwICsxLDQ3MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRlICJX
ZWJTb2NrZXRIYW5kc2hha2UuaCIKKworI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgorI2luY2x1
ZGUgIkhUVFBIZWFkZXJNYXAuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgY2hhciB3ZWJTb2NrZXRT
ZXJ2ZXJIYW5kc2hha2VIZWFkZXJbXSA9ICJIVFRQLzEuMSAxMDEgV2ViIFNvY2tldCBQcm90b2Nv
bCBIYW5kc2hha2VcclxuIjsKK2NvbnN0IGNoYXIgd2ViU29ja2V0VXBncmFkZUhlYWRlcltdID0g
IlVwZ3JhZGU6IFdlYlNvY2tldFxyXG4iCisgICAgICAgICJDb25uZWN0aW9uOiBVcGdyYWRlXHJc
biI7CisKK3N0YXRpYyBTdHJpbmcgZXh0cmFjdFJlc3BvbnNlQ29kZShjb25zdCBjaGFyKiBoZWFk
ZXIsIGludCBsZW4pCit7CisgICAgY29uc3QgY2hhciogc3BhY2UxID0gMDsKKyAgICBjb25zdCBj
aGFyKiBzcGFjZTIgPSAwOworICAgIGNvbnN0IGNoYXIqIHA7CisgICAgZm9yIChwID0gaGVhZGVy
OyBwIC0gaGVhZGVyIDwgbGVuOyBwKyspIHsKKyAgICAgICAgaWYgKCpwID09ICcgJykgeworICAg
ICAgICAgICAgaWYgKCFzcGFjZTEpCisgICAgICAgICAgICAgICAgc3BhY2UxID0gcDsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKCFzcGFjZTIpCisgICAgICAgICAgICAgICAgc3BhY2UyID0gcDsKKyAg
ICAgICAgfSBlbHNlIGlmICgqcCA9PSAnXG4nKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGlmIChwIC0gaGVhZGVyID09IGxlbikKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAg
IGlmICghc3BhY2UxIHx8ICFzcGFjZTIpCisgICAgICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4g
U3RyaW5nKHNwYWNlMSArIDEsIHNwYWNlMiAtIHNwYWNlMSAtIDEpOworfQorCitzdGF0aWMgYm9v
bCBoYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCkK
K3sKKyAgICBmb3IgKGNvbnN0IGNoYXIqIHAgPSBzdGFydDsgcCAmJiBwIDwgZW5kOyBwKyspIHsK
KyAgICAgICAgcCA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtZW1jaHIocCwgJ1xyJywgZW5k
IC0gcCkpOworICAgICAgICBpZiAoIXApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgaWYgKHAgKyAzIDwgZW5kICYmICoocCArIDEpID09ICdcbicgJiYgKihwICsgMikgPT0g
J1xyJyAmJiAqKHAgKyAzKSA9PSAnXG4nKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKworV2ViU29ja2V0SGFuZHNoYWtlOjpXZWJTb2NrZXRI
YW5kc2hha2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogbV91cmwodXJsKQorICAgICwgbV9jbGll
bnRQcm90b2NvbChwcm90b2NvbCkKKyAgICAsIG1fc2VjdXJlKG1fdXJsLnByb3RvY29sSXMoIndz
cyIpKQorICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3NlcnZlckhhbmRzaGFrZUxl
bmd0aCgwKQorICAgICwgbV9tb2RlKEluY29tcGxldGUpCit7Cit9CisKK1dlYlNvY2tldEhhbmRz
aGFrZTo6fldlYlNvY2tldEhhbmRzaGFrZSgpCit7Cit9CisKK2NvbnN0IEtVUkwmIFdlYlNvY2tl
dEhhbmRzaGFrZTo6dXJsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91cmw7Cit9CisKK3ZvaWQg
V2ViU29ja2V0SGFuZHNoYWtlOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQoreworICAgIG1fdXJs
ID0gdXJsLmNvcHkoKTsKK30KKworY29uc3QgU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6aG9z
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXJsLmhvc3QoKS5sb3dlcigpOworfQorCitjb25z
dCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50UHJvdG9jb2woKSBjb25zdAorewor
ICAgIHJldHVybiBtX2NsaWVudFByb3RvY29sOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFr
ZTo6c2V0Q2xpZW50UHJvdG9jb2woY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3sKKyAgICBtX2Ns
aWVudFByb3RvY29sID0gcHJvdG9jb2w7Cit9CisKK2Jvb2wgV2ViU29ja2V0SGFuZHNoYWtlOjpz
ZWN1cmUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NlY3VyZTsKK30KKwordm9pZCBXZWJTb2Nr
ZXRIYW5kc2hha2U6OnNldFNlY3VyZShib29sIHNlY3VyZSkKK3sKKyAgICBtX3NlY3VyZSA9IHNl
Y3VyZTsKK30KKworU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50T3JpZ2luKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygp
OworfQorCitTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRMb2NhdGlvbigpIGNvbnN0
Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fc2Vj
dXJlID8gIndzcyIgOiAid3MiKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiOi8vIik7CisgICAgYnVp
bGRlci5hcHBlbmQoaG9zdCgpKTsKKyAgICBpZiAobV91cmwucG9ydCgpKSB7CisgICAgICAgIGlm
ICgoIW1fc2VjdXJlICYmIG1fdXJsLnBvcnQoKSAhPSA4MSkgfHwgKG1fc2VjdXJlICYmIG1fdXJs
LnBvcnQoKSAhPSA4MTUpKSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOiIpOworICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIobV91cmwucG9ydCgpKSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgYnVpbGRlci5hcHBlbmQobV91cmwucGF0aCgpKTsKKyAgICBy
ZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitDU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFr
ZTo6Y2xpZW50SGFuZHNoYWtlTWVzc2FnZSgpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOworCisgICAgYnVpbGRlci5hcHBlbmQoIkdFVCAiKTsKKyAgICBidWlsZGVyLmFwcGVu
ZCh1cmwoKS5wYXRoKCkpOworICAgIGlmICghdXJsKCkucXVlcnkoKS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIj8iKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQodXJsKCku
cXVlcnkoKSk7CisgICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKCIgSFRUUC8xLjFcclxuIik7Cisg
ICAgYnVpbGRlci5hcHBlbmQoIlVwZ3JhZGU6IFdlYlNvY2tldFxyXG4iKTsKKyAgICBidWlsZGVy
LmFwcGVuZCgiQ29ubmVjdGlvbjogVXBncmFkZVxyXG4iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgi
SG9zdDogIik7CisgICAgYnVpbGRlci5hcHBlbmQoaG9zdCgpKTsgIC8vIFhYWAorICAgIGJ1aWxk
ZXIuYXBwZW5kKCJcclxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIk9yaWdpbjogIik7CisgICAg
YnVpbGRlci5hcHBlbmQoY2xpZW50T3JpZ2luKCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxu
Iik7CisgICAgaWYgKCFjbGllbnRQcm90b2NvbCgpLmlzRW1wdHkoKSkgeworICAgICAgICBidWls
ZGVyLmFwcGVuZCgiV2ViU29ja2V0LVByb3RvY29sOiAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoY2xpZW50UHJvdG9jb2woKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7Cisg
ICAgfQorICAgIEtVUkwgdXJsID0gdXJsT3ZlckhUVFAoKTsKKyAgICAvLyBGSVhNRTogc2V0IGF1
dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uIG9yIGNvb2tpZXMgZm9yIHVybC4KKyAgICBidWlsZGVy
LmFwcGVuZCgiXHJcbiIpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwor
fQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVzZXQoKQoreworICAgIG1fc2VydmVySGFu
ZHNoYWtlTGVuZ3RoID0gMDsKKyAgICBtX21vZGUgPSBJbmNvbXBsZXRlOworCisgICAgbV93c09y
aWdpbiA9IFN0cmluZygpOworICAgIG1fd3NMb2NhdGlvbiA9IFN0cmluZygpOworICAgIG1fd3NQ
cm90b2NvbCA9IFN0cmluZygpOworICAgIG1fbG9jYXRpb24gPSBTdHJpbmcoKTsKKyAgICBtX3d3
d0F1dGhlbnRpY2F0ZSA9IFN0cmluZygpOworfQorCitib29sIFdlYlNvY2tldEhhbmRzaGFrZTo6
cmVhZFNlcnZlckhhbmRzaGFrZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBsZW4pCit7Cisg
ICAgbV9zZXJ2ZXJIYW5kc2hha2VMZW5ndGggPSAwOworICAgIG1fbW9kZSA9IEluY29tcGxldGU7
CisgICAgaWYgKGxlbiA8IHNpemVvZih3ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hha2VIZWFkZXIpIC0g
MSkgeworICAgICAgICBMT0coTmV0d29yaywgInNob3J0IHJlc3BvbnNlIGhlYWRlciBsZW49JWQi
LCBsZW4pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmICghbWVtY21wKGhl
YWRlciwgd2ViU29ja2V0U2VydmVySGFuZHNoYWtlSGVhZGVyLCBzaXplb2Yod2ViU29ja2V0U2Vy
dmVySGFuZHNoYWtlSGVhZGVyKSAtIDEpKQorICAgICAgICBtX21vZGUgPSBOb3JtYWw7CisgICAg
ZWxzZSB7CisgICAgICAgIGNvbnN0IFN0cmluZyYgY29kZSA9IGV4dHJhY3RSZXNwb25zZUNvZGUo
aGVhZGVyLCBsZW4pOworICAgICAgICBpZiAoY29kZS5pc051bGwoKSkgeworICAgICAgICAgICAg
TE9HKE5ldHdvcmssICJzaG9ydCBzZXJ2ZXIgaGFuZHNoYWtlOiAlcyIsIGhlYWRlcik7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvZGUuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICBMT0coTmV0d29yaywgIm5vIHJlc3BvbnNlIGNvZGUgZm91bmQ6
ICVzIiwgaGVhZGVyKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
ICAgIExPRyhOZXR3b3JrLCAicmVzcG9uc2UgY29kZTogJXMiLCBjb2RlLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICBpZiAoY29kZSA9PSAiMzAxIiB8fCBjb2RlID09ICIzMDIiIHx8IGNvZGUgPT0g
IjMwMyIgfHwgY29kZSA9PSAiMzA3IikKKyAgICAgICAgICAgIG1fbW9kZSA9IFJlZGlyZWN0Owor
ICAgICAgICBlbHNlIGlmIChjb2RlID09ICI0MDEiKQorICAgICAgICAgICAgbV9tb2RlID0gQXV0
aGVudGljYXRlOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiTWlz
bWF0Y2ggc2VydmVyIGhhbmRzaGFrZTogJXMiLCBoZWFkZXIpOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgY29uc3QgY2hhciogcCA9IGhlYWRlciArIHNp
emVvZih3ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hha2VIZWFkZXIpIC0gMTsKKyAgICBjb25zdCBjaGFy
KiBlbmQgPSBoZWFkZXIgKyBsZW4gKyAxOworCisgICAgaWYgKG1fbW9kZSA9PSBOb3JtYWwpIHsK
KyAgICAgICAgc2l6ZV90IGhlYWRlclNpemUgPSBlbmQgLSBwOworICAgICAgICBpZiAoaGVhZGVy
U2l6ZSA8IHNpemVvZih3ZWJTb2NrZXRVcGdyYWRlSGVhZGVyKSAtIDEpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChtZW1jbXAocCwgd2ViU29ja2V0VXBncmFkZUhlYWRl
ciwgc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMSkpIHsKKyAgICAgICAgICAgIExP
RyhOZXR3b3JrLCAiQmFkIHVwZ3JhZGUgaGVhZGVyOiAlcyIsIHApOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcCArPSBzaXplb2Yod2ViU29ja2V0VXBncmFk
ZUhlYWRlcikgLSAxOworICAgIH0KKworICAgIGlmICghaGFkU2VydmVySGFuZHNoYWtlKHAsIGVu
ZCkpIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJpbmNvbXBsZXRlIHNlcnZlciBoYW5kc2hha2Ug
bGVuPSVkIiwgbGVuKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBIVFRQSGVh
ZGVyTWFwIGhlYWRlcnM7CisgICAgcCA9IHBhcnNlSGVhZGVyKHAsIGVuZCwgJmhlYWRlcnMpOwor
ICAgIGlmICghcCkgeworICAgICAgICBMT0coTmV0d29yaywgInBhcnNlSGVhZGVyIGZhaWxlZCIp
OworICAgICAgICBtX21vZGUgPSBGYWlsZWQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICBpZiAoIXByb2Nlc3NIZWFkZXIoaGVhZGVycykpIHsKKyAgICAgICAgTE9HKE5ldHdvcmss
ICJoZWFkZXIgcHJvY2VzcyBmYWlsZWQiKTsKKyAgICAgICAgbV9tb2RlID0gRmFpbGVkOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgc3dpdGNoIChtX21vZGUpIHsKKyAgICBjYXNl
IE5vcm1hbDoKKyAgICAgICAgaGFuZHNoYWtlKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UmVkaXJlY3Q6CisgICAgICAgIGlmIChtX2xvY2F0aW9uLmlzTnVsbCgpKQorICAgICAgICAgICAg
bV9tb2RlID0gRmFpbGVkOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1dGhlbnRpY2F0ZToK
KyAgICAgICAgaWYgKG1fd3d3QXV0aGVudGljYXRlLmlzTnVsbCgpKQorICAgICAgICAgICAgbV9t
b2RlID0gRmFpbGVkOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBtX21v
ZGUgPSBGYWlsZWQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBtX3NlcnZlckhhbmRzaGFr
ZUxlbmd0aCA9IHAgLSBoZWFkZXI7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3NpemVfdCBXZWJT
b2NrZXRIYW5kc2hha2U6OnNlcnZlckhhbmRzaGFrZUxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fc2VydmVySGFuZHNoYWtlTGVuZ3RoOworfQorCitXZWJTb2NrZXRIYW5kc2hha2U6Ok1v
ZGUgV2ViU29ja2V0SGFuZHNoYWtlOjptb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tb2Rl
OworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyV2Vic29ja2V0
T3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93c09yaWdpbjsKK30KKwordm9pZCBXZWJT
b2NrZXRIYW5kc2hha2U6OnNldFNlcnZlcldlYlNvY2tldE9yaWdpbihjb25zdCBTdHJpbmcmIHdl
YnNvY2tldE9yaWdpbikKK3sKKyAgICBtX3dzT3JpZ2luID0gd2Vic29ja2V0T3JpZ2luOworfQor
Citjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyV2Vic29ja2V0TG9jYXRp
b24oKSBjb25zdAoreworICAgIHJldHVybiBtX3dzTG9jYXRpb247Cit9CisKK3ZvaWQgV2ViU29j
a2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJXZWJTb2NrZXRMb2NhdGlvbihjb25zdCBTdHJpbmcmIHdl
YnNvY2tldExvY2F0aW9uKQoreworICAgIG1fd3NMb2NhdGlvbiA9IHdlYnNvY2tldExvY2F0aW9u
OworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyV2Vic29ja2V0
UHJvdG9jb2woKSBjb25zdAoreworICAgIHJldHVybiBtX3dzUHJvdG9jb2w7Cit9CisKK3ZvaWQg
V2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbChjb25zdCBTdHJp
bmcmIHdlYnNvY2tldFByb3RvY29sKQoreworICAgIG1fd3NQcm90b2NvbCA9IHdlYnNvY2tldFBy
b3RvY29sOworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyTG9j
YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2xvY2F0aW9uOworfQorCitjb25zdCBTdHJp
bmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyV3d3QXV0aGVudGljYXRlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV93d3dBdXRoZW50aWNhdGU7Cit9CisKK0tVUkwgV2ViU29ja2V0SGFuZHNo
YWtlOjp1cmxPdmVySFRUUCgpIGNvbnN0Cit7CisgICAgS1VSTCB1cmwgPSBtX3VybC5jb3B5KCk7
CisgICAgdXJsLnNldFByb3RvY29sKG1fc2VjdXJlID8gImh0dHBzIiA6ICJodHRwIik7CisgICAg
aW50IHBvcnQgPSB1cmwucG9ydCgpOworICAgIGlmICghcG9ydCkKKyAgICAgICAgcG9ydCA9IG1f
c2VjdXJlID8gODE1IDogODE7CisgICAgdXJsLnNldFBvcnQocG9ydCk7CisgICAgcmV0dXJuIHVy
bDsKK30KKworY29uc3QgY2hhciogV2ViU29ja2V0SGFuZHNoYWtlOjpwYXJzZUhlYWRlcihjb25z
dCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kLCBIVFRQSGVhZGVyTWFwKiBoZWFkZXJzKQor
eworICAgIFZlY3RvcjxjaGFyPiBuYW1lOworICAgIFZlY3RvcjxjaGFyPiB2YWx1ZTsKKyAgICBm
b3IgKGNvbnN0IGNoYXIqIHAgPSBzdGFydDsgcCA8IGVuZDsgcCsrKSB7CisgICAgICAgIG5hbWUu
Y2xlYXIoKTsKKyAgICAgICAgdmFsdWUuY2xlYXIoKTsKKworICAgICAgICBmb3IgKDsgcCA8IGVu
ZDsgcCsrKSB7CisgICAgICAgICAgICBzd2l0Y2ggKCpwKSB7CisgICAgICAgICAgICBjYXNlICdc
cic6CisgICAgICAgICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChwICsgMSA8IGVuZCAmJiAqKHAgKyAxKSA9PSAnXG4nKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHAgKyAyOworICAgICAgICAgICAgICAgICAgICBMT0coTmV0d29y
aywgIkNGIGRvZXNuJ3QgZm9sbG93IExGIHA9JXAgZW5kPSVwIiwgcCwgZW5kKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IExPRyhOZXR3b3JrLCAiVW5leHBlY3RlZCBDUiBpbiBuYW1lIik7CisgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgICAgICBjYXNlICdcbic6CisgICAgICAgICAgICAgICAgTE9HKE5l
dHdvcmssICJVbmV4cGVjdGVkIExGIGluIG5hbWUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgICAgIGNhc2UgJzonOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBpZiAoKnAgPj0gMHg0MSAmJiAqcCA8PSAw
eDVhKQorICAgICAgICAgICAgICAgICAgICBuYW1lLmFwcGVuZCgqcCArIDB4MjApOworICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbmFtZS5hcHBlbmQoKnApOworICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCpw
ID09ICc6JykgeworICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAoOyBwIDwgZW5kICYmICpw
ID09IDB4MjA7IHArKykgeyB9CisKKyAgICAgICAgZm9yICg7IHAgPCBlbmQ7IHArKykgeworICAg
ICAgICAgICAgc3dpdGNoICgqcCkgeworICAgICAgICAgICAgY2FzZSAnXHInOgorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnXG4nOgorICAgICAgICAgICAgICAgIExP
RyhOZXR3b3JrLCAiVW5leHBlY3RlZCBMRiBpbiB2YWx1ZSIpOworICAgICAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB2YWx1ZS5hcHBl
bmQoKnApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCpwID09ICdccicpIHsKKyAg
ICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHAgPj0gZW5kIHx8ICpwICE9ICdcbicpIHsKKyAgICAg
ICAgICAgIExPRyhOZXR3b3JrLCAiQ1IgZG9lc24ndCBmb2xsb3cgTEYgYWZ0ZXIgdmFsdWUgcD0l
cCBlbmQ9JXAiLCBwLCBlbmQpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAg
ICAgICAgQXRvbWljU3RyaW5nIG5hbWVTdHIoU3RyaW5nOjpmcm9tVVRGOChuYW1lLmRhdGEoKSwg
bmFtZS5zaXplKCkpKTsKKyAgICAgICAgU3RyaW5nIHZhbHVlU3RyID0gU3RyaW5nOjpmcm9tVVRG
OCh2YWx1ZS5kYXRhKCksIHZhbHVlLnNpemUoKSk7CisgICAgICAgIExPRyhOZXR3b3JrLCAibmFt
ZT0lcyB2YWx1ZT0lcyIsIG5hbWVTdHIuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdmFsdWVTdHIu
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGhlYWRlcnMtPmFkZChuYW1lU3RyLCB2YWx1ZVN0cik7
CisgICAgfQorICAgIExPRyhOZXR3b3JrLCAiVW5leHBlY3RlZCBlbmQgb2YgaGVhZGVyIik7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgV2ViU29ja2V0SGFuZHNoYWtlOjpwcm9jZXNzSGVhZGVy
KGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCit7CisgICAgZm9yIChIVFRQSGVhZGVyTWFw
Ojpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMuYmVnaW4oKTsgaXQgIT0gaGVhZGVycy5lbmQo
KTsgKytpdCkgeworICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgeworICAgICAgICBjYXNlIE5vcm1h
bDoKKyAgICAgICAgICAgIGlmIChpdC0+Zmlyc3QgPT0gIndlYnNvY2tldC1vcmlnaW4iKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFtX3dzT3JpZ2luLmlzTnVsbCgpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgbV93c09yaWdpbiA9IGl0LT5zZWNv
bmQ7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGl0LT5maXJzdCA9PSAid2Vic29ja2V0LWxvY2F0
aW9uIikgeworICAgICAgICAgICAgICAgIGlmICghbV93c0xvY2F0aW9uLmlzTnVsbCgpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgbV93c0xvY2F0
aW9uID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJ3
ZWJzb2NrZXQtcHJvdG9jb2wiKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtX3dzUHJvdG9jb2wu
aXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBtX3dzUHJvdG9jb2wgPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVkaXJlY3Q6CisgICAgICAgICAgICBpZiAoaXQtPmZp
cnN0ID09ICJsb2NhdGlvbiIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fbG9jYXRpb24uaXNO
dWxsKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICBtX2xvY2F0aW9uID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEF1dGhlbnRpY2F0ZToKKyAgICAgICAgICAgIGlmIChpdC0+Zmly
c3QgPT0gInd3dy1hdXRoZW50aWNhdGUiKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtX3d3d0F1
dGhlbnRpY2F0ZS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgIG1fd3d3QXV0aGVudGljYXRlID0gaXQtPnNlY29uZDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
TE9HKE5ldHdvcmssICJ1bmV4cGVjdGVkIG1vZGU6ICVkIiwgbV9tb2RlKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OmhhbmRzaGFrZSgpCit7CisgICAgQVNTRVJUKG1fbW9k
ZSA9PSBOb3JtYWwpOworICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAgICBpZiAobV93c09yaWdpbi5p
c051bGwoKSB8fCBtX3dzTG9jYXRpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChjbGllbnRPcmlnaW4oKSAhPSBtX3dzT3JpZ2luKSB7CisgICAgICAgIExPRyhOZXR3b3Jr
LCAiTWlzbWF0Y2ggb3JpZ2luOiAlcyAhPSAlcyIsIGNsaWVudE9yaWdpbigpLnV0ZjgoKS5kYXRh
KCksIG1fd3NPcmlnaW4udXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgaWYgKGNsaWVudExvY2F0aW9uKCkgIT0gbV93c0xvY2F0aW9uKSB7CisgICAgICAgIExPRyhO
ZXR3b3JrLCAiTWlzbWF0Y2ggbG9jYXRpb246ICVzICE9ICVzIiwgY2xpZW50TG9jYXRpb24oKS51
dGY4KCkuZGF0YSgpLCBtX3dzTG9jYXRpb24udXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaWYgKCFtX2NsaWVudFByb3RvY29sLmlzRW1wdHkoKSAmJiBtX2NsaWVu
dFByb3RvY29sICE9IG1fd3NQcm90b2NvbCkgeworICAgICAgICBMT0coTmV0d29yaywgIk1pc21h
dGNoIHByb3RvY29sOiAlcyAhPSAlcyIsIG1fY2xpZW50UHJvdG9jb2wudXRmOCgpLmRhdGEoKSwg
bV93c1Byb3RvY29sLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IG1fbW9kZSA9IENvbm5lY3RlZDsKKyAgICByZXR1cm47Cit9CisKK30gIC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIGIvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
Ljc4YjE4Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmgKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTb2NrZXRIYW5kc2hha2Vf
aAorI2RlZmluZSBXZWJTb2NrZXRIYW5kc2hha2VfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRT
KQorCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OworICAgIGNsYXNzIEhUVFBIZWFkZXJNYXA7CisKKyAgICBjbGFz
cyBXZWJTb2NrZXRIYW5kc2hha2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgZW51bSBNb2RlIHsK
KyAgICAgICAgICAgIEluY29tcGxldGUsIE5vcm1hbCwgUmVkaXJlY3QsIEF1dGhlbnRpY2F0ZSwg
RmFpbGVkLCBDb25uZWN0ZWQKKyAgICAgICAgfTsKKyAgICAgICAgV2ViU29ja2V0SGFuZHNoYWtl
KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KTsKKyAgICAgICAgfldlYlNvY2tldEhhbmRzaGFrZSgpOworCisgICAgICAg
IGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFVSTChjb25zdCBLVVJM
JiB1cmwpOworICAgICAgICBjb25zdCBTdHJpbmcgaG9zdCgpIGNvbnN0OworCisgICAgICAgIGNv
bnN0IFN0cmluZyYgY2xpZW50UHJvdG9jb2woKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRDbGll
bnRQcm90b2NvbChjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKKworICAgICAgICBib29sIHNlY3Vy
ZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNlY3VyZShib29sIHNlY3VyZSk7CisKKyAgICAg
ICAgU3RyaW5nIGNsaWVudE9yaWdpbigpIGNvbnN0OworICAgICAgICBTdHJpbmcgY2xpZW50TG9j
YXRpb24oKSBjb25zdDsKKworICAgICAgICBDU3RyaW5nIGNsaWVudEhhbmRzaGFrZU1lc3NhZ2Uo
KSBjb25zdDsKKworICAgICAgICB2b2lkIHJlc2V0KCk7CisKKyAgICAgICAgYm9vbCByZWFkU2Vy
dmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbik7CisgICAgICAgIHNp
emVfdCBzZXJ2ZXJIYW5kc2hha2VMZW5ndGgoKSBjb25zdDsKKyAgICAgICAgTW9kZSBtb2RlKCkg
Y29uc3Q7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJXZWJzb2NrZXRPcmlnaW4oKSBj
b25zdDsKKyAgICAgICAgdm9pZCBzZXRTZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oY29uc3QgU3RyaW5n
JiB3ZWJzb2NrZXRPcmlnaW4pOworCisgICAgICAgIGNvbnN0IFN0cmluZyYgc2VydmVyV2Vic29j
a2V0TG9jYXRpb24oKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTZXJ2ZXJXZWJTb2NrZXRMb2Nh
dGlvbihjb25zdCBTdHJpbmcmIHdlYnNvY2tldExvY2F0aW9uKTsKKworICAgICAgICBjb25zdCBT
dHJpbmcmIHNlcnZlcldlYnNvY2tldFByb3RvY29sKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0
U2VydmVyV2ViU29ja2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJiB3ZWJzb2NrZXRQcm90b2NvbCk7
CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJMb2NhdGlvbigpIGNvbnN0OworICAgICAg
ICBjb25zdCBTdHJpbmcmIHNlcnZlcld3d0F1dGhlbnRpY2F0ZSgpIGNvbnN0OworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgS1VSTCB1cmxPdmVySFRUUCgpIGNvbnN0OworICAgICAgICBjb25zdCBj
aGFyKiBwYXJzZUhlYWRlcihjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kLCBIVFRQ
SGVhZGVyTWFwKiBoZWFkZXJzKTsKKyAgICAgICAgYm9vbCBwcm9jZXNzSGVhZGVyKGNvbnN0IEhU
VFBIZWFkZXJNYXAmIGhlYWRlcnMpOworICAgICAgICB2b2lkIGhhbmRzaGFrZSgpOworCisgICAg
ICAgIEtVUkwgbV91cmw7CisgICAgICAgIFN0cmluZyBtX2NsaWVudFByb3RvY29sOworICAgICAg
ICBib29sIG1fc2VjdXJlOworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRl
eHQ7CisKKyAgICAgICAgc2l6ZV90IG1fc2VydmVySGFuZHNoYWtlTGVuZ3RoOworICAgICAgICBN
b2RlIG1fbW9kZTsKKworICAgICAgICBTdHJpbmcgbV93c09yaWdpbjsKKyAgICAgICAgU3RyaW5n
IG1fd3NMb2NhdGlvbjsKKyAgICAgICAgU3RyaW5nIG1fd3NQcm90b2NvbDsKKyAgICAgICAgU3Ry
aW5nIG1fbG9jYXRpb247CisgICAgICAgIFN0cmluZyBtX3d3d0F1dGhlbnRpY2F0ZTsKKyAgICB9
OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09D
S0VUUykKKworI2VuZGlmICAvLyBXZWJTb2NrZXRIYW5kc2hha2VfaA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38594</attachid>
            <date>2009-08-25 21:05:23 -0700</date>
            <delta_ts>2009-08-28 02:31:03 -0700</delta_ts>
            <desc>WebSocket API implementation. depends on bug 28037</desc>
            <filename>bug-28038-20090826130521.patch</filename>
            <type>text/plain</type>
            <size>65435</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA4ZmNiZGFmLi5lOTQ3NzNkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMDktMDgtMjUgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IFdURjo6
dHJ5RmFzdE1hbGxvYygpIHVzZWQgaW4gV2ViU29ja2V0Q2hhbm5lbC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MDM4CisKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5leHA6CisKIDIwMDktMDgtMjUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoQnVpbGRmaXgpLgpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IGJiNzViNDUuLmUzZjQ0ZjQgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5leHAKQEAgLTI4Nyw2ICsyODcsNyBAQCBfX1pOM1dURjEyZGV0YWNoVGhy
ZWFkRWoKIF9fWk4zV1RGMTJpc01haW5UaHJlYWRFdgogX19aTjNXVEYxMnJhbmRvbU51bWJlckV2
CiBfX1pOM1dURjEzY3VycmVudFRocmVhZEV2CitfX1pOM1dURjEzdHJ5RmFzdE1hbGxvY0VtCiBf
X1pOM1dURjEzdHJ5RmFzdENhbGxvY0VtbQogX19aTjNXVEYxNVRocmVhZENvbmRpdGlvbjR3YWl0
RVJOU181TXV0ZXhFCiBfX1pOM1dURjE1VGhyZWFkQ29uZGl0aW9uNnNpZ25hbEV2CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU3MTkyMjAu
LmQ3MjVhNDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMDktMDgtMjUgIEZ1bWl0b3NoaSBVa2FpICA8dWth
aUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2ViU29ja2V0IEFQSSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MDM4CisgICAgICAgIAorICAgICAgICBB
ZGQgYnVpbGQgc3lzdGVtcyBvbmx5IGZvciBHTlVtYWtlZmlsZS5hbSBhbmQgV2ViQ29yZS54Y29k
ZXByb2ogbm93LgorICAgICAgICBPdGhlciBidWlsZCBzeXN0ZW1zIHdpbGwgYmUgdXBkYXRlZCBv
bmNlIHRoZSBjb2RlIGlzIGZ1bmN0aW9uYWwuCisgICAgICAgIFRlc3RzIHdpbGwgYmUgbGFuZGVk
IG9uY2UgdGhlIGNvZGUgaXMgY29tcGxldGVkIGFuZCBmdW5jdGlvbmFsLgorICAgICAgICBEZXBl
bmRzIG9uIHBhdGNoIG9mIGJ1ZyAyODAzNy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNw
cDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OndlYlNvY2tldCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvRXZlbnRUYXJnZXQpOgorICAgICAgICAqIGRvbS9F
dmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6dG9XZWJTb2Nr
ZXQpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5oOgorICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93LmlkbDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc1ZhbGlkUHJvdG9jb2xTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldDo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjphZGRF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6cmVtb3ZlRXZlbnRM
aXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNoRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0OjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNo
T3BlbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlzcGF0Y2hNZXNzYWdl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaXNwYXRjaENsb3NlRXZlbnQp
OgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Oik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNldE9ub3Blbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXQ6Om9ub3Blbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNldE9ubWVz
c2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Om9ubWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNldE9uY2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0OjpvbmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6dG9XZWJTb2Nr
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpldmVudExpc3RlbmVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmNwcDogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmg6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmg6
IEFkZGVkLgorCiAyMDA5LTA4LTI1ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAg
ICAgICAgU3RvcCBpbnN0YWxsaW5nIElETCBmaWxlcyBpbiB0byB0aGUgZnJhbWV3b3JrLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAgYi9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLmNwcAppbmRleCAzNjVlOGE5Li4wZDI5NzJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLmNwcAorKysgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMzQxLDYg
KzM0MSw3IEBACiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NNYXRyaXguY3BwIgogI2luY2x1ZGUgIkpT
V2ViS2l0UG9pbnQuY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCIK
KyNpbmNsdWRlICJKU1dlYlNvY2tldC5jcHAiCiAjaW5jbHVkZSAiSlNXaGVlbEV2ZW50LmNwcCIK
ICNpbmNsdWRlICJKU1dvcmtlci5jcHAiCiAjaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0LmNwcCIK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDdlZGNjODMuLmRmNTE1OWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzIyMSw3ICszMjIxLDEyIEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldENv
bnN0cnVjdG9yLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3Bw
IFwKIAlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCi0JV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIFwKKwlXZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgXAorCVdlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmggXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsQ2xpZW50LmggXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3Bw
IFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKIAogZWxzZQogd2Vi
Y29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9XRUJfU09DS0VUUz0wCmRpZmYgLS1naXQgYS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ2MGZmNmIuLjA5NDVlN2MgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04ODEsNiArODgxLDkgQEAK
IAkJNEUxOTU5MkUwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRFMTk1OTI4MEEzOURBQ0MwMDIy
MEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggKi87IH07CiAJCTUxMDE4NDY5MEIwODYwMkEwMDRBODI1
RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMDE4NDZBMEIwODYw
MkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdl
LmNwcCAqLzsgfTsKKwkJNTEwRDRBNEUxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5u
ZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
RDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwICovOyB9OworCQk1
MTBENEE0RjEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBNDgxMDMxNzdBMjAwNDlF
QTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCAqLzsgfTsKKwkJNTEwRDRBNTAxMDMxNzdBMjAwNDlF
QTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50LmggKi87IH07CiAJCTUxMTZEOTc3MENGMTc3QkQwMEMyQjg0RCAvKiBE
YXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTFGMjMxNzBE
QzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGMjMxMzBEQzE2MERBMDA0RjAwMzIgLyog
TG9jYWxTdG9yYWdlVGFzay5jcHAgKi87IH07CiAJCTUxMUYyMzE4MERDMTYwREEwMDRGMDAzMiAv
KiBMb2NhbFN0b3JhZ2VUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTFGMjMxNDBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5o
ICovOyB9OwpAQCAtOTY0LDYgKzk2Nyw4IEBACiAJCTUxQTkyNjdFMEQ1M0YwNTcwMDYzRUNDMiAv
KiBPcmlnaW5Vc2FnZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUE5MjY3QTBENTNGMDU3MDA2M0VDQzIgLyogT3JpZ2luVXNhZ2VSZWNv
cmQuY3BwICovOyB9OwogCQk1MUE5MjY3RjBENTNGMDU3MDA2M0VDQzIgLyogT3JpZ2luVXNhZ2VS
ZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
QTkyNjdCMEQ1M0YwNTcwMDYzRUNDMiAvKiBPcmlnaW5Vc2FnZVJlY29yZC5oICovOyB9OwogCQk1
MUFBM0Y2RjBCRDVBQTlFMDA4OTI5NzEgLyogUmVzb3VyY2VMb2FkZXJNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFBM0Y2RTBCRDVBQTlFMDA4
OTI5NzEgLyogUmVzb3VyY2VMb2FkZXJNYWMubW0gKi87IH07CisJCTUxQUJBRTQ0MTA0M0FCNEEw
MDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFNDIxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNv
Y2tldEhhbmRzaGFrZS5jcHAgKi87IH07CisJCTUxQUJBRTQ1MTA0M0FCNEEwMDhDNTI2MCAvKiBX
ZWJTb2NrZXRIYW5kc2hha2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQUJBRTQzMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2Uu
aCAqLzsgfTsKIAkJNTFCMjQxN0IwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIy
NDE3QTBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSAqLzsgfTsKIAkJ
NTFCRTM3RTAwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJFMzdERTBEQUVFMDBFMDAxMDg1RkMg
LyogU3RvcmFnZUFyZWEuaCAqLzsgfTsKIAkJNTFDMEFBMzkwRjJBQTEwQTAwMTY0OEMyIC8qIENh
Y2hlZEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjAxMCw2ICs2MDE1LDkgQEAK
IAkJNEUxOTU5MjgwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUXVlcnlFeHAuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUGFnZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFn
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRQYWdlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0
IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViU29ja2V0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxMEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldENoYW5uZWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENo
YW5uZWxDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0
Q2hhbm5lbENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTE2RDk3NTBD
RjE3N0JEMDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERhdGFiYXNlRGV0YWlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTFGMjMxMzBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbFN0b3JhZ2VUYXNrLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjIzMTQwREMxNjBEQTAwNEYwMDMyIC8q
IExvY2FsU3RvcmFnZVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9j
YWxTdG9yYWdlVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjEwMCw2ICs2
MTA4LDggQEAKIAkJNTFBOTI2N0EwRDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblVzYWdlUmVjb3Jk
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9yaWdpblVzYWdlUmVj
b3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBOTI2N0IwRDUzRjA1NzAw
NjNFQ0MyIC8qIE9yaWdpblVzYWdlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE9yaWdpblVzYWdlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxQUEzRjZFMEJENUFBOUUwMDg5Mjk3MSAvKiBSZXNvdXJjZUxvYWRlck1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlTG9hZGVyTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUFCQUU0MjEwNDNBQjRBMDA4QzUyNjAgLyog
V2ViU29ja2V0SGFuZHNoYWtlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYlNvY2tldEhhbmRzaGFrZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxQUJBRTQzMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjI0MTdBMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lX
ZWJBcmNoaXZlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TGVnYWN5V2ViQXJjaGl2ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFC
RTM3REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxQzBBQTM4MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTA1NTIsNiArMTA1NjIsMTEgQEAKIAkJNTE4QTM0QkQxMDI2QzgzMTAwMUI2
ODk2IC8qIHdlYnNvY2tldHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTUxQUJBRTQyMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2Uu
Y3BwICovLAorCQkJCTUxQUJBRTQzMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hh
a2UuaCAqLywKKwkJCQk1MTBENEE0NzEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5l
bC5jcHAgKi8sCisJCQkJNTEwRDRBNDgxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5u
ZWwuaCAqLywKKwkJCQk1MTBENEE0OTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5l
bENsaWVudC5oICovLAogCQkJCTUxOEEzNEJFMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJTb2NrZXQu
Y3BwICovLAogCQkJCTUxOEEzNEJGMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJTb2NrZXQuaCAqLywK
IAkJCQk1MThBMzRDMDEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmlkbCAqLywKQEAgLTE3
NTI2LDYgKzE3NTQxLDkgQEAKIAkJCQk0OUM3QjlFNjEwNDJEMzJGMDAwOUQ0NDcgLyogQ2FudmFz
VGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5RkMxMDQyRDM2NTAwMDlENDQ3IC8q
IEdyYXBoaWNzQ29udGV4dDNELmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QkEwMDEwNDJEMzhD
MDAwOUQ0NDcgLyogQ2FudmFzM0RMYXllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRBNEYx
MDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxMEQ0QTUwMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MUFCQUU0NTEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFu
ZHNoYWtlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE5NjE3LDYgKzE5NjM1LDggQEAKIAkJCQk0OUM3
QkE4RDEwNDJGNUIxMDAwOUQ0NDcgLyogSlNEb2N1bWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0OUM3RDRGQjEwNDJGOTVGMDAwOUQ0NDcgLyogSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0M0QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk4M0E5NzAxMDQzNUU5MDAwREI3MEY5IC8q
IEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MTBENEE0RTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MUFCQUU0NDEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAppbmRleCA4YWFlZmM0Li5kMTE5YjExIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcApAQCAtNTMsNiArNTMsNyBAQAogCiAjaW5jbHVkZSAiSlNXZWJLaXRD
U1NNYXRyaXhDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rv
ci5oIgorI2luY2x1ZGUgIkpTV2ViU29ja2V0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1dv
cmtlckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuaCIKQEAgLTUwMSw2ICs1
MDIsMTMgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2hhcmVkV29ya2VyKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorSlNWYWx1ZSBK
U0RPTVdpbmRvdzo6d2ViU29ja2V0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNXZWJTb2NrZXRDb25zdHJ1Y3Rvcj4oZXhlYywgdGhpcyk7
Cit9CisjZW5kaWYKKwogLy8gQ3VzdG9tIGZ1bmN0aW9ucwogCiAvLyBIZWxwZXIgZm9yIHdpbmRv
dy5vcGVuKCkgYW5kIHdpbmRvdy5zaG93TW9kYWxEaWFsb2coKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudFRhcmdldC5jcHAKaW5kZXggZWQ4MGQ4MC4uMDQyMWQxMCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRUYXJnZXQuY3BwCkBAIC03OCw2ICs3OCwxMSBAQAogI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbi5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisjaW5jbHVkZSAiSlNX
ZWJTb2NrZXQuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXQuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzksNiArMTQ0LDExIEBAIEpT
VmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEV2ZW50VGFyZ2V0KiB0YXJnCiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIG5vdGlmaWNh
dGlvbik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBpZiAoV2ViU29j
a2V0KiB3ZWJTb2NrZXQgPSB0YXJnZXQtPnRvV2ViU29ja2V0KCkpCisgICAgICAgIHJldHVybiB0
b0pTKGV4ZWMsIHdlYlNvY2tldCk7CisjZW5kaWYKKwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIHJldHVybiBqc051bGwoKTsKIH0KQEAgLTE4Myw2ICsxOTMsMTAgQEAgRXZlbnRUYXJn
ZXQqIHRvRXZlbnRUYXJnZXQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgIENPTlZFUlRfVE9fRVZF
TlRfVEFSR0VUKE5vdGlmaWNhdGlvbikKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRT
KQorICAgIENPTlZFUlRfVE9fRVZFTlRfVEFSR0VUKFdlYlNvY2tldCkKKyNlbmRpZgorCiAgICAg
cmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBi
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCAyZjEzZGE4Li42NTI2NDRmIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuY3BwCkBAIC04Myw2ICs4MywxMyBAQCBTVkdFbGVtZW50SW5zdGFuY2UqIEV2ZW50
VGFyZ2V0Ojp0b1NWR0VsZW1lbnRJbnN0YW5jZSgpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShX
RUJfU09DS0VUUykKK1dlYlNvY2tldCogRXZlbnRUYXJnZXQ6OnRvV2ViU29ja2V0KCkKK3sKKyAg
ICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiBNZXNzYWdlUG9ydCogRXZlbnRUYXJnZXQ6OnRvTWVz
c2FnZVBvcnQoKQogewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuaCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggNmQzY2I3Yy4uNmJj
YzNmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5oCkBAIC01MSw2ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIGNsYXNzIFNoYXJlZFdvcmtl
cjsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXJDb250ZXh0OworICAgIGNsYXNzIFdlYlNvY2tldDsK
ICAgICBjbGFzcyBXb3JrZXI7CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CiAgICAgY2xhc3Mg
WE1MSHR0cFJlcXVlc3RVcGxvYWQ7CkBAIC03NSwxMSArNzYsMTMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2aXJ0dWFsIFdvcmtlciogdG9Xb3JrZXIoKTsKICAgICAgICAgdmlydHVh
bCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB0b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKTsKICNl
bmRpZgotCiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogICAgICAgICB2aXJ0dWFsIFNoYXJl
ZFdvcmtlciogdG9TaGFyZWRXb3JrZXIoKTsKICAgICAgICAgdmlydHVhbCBTaGFyZWRXb3JrZXJD
b250ZXh0KiB0b1NoYXJlZFdvcmtlckNvbnRleHQoKTsKICNlbmRpZgorI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKKyAgICAgICAgdmlydHVhbCBXZWJTb2NrZXQqIHRvV2ViU29ja2V0KCk7CisjZW5k
aWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICB2aXJ0dWFsIE5vdGlmaWNh
dGlvbiogdG9Ob3RpZmljYXRpb24oKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggNmU1MjBlMy4uOGI3YzNh
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5pZGwKQEAgLTQ3Nyw2ICs0NzcsMTAgQEAgbW9kdWxlIHdpbmRvdyB7CiAg
ICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyXSBTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rv
ciBTaGFyZWRXb3JrZXI7IC8vIFVzYWJsZSB3aXRoIHRoZSBuZXcgb3BlcmF0b3IKICNlbmRpZgog
CisjaWYgZGVmaW5lZChFTkFCTEVfV0VCX1NPQ0tFVFMpICYmIEVOQUJMRV9XRUJfU09DS0VUUwor
ICAgICAgICBhdHRyaWJ1dGUgW0pTQ0N1c3RvbUdldHRlcl0gV2ViU29ja2V0Q29uc3RydWN0b3Ig
V2ViU29ja2V0OyAvLyBVc2FibGUgd2l0aCB0aGUgbmV3IG9wZXJhdG9yCisjZW5kaWYKKwogICAg
ICAgICBhdHRyaWJ1dGUgUGx1Z2luQ29uc3RydWN0b3IgUGx1Z2luOwogICAgICAgICBhdHRyaWJ1
dGUgUGx1Z2luQXJyYXlDb25zdHJ1Y3RvciBQbHVnaW5BcnJheTsKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcAppbmRleCA5OTljMWZmLi5iMzBhYmRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cApAQCAtMzQsMTMgKzM0LDMzIEBACiAKICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKIAorI2luY2x1
ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudC5o
IgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5o
IgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgor
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5o
IgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitzdGF0aWMgYm9vbCBpc1ZhbGlkUHJvdG9jb2xTdHJpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5n
JiBwcm90b2NvbCkKK3sKKyAgICBpZiAocHJvdG9jb2wuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBwcm90b2NvbC5jaGFyYWN0
ZXJzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm90b2NvbC5sZW5ndGgoKTsgaSsr
KSB7CisgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldIDwgMHgyMSB8fCBjaGFyYWN0ZXJzW2ldID4g
MHg3RSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIFdlYlNvY2tldDo6V2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fc3RhdGUo
Q09OTkVDVElORykKQEAgLTU5LDEwICs3OSwxMiBAQCB2b2lkIFdlYlNvY2tldDo6Y29ubmVjdChj
b25zdCBLVVJMJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiB2b2lkIFdlYlNvY2tldDo6Y29u
bmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNvbm5lY3QgdG8gJXMg
cHJvdG9jb2w9JXMiLCB0aGlzLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcHJvdG9jb2wu
dXRmOCgpLmRhdGEoKSk7CiAgICAgbV91cmwgPSB1cmw7CiAgICAgbV9wcm90b2NvbCA9IHByb3Rv
Y29sOwogCiAgICAgaWYgKCFtX3VybC5wcm90b2NvbElzKCJ3cyIpICYmICFtX3VybC5wcm90b2Nv
bElzKCJ3c3MiKSkgeworICAgICAgICBMT0dfRVJST1IoIkVycm9yOiB3cm9uZyB1cmwgZm9yIFdl
YlNvY2tldCAlcyIsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbV9zdGF0
ZSA9IENMT1NFRDsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47CkBA
IC03MiwyNiArOTQsMzkgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlJgogICAgICAgICBlYyA9IFNZ
TlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgLy8gRklYTUU6IENoZWNrIHBy
b3RvY29sIGlzIHZhbGlkIGZvcm0uCi0gICAgLy8gRklYTUU6IENvbm5lY3QgV2ViU29ja2V0Q2hh
bm5lbC4KKyAgICBpZiAoIWlzVmFsaWRQcm90b2NvbFN0cmluZyhwcm90b2NvbCkpIHsKKyAgICAg
ICAgTE9HX0VSUk9SKCJFcnJvcjogd3JvbmcgcHJvdG9jb2wgZm9yIFdlYlNvY2tldCAlcyIsIHBy
b3RvY29sLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOworICAgICAg
ICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gRklYTUU6
IGlmIG1fdXJsLnBvcnQoKSBpcyBibG9ja2luZyBwb3J0LCByYWlzZSBTRUNVUklUWV9FUlIuCisK
KyAgICBtX2NoYW5uZWwgPSBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCB0aGlzLCBtX3VybCwgbV9wcm90b2NvbCk7CisgICAgbV9jaGFubmVsLT5jb25u
ZWN0KCk7CiB9CiAKLWJvb2wgV2ViU29ja2V0OjpzZW5kKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlv
bkNvZGUmIGVjKQorYm9vbCBXZWJTb2NrZXQ6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAobV9zdGF0ZSAhPSBPUEVOKSB7CisgICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXQgJXAgc2VuZCAlcyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRh
dGEoKSk7CisgICAgaWYgKG1fc3RhdGUgPT0gQ09OTkVDVElORykgewogICAgICAgICBlYyA9IElO
VkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIC8vIEZJ
WE1FOiBzZW5kIG1lc3NhZ2Ugb24gV2ViU29ja2V0Q2hhbm5lbC4KLSAgICByZXR1cm4gZmFsc2U7
CisgICAgLy8gTm8gZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiB0aGUgY29ubmVjdGlvbiB3YXMgb25j
ZSBlc3RhYmxpc2hlZCBidXQgaGFzIHN1YnNlcXVlbnRseSBiZWVuIGNsb3NlZC4KKyAgICBpZiAo
bV9zdGF0ZSA9PSBDTE9TRUQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBGSVhNRTog
Y2hlY2sgbWVzc2FnZSBpcyB2YWxpZCB1dGY4LgorICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQo
bWVzc2FnZSk7CiB9CiAKIHZvaWQgV2ViU29ja2V0OjpjbG9zZSgpCiB7CisgICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXQgJXAgY2xvc2UiLCB0aGlzKTsKICAgICBpZiAobV9zdGF0ZSA9PSBDTE9T
RUQpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0YXRlID0gQ0xPU0VEOwotICAgIC8vIEZJWE1F
OiBjbG9zZSBXZWJTb2NrZXRDaGFubmVsLgorICAgIG1fY2hhbm5lbC0+Y2xvc2UoKTsKIH0KIAog
Y29uc3QgS1VSTCYgV2ViU29ja2V0Ojp1cmwoKSBjb25zdApAQCAtMTA2LDcgKzE0MSw4IEBAIFdl
YlNvY2tldDo6U3RhdGUgV2ViU29ja2V0OjpyZWFkeVN0YXRlKCkgY29uc3QKIAogdW5zaWduZWQg
bG9uZyBXZWJTb2NrZXQ6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTog
YXNrIHBsYXRmb3JtIGNvZGUgdG8gZ2V0IGJ1ZmZlcmVkIGFtb3VudCB0byBiZSBzZW50LgorICAg
IGlmIChtX3N0YXRlID09IE9QRU4pCisgICAgICAgIHJldHVybiBtX2NoYW5uZWwtPmJ1ZmZlcmVk
QW1vdW50KCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTExNSwyNCArMTUxLDU3IEBAIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIFdlYlNvY2tldDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OwogfQogCi12b2lkIFdlYlNvY2tldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sKQordm9pZCBXZWJTb2NrZXQ6OmFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lciwgYm9vbCkKIHsKLSAgICAvLyBGSVhNRTogaW1w
bGVtZW50IHRoaXMuCisgICAgRXZlbnRMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2V2
ZW50TGlzdGVuZXJzLmZpbmQoZXZlbnRUeXBlKTsKKyAgICBpZiAoaXRlciA9PSBtX2V2ZW50TGlz
dGVuZXJzLmVuZCgpKSB7CisgICAgICAgIExpc3RlbmVyVmVjdG9yIGxpc3RlbmVyczsKKyAgICAg
ICAgbGlzdGVuZXJzLmFwcGVuZChldmVudExpc3RlbmVyKTsKKyAgICAgICAgbV9ldmVudExpc3Rl
bmVycy5hZGQoZXZlbnRUeXBlLCBsaXN0ZW5lcnMpOworICAgIH0gZWxzZSB7CisgICAgICAgIExp
c3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMgPSBpdGVyLT5zZWNvbmQ7CisgICAgICAgIGZvciAoTGlz
dGVuZXJWZWN0b3I6Oml0ZXJhdG9yIGxpc3RlbmVySXRlciA9IGxpc3RlbmVycy5iZWdpbigpOyBs
aXN0ZW5lckl0ZXIgIT0gbGlzdGVuZXJzLmVuZCgpOyArK2xpc3RlbmVySXRlcikKKyAgICAgICAg
ICAgIGlmICgqbGlzdGVuZXJJdGVyID09IGV2ZW50TGlzdGVuZXIpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGxpc3RlbmVycy5hcHBlbmQoZXZlbnRMaXN0ZW5lcik7CisgICAg
ICAgIG1fZXZlbnRMaXN0ZW5lcnMuYWRkKGV2ZW50VHlwZSwgbGlzdGVuZXJzKTsKKyAgICB9CiB9
CiAKLXZvaWQgV2ViU29ja2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYsIEV2ZW50TGlzdGVuZXIqLCBib29sKQordm9pZCBXZWJTb2NrZXQ6OnJlbW92ZUV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGV2ZW50
TGlzdGVuZXIsIGJvb2wpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgorICAgIEV2
ZW50TGlzdGVuZXJzTWFwOjppdGVyYXRvciBpdGVyID0gbV9ldmVudExpc3RlbmVycy5maW5kKGV2
ZW50VHlwZSk7CisgICAgaWYgKGl0ZXIgPT0gbV9ldmVudExpc3RlbmVycy5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgTGlzdGVuZXJWZWN0b3ImIGxpc3RlbmVycyA9IGl0ZXItPnNlY29u
ZDsKKyAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjpjb25zdF9pdGVyYXRvciBsaXN0ZW5lckl0ZXIg
PSBsaXN0ZW5lcnMuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9IGxpc3RlbmVycy5lbmQoKTsgKyts
aXN0ZW5lckl0ZXIpCisgICAgICAgIGlmICgqbGlzdGVuZXJJdGVyID09IGV2ZW50TGlzdGVuZXIp
IHsKKyAgICAgICAgICAgIGxpc3RlbmVycy5yZW1vdmUobGlzdGVuZXJJdGVyIC0gbGlzdGVuZXJz
LmJlZ2luKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiB9CiAKLWJvb2wgV2Vi
U29ja2V0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBFeGNlcHRpb25Db2RlJikK
K2Jvb2wgV2ViU29ja2V0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2dCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgotICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWV2dCB8fCBldnQtPnR5cGUoKS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgZWMgPSBFdmVudEV4Y2VwdGlvbjo6VU5TUEVDSUZJRURfRVZFTlRfVFlQRV9FUlI7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIExpc3RlbmVyVmVjdG9yIGxpc3RlbmVy
c0NvcHkgPSBtX2V2ZW50TGlzdGVuZXJzLmdldChldnQtPnR5cGUoKSk7CisgICAgZm9yIChMaXN0
ZW5lclZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVuZXJzQ29weS5i
ZWdpbigpOyBsaXN0ZW5lckl0ZXIgIT0gbGlzdGVuZXJzQ29weS5lbmQoKTsgKytsaXN0ZW5lckl0
ZXIpIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2dC0+c2V0Q3Vy
cmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbGlzdGVuZXJJdGVyLT5nZXQoKS0+aGFuZGxlRXZl
bnQoZXZ0LmdldCgpLCBmYWxzZSk7CisgICAgfQorICAgIHJldHVybiAhZXZ0LT5kZWZhdWx0UHJl
dmVudGVkKCk7CiB9CiAKIHZvaWQgV2ViU29ja2V0OjpkaWRDb25uZWN0KCkKIHsKKyAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRDb25uZWN0IiwgdGhpcyk7CiAgICAgaWYgKG1fc3Rh
dGUgIT0gQ09OTkVDVElORykgewogICAgICAgICBkaWRDbG9zZSgpOwogICAgICAgICByZXR1cm47
CkBAIC0xNDMsNiArMjEyLDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZENvbm5lY3QoKQogCiB2b2lk
IFdlYlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtc2cpCiB7CisgICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkUmVjZWl2ZU1lc3NhZ2UgJXMiLCB0aGlzLCBt
c2cudXRmOCgpLmRhdGEoKSk7CiAgICAgaWYgKG1fc3RhdGUgIT0gT1BFTikKICAgICAgICAgcmV0
dXJuOwogICAgIGRpc3BhdGNoTWVzc2FnZUV2ZW50KG1zZyk7CkBAIC0xNTAsMjMgKzIyMCw1MyBA
QCB2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtc2cpCiAK
IHZvaWQgV2ViU29ja2V0OjpkaWRDbG9zZSgpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2Nr
ZXQgJXAgZGlkQ2xvc2UiLCB0aGlzKTsKICAgICBtX3N0YXRlID0gQ0xPU0VEOwogICAgIGRpc3Bh
dGNoQ2xvc2VFdmVudCgpOwogfQogCiB2b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hPcGVuRXZlbnQo
KQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBSZWZQdHI8RXZlbnQ+IGV2
dCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm9wZW5FdmVudCwgZmFsc2UsIGZhbHNlKTsK
KyAgICBpZiAobV9vbm9wZW4pIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAg
ICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbm9wZW4tPmhhbmRs
ZUV2ZW50KGV2dC5nZXQoKSwgZmFsc2UpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZ0LnJlbGVhc2UoKSwgZWMpOworICAgIEFTU0VSVCgh
ZWMpOwogfQogCi12b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQoY29uc3QgU3Ry
aW5nJikKK3ZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcm
IG1zZykKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisgICAgUmVmUHRyPE1lc3Nh
Z2VFdmVudD4gZXZ0ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoKTsKKyAgICAvLyBGSVhNRTogb3Jp
Z2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCBtZXNzYWdlUG9ydC4KKyAgICBldnQtPmluaXRNZXNz
YWdlRXZlbnQoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCwgZmFsc2UsIGZhbHNlLCBtc2csICIi
LCAiIiwgMCwgMCk7CisgICAgaWYgKG1fb25tZXNzYWdlKSB7CisgICAgICAgIGV2dC0+c2V0VGFy
Z2V0KHRoaXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAg
IG1fb25tZXNzYWdlLT5oYW5kbGVFdmVudChldnQuZ2V0KCksIGZhbHNlKTsKKyAgICB9CisKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNlKCks
IGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKIH0KIAogdm9pZCBXZWJTb2NrZXQ6OmRpc3BhdGNoQ2xv
c2VFdmVudCgpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgorICAgIFJlZlB0cjxF
dmVudD4gZXZ0ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgZmFsc2Us
IGZhbHNlKTsKKyAgICBpZiAobV9vbmNsb3NlKSB7CisgICAgICAgIGV2dC0+c2V0VGFyZ2V0KHRo
aXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fb25j
bG9zZS0+aGFuZGxlRXZlbnQoZXZ0LmdldCgpLCBmYWxzZSk7CisgICAgfQorCisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBlYyk7Cisg
ICAgQVNTRVJUKCFlYyk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmgKaW5kZXggNDg1ZTJjYy4uNmFiNzg1NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldC5oCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApA
QCAtMzEsOTMgKzMxLDEwNCBAQAogI2lmbmRlZiBXZWJTb2NrZXRfaAogI2RlZmluZSBXZWJTb2Nr
ZXRfaAogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgIkV2ZW50TGlz
dGVuZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU3RyaW5nOworICAgIGNsYXNzIFN0cmluZzsKKyAgICBjbGFzcyBXZWJTb2NrZXRDaGFu
bmVsOwogCi1jbGFzcyBXZWJTb2NrZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTb2NrZXQ+LCBw
dWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewotcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpOyB9
Ci0gICAgdmlydHVhbCB+V2ViU29ja2V0KCk7CisgICAgY2xhc3MgV2ViU29ja2V0IDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZl
RE9NT2JqZWN0LCBwdWJsaWMgV2ViU29ja2V0Q2hhbm5lbENsaWVudCB7CisgICAgcHVibGljOgor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2ViU29ja2V0KGNvbnRl
eHQpKTsgfQorICAgICAgICB2aXJ0dWFsIH5XZWJTb2NrZXQoKTsKIAotICAgIGVudW0gU3RhdGUg
ewotICAgICAgICBDT05ORUNUSU5HID0gMCwKLSAgICAgICAgT1BFTiA9IDEsCi0gICAgICAgIENM
T1NFRCA9IDIKLSAgICB9OworICAgICAgICBlbnVtIFN0YXRlIHsKKyAgICAgICAgICAgIENPTk5F
Q1RJTkcgPSAwLAorICAgICAgICAgICAgT1BFTiA9IDEsCisgICAgICAgICAgICBDTE9TRUQgPSAy
CisgICAgICAgIH07CiAKLSAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3Qg
S1VSTCYgdXJsLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAg
IGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAg
ICAgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0g
ICAgdm9pZCBjbG9zZSgpOworICAgICAgICB2b2lkIGNsb3NlKCk7CiAKLSAgICBjb25zdCBLVVJM
JiB1cmwoKSBjb25zdDsKLSAgICBTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7Ci0gICAgdW5zaWdu
ZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0OworICAgICAgICBjb25zdCBLVVJMJiB1cmwo
KSBjb25zdDsKKyAgICAgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OworICAgICAgICB1bnNp
Z25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldE9ub3BlbihQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbm9wZW4gPSBldmVu
dExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25vcGVuKCkgY29uc3QgeyByZXR1cm4g
bV9vbm9wZW4uZ2V0KCk7IH0KLSAgICB2b2lkIHNldE9ubWVzc2FnZShQYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbm1lc3NhZ2UgPSBldmVudExpc3RlbmVyOyB9
Ci0gICAgRXZlbnRMaXN0ZW5lciogb25tZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9vbm1lc3Nh
Z2UuZ2V0KCk7IH0KLSAgICB2b2lkIHNldE9uY2xvc2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiBldmVudExpc3RlbmVyKSB7IG1fb25jbG9zZSA9IGV2ZW50TGlzdGVuZXI7IH0KLSAgICBFdmVu
dExpc3RlbmVyKiBvbmNsb3NlKCkgY29uc3QgeyByZXR1cm4gbV9vbmNsb3NlLmdldCgpOyB9Cisg
ICAgICAgIHZvaWQgc2V0T25vcGVuKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0
ZW5lcikgeyBtX29ub3BlbiA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5l
ciogb25vcGVuKCkgY29uc3QgeyByZXR1cm4gbV9vbm9wZW4uZ2V0KCk7IH0KKyAgICAgICAgdm9p
ZCBzZXRPbm1lc3NhZ2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7
IG1fb25tZXNzYWdlID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgICAgICBFdmVudExpc3RlbmVyKiBv
bm1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX29ubWVzc2FnZS5nZXQoKTsgfQorICAgICAgICB2
b2lkIHNldE9uY2xvc2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7
IG1fb25jbG9zZSA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25j
bG9zZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25jbG9zZS5nZXQoKTsgfQogCi0gICAgLy8gRXZlbnRU
YXJnZXQKLSAgICB2aXJ0dWFsIFdlYlNvY2tldCogdG9XZWJTb2NrZXQoKSB7IHJldHVybiB0aGlz
OyB9CisgICAgICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgICAgIHZpcnR1YWwgV2ViU29ja2V0KiB0
b1dlYlNvY2tldCgpIHsgcmV0dXJuIHRoaXM7IH0KIAotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAgICAgICB2aXJ0
dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUp
OwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsKLSAgICB2aXJ0
dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYp
OworICAgICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gPiBMaXN0ZW5l
clZlY3RvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgTGlzdGVuZXJW
ZWN0b3I+IEV2ZW50TGlzdGVuZXJzTWFwOwogCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0Ci0gICAg
Ly8gdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwotICAgIC8vIHZpcnR1
YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7Ci0gICAgLy8gdmlydHVhbCBib29sIGNhblN1c3Bl
bmQoKSBjb25zdDsKLSAgICAvLyB2aXJ0dWFsIHZvaWQgc3VzcGVuZCgpOwotICAgIC8vIHZpcnR1
YWwgdm9pZCByZXN1bWUoKTsKLSAgICAvLyB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOworICAgICAgICB2aXJ0dWFs
IGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgICAgICBFdmVudExpc3RlbmVyc01hcCYgZXZlbnRMaXN0ZW5lcnMoKSB7IHJldHVybiBtX2V2
ZW50TGlzdGVuZXJzOyB9CiAKLSAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldD46OnJlZjsK
LSAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldD46OmRlcmVmOworICAgICAgICAvLyBBY3Rp
dmVET01PYmplY3QKKyAgICAgICAgLy8gIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdDsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKKyAg
ICAgICAgLy8gdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKKyAgICAgICAgLy8gdmly
dHVhbCB2b2lkIHN1c3BlbmQoKTsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lkIHJlc3VtZSgpOwor
ICAgICAgICAvLyB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogCi1wcml2YXRlOgotICAgIFdlYlNvY2tl
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2Vi
U29ja2V0Pjo6cmVmOworICAgICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldD46OmRlcmVm
OwogCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAgICAgIC8vIFdl
YlNvY2tldENoYW5uZWxDbGllbnQKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENvbm5lY3QoKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNn
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKCk7CiAKLSAgICAvLyBXZWJTb2NrZXRD
aGFubmVsQ2xpZW50Ci0gICAgdm9pZCBkaWRDb25uZWN0KCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZyk7Ci0gICAgdm9pZCBkaWRDbG9zZSgpOworICAgIHBy
aXZhdGU6CisgICAgICAgIFdlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAg
ICB2b2lkIGRpc3BhdGNoT3BlbkV2ZW50KCk7Ci0gICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VFdmVu
dChjb25zdCBTdHJpbmcmIG1zZyk7Ci0gICAgdm9pZCBkaXNwYXRjaENsb3NlRXZlbnQoKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgICAgICB2
aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQogCi0gICAgLy8gRklY
TUU6IGFkZCBXZWJTb2NrZXRDaGFubmVsLgorICAgICAgICB2b2lkIGRpc3BhdGNoT3BlbkV2ZW50
KCk7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBtc2cp
OworICAgICAgICB2b2lkIGRpc3BhdGNoQ2xvc2VFdmVudCgpOwogCi0gICAgUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IG1fb25vcGVuOwotICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ubWVzc2Fn
ZTsKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbmNsb3NlOworICAgICAgICBSZWZQdHI8
V2ViU29ja2V0Q2hhbm5lbD4gbV9jaGFubmVsOwogCi0gICAgU3RhdGUgbV9zdGF0ZTsKLSAgICBL
VVJMIG1fdXJsOwotICAgIFN0cmluZyBtX3Byb3RvY29sOwotfTsKKyAgICAgICAgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IG1fb25vcGVuOworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9v
bm1lc3NhZ2U7CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29uY2xvc2U7CisgICAg
ICAgIEV2ZW50TGlzdGVuZXJzTWFwIG1fZXZlbnRMaXN0ZW5lcnM7CisKKyAgICAgICAgU3RhdGUg
bV9zdGF0ZTsKKyAgICAgICAgS1VSTCBtX3VybDsKKyAgICAgICAgU3RyaW5nIG1fcHJvdG9jb2w7
CisgICAgfTsKIAogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmICAvLyBFTkFCTEUo
V0VCX1NPQ0tFVFMpCisKICNlbmRpZiAgLy8gV2ViU29ja2V0X2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43
NDE5YzY2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwCkBAIC0wLDAgKzEsMjY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKKworI2lu
Y2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIK
KyNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVu
dC5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dl
YlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAs
IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1faGFuZHNoYWtlKFdlYlNvY2tldEhhbmRzaGFrZSh1
cmwsIHByb3RvY29sLCBjb250ZXh0KSkKKyAgICAsIG1fYnVmZmVyKDApCisgICAgLCBtX2J1ZmZl
clNpemUoMCkKKyAgICAsIG1fdW5oYW5kbGVkQnVmZmVyU2l6ZSgwKQoreworfQorCitXZWJTb2Nr
ZXRDaGFubmVsOjp+V2ViU29ja2V0Q2hhbm5lbCgpCit7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6Y29ubmVjdCgpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVw
IGNvbm5lY3QiLCB0aGlzKTsKKyAgICBBU1NFUlQoIW1faGFuZGxlLmdldCgpKTsKKyAgICBtX2hh
bmRzaGFrZS5yZXNldCgpOworICAgIG1faGFuZGxlID0gU29ja2V0U3RyZWFtSGFuZGxlOjpjcmVh
dGUobV9oYW5kc2hha2UudXJsKCksIHRoaXMpOworfQorCitib29sIFdlYlNvY2tldENoYW5uZWw6
OnNlbmQoY29uc3QgU3RyaW5nJiBtc2cpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIHNlbmQgJXMiLCB0aGlzLCBtc2cudXRmOCgpLmRhdGEoKSk7CisgICAgVmVjdG9y
PGNoYXI+IGJ1ZjsKKyAgICBidWYuYXBwZW5kKCdcMCcpOyAgLy8gZnJhbWUgdHlwZQorICAgIGJ1
Zi5hcHBlbmQobXNnLnV0ZjgoKS5kYXRhKCksIG1zZy51dGY4KCkubGVuZ3RoKCkpOworICAgIGJ1
Zi5hcHBlbmQoJ1x4ZmYnKTsgIC8vIGZyYW1lIGVuZAorICAgIGlmICghbV9oYW5kbGUuZ2V0KCkp
IHsKKyAgICAgICAgbV91bmhhbmRsZWRCdWZmZXJTaXplICs9IGJ1Zi5zaXplKCk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIG1faGFuZGxlLT5zZW5kKGJ1Zi5kYXRh
KCksIGJ1Zi5zaXplKCkpOworfQorCit1bnNpZ25lZCBsb25nIFdlYlNvY2tldENoYW5uZWw6OmJ1
ZmZlcmVkQW1vdW50KCkgY29uc3QKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5u
ZWwgJXAgYnVmZmVyZWRBbW91bnQiLCB0aGlzKTsKKyAgICBpZiAoIW1faGFuZGxlLmdldCgpKQor
ICAgICAgICByZXR1cm4gbV91bmhhbmRsZWRCdWZmZXJTaXplOworICAgIHJldHVybiBtX2hhbmRs
ZS0+YnVmZmVyZWRBbW91bnQoKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjbG9zZSgp
Cit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNsb3NlIiwgdGhpcyk7
CisgICAgaWYgKG1faGFuZGxlLmdldCgpKQorICAgICAgICBtX2hhbmRsZS0+Y2xvc2UoKTsgIC8v
IHdpbGwgY2FsbCBkaWRDbG9zZSgpCit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6d2lsbE9w
ZW5TdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgS1VSTCYpCit7Cit9CisKK3ZvaWQg
V2ViU29ja2V0Q2hhbm5lbDo6d2lsbFNlbmREYXRhKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0
IGNoYXIqLCBpbnQpCit7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkT3BlbihTb2Nr
ZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENo
YW5uZWwgJXAgZGlkT3BlbiIsIHRoaXMpOworICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5kbGUu
Z2V0KCkpOworICAgIGNvbnN0IENTdHJpbmcmIGhhbmRzaGFrZU1lc3NhZ2UgPSBtX2hhbmRzaGFr
ZS5jbGllbnRIYW5kc2hha2VNZXNzYWdlKCk7CisgICAgaGFuZGxlLT5zZW5kKGhhbmRzaGFrZU1l
c3NhZ2UuZGF0YSgpLCBoYW5kc2hha2VNZXNzYWdlLmxlbmd0aCgpKTsKK30KKwordm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpkaWRDbG9zZShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKK3sKKyAg
ICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkQ2xvc2UiLCB0aGlzKTsKKyAg
ICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdldCgpIHx8ICFtX2hhbmRsZS5nZXQoKSk7Cisg
ICAgaWYgKCFtX2hhbmRsZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fdW5oYW5kbGVk
QnVmZmVyU2l6ZSA9IGhhbmRsZS0+YnVmZmVyZWRBbW91bnQoKTsKKyAgICBXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50KiBjbGllbnQgPSBtX2NsaWVudDsKKyAgICBtX2NsaWVudCA9IDA7CisgICAgbV9o
YW5kbGUgPSAwOworICAgIGNsaWVudC0+ZGlkQ2xvc2UoKTsKK30KKwordm9pZCBXZWJTb2NrZXRD
aGFubmVsOjpkaWRSZWNlaXZlRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbikKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5u
ZWwgJXAgZGlkUmVjZWl2ZURhdGEgJWQiLCB0aGlzLCBsZW4pOworICAgIEFTU0VSVChoYW5kbGUg
PT0gbV9oYW5kbGUuZ2V0KCkpOworICAgIGlmICghYXBwZW5kVG9CdWZmZXIoZGF0YSwgbGVuKSkg
eworICAgICAgICBkaWRDbG9zZShoYW5kbGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmIChtX2hhbmRzaGFrZS5tb2RlKCkgIT0gV2ViU29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQp
IHsKKyAgICAgICAgaWYgKCFtX2hhbmRzaGFrZS5yZWFkU2VydmVySGFuZHNoYWtlKG1fYnVmZmVy
LmdldCgpLCBtX2J1ZmZlclNpemUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzd2l0
Y2ggKG1faGFuZHNoYWtlLm1vZGUoKSkgeworICAgICAgICBjYXNlIFdlYlNvY2tldEhhbmRzaGFr
ZTo6Q29ubmVjdGVkOgorICAgICAgICAgICAgLy8gRklYTUU6IGlmIHNldENvb2tpZSBvciBzZXRD
b29raWUyIGV4aXN0cywgc3RvcmUgaW4gQ29va2llSmFyLgorICAgICAgICAgICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNvbm5lY3RlZCIsIHRoaXMpOworICAgICAgICAgICAg
bV9jbGllbnQtPmRpZENvbm5lY3QoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFdlYlNvY2tldEhhbmRzaGFrZTo6UmVkaXJlY3Q6CisgICAgICAgICAgICBMT0coTmV0d29yaywg
IlJlZGlyZWN0IHRvICVzIiwgbV9oYW5kc2hha2UucmVkaXJlY3RMb2NhdGlvbigpLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICAgICAgcmVkaXJlY3QobV9oYW5kc2hha2UucmVkaXJlY3RMb2NhdGlv
bigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBXZWJTb2NrZXRIYW5kc2hh
a2U6OkF1dGhlbnRpY2F0ZToKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZShtX2hhbmRzaGFrZS53
d3dBdXRoZW50aWNhdGUoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVjdGlv
biBmYWlsZWQiLCB0aGlzKTsKKyAgICAgICAgICAgIGRpZENsb3NlKGhhbmRsZSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc2tpcEJ1ZmZlcihtX2hhbmRzaGFrZS5z
ZXJ2ZXJIYW5kc2hha2VMZW5ndGgoKSk7CisgICAgICAgIGlmICghbV9idWZmZXIuZ2V0KCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIExPRyhOZXR3b3JrLCAicmVtYWluaW5nIGluIHJl
YWQgYnVmICV1bCIsIG1fYnVmZmVyU2l6ZSk7CisgICAgfQorCisgICAgY29uc3QgY2hhciogbmV4
dEZyYW1lID0gbV9idWZmZXIuZ2V0KCk7CisgICAgY29uc3QgY2hhciogcCA9IG1fYnVmZmVyLmdl
dCgpOworICAgIGNvbnN0IGNoYXIqIGVuZCA9IHAgKyBtX2J1ZmZlclNpemU7CisgICAgd2hpbGUg
KHAgPCBlbmQpIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBmcmFtZUJ5dGUgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyPigqcCsrKTsKKyAgICAgICAgaWYgKChmcmFtZUJ5dGUgJiAweDgwKSA9
PSAweDgwKSB7CisgICAgICAgICAgICBpbnQgbGVuZ3RoID0gMDsKKyAgICAgICAgICAgIHdoaWxl
IChwIDwgZW5kICYmICgqcCAmIDB4ODApID09IDB4ODApIHsKKyAgICAgICAgICAgICAgICBpZiAo
bGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSAvIDEyOCkgeworICAgICAg
ICAgICAgICAgICAgICBMT0coTmV0d29yaywgImZyYW1lIGxlbmd0aCBvdmVyZmxvdyAlZCIsIGxl
bmd0aCk7CisgICAgICAgICAgICAgICAgICAgIGRpZENsb3NlKGhhbmRsZSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbGVu
Z3RoID0gbGVuZ3RoICogMTI3ICsgKnAgJiAweDdmOworICAgICAgICAgICAgICAgICsrcDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwICsgbGVuZ3RoIDwgZW5kKSB7CisgICAgICAg
ICAgICAgICAgcCArPSBsZW5ndGg7CisgICAgICAgICAgICAgICAgbmV4dEZyYW1lID0gcDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1z
Z1N0YXJ0ID0gcDsKKyAgICAgICAgICAgIHdoaWxlIChwIDwgZW5kICYmICpwICE9ICdceGZmJykK
KyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICBpZiAocCA8IGVuZCAmJiAqcCA9PSAn
XHhmZicpIHsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWVCeXRlID09IDB4MDApCisgICAgICAg
ICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZShTdHJpbmc6OmZyb21VVEY4
KG1zZ1N0YXJ0LCBwIC0gbXNnU3RhcnQpKTsKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAg
ICAgICAgICAgbmV4dEZyYW1lID0gcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KyAgICBza2lwQnVmZmVyKG5leHRGcmFtZSAtIG1fYnVmZmVyLmdldCgpKTsKK30KKwordm9pZCBX
ZWJTb2NrZXRDaGFubmVsOjpkaWRGYWlsKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlLCBjb25z
dCBTb2NrZXRTdHJlYW1FcnJvciYpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFu
bmVsICVwIGRpZEZhaWwiLCB0aGlzKTsKKyAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdl
dCgpIHx8ICFtX2hhbmRsZS5nZXQoKSk7CisgICAgZGlkQ2xvc2UoaGFuZGxlKTsKK30KKwordm9p
ZCBXZWJTb2NrZXRDaGFubmVsOjpyZWRpcmVjdChjb25zdCBTdHJpbmcmIGxvY2F0aW9uKQorewor
ICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCByZWRpcmVjdCB0byAlcyIsIHRo
aXMsIGxvY2F0aW9uLnV0ZjgoKS5kYXRhKCkpOworICAgIG1faGFuZGxlLnJlc2V0KCk7CisgICAg
bV9oYW5kc2hha2Uuc2V0VVJMKEtVUkwobG9jYXRpb24pKTsKKyAgICBjb25uZWN0KCk7Cit9CisK
K3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6YXV0aGVudGljYXRlKGNvbnN0IFN0cmluZyYgLyogd3d3
QXV0aGVudGljYXRlICovKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICAv
LyBPYnRhaW4gY3JlZGVudGlhbHMgZm9yIGhhbmRsaW5nIHd3d0F1dGhlbnRpY2F0ZS4KKyAgICAv
LyAgIHd3d0F1dGhlbnRpY2F0ZSA9IGNoYWxsZW5nZQorICAgIC8vICAgY2hhbGxlbmdlID0gYXV0
aC1zY2hlbWUgMSpTUCByZWFsbSAqKCAiLCIgYXV0aC1wYXJhbSApCisgICAgLy8gICBhdXRoLXNj
aGVtZSA9IHRva2VuCisgICAgLy8gICBhdXRoLXBhcmFtID0gdG9rZW4gIj0iIHF1b3RlZC1zdHJp
bmcKKyAgICAvLyAgIHJlYWxtID0gInJlYWxtIiAiPSIgcmVhbS12YWx1ZQorICAgIC8vICAgcmVh
bG0tdmFsdWUgPSBxdW90ZWQtc3RyaW5nCisgICAgLy8gICBjcmVkZW50aWFscyA9IGJhc2ljLWNy
ZWRlbnRpYWxzCisgICAgLy8gICAgICAgICAgICAgICB8ICggYXV0aC1zY2hlbWUgI2F1dGgtcGFy
YW0gKQorICAgIC8vICAgYmFzaWMtY3JlZGVudGlhbHMgPSAiQmFzaWMiIFNQIGJhc2ljLWNvb2tp
ZQorICAgIC8vICAgYmFzaWMtY29va2llID0gPGJhc2U2NCBlbmRvZGluZyBvZiB1c2VyaWQtcGFz
c3dvcmQsIGV4Y2VwdCBub3QgbGltaXRlZCB0byA3NiBjaGFyL2xpbmU+CisgICAgLy8gICB1c2Vy
aWQtcGFzc3dvcmQgPSBbIHRva2VuIF0gIjoiICpURVhUCisgICAgLy8gSWYgZXhpc3RzLCBzZXQg
aXQgdG8gdGhlIG1faGFuZHNoYWtlLiAgT3RoZXJ3aXNlLCBkaWRGYWlsLgorICAgIC8vIElmIHdl
IGFscmVhZHkgdHJpZWQgdGhlIHNhbWUgY3JlZGVudGlhbHMsIGRpZEZhaWwuCisgICAgLy8gQ2xv
c2UgdGhlIGNvbm5lY3Rpb24gYnkgbV9oYW5kbGUucmVzZXQoKS4KKyAgICAvLyBjb25uZWN0KCku
CisgICAgZGlkQ2xvc2UobV9oYW5kbGUuZ2V0KCkpOworfQorCitib29sIFdlYlNvY2tldENoYW5u
ZWw6OmFwcGVuZFRvQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pCit7CisgICAgY2hh
ciogbmV3QnVmZmVyID0gMDsKKyAgICBpZiAodHJ5RmFzdE1hbGxvYyhtX2J1ZmZlclNpemUgKyBs
ZW4pLmdldFZhbHVlKG5ld0J1ZmZlcikpIHsKKyAgICAgICAgaWYgKG1fYnVmZmVyLmdldCgpKQor
ICAgICAgICAgICAgbWVtY3B5KG5ld0J1ZmZlciwgbV9idWZmZXIuZ2V0KCksIG1fYnVmZmVyU2l6
ZSk7CisgICAgICAgIG1lbWNweShuZXdCdWZmZXIgKyBtX2J1ZmZlclNpemUsIGRhdGEsIGxlbik7
CisgICAgICAgIG1fYnVmZmVyLnNldChuZXdCdWZmZXIpOworICAgICAgICBtX2J1ZmZlclNpemUg
Kz0gbGVuOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgTE9HKE5ldHdvcmssICJU
b28gbG9uZyBXZWJTb2NrZXQgZnJhbWUgJWQiLCBtX2J1ZmZlclNpemUgKyBsZW4pOworICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpza2lwQnVmZmVyKGludCBs
ZW4pCit7CisgICAgQVNTRVJUKGxlbiA8PSBtX2J1ZmZlclNpemUpOworICAgIG1fYnVmZmVyU2l6
ZSAtPSBsZW47CisgICAgaWYgKCFtX2J1ZmZlclNpemUpIHsKKyAgICAgICAgbV9idWZmZXIuc2V0
KDApOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1lbW1vdmUobV9idWZmZXIuZ2V0KCks
IG1fYnVmZmVyLmdldCgpICsgbGVuLCBtX2J1ZmZlclNpemUpOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjNmZjJkMWIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTb2NrZXRDaGFubmVsX2gKKyNk
ZWZpbmUgV2ViU29ja2V0Q2hhbm5lbF9oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNp
bmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRI
YW5kc2hha2UuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKKyAgICBjbGFzcyBTdHJpbmc7CisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFu
ZGxlOworICAgIGNsYXNzIFNvY2tldFN0cmVhbUVycm9yOworICAgIGNsYXNzIFdlYlNvY2tldENo
YW5uZWxDbGllbnQ7CisKKyAgICBjbGFzcyBXZWJTb2NrZXRDaGFubmVsIDogcHVibGljIFJlZkNv
dW50ZWQ8V2ViU29ja2V0Q2hhbm5lbD4sIHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQg
eworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0Q2hhbm5l
bD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYlNvY2tldENoYW5u
ZWxDbGllbnQqIGNsaWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29s
KSB7IHJldHVybiBuZXcgV2ViU29ja2V0Q2hhbm5lbChjb250ZXh0LCBjbGllbnQsIHVybCwgcHJv
dG9jb2wpOyB9CisgICAgICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWwoKTsKKworICAgICAg
ICB2aXJ0dWFsIHZvaWQgY29ubmVjdCgpOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNv
bnN0IFN0cmluZyYgbXNnKTsKKyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVk
QW1vdW50KCkgY29uc3Q7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCk7CisKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHdpbGxPcGVuU3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0
IEtVUkwmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kRGF0YShTb2NrZXRTdHJlYW1I
YW5kbGUqLCBjb25zdCBjaGFyKiwgaW50KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZE9wZW4o
U29ja2V0U3RyZWFtSGFuZGxlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShTb2Nr
ZXRTdHJlYW1IYW5kbGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFNv
Y2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYp
OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmKTsKKworICAgICAgICB2b2lkIHJlZGlyZWN0KGNvbnN0IFN0cmluZyYgbG9jYXRpb24p
OworICAgICAgICB2b2lkIGF1dGhlbnRpY2F0ZShjb25zdCBTdHJpbmcmIHd3d0F1dGhlbnRpY2F0
ZSk7CisKKyAgICAgICAgYm9vbCBhcHBlbmRUb0J1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuKTsKKyAgICAgICAgdm9pZCBza2lwQnVmZmVyKGludCBsZW4pOworCisgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbENs
aWVudCogbV9jbGllbnQ7CisgICAgICAgIFdlYlNvY2tldEhhbmRzaGFrZSBtX2hhbmRzaGFrZTsK
KyAgICAgICAgUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gbV9oYW5kbGU7CisgICAgICAgIE93
blB0cjxjaGFyPiBtX2J1ZmZlcjsKKyAgICAgICAgaW50IG1fYnVmZmVyU2l6ZTsKKyAgICAgICAg
dW5zaWduZWQgbG9uZyBtX3VuaGFuZGxlZEJ1ZmZlclNpemU7CisgICAgfTsKKworfSAgLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRp
ZiAgLy8gV2ViU29ja2V0Q2hhbm5lbF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWxDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjNjYWRh
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxD
bGllbnQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0Q2hhbm5lbENsaWVudF9o
CisjZGVmaW5lIFdlYlNvY2tldENoYW5uZWxDbGllbnRfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NL
RVRTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBXZWJTb2NrZXRDaGFubmVs
Q2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWxD
bGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENvbm5lY3QoKSB7IH0KKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYpIHsgfQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoKSB7IH0KKworICAgIHByb3RlY3RlZDoKKyAgICAg
ICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCgpIHsgfQorICAgIH07CisKK30gIC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYgIC8v
IFdlYlNvY2tldENoYW5uZWxDbGllbnRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmIwM2FjCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5j
cHAKQEAgLTAsMCArMSw1MTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdF
Ql9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlLmgiCisKKyNpbmNsdWRl
ICJBdG9taWNTdHJpbmcuaCIKKyNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCisjaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTdHJpbmdC
dWlsZGVyLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NvbnN0IGNoYXIgd2ViU29ja2V0U2VydmVySGFuZHNoYWtlSGVhZGVyW10gPSAiSFRUUC8x
LjEgMTAxIFdlYiBTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbiI7Citjb25zdCBjaGFyIHdl
YlNvY2tldFVwZ3JhZGVIZWFkZXJbXSA9ICJVcGdyYWRlOiBXZWJTb2NrZXRcclxuIgorICAgICAg
ICAiQ29ubmVjdGlvbjogVXBncmFkZVxyXG4iOworCitzdGF0aWMgU3RyaW5nIGV4dHJhY3RSZXNw
b25zZUNvZGUoY29uc3QgY2hhciogaGVhZGVyLCBpbnQgbGVuKQoreworICAgIGNvbnN0IGNoYXIq
IHNwYWNlMSA9IDA7CisgICAgY29uc3QgY2hhciogc3BhY2UyID0gMDsKKyAgICBjb25zdCBjaGFy
KiBwOworICAgIGZvciAocCA9IGhlYWRlcjsgcCAtIGhlYWRlciA8IGxlbjsgcCsrKSB7CisgICAg
ICAgIGlmICgqcCA9PSAnICcpIHsKKyAgICAgICAgICAgIGlmICghc3BhY2UxKQorICAgICAgICAg
ICAgICAgIHNwYWNlMSA9IHA7CisgICAgICAgICAgICBlbHNlIGlmICghc3BhY2UyKQorICAgICAg
ICAgICAgICAgIHNwYWNlMiA9IHA7CisgICAgICAgIH0gZWxzZSBpZiAoKnAgPT0gJ1xuJykKKyAg
ICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAocCAtIGhlYWRlciA9PSBsZW4pCisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBpZiAoIXNwYWNlMSB8fCAhc3BhY2UyKQorICAgICAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIFN0cmluZyhzcGFjZTEgKyAxLCBzcGFjZTIgLSBzcGFj
ZTEgLSAxKTsKK30KKworc3RhdGljIGJvb2wgaGFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIq
IHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpCit7CisgICAgZm9yIChjb25zdCBjaGFyKiBwID0gc3Rh
cnQ7IHAgJiYgcCA8IGVuZDsgcCsrKSB7CisgICAgICAgIHAgPSBzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4obWVtY2hyKHAsICdccicsIGVuZCAtIHApKTsKKyAgICAgICAgaWYgKCFwKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChwICsgMyA8IGVuZCAmJiAqKHAgKyAx
KSA9PSAnXG4nICYmICoocCArIDIpID09ICdccicgJiYgKihwICsgMykgPT0gJ1xuJykKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1dlYlNv
Y2tldEhhbmRzaGFrZTo6V2ViU29ja2V0SGFuZHNoYWtlKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6
IG1fdXJsKHVybCkKKyAgICAsIG1fY2xpZW50UHJvdG9jb2wocHJvdG9jb2wpCisgICAgLCBtX3Nl
Y3VyZShtX3VybC5wcm90b2NvbElzKCJ3c3MiKSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQor
ICAgICwgbV9zZXJ2ZXJIYW5kc2hha2VMZW5ndGgoMCkKKyAgICAsIG1fbW9kZShJbmNvbXBsZXRl
KQoreworfQorCitXZWJTb2NrZXRIYW5kc2hha2U6On5XZWJTb2NrZXRIYW5kc2hha2UoKQorewor
fQorCitjb25zdCBLVVJMJiBXZWJTb2NrZXRIYW5kc2hha2U6OnVybCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fdXJsOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0VVJMKGNvbnN0
IEtVUkwmIHVybCkKK3sKKyAgICBtX3VybCA9IHVybC5jb3B5KCk7Cit9CisKK2NvbnN0IFN0cmlu
ZyBXZWJTb2NrZXRIYW5kc2hha2U6Omhvc3QoKSBjb25zdAoreworICAgIHJldHVybiBtX3VybC5o
b3N0KCkubG93ZXIoKTsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OmNs
aWVudFByb3RvY29sKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnRQcm90b2NvbDsKK30K
Kwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldENsaWVudFByb3RvY29sKGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wpCit7CisgICAgbV9jbGllbnRQcm90b2NvbCA9IHByb3RvY29sOworfQorCiti
b29sIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VjdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9z
ZWN1cmU7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZWN1cmUoYm9vbCBzZWN1
cmUpCit7CisgICAgbV9zZWN1cmUgPSBzZWN1cmU7Cit9CisKK1N0cmluZyBXZWJTb2NrZXRIYW5k
c2hha2U6OmNsaWVudE9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dC0+c2Vj
dXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFr
ZTo6Y2xpZW50TG9jYXRpb24oKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
KyAgICBidWlsZGVyLmFwcGVuZChtX3NlY3VyZSA/ICJ3c3MiIDogIndzIik7CisgICAgYnVpbGRl
ci5hcHBlbmQoIjovLyIpOworICAgIGJ1aWxkZXIuYXBwZW5kKGhvc3QoKSk7CisgICAgaWYgKG1f
dXJsLnBvcnQoKSkgeworICAgICAgICBpZiAoKCFtX3NlY3VyZSAmJiBtX3VybC5wb3J0KCkgIT0g
ODEpIHx8IChtX3NlY3VyZSAmJiBtX3VybC5wb3J0KCkgIT0gODE1KSkgeworICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoIjoiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6
bnVtYmVyKG1fdXJsLnBvcnQoKSkpOworICAgICAgICB9CisgICAgfQorICAgIGJ1aWxkZXIuYXBw
ZW5kKG1fdXJsLnBhdGgoKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKwor
Q1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKSBjb25z
dAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgIGJ1aWxkZXIuYXBwZW5kKCJH
RVQgIik7CisgICAgYnVpbGRlci5hcHBlbmQodXJsKCkucGF0aCgpKTsKKyAgICBpZiAoIXVybCgp
LnF1ZXJ5KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI/Iik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKHVybCgpLnF1ZXJ5KCkpOworICAgIH0KKyAgICBidWlsZGVyLmFw
cGVuZCgiIEhUVFAvMS4xXHJcbiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJVcGdyYWRlOiBXZWJT
b2NrZXRcclxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIkNvbm5lY3Rpb246IFVwZ3JhZGVcclxu
Iik7CisgICAgYnVpbGRlci5hcHBlbmQoIkhvc3Q6ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKGhv
c3QoKSk7CisgICAgaWYgKHVybCgpLnBvcnQoKSkgeworICAgICAgICBpZiAoKCFzZWN1cmUoKSAm
JiB1cmwoKS5wb3J0KCkgIT0gODApIHx8IChzZWN1cmUoKSAmJiB1cmwoKS5wb3J0KCkgIT0gNDQz
KSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjoiKTsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHVybCgpLnBvcnQoKSkpOworICAgICAgICB9CisgICAg
fQorICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIk9yaWdp
bjogIik7CisgICAgYnVpbGRlci5hcHBlbmQoY2xpZW50T3JpZ2luKCkpOworICAgIGJ1aWxkZXIu
YXBwZW5kKCJcclxuIik7CisgICAgaWYgKCFjbGllbnRQcm90b2NvbCgpLmlzRW1wdHkoKSkgewor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiV2ViU29ja2V0LVByb3RvY29sOiAiKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoY2xpZW50UHJvdG9jb2woKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCJcclxuIik7CisgICAgfQorICAgIEtVUkwgdXJsID0gdXJsT3ZlckhUVFAoKTsKKyAgICAvLyBG
SVhNRTogc2V0IGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uIG9yIGNvb2tpZXMgZm9yIHVybC4K
KyAgICAvLyBTZXQgIkF1dGhvcml6YXRpb246IDxjcmVkZW50aWFscz4iIGlmIGF1dGhlbnRpY2F0
aW9uIGluZm9ybWF0aW9uIGV4aXN0cyBmb3IgdXJsLgorICAgIC8vIFNldCAiQ29va2llOiA8Y29v
a2llPiIgb3IgIkNvb2tpZTI6IDxjb29raWU+IiBpZiBjb29raWVzIGV4aXN0cyBmb3IgdXJsLgor
ICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KS51dGY4KCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZXNldCgpCit7CisgICAg
bV9zZXJ2ZXJIYW5kc2hha2VMZW5ndGggPSAwOworICAgIG1fbW9kZSA9IEluY29tcGxldGU7CisK
KyAgICBtX3dzT3JpZ2luID0gU3RyaW5nKCk7CisgICAgbV93c0xvY2F0aW9uID0gU3RyaW5nKCk7
CisgICAgbV93c1Byb3RvY29sID0gU3RyaW5nKCk7CisgICAgbV9zZXRDb29raWUgPSBTdHJpbmco
KTsKKyAgICBtX3NldENvb2tpZTIgPSBTdHJpbmcoKTsKKyAgICBtX2xvY2F0aW9uID0gU3RyaW5n
KCk7CisgICAgbV93d3dBdXRoZW50aWNhdGUgPSBTdHJpbmcoKTsKK30KKworYm9vbCBXZWJTb2Nr
ZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciogaGVhZGVyLCBzaXpl
X3QgbGVuKQoreworICAgIG1fc2VydmVySGFuZHNoYWtlTGVuZ3RoID0gMDsKKyAgICBtX21vZGUg
PSBJbmNvbXBsZXRlOworICAgIGlmIChsZW4gPCBzaXplb2Yod2ViU29ja2V0U2VydmVySGFuZHNo
YWtlSGVhZGVyKSAtIDEpIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJzaG9ydCByZXNwb25zZSBo
ZWFkZXIgbGVuPSVkIiwgbGVuKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBp
ZiAoIW1lbWNtcChoZWFkZXIsIHdlYlNvY2tldFNlcnZlckhhbmRzaGFrZUhlYWRlciwgc2l6ZW9m
KHdlYlNvY2tldFNlcnZlckhhbmRzaGFrZUhlYWRlcikgLSAxKSkKKyAgICAgICAgbV9tb2RlID0g
Tm9ybWFsOworICAgIGVsc2UgeworICAgICAgICBjb25zdCBTdHJpbmcmIGNvZGUgPSBleHRyYWN0
UmVzcG9uc2VDb2RlKGhlYWRlciwgbGVuKTsKKyAgICAgICAgaWYgKGNvZGUuaXNOdWxsKCkpIHsK
KyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAic2hvcnQgc2VydmVyIGhhbmRzaGFrZTogJXMiLCBo
ZWFkZXIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlm
IChjb2RlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJubyByZXNwb25z
ZSBjb2RlIGZvdW5kOiAlcyIsIGhlYWRlcik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorICAgICAgICBMT0coTmV0d29yaywgInJlc3BvbnNlIGNvZGU6ICVzIiwgY29kZS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKGNvZGUgPT0gIjMwMSIgfHwgY29kZSA9PSAiMzAy
IiB8fCBjb2RlID09ICIzMDMiIHx8IGNvZGUgPT0gIjMwNyIpCisgICAgICAgICAgICBtX21vZGUg
PSBSZWRpcmVjdDsKKyAgICAgICAgZWxzZSBpZiAoY29kZSA9PSAiNDAxIikKKyAgICAgICAgICAg
IG1fbW9kZSA9IEF1dGhlbnRpY2F0ZTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBMT0co
TmV0d29yaywgIk1pc21hdGNoIHNlcnZlciBoYW5kc2hha2U6ICVzIiwgaGVhZGVyKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIGNvbnN0IGNoYXIqIHAg
PSBoZWFkZXIgKyBzaXplb2Yod2ViU29ja2V0U2VydmVySGFuZHNoYWtlSGVhZGVyKSAtIDE7Cisg
ICAgY29uc3QgY2hhciogZW5kID0gaGVhZGVyICsgbGVuICsgMTsKKworICAgIGlmIChtX21vZGUg
PT0gTm9ybWFsKSB7CisgICAgICAgIHNpemVfdCBoZWFkZXJTaXplID0gZW5kIC0gcDsKKyAgICAg
ICAgaWYgKGhlYWRlclNpemUgPCBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRlcikgLSAxKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAobWVtY21wKHAsIHdlYlNvY2tl
dFVwZ3JhZGVIZWFkZXIsIHNpemVvZih3ZWJTb2NrZXRVcGdyYWRlSGVhZGVyKSAtIDEpKSB7Cisg
ICAgICAgICAgICBMT0coTmV0d29yaywgIkJhZCB1cGdyYWRlIGhlYWRlcjogJXMiLCBwKTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHAgKz0gc2l6ZW9mKHdl
YlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMTsKKyAgICB9CisKKyAgICBpZiAoIWhhZFNlcnZlckhh
bmRzaGFrZShwLCBlbmQpKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiaW5jb21wbGV0ZSBzZXJ2
ZXIgaGFuZHNoYWtlIGxlbj0lZCIsIGxlbik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgSFRUUEhlYWRlck1hcCBoZWFkZXJzOworICAgIHAgPSBwYXJzZUhlYWRlcihwLCBlbmQs
ICZoZWFkZXJzKTsKKyAgICBpZiAoIXApIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJwYXJzZUhl
YWRlciBmYWlsZWQiKTsKKyAgICAgICAgbV9tb2RlID0gRmFpbGVkOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgaWYgKCFwcm9jZXNzSGVhZGVyKGhlYWRlcnMpKSB7CisgICAgICAg
IExPRyhOZXR3b3JrLCAiaGVhZGVyIHByb2Nlc3MgZmFpbGVkIik7CisgICAgICAgIG1fbW9kZSA9
IEZhaWxlZDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHN3aXRjaCAobV9tb2Rl
KSB7CisgICAgY2FzZSBOb3JtYWw6CisgICAgICAgIGhhbmRzaGFrZSgpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFJlZGlyZWN0OgorICAgICAgICBpZiAobV9sb2NhdGlvbi5pc051bGwoKSkK
KyAgICAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
dXRoZW50aWNhdGU6CisgICAgICAgIGlmIChtX3d3d0F1dGhlbnRpY2F0ZS5pc051bGwoKSkKKyAg
ICAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgbV9tb2RlID0gRmFpbGVkOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgbV9z
ZXJ2ZXJIYW5kc2hha2VMZW5ndGggPSBwIC0gaGVhZGVyOworICAgIHJldHVybiB0cnVlOworfQor
CitzaXplX3QgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJIYW5kc2hha2VMZW5ndGgoKSBjb25z
dAoreworICAgIHJldHVybiBtX3NlcnZlckhhbmRzaGFrZUxlbmd0aDsKK30KKworV2ViU29ja2V0
SGFuZHNoYWtlOjpNb2RlIFdlYlNvY2tldEhhbmRzaGFrZTo6bW9kZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fbW9kZTsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OnNl
cnZlcldlYlNvY2tldE9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3NPcmlnaW47Cit9
CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oY29u
c3QgU3RyaW5nJiB3ZWJTb2NrZXRPcmlnaW4pCit7CisgICAgbV93c09yaWdpbiA9IHdlYlNvY2tl
dE9yaWdpbjsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlcldl
YlNvY2tldExvY2F0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93c0xvY2F0aW9uOworfQor
Cit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyV2ViU29ja2V0TG9jYXRpb24oY29u
c3QgU3RyaW5nJiB3ZWJTb2NrZXRMb2NhdGlvbikKK3sKKyAgICBtX3dzTG9jYXRpb24gPSB3ZWJT
b2NrZXRMb2NhdGlvbjsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OnNl
cnZlcldlYlNvY2tldFByb3RvY29sKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93c1Byb3RvY29s
OworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyV2ViU29ja2V0UHJvdG9j
b2woY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRQcm90b2NvbCkKK3sKKyAgICBtX3dzUHJvdG9jb2wg
PSB3ZWJTb2NrZXRQcm90b2NvbDsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hh
a2U6OnNlcnZlclNldENvb2tpZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2V0Q29va2llOwor
fQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyU2V0Q29va2llKGNvbnN0IFN0
cmluZyYgc2V0Q29va2llKQoreworICAgIG1fc2V0Q29va2llID0gc2V0Q29va2llOworfQorCitj
b25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyU2V0Q29va2llMigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fc2V0Q29va2llMjsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hh
a2U6OnNldFNlcnZlclNldENvb2tpZTIoY29uc3QgU3RyaW5nJiBzZXRDb29raWUyKQoreworICAg
IG1fc2V0Q29va2llMiA9IHNldENvb2tpZTI7Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0
SGFuZHNoYWtlOjpyZWRpcmVjdExvY2F0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sb2Nh
dGlvbjsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6Ond3d0F1dGhlbnRp
Y2F0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3d3QXV0aGVudGljYXRlOworfQorCitLVVJM
IFdlYlNvY2tldEhhbmRzaGFrZTo6dXJsT3ZlckhUVFAoKSBjb25zdAoreworICAgIEtVUkwgdXJs
ID0gbV91cmwuY29weSgpOworICAgIHVybC5zZXRQcm90b2NvbChtX3NlY3VyZSA/ICJodHRwcyIg
OiAiaHR0cCIpOworICAgIGludCBwb3J0ID0gdXJsLnBvcnQoKTsKKyAgICBpZiAoIXBvcnQpCisg
ICAgICAgIHBvcnQgPSBtX3NlY3VyZSA/IDgxNSA6IDgxOworICAgIHVybC5zZXRQb3J0KHBvcnQp
OworICAgIHJldHVybiB1cmw7Cit9CisKK2NvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6
cGFyc2VIZWFkZXIoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCwgSFRUUEhlYWRl
ck1hcCogaGVhZGVycykKK3sKKyAgICBWZWN0b3I8Y2hhcj4gbmFtZTsKKyAgICBWZWN0b3I8Y2hh
cj4gdmFsdWU7CisgICAgZm9yIChjb25zdCBjaGFyKiBwID0gc3RhcnQ7IHAgPCBlbmQ7IHArKykg
eworICAgICAgICBuYW1lLmNsZWFyKCk7CisgICAgICAgIHZhbHVlLmNsZWFyKCk7CisKKyAgICAg
ICAgZm9yICg7IHAgPCBlbmQ7IHArKykgeworICAgICAgICAgICAgc3dpdGNoICgqcCkgeworICAg
ICAgICAgICAgY2FzZSAnXHInOgorICAgICAgICAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgICAgICAgICBpZiAocCArIDEgPCBlbmQgJiYgKihwICsgMSkgPT0gJ1xu
JykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwICsgMjsKKyAgICAgICAgICAgICAg
ICAgICAgTE9HKE5ldHdvcmssICJDRiBkb2Vzbid0IGZvbGxvdyBMRiBwPSVwIGVuZD0lcCIsIHAs
IGVuZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBMT0coTmV0d29yaywgIlVuZXhwZWN0ZWQgQ1IgaW4gbmFtZSIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgY2FzZSAnXG4nOgorICAgICAg
ICAgICAgICAgIExPRyhOZXR3b3JrLCAiVW5leHBlY3RlZCBMRiBpbiBuYW1lIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBjYXNlICc6JzoKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgaWYgKCpwID49
IDB4NDEgJiYgKnAgPD0gMHg1YSkKKyAgICAgICAgICAgICAgICAgICAgbmFtZS5hcHBlbmQoKnAg
KyAweDIwKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5hbWUu
YXBwZW5kKCpwKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmICgqcCA9PSAnOicpIHsKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3Ig
KDsgcCA8IGVuZCAmJiAqcCA9PSAweDIwOyBwKyspIHsgfQorCisgICAgICAgIGZvciAoOyBwIDwg
ZW5kOyBwKyspIHsKKyAgICAgICAgICAgIHN3aXRjaCAoKnApIHsKKyAgICAgICAgICAgIGNhc2Ug
J1xyJzoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ1xuJzoKKyAg
ICAgICAgICAgICAgICBMT0coTmV0d29yaywgIlVuZXhwZWN0ZWQgTEYgaW4gdmFsdWUiKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgdmFsdWUuYXBwZW5kKCpwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgq
cCA9PSAnXHInKSB7CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChwID49IGVuZCB8fCAqcCAh
PSAnXG4nKSB7CisgICAgICAgICAgICBMT0coTmV0d29yaywgIkNSIGRvZXNuJ3QgZm9sbG93IExG
IGFmdGVyIHZhbHVlIHA9JXAgZW5kPSVwIiwgcCwgZW5kKTsKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICB9CisgICAgICAgIEF0b21pY1N0cmluZyBuYW1lU3RyKFN0cmluZzo6ZnJvbVVU
RjgobmFtZS5kYXRhKCksIG5hbWUuc2l6ZSgpKSk7CisgICAgICAgIFN0cmluZyB2YWx1ZVN0ciA9
IFN0cmluZzo6ZnJvbVVURjgodmFsdWUuZGF0YSgpLCB2YWx1ZS5zaXplKCkpOworICAgICAgICBM
T0coTmV0d29yaywgIm5hbWU9JXMgdmFsdWU9JXMiLCBuYW1lU3RyLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIHZhbHVlU3RyLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBoZWFkZXJzLT5hZGQobmFt
ZVN0ciwgdmFsdWVTdHIpOworICAgIH0KKyAgICBMT0coTmV0d29yaywgIlVuZXhwZWN0ZWQgZW5k
IG9mIGhlYWRlciIpOworICAgIHJldHVybiAwOworfQorCitib29sIFdlYlNvY2tldEhhbmRzaGFr
ZTo6cHJvY2Vzc0hlYWRlcihjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQoreworICAgIGZv
ciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJzLmJlZ2luKCk7IGl0
ICE9IGhlYWRlcnMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgc3dpdGNoIChtX21vZGUpIHsKKyAg
ICAgICAgY2FzZSBOb3JtYWw6CisgICAgICAgICAgICBpZiAoaXQtPmZpcnN0ID09ICJ3ZWJzb2Nr
ZXQtb3JpZ2luIikgeworICAgICAgICAgICAgICAgIGlmICghbV93c09yaWdpbi5pc051bGwoKSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG1fd3NP
cmlnaW4gPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgfSBlbHNlIGlmIChpdC0+Zmlyc3QgPT0g
IndlYnNvY2tldC1sb2NhdGlvbiIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fd3NMb2NhdGlv
bi5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIG1fd3NMb2NhdGlvbiA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KGl0LT5maXJzdCA9PSAid2Vic29ja2V0LXByb3RvY29sIikgeworICAgICAgICAgICAgICAgIGlm
ICghbV93c1Byb3RvY29sLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgbV93c1Byb3RvY29sID0gaXQtPnNlY29uZDsKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJzZXQtY29va2llIikgeworICAgICAgICAgICAg
ICAgIGlmICghbV9zZXRDb29raWUuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICBtX3NldENvb2tpZSA9IGl0LT5zZWNvbmQ7CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKGl0LT5maXJzdCA9PSAic2V0LWNvb2tpZTIiKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFtX3NldENvb2tpZTIuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBtX3NldENvb2tpZTIgPSBpdC0+c2Vjb25k
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVkaXJl
Y3Q6CisgICAgICAgICAgICBpZiAoaXQtPmZpcnN0ID09ICJsb2NhdGlvbiIpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIW1fbG9jYXRpb24uaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBtX2xvY2F0aW9uID0gaXQtPnNlY29uZDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF1dGhlbnRpY2F0
ZToKKyAgICAgICAgICAgIGlmIChpdC0+Zmlyc3QgPT0gInd3dy1hdXRoZW50aWNhdGUiKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFtX3d3d0F1dGhlbnRpY2F0ZS5pc051bGwoKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG1fd3d3QXV0aGVudGlj
YXRlID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgTE9HKE5ldHdvcmssICJ1bmV4cGVjdGVkIG1vZGU6
ICVkIiwgbV9tb2RlKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OmhhbmRz
aGFrZSgpCit7CisgICAgQVNTRVJUKG1fbW9kZSA9PSBOb3JtYWwpOworICAgIG1fbW9kZSA9IEZh
aWxlZDsKKyAgICBpZiAobV93c09yaWdpbi5pc051bGwoKSB8fCBtX3dzTG9jYXRpb24uaXNOdWxs
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChjbGllbnRPcmlnaW4oKSAhPSBtX3dzT3Jp
Z2luKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiTWlzbWF0Y2ggb3JpZ2luOiAlcyAhPSAlcyIs
IGNsaWVudE9yaWdpbigpLnV0ZjgoKS5kYXRhKCksIG1fd3NPcmlnaW4udXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGNsaWVudExvY2F0aW9uKCkgIT0gbV93
c0xvY2F0aW9uKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiTWlzbWF0Y2ggbG9jYXRpb246ICVz
ICE9ICVzIiwgY2xpZW50TG9jYXRpb24oKS51dGY4KCkuZGF0YSgpLCBtX3dzTG9jYXRpb24udXRm
OCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFtX2NsaWVudFBy
b3RvY29sLmlzRW1wdHkoKSAmJiBtX2NsaWVudFByb3RvY29sICE9IG1fd3NQcm90b2NvbCkgewor
ICAgICAgICBMT0coTmV0d29yaywgIk1pc21hdGNoIHByb3RvY29sOiAlcyAhPSAlcyIsIG1fY2xp
ZW50UHJvdG9jb2wudXRmOCgpLmRhdGEoKSwgbV93c1Byb3RvY29sLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fbW9kZSA9IENvbm5lY3RlZDsKKyAgICByZXR1
cm47Cit9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFdF
Ql9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NGEwYjMKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKQEAgLTAsMCArMSwxMTggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJTb2NrZXRIYW5kc2hha2VfaAorI2RlZmluZSBXZWJTb2NrZXRIYW5kc2hha2Vf
aAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIGNsYXNz
IEhUVFBIZWFkZXJNYXA7CisKKyAgICBjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2UgeworICAgIHB1
YmxpYzoKKyAgICAgICAgZW51bSBNb2RlIHsKKyAgICAgICAgICAgIEluY29tcGxldGUsIE5vcm1h
bCwgUmVkaXJlY3QsIEF1dGhlbnRpY2F0ZSwgRmFpbGVkLCBDb25uZWN0ZWQKKyAgICAgICAgfTsK
KyAgICAgICAgV2ViU29ja2V0SGFuZHNoYWtlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KTsKKyAgICAgICAgfldlYlNv
Y2tldEhhbmRzaGFrZSgpOworCisgICAgICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OworICAg
ICAgICB2b2lkIHNldFVSTChjb25zdCBLVVJMJiB1cmwpOworICAgICAgICBjb25zdCBTdHJpbmcg
aG9zdCgpIGNvbnN0OworCisgICAgICAgIGNvbnN0IFN0cmluZyYgY2xpZW50UHJvdG9jb2woKSBj
b25zdDsKKyAgICAgICAgdm9pZCBzZXRDbGllbnRQcm90b2NvbChjb25zdCBTdHJpbmcmIHByb3Rv
Y29sKTsKKworICAgICAgICBib29sIHNlY3VyZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNl
Y3VyZShib29sIHNlY3VyZSk7CisKKyAgICAgICAgU3RyaW5nIGNsaWVudE9yaWdpbigpIGNvbnN0
OworICAgICAgICBTdHJpbmcgY2xpZW50TG9jYXRpb24oKSBjb25zdDsKKworICAgICAgICBDU3Ry
aW5nIGNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKSBjb25zdDsKKworICAgICAgICB2b2lkIHJlc2V0
KCk7CisKKyAgICAgICAgYm9vbCByZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRl
ciwgc2l6ZV90IGxlbik7CisgICAgICAgIHNpemVfdCBzZXJ2ZXJIYW5kc2hha2VMZW5ndGgoKSBj
b25zdDsKKyAgICAgICAgTW9kZSBtb2RlKCkgY29uc3Q7CisKKyAgICAgICAgY29uc3QgU3RyaW5n
JiBzZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTZXJ2ZXJX
ZWJTb2NrZXRPcmlnaW4oY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRPcmlnaW4pOworCisgICAgICAg
IGNvbnN0IFN0cmluZyYgc2VydmVyV2ViU29ja2V0TG9jYXRpb24oKSBjb25zdDsKKyAgICAgICAg
dm9pZCBzZXRTZXJ2ZXJXZWJTb2NrZXRMb2NhdGlvbihjb25zdCBTdHJpbmcmIHdlYlNvY2tldExv
Y2F0aW9uKTsKKworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZlcldlYlNvY2tldFByb3RvY29s
KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2VydmVyV2ViU29ja2V0UHJvdG9jb2woY29uc3Qg
U3RyaW5nJiB3ZWJTb2NrZXRQcm90b2NvbCk7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2
ZXJTZXRDb29raWUoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTZXJ2ZXJTZXRDb29raWUoY29u
c3QgU3RyaW5nJiBzZXRDb29raWUpOworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZlclNldENv
b2tpZTIoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTZXJ2ZXJTZXRDb29raWUyKGNvbnN0IFN0
cmluZyYgc2V0Q29va2llMik7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiByZWRpcmVjdExvY2F0
aW9uKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFN0cmluZyYgd3d3QXV0aGVudGljYXRlKCkgY29u
c3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBLVVJMIHVybE92ZXJIVFRQKCkgY29uc3Q7Cisg
ICAgICAgIGNvbnN0IGNoYXIqIHBhcnNlSGVhZGVyKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBj
aGFyKiBlbmQsIEhUVFBIZWFkZXJNYXAqIGhlYWRlcnMpOworICAgICAgICBib29sIHByb2Nlc3NI
ZWFkZXIoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycyk7CisgICAgICAgIHZvaWQgaGFuZHNo
YWtlKCk7CisKKyAgICAgICAgS1VSTCBtX3VybDsKKyAgICAgICAgU3RyaW5nIG1fY2xpZW50UHJv
dG9jb2w7CisgICAgICAgIGJvb2wgbV9zZWN1cmU7CisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIG1fY29udGV4dDsKKworICAgICAgICBzaXplX3QgbV9zZXJ2ZXJIYW5kc2hha2VMZW5n
dGg7CisgICAgICAgIE1vZGUgbV9tb2RlOworCisgICAgICAgIFN0cmluZyBtX3dzT3JpZ2luOwor
ICAgICAgICBTdHJpbmcgbV93c0xvY2F0aW9uOworICAgICAgICBTdHJpbmcgbV93c1Byb3RvY29s
OworICAgICAgICBTdHJpbmcgbV9zZXRDb29raWU7CisgICAgICAgIFN0cmluZyBtX3NldENvb2tp
ZTI7CisgICAgICAgIFN0cmluZyBtX2xvY2F0aW9uOworICAgICAgICBTdHJpbmcgbV93d3dBdXRo
ZW50aWNhdGU7CisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAv
LyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAgLy8gV2ViU29ja2V0SGFuZHNoYWtlX2g=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38723</attachid>
            <date>2009-08-28 02:31:09 -0700</date>
            <delta_ts>2009-08-31 03:21:11 -0700</delta_ts>
            <desc>WebSocket API implementation</desc>
            <filename>bug-28038-20090828183107.patch</filename>
            <type>text/plain</type>
            <size>66317</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA3NGI4NTIxLi40OWE0MDQ5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMDktMDgtMjggIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IFdURjo6
dHJ5RmFzdE1hbGxvYygpIHVzZWQgaW4gV2ViU29ja2V0Q2hhbm5lbC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MDM4CisKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5leHA6CisKIDIwMDktMDgtMjcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwCmluZGV4IGQ0NWEyMmQuLmExNjU2MjEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAKQEAgLTI5NSw2ICsyOTUsNyBAQCBfX1pOM1dURjEyZGV0YWNoVGhyZWFkRWoKIF9fWk4z
V1RGMTJpc01haW5UaHJlYWRFdgogX19aTjNXVEYxMnJhbmRvbU51bWJlckV2CiBfX1pOM1dURjEz
Y3VycmVudFRocmVhZEV2CitfX1pOM1dURjEzdHJ5RmFzdE1hbGxvY0VtCiBfX1pOM1dURjEzdHJ5
RmFzdENhbGxvY0VtbQogX19aTjNXVEYxM3RyeUZhc3RNYWxsb2NFbQogX19aTjNXVEYxNVRocmVh
ZENvbmRpdGlvbjR3YWl0RVJOU181TXV0ZXhFCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBlOGE2YjQuLjdlZjgzZTQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAg
QEAKKzIwMDktMDgtMjggIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0IEFQ
SSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI4MDM4CisgICAgICAgIAorICAgICAgICBBZGQgYnVpbGQgc3lzdGVtcyBvbmx5
IGZvciBHTlVtYWtlZmlsZS5hbSBhbmQgV2ViQ29yZS54Y29kZXByb2ogbm93LgorICAgICAgICBP
dGhlciBidWlsZCBzeXN0ZW1zIHdpbGwgYmUgdXBkYXRlZCBvbmNlIHRoZSBjb2RlIGlzIGZ1bmN0
aW9uYWwuCisgICAgICAgIFRlc3RzIHdpbGwgYmUgbGFuZGVkIG9uY2UgdGhlIGNvZGUgaXMgY29t
cGxldGVkIGFuZCBmdW5jdGlvbmFsLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6d2ViU29ja2V0KToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMp
OgorICAgICAgICAoV2ViQ29yZTo6dG9FdmVudFRhcmdldCk6CisgICAgICAgICogZG9tL0V2ZW50
VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojp0b1dlYlNvY2tldCk6
CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cu
aWRsOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmlzVmFsaWRQcm90b2NvbFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6
OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpzZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
OjpidWZmZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmFkZEV2ZW50
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpyZW1vdmVFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlzcGF0Y2hFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlzcGF0Y2hPcGVu
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaXNwYXRjaE1lc3NhZ2VFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNoQ2xvc2VFdmVudCk6Cisg
ICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6c2V0T25vcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldDo6b25vcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2V0T25tZXNzYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6b25tZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldDo6c2V0T25jbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6Om9uY2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojp0b1dlYlNvY2tldCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0OjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuaDogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xp
ZW50Lmg6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNw
cDogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaDogQWRk
ZWQuCisKIDIwMDktMDgtMjcgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCmluZGV4IDc1
YmU4YTMuLmRkYTFjYmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisr
KyBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC0zNDIsNiArMzQyLDcgQEAKICNpbmNs
dWRlICJKU1dlYktpdENTU01hdHJpeC5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRQb2ludC5jcHAi
CiAjaW5jbHVkZSAiSlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwIgorI2luY2x1ZGUgIkpTV2Vi
U29ja2V0LmNwcCIKICNpbmNsdWRlICJKU1doZWVsRXZlbnQuY3BwIgogI2luY2x1ZGUgIkpTV29y
a2VyLmNwcCIKICNpbmNsdWRlICJKU1dvcmtlckNvbnRleHQuY3BwIgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMGY4YjJi
ZC4uMjM2YTcxYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zMjMxLDcgKzMyMzEsMTIgQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5o
IFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Lmgg
XAogCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIFwKLQlXZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmgKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggXAorCVdlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBcCisJV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuaCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWxDbGllbnQuaCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAg
XAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAogCiB3ZWJjb3JlZ3Rr
X3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVh
bUVycm9yLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBiNDFiNjhiLi5jZDQzOGEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtODg2LDYgKzg4Niw5IEBACiAJCTUxMEQ0QTM2MTAzMTY1RUUwMDQ5RUE1NCAv
KiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMwMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGVCYXNlLmNwcCAqLzsgfTsKIAkJNTEwRDRBMzcxMDMxNjVFRTAwNDlFQTU0IC8qIFNv
Y2tldFN0cmVhbUhhbmRsZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5k
bGVCYXNlLmggKi87IH07CiAJCTUxMEQ0QTM4MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQuaCAqLzsgfTsKKwkJNTEwRDRBNEUxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5u
ZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
RDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwICovOyB9OworCQk1
MTBENEE0RjEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBNDgxMDMxNzdBMjAwNDlF
QTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCAqLzsgfTsKKwkJNTEwRDRBNTAxMDMxNzdBMjAwNDlF
QTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50LmggKi87IH07CiAJCTUxMTZEOTc3MENGMTc3QkQwMEMyQjg0RCAvKiBE
YXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTFGMjMxNzBE
QzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGMjMxMzBEQzE2MERBMDA0RjAwMzIgLyog
TG9jYWxTdG9yYWdlVGFzay5jcHAgKi87IH07CiAJCTUxMUYyMzE4MERDMTYwREEwMDRGMDAzMiAv
KiBMb2NhbFN0b3JhZ2VUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTFGMjMxNDBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5o
ICovOyB9OwpAQCAtOTcyLDYgKzk3NSwxMCBAQAogCQk1MUFCQUUxQjEwM0MxOEZGMDA4QzUyNjAg
LyogU29ja2V0U3RyZWFtRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQUJBRTFBMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJv
ci5oICovOyB9OwogCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFu
ZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFC
QUUxQzEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggKi87IH07CiAJCTUx
QUJBRTFGMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUxRDEwM0Mx
OTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwICovOyB9OworCQk1MUFC
QUUyRTEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUyQzEwM0Q0Rjc1MDA4
QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5jcHAgKi87IH07CisJCTUxQUJBRTJGMTAzRDRG
NzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUyRDEwM0Q0Rjc1MDA4QzUyNjAgLyogV2Vi
U29ja2V0SGFuZHNoYWtlci5oICovOyB9OworCQk1MUFCQUU0NDEwNDNBQjRBMDA4QzUyNjAgLyog
V2ViU29ja2V0SGFuZHNoYWtlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQUJBRTQyMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hh
a2UuY3BwICovOyB9OworCQk1MUFCQUU0NTEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFu
ZHNoYWtlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUFCQUU0MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggKi87IH07CiAJ
CTUxQjI0MTdCMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMjQxN0EwRDkzMUYz
RjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gKi87IH07CiAJCTUxQkUzN0UwMERB
RUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTM3REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VB
cmVhLmggKi87IH07CiAJCTUxQzBBQTM5MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEFBMzgw
RjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTYwMzAsNiArNjAzNyw5IEBACiAJCTUxMEQ0QTMw
MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQgLyog
U29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1
NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlNvY2tldENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRDaGFubmVsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRD
aGFubmVsQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tl
dENoYW5uZWxDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExNkQ5NzUw
Q0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEYXRhYmFzZURldGFpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTExRjIzMTMwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxTdG9yYWdlVGFzay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYyMzE0MERDMTYwREEwMDRGMDAzMiAv
KiBMb2NhbFN0b3JhZ2VUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExv
Y2FsU3RvcmFnZVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxMjMsNiAr
NjEzMywxMCBAQAogCQk1MUFCQUUxQTEwM0MxOEZGMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtRXJy
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU29ja2V0U3RyZWFtRXJyb3Iu
aDsgcGF0aCA9IGNmL1NvY2tldFN0cmVhbUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxQUJBRTFDMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU29ja2V0U3RyZWFtSGFuZGxlLmg7IHBh
dGggPSBjZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFBQkFFMUQxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNvY2tldFN0cmVhbUhhbmRs
ZUNGTmV0LmNwcDsgcGF0aCA9IGNmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFMkMxMDNENEY3NTAwOEM1MjYwIC8qIFdlYlNv
Y2tldEhhbmRzaGFrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViU29ja2V0SGFuZHNoYWtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUx
QUJBRTJEMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFNDIxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tl
dEhhbmRzaGFrZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJT
b2NrZXRIYW5kc2hha2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUFCQUU0
MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUIyNDE3QTBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2
ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExlZ2FjeVdl
YkFyY2hpdmVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkUzN0RFMERB
RUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdG9yYWdlQXJlYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUMw
QUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FjaGVkRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEwNTgyLDYgKzEwNTk2LDExIEBACiAJCTUxOEEzNEJEMTAyNkM4MzEwMDFCNjg5NiAvKiB3
ZWJzb2NrZXRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQk1MUFCQUU0MjEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCAqLywK
KwkJCQk1MUFCQUU0MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggKi8s
CisJCQkJNTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwICov
LAorCQkJCTUxMEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggKi8s
CisJCQkJNTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQu
aCAqLywKIAkJCQk1MThBMzRCRTEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmNwcCAqLywK
IAkJCQk1MThBMzRCRjEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmggKi8sCiAJCQkJNTE4
QTM0QzAxMDI2QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tldC5pZGwgKi8sCkBAIC0xNzU3OSw2ICsx
NzU5OCw5IEBACiAJCQkJNTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBQkFFMUIxMDNDMThGRjAwOEM1MjYw
IC8qIFNvY2tldFN0cmVhbUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUFCQUUxRTEwM0Mx
OTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
MTBENEE0RjEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTEwRDRBNTAxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGll
bnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQUJBRTQ1MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJT
b2NrZXRIYW5kc2hha2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTk2NzcsNiArMTk2OTksOCBAQAog
CQkJCTUxMEQ0QTMzMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwRDRBMzYxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0
cmVhbUhhbmRsZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBQkFFMUYxMDNDMTkxMzAw
OEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUxMEQ0QTRFMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTUxQUJBRTQ0MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hh
a2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwCmluZGV4IGVmZDMxMTQuLjA0ZmRjNzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCkBAIC01Myw2ICs1Myw3IEBACiAKICNpbmNsdWRlICJKU1dlYktp
dENTU01hdHJpeENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNXZWJLaXRQb2ludENvbnN0cnVj
dG9yLmgiCisjaW5jbHVkZSAiSlNXZWJTb2NrZXRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpT
V29ya2VyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJKU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5oIgpAQCAtNjQ1LDYg
KzY0NiwxMyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzaGFyZWRXb3JrZXIoRXhlY1N0YXRlKiBl
eGVjKSBjb25zdAogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCitKU1ZhbHVl
IEpTRE9NV2luZG93Ojp3ZWJTb2NrZXQoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1dlYlNvY2tldENvbnN0cnVjdG9yPihleGVjLCB0aGlz
KTsKK30KKyNlbmRpZgorCiAvLyBDdXN0b20gZnVuY3Rpb25zCiAKIC8vIEhlbHBlciBmb3Igd2lu
ZG93Lm9wZW4oKSBhbmQgd2luZG93LnNob3dNb2RhbERpYWxvZygpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0LmNwcAppbmRleCBlZDgwZDgwLi4wNDIxZDEwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudFRhcmdldC5jcHAKQEAgLTc4LDYgKzc4LDExIEBACiAjaW5jbHVkZSAiTm90aWZp
Y2F0aW9uLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyNpbmNsdWRlICJK
U1dlYlNvY2tldC5oIgorI2luY2x1ZGUgIldlYlNvY2tldC5oIgorI2VuZGlmCisKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzOSw2ICsxNDQsMTEgQEAg
SlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRXZlbnRUYXJnZXQqIHRhcmcKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgbm90aWZp
Y2F0aW9uKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGlmIChXZWJT
b2NrZXQqIHdlYlNvY2tldCA9IHRhcmdldC0+dG9XZWJTb2NrZXQoKSkKKyAgICAgICAgcmV0dXJu
IHRvSlMoZXhlYywgd2ViU29ja2V0KTsKKyNlbmRpZgorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwogfQpAQCAtMTgzLDYgKzE5MywxMCBAQCBFdmVudFRh
cmdldCogdG9FdmVudFRhcmdldChKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgQ09OVkVSVF9UT19F
VkVOVF9UQVJHRVQoTm90aWZpY2F0aW9uKQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tF
VFMpCisgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJHRVQoV2ViU29ja2V0KQorI2VuZGlmCisKICAg
ICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3Bw
IGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDJmMTNkYTguLjY1MjY0NGYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5jcHAKQEAgLTgzLDYgKzgzLDEzIEBAIFNWR0VsZW1lbnRJbnN0YW5jZSogRXZl
bnRUYXJnZXQ6OnRvU1ZHRWxlbWVudEluc3RhbmNlKCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxF
KFdFQl9TT0NLRVRTKQorV2ViU29ja2V0KiBFdmVudFRhcmdldDo6dG9XZWJTb2NrZXQoKQorewor
ICAgIHJldHVybiAwOworfQorI2VuZGlmCisKIE1lc3NhZ2VQb3J0KiBFdmVudFRhcmdldDo6dG9N
ZXNzYWdlUG9ydCgpCiB7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5oIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCA2ZDNjYjdjLi42
YmNjM2ZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgY2xhc3MgU2hhcmVkV29y
a2VyOwogICAgIGNsYXNzIFNoYXJlZFdvcmtlckNvbnRleHQ7CisgICAgY2xhc3MgV2ViU29ja2V0
OwogICAgIGNsYXNzIFdvcmtlcjsKICAgICBjbGFzcyBYTUxIdHRwUmVxdWVzdDsKICAgICBjbGFz
cyBYTUxIdHRwUmVxdWVzdFVwbG9hZDsKQEAgLTc1LDExICs3NiwxMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgV29ya2VyKiB0b1dvcmtlcigpOwogICAgICAgICB2aXJ0
dWFsIERlZGljYXRlZFdvcmtlckNvbnRleHQqIHRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpOwog
I2VuZGlmCi0KICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCiAgICAgICAgIHZpcnR1YWwgU2hh
cmVkV29ya2VyKiB0b1NoYXJlZFdvcmtlcigpOwogICAgICAgICB2aXJ0dWFsIFNoYXJlZFdvcmtl
ckNvbnRleHQqIHRvU2hhcmVkV29ya2VyQ29udGV4dCgpOwogI2VuZGlmCisjaWYgRU5BQkxFKFdF
Ql9TT0NLRVRTKQorICAgICAgICB2aXJ0dWFsIFdlYlNvY2tldCogdG9XZWJTb2NrZXQoKTsKKyNl
bmRpZgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgICAgIHZpcnR1YWwgTm90aWZp
Y2F0aW9uKiB0b05vdGlmaWNhdGlvbigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5pZGwgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCA5YzllNDgxLi4wMDJk
OWI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmlkbApAQCAtNDgxLDYgKzQ4MSwxMCBAQCBtb2R1bGUgd2luZG93IHsK
ICAgICAgICAgYXR0cmlidXRlIFtKU0NDdXN0b21HZXR0ZXJdIFNoYXJlZFdvcmtlckNvbnN0cnVj
dG9yIFNoYXJlZFdvcmtlcjsgLy8gVXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRvcgogI2VuZGlm
CiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9XRUJfU09DS0VUUykgJiYgRU5BQkxFX1dFQl9TT0NLRVRT
CisgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyXSBXZWJTb2NrZXRDb25zdHJ1Y3Rv
ciBXZWJTb2NrZXQ7IC8vIFVzYWJsZSB3aXRoIHRoZSBuZXcgb3BlcmF0b3IKKyNlbmRpZgorCiAg
ICAgICAgIGF0dHJpYnV0ZSBQbHVnaW5Db25zdHJ1Y3RvciBQbHVnaW47CiAgICAgICAgIGF0dHJp
YnV0ZSBQbHVnaW5BcnJheUNvbnN0cnVjdG9yIFBsdWdpbkFycmF5OwogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwCmluZGV4IDk5OWMxZmYuLjEwZjU2MTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwCkBAIC0zNCwxMyArMzQsMzUgQEAKIAogI2luY2x1ZGUgIldlYlNvY2tldC5oIgogCisjaW5j
bHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50
LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVy
LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVs
LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK3N0YXRpYyBib29sIGlzVmFsaWRQcm90b2NvbFN0cmluZyhjb25zdCBXZWJDb3JlOjpTdHJp
bmcmIHByb3RvY29sKQoreworICAgIGlmIChwcm90b2NvbC5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKHByb3RvY29sLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gcHJvdG9jb2wuY2hhcmFjdGVycygp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvdG9jb2wubGVuZ3RoKCk7IGkrKykgewor
ICAgICAgICBpZiAoY2hhcmFjdGVyc1tpXSA8IDB4MjEgfHwgY2hhcmFjdGVyc1tpXSA+IDB4N0Up
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
CiBXZWJTb2NrZXQ6OldlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX3N0YXRlKENPTk5F
Q1RJTkcpCkBAIC01OSwzOSArODEsNDkgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3Qg
S1VSTCYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3Qo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBjb25uZWN0IHRvICVzIHByb3Rv
Y29sPSVzIiwgdGhpcywgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHByb3RvY29sLnV0Zjgo
KS5kYXRhKCkpOwogICAgIG1fdXJsID0gdXJsOwogICAgIG1fcHJvdG9jb2wgPSBwcm90b2NvbDsK
IAogICAgIGlmICghbV91cmwucHJvdG9jb2xJcygid3MiKSAmJiAhbV91cmwucHJvdG9jb2xJcygi
d3NzIikpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJFcnJvcjogd3JvbmcgdXJsIGZvciBXZWJTb2Nr
ZXQgJXMiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBD
TE9TRUQ7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBpZiAoIW1fcHJvdG9jb2wuaXNOdWxsKCkgJiYgbV9wcm90b2NvbC5pc0VtcHR5KCkpIHsK
KyAgICBpZiAoIWlzVmFsaWRQcm90b2NvbFN0cmluZyhtX3Byb3RvY29sKSkgeworICAgICAgICBM
T0dfRVJST1IoIkVycm9yOiB3cm9uZyBwcm90b2NvbCBmb3IgV2ViU29ja2V0ICVzIiwgbV9wcm90
b2NvbC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAgICAgICAg
ZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIC8vIEZJWE1FOiBD
aGVjayBwcm90b2NvbCBpcyB2YWxpZCBmb3JtLgotICAgIC8vIEZJWE1FOiBDb25uZWN0IFdlYlNv
Y2tldENoYW5uZWwuCisgICAgLy8gRklYTUU6IGlmIG1fdXJsLnBvcnQoKSBpcyBibG9ja2luZyBw
b3J0LCByYWlzZSBTRUNVUklUWV9FUlIuCisKKyAgICBtX2NoYW5uZWwgPSBXZWJTb2NrZXRDaGFu
bmVsOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCBtX3VybCwgbV9wcm90
b2NvbCk7CisgICAgbV9jaGFubmVsLT5jb25uZWN0KCk7CiB9CiAKLWJvb2wgV2ViU29ja2V0Ojpz
ZW5kKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmIGVjKQorYm9vbCBXZWJTb2NrZXQ6OnNl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAo
bV9zdGF0ZSAhPSBPUEVOKSB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgc2VuZCAl
cyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKG1fc3RhdGUgPT0gQ09O
TkVDVElORykgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQotICAgIC8vIEZJWE1FOiBzZW5kIG1lc3NhZ2Ugb24gV2ViU29ja2V0
Q2hhbm5lbC4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gTm8gZXhjZXB0aW9uIGlzIHJhaXNl
ZCBpZiB0aGUgY29ubmVjdGlvbiB3YXMgb25jZSBlc3RhYmxpc2hlZCBidXQgaGFzIHN1YnNlcXVl
bnRseSBiZWVuIGNsb3NlZC4KKyAgICBpZiAobV9zdGF0ZSA9PSBDTE9TRUQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAvLyBGSVhNRTogY2hlY2sgbWVzc2FnZSBpcyB2YWxpZCB1dGY4Lgor
ICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQobWVzc2FnZSk7CiB9CiAKIHZvaWQgV2ViU29ja2V0
OjpjbG9zZSgpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY2xvc2UiLCB0aGlz
KTsKICAgICBpZiAobV9zdGF0ZSA9PSBDTE9TRUQpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0
YXRlID0gQ0xPU0VEOwotICAgIC8vIEZJWE1FOiBjbG9zZSBXZWJTb2NrZXRDaGFubmVsLgorICAg
IG1fY2hhbm5lbC0+Y2xvc2UoKTsKIH0KIAogY29uc3QgS1VSTCYgV2ViU29ja2V0Ojp1cmwoKSBj
b25zdApAQCAtMTA2LDcgKzEzOCw4IEBAIFdlYlNvY2tldDo6U3RhdGUgV2ViU29ja2V0OjpyZWFk
eVN0YXRlKCkgY29uc3QKIAogdW5zaWduZWQgbG9uZyBXZWJTb2NrZXQ6OmJ1ZmZlcmVkQW1vdW50
KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogYXNrIHBsYXRmb3JtIGNvZGUgdG8gZ2V0IGJ1ZmZl
cmVkIGFtb3VudCB0byBiZSBzZW50LgorICAgIGlmIChtX3N0YXRlID09IE9QRU4pCisgICAgICAg
IHJldHVybiBtX2NoYW5uZWwtPmJ1ZmZlcmVkQW1vdW50KCk7CiAgICAgcmV0dXJuIDA7CiB9CiAK
QEAgLTExNSwyNCArMTQ4LDU3IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFdlYlNvY2tldDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVj
dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogfQogCi12b2lkIFdlYlNvY2tldDo6YWRkRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
LCBib29sKQordm9pZCBXZWJTb2NrZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lciwg
Ym9vbCkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisgICAgRXZlbnRMaXN0ZW5l
cnNNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2V2ZW50TGlzdGVuZXJzLmZpbmQoZXZlbnRUeXBlKTsK
KyAgICBpZiAoaXRlciA9PSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpKSB7CisgICAgICAgIExpc3Rl
bmVyVmVjdG9yIGxpc3RlbmVyczsKKyAgICAgICAgbGlzdGVuZXJzLmFwcGVuZChldmVudExpc3Rl
bmVyKTsKKyAgICAgICAgbV9ldmVudExpc3RlbmVycy5hZGQoZXZlbnRUeXBlLCBsaXN0ZW5lcnMp
OworICAgIH0gZWxzZSB7CisgICAgICAgIExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMgPSBpdGVy
LT5zZWNvbmQ7CisgICAgICAgIGZvciAoTGlzdGVuZXJWZWN0b3I6Oml0ZXJhdG9yIGxpc3RlbmVy
SXRlciA9IGxpc3RlbmVycy5iZWdpbigpOyBsaXN0ZW5lckl0ZXIgIT0gbGlzdGVuZXJzLmVuZCgp
OyArK2xpc3RlbmVySXRlcikKKyAgICAgICAgICAgIGlmICgqbGlzdGVuZXJJdGVyID09IGV2ZW50
TGlzdGVuZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxpc3RlbmVycy5h
cHBlbmQoZXZlbnRMaXN0ZW5lcik7CisgICAgICAgIG1fZXZlbnRMaXN0ZW5lcnMuYWRkKGV2ZW50
VHlwZSwgbGlzdGVuZXJzKTsKKyAgICB9CiB9CiAKLXZvaWQgV2ViU29ja2V0OjpyZW1vdmVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYsIEV2ZW50TGlzdGVuZXIqLCBib29sKQordm9p
ZCBXZWJTb2NrZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXIqIGV2ZW50TGlzdGVuZXIsIGJvb2wpCiB7Ci0gICAgLy8gRklY
TUU6IGltcGxlbWVudCB0aGlzLgorICAgIEV2ZW50TGlzdGVuZXJzTWFwOjppdGVyYXRvciBpdGVy
ID0gbV9ldmVudExpc3RlbmVycy5maW5kKGV2ZW50VHlwZSk7CisgICAgaWYgKGl0ZXIgPT0gbV9l
dmVudExpc3RlbmVycy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTGlzdGVuZXJWZWN0
b3ImIGxpc3RlbmVycyA9IGl0ZXItPnNlY29uZDsKKyAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjpj
b25zdF9pdGVyYXRvciBsaXN0ZW5lckl0ZXIgPSBsaXN0ZW5lcnMuYmVnaW4oKTsgbGlzdGVuZXJJ
dGVyICE9IGxpc3RlbmVycy5lbmQoKTsgKytsaXN0ZW5lckl0ZXIpCisgICAgICAgIGlmICgqbGlz
dGVuZXJJdGVyID09IGV2ZW50TGlzdGVuZXIpIHsKKyAgICAgICAgICAgIGxpc3RlbmVycy5yZW1v
dmUobGlzdGVuZXJJdGVyIC0gbGlzdGVuZXJzLmJlZ2luKCkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CiB9CiAKLWJvb2wgV2ViU29ja2V0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+LCBFeGNlcHRpb25Db2RlJikKK2Jvb2wgV2ViU29ja2V0OjpkaXNwYXRjaEV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+IGV2dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgLy8gRklY
TUU6IGltcGxlbWVudCB0aGlzLgotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWV2dCB8fCBl
dnQtPnR5cGUoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBFdmVudEV4Y2VwdGlvbjo6VU5T
UEVDSUZJRURfRVZFTlRfVFlQRV9FUlI7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIExpc3RlbmVyVmVjdG9yIGxpc3RlbmVyc0NvcHkgPSBtX2V2ZW50TGlzdGVuZXJzLmdldChl
dnQtPnR5cGUoKSk7CisgICAgZm9yIChMaXN0ZW5lclZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbGlz
dGVuZXJJdGVyID0gbGlzdGVuZXJzQ29weS5iZWdpbigpOyBsaXN0ZW5lckl0ZXIgIT0gbGlzdGVu
ZXJzQ29weS5lbmQoKTsgKytsaXN0ZW5lckl0ZXIpIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQo
dGhpcyk7CisgICAgICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbGlz
dGVuZXJJdGVyLT5nZXQoKS0+aGFuZGxlRXZlbnQoZXZ0LmdldCgpLCBmYWxzZSk7CisgICAgfQor
ICAgIHJldHVybiAhZXZ0LT5kZWZhdWx0UHJldmVudGVkKCk7CiB9CiAKIHZvaWQgV2ViU29ja2V0
OjpkaWRDb25uZWN0KCkKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRDb25u
ZWN0IiwgdGhpcyk7CiAgICAgaWYgKG1fc3RhdGUgIT0gQ09OTkVDVElORykgewogICAgICAgICBk
aWRDbG9zZSgpOwogICAgICAgICByZXR1cm47CkBAIC0xNDMsNiArMjA5LDcgQEAgdm9pZCBXZWJT
b2NrZXQ6OmRpZENvbm5lY3QoKQogCiB2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
Y29uc3QgU3RyaW5nJiBtc2cpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlk
UmVjZWl2ZU1lc3NhZ2UgJXMiLCB0aGlzLCBtc2cudXRmOCgpLmRhdGEoKSk7CiAgICAgaWYgKG1f
c3RhdGUgIT0gT1BFTikKICAgICAgICAgcmV0dXJuOwogICAgIGRpc3BhdGNoTWVzc2FnZUV2ZW50
KG1zZyk7CkBAIC0xNTAsMjMgKzIxNyw1MyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZU1l
c3NhZ2UoY29uc3QgU3RyaW5nJiBtc2cpCiAKIHZvaWQgV2ViU29ja2V0OjpkaWRDbG9zZSgpCiB7
CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkQ2xvc2UiLCB0aGlzKTsKICAgICBt
X3N0YXRlID0gQ0xPU0VEOwogICAgIGRpc3BhdGNoQ2xvc2VFdmVudCgpOwogfQogCiB2b2lkIFdl
YlNvY2tldDo6ZGlzcGF0Y2hPcGVuRXZlbnQoKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQg
dGhpcy4KKyAgICBSZWZQdHI8RXZlbnQ+IGV2dCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
Lm9wZW5FdmVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICBpZiAobV9vbm9wZW4pIHsKKyAgICAgICAg
ZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlz
KTsKKyAgICAgICAgbV9vbm9wZW4tPmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwgZmFsc2UpOworICAg
IH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZ0LnJl
bGVhc2UoKSwgZWMpOworICAgIEFTU0VSVCghZWMpOwogfQogCi12b2lkIFdlYlNvY2tldDo6ZGlz
cGF0Y2hNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJikKK3ZvaWQgV2ViU29ja2V0OjpkaXNwYXRj
aE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIG1zZykKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHRoaXMuCisgICAgUmVmUHRyPE1lc3NhZ2VFdmVudD4gZXZ0ID0gTWVzc2FnZUV2ZW50Ojpj
cmVhdGUoKTsKKyAgICAvLyBGSVhNRTogb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCBtZXNz
YWdlUG9ydC4KKyAgICBldnQtPmluaXRNZXNzYWdlRXZlbnQoZXZlbnROYW1lcygpLm1lc3NhZ2VF
dmVudCwgZmFsc2UsIGZhbHNlLCBtc2csICIiLCAiIiwgMCwgMCk7CisgICAgaWYgKG1fb25tZXNz
YWdlKSB7CisgICAgICAgIGV2dC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldnQtPnNldEN1
cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fb25tZXNzYWdlLT5oYW5kbGVFdmVudChldnQu
Z2V0KCksIGZhbHNlKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBk
aXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNlKCksIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKIH0KIAog
dm9pZCBXZWJTb2NrZXQ6OmRpc3BhdGNoQ2xvc2VFdmVudCgpCiB7Ci0gICAgLy8gRklYTUU6IGlt
cGxlbWVudCB0aGlzLgorICAgIFJlZlB0cjxFdmVudD4gZXZ0ID0gRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuY2xvc2VFdmVudCwgZmFsc2UsIGZhbHNlKTsKKyAgICBpZiAobV9vbmNsb3NlKSB7
CisgICAgICAgIGV2dC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRU
YXJnZXQodGhpcyk7CisgICAgICAgIG1fb25jbG9zZS0+aGFuZGxlRXZlbnQoZXZ0LmdldCgpLCBm
YWxzZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hF
dmVudChldnQucmVsZWFzZSgpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7CiB9CiAKIH0gIC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggNDg1ZTJjYy4uNmFiNzg1
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisrKyBiL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtMzEsOTMgKzMxLDEwNCBAQAogI2lmbmRlZiBX
ZWJTb2NrZXRfaAogI2RlZmluZSBXZWJTb2NrZXRfaAogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRT
KQorCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5n
SGFzaC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdl
dC5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50
LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU3RyaW5nOworICAgIGNsYXNzIFN0cmlu
ZzsKKyAgICBjbGFzcyBXZWJTb2NrZXRDaGFubmVsOwogCi1jbGFzcyBXZWJTb2NrZXQgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJTb2NrZXQ+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3Rp
dmVET01PYmplY3QgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldD4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJTb2NrZXQoY29udGV4dCkpOyB9Ci0gICAgdmlydHVhbCB+V2ViU29ja2V0KCk7Cisg
ICAgY2xhc3MgV2ViU29ja2V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGlj
IEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgV2ViU29ja2V0Q2hh
bm5lbENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJT
b2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViU29ja2V0KGNvbnRleHQpKTsgfQorICAgICAgICB2aXJ0dWFsIH5XZWJT
b2NrZXQoKTsKIAotICAgIGVudW0gU3RhdGUgewotICAgICAgICBDT05ORUNUSU5HID0gMCwKLSAg
ICAgICAgT1BFTiA9IDEsCi0gICAgICAgIENMT1NFRCA9IDIKLSAgICB9OworICAgICAgICBlbnVt
IFN0YXRlIHsKKyAgICAgICAgICAgIENPTk5FQ1RJTkcgPSAwLAorICAgICAgICAgICAgT1BFTiA9
IDEsCisgICAgICAgICAgICBDTE9TRUQgPSAyCisgICAgICAgIH07CiAKLSAgICB2b2lkIGNvbm5l
Y3QoY29uc3QgS1VSTCYgdXJsLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBjb25uZWN0KGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9j
b2wsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdm9pZCBjbG9zZSgpOworICAgICAgICB2b2lk
IGNsb3NlKCk7CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKLSAgICBTdGF0ZSByZWFk
eVN0YXRlKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0
OworICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKKyAgICAgICAgU3RhdGUgcmVhZHlT
dGF0ZSgpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29u
c3Q7CiAKLSAgICB2b2lkIHNldE9ub3BlbihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50
TGlzdGVuZXIpIHsgbV9vbm9wZW4gPSBldmVudExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5l
ciogb25vcGVuKCkgY29uc3QgeyByZXR1cm4gbV9vbm9wZW4uZ2V0KCk7IH0KLSAgICB2b2lkIHNl
dE9ubWVzc2FnZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9v
bm1lc3NhZ2UgPSBldmVudExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25tZXNzYWdl
KCkgY29uc3QgeyByZXR1cm4gbV9vbm1lc3NhZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIHNldE9uY2xv
c2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25jbG9zZSA9
IGV2ZW50TGlzdGVuZXI7IH0KLSAgICBFdmVudExpc3RlbmVyKiBvbmNsb3NlKCkgY29uc3QgeyBy
ZXR1cm4gbV9vbmNsb3NlLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0T25vcGVuKFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29ub3BlbiA9IGV2ZW50TGlzdGVu
ZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25vcGVuKCkgY29uc3QgeyByZXR1cm4gbV9v
bm9wZW4uZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRPbm1lc3NhZ2UoUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25tZXNzYWdlID0gZXZlbnRMaXN0ZW5lcjsg
fQorICAgICAgICBFdmVudExpc3RlbmVyKiBvbm1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX29u
bWVzc2FnZS5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldE9uY2xvc2UoUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25jbG9zZSA9IGV2ZW50TGlzdGVuZXI7IH0K
KyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25jbG9zZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25jbG9z
ZS5nZXQoKTsgfQogCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIFdlYlNvY2tldCog
dG9XZWJTb2NrZXQoKSB7IHJldHVybiB0aGlzOyB9CisgICAgICAgIC8vIEV2ZW50VGFyZ2V0Cisg
ICAgICAgIHZpcnR1YWwgV2ViU29ja2V0KiB0b1dlYlNvY2tldCgpIHsgcmV0dXJuIHRoaXM7IH0K
IAotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwg
Ym9vbCB1c2VDYXB0dXJlKTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gPiBMaXN0ZW5lclZlY3RvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNo
TWFwPEF0b21pY1N0cmluZywgTGlzdGVuZXJWZWN0b3I+IEV2ZW50TGlzdGVuZXJzTWFwOwogCi0g
ICAgLy8gQWN0aXZlRE9NT2JqZWN0Ci0gICAgLy8gdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0OwotICAgIC8vIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7Ci0g
ICAgLy8gdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKLSAgICAvLyB2aXJ0dWFsIHZv
aWQgc3VzcGVuZCgpOwotICAgIC8vIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKLSAgICAvLyB2aXJ0
dWFsIHZvaWQgc3RvcCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwg
Ym9vbCB1c2VDYXB0dXJlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVz
ZUNhcHR1cmUpOworICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRy
PEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICBFdmVudExpc3RlbmVyc01hcCYgZXZl
bnRMaXN0ZW5lcnMoKSB7IHJldHVybiBtX2V2ZW50TGlzdGVuZXJzOyB9CiAKLSAgICB1c2luZyBS
ZWZDb3VudGVkPFdlYlNvY2tldD46OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tl
dD46OmRlcmVmOworICAgICAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICAgICAgLy8gIHZpcnR1
YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKKyAgICAgICAgLy8gdmlydHVhbCB2
b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKKyAgICAgICAgLy8gdmlydHVhbCBib29sIGNhblN1c3Bl
bmQoKSBjb25zdDsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lkIHN1c3BlbmQoKTsKKyAgICAgICAg
Ly8gdmlydHVhbCB2b2lkIHJlc3VtZSgpOworICAgICAgICAvLyB2aXJ0dWFsIHZvaWQgc3RvcCgp
OwogCi1wcml2YXRlOgotICAgIFdlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cisg
ICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Pjo6cmVmOworICAgICAgICB1c2luZyBS
ZWZDb3VudGVkPFdlYlNvY2tldD46OmRlcmVmOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50
VGFyZ2V0KCkgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkg
eyBkZXJlZigpOyB9CisgICAgICAgIC8vIFdlYlNvY2tldENoYW5uZWxDbGllbnQKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpZENvbm5lY3QoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENs
b3NlKCk7CiAKLSAgICAvLyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50Ci0gICAgdm9pZCBkaWRDb25u
ZWN0KCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZyk7Ci0g
ICAgdm9pZCBkaWRDbG9zZSgpOworICAgIHByaXZhdGU6CisgICAgICAgIFdlYlNvY2tldChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICB2b2lkIGRpc3BhdGNoT3BlbkV2ZW50KCk7Ci0g
ICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIG1zZyk7Ci0gICAgdm9p
ZCBkaXNwYXRjaENsb3NlRXZlbnQoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFy
Z2V0KCkgeyByZWYoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgp
IHsgZGVyZWYoKTsgfQogCi0gICAgLy8gRklYTUU6IGFkZCBXZWJTb2NrZXRDaGFubmVsLgorICAg
ICAgICB2b2lkIGRpc3BhdGNoT3BlbkV2ZW50KCk7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNz
YWdlRXZlbnQoY29uc3QgU3RyaW5nJiBtc2cpOworICAgICAgICB2b2lkIGRpc3BhdGNoQ2xvc2VF
dmVudCgpOwogCi0gICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25vcGVuOwotICAgIFJlZlB0
cjxFdmVudExpc3RlbmVyPiBtX29ubWVzc2FnZTsKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
bV9vbmNsb3NlOworICAgICAgICBSZWZQdHI8V2ViU29ja2V0Q2hhbm5lbD4gbV9jaGFubmVsOwog
Ci0gICAgU3RhdGUgbV9zdGF0ZTsKLSAgICBLVVJMIG1fdXJsOwotICAgIFN0cmluZyBtX3Byb3Rv
Y29sOwotfTsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25vcGVuOworICAgICAg
ICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbm1lc3NhZ2U7CisgICAgICAgIFJlZlB0cjxFdmVu
dExpc3RlbmVyPiBtX29uY2xvc2U7CisgICAgICAgIEV2ZW50TGlzdGVuZXJzTWFwIG1fZXZlbnRM
aXN0ZW5lcnM7CisKKyAgICAgICAgU3RhdGUgbV9zdGF0ZTsKKyAgICAgICAgS1VSTCBtX3VybDsK
KyAgICAgICAgU3RyaW5nIG1fcHJvdG9jb2w7CisgICAgfTsKIAogfSAgLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAorI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKICNlbmRpZiAgLy8gV2Vi
U29ja2V0X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTg5OWNlCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0wLDAgKzEsMjY3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUg
IldlYlNvY2tldENoYW5uZWwuaCIKKworI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKKyNpbmNs
dWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKKyNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCisjaW5j
bHVkZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5u
ZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVu
dCogY2xpZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCisgICAg
OiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1faGFu
ZHNoYWtlKFdlYlNvY2tldEhhbmRzaGFrZSh1cmwsIHByb3RvY29sLCBjb250ZXh0KSkKKyAgICAs
IG1fYnVmZmVyKDApCisgICAgLCBtX2J1ZmZlclNpemUoMCkKKyAgICAsIG1fdW5oYW5kbGVkQnVm
ZmVyU2l6ZSgwKQoreworfQorCitXZWJTb2NrZXRDaGFubmVsOjp+V2ViU29ja2V0Q2hhbm5lbCgp
Cit7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdCgpCit7CisgICAgTE9HKE5l
dHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNvbm5lY3QiLCB0aGlzKTsKKyAgICBBU1NFUlQo
IW1faGFuZGxlLmdldCgpKTsKKyAgICBtX2hhbmRzaGFrZS5yZXNldCgpOworICAgIG1faGFuZGxl
ID0gU29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGUobV9oYW5kc2hha2UudXJsKCksIHRoaXMpOwor
fQorCitib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtc2cpCit7Cisg
ICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQgJXMiLCB0aGlzLCBtc2cu
dXRmOCgpLmRhdGEoKSk7CisgICAgVmVjdG9yPGNoYXI+IGJ1ZjsKKyAgICBidWYuYXBwZW5kKCdc
MCcpOyAgLy8gZnJhbWUgdHlwZQorICAgIGJ1Zi5hcHBlbmQobXNnLnV0ZjgoKS5kYXRhKCksIG1z
Zy51dGY4KCkubGVuZ3RoKCkpOworICAgIGJ1Zi5hcHBlbmQoJ1x4ZmYnKTsgIC8vIGZyYW1lIGVu
ZAorICAgIGlmICghbV9oYW5kbGUuZ2V0KCkpIHsKKyAgICAgICAgbV91bmhhbmRsZWRCdWZmZXJT
aXplICs9IGJ1Zi5zaXplKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIG1faGFuZGxlLT5zZW5kKGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkpOworfQorCit1bnNpZ25l
ZCBsb25nIFdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKK3sKKyAgICBM
T0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgYnVmZmVyZWRBbW91bnQiLCB0aGlzKTsK
KyAgICBpZiAoIW1faGFuZGxlLmdldCgpKQorICAgICAgICByZXR1cm4gbV91bmhhbmRsZWRCdWZm
ZXJTaXplOworICAgIHJldHVybiBtX2hhbmRsZS0+YnVmZmVyZWRBbW91bnQoKTsKK30KKwordm9p
ZCBXZWJTb2NrZXRDaGFubmVsOjpjbG9zZSgpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2Nr
ZXRDaGFubmVsICVwIGNsb3NlIiwgdGhpcyk7CisgICAgaWYgKG1faGFuZGxlLmdldCgpKQorICAg
ICAgICBtX2hhbmRsZS0+Y2xvc2UoKTsgIC8vIHdpbGwgY2FsbCBkaWRDbG9zZSgpCit9CisKK3Zv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6d2lsbE9wZW5TdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiwg
Y29uc3QgS1VSTCYpCit7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6d2lsbFNlbmREYXRh
KFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQpCit7Cit9CisKK3ZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZGlkT3BlbihTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKK3sKKyAg
ICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkT3BlbiIsIHRoaXMpOworICAg
IEFTU0VSVChoYW5kbGUgPT0gbV9oYW5kbGUuZ2V0KCkpOworICAgIGNvbnN0IENTdHJpbmcmIGhh
bmRzaGFrZU1lc3NhZ2UgPSBtX2hhbmRzaGFrZS5jbGllbnRIYW5kc2hha2VNZXNzYWdlKCk7Cisg
ICAgaGFuZGxlLT5zZW5kKGhhbmRzaGFrZU1lc3NhZ2UuZGF0YSgpLCBoYW5kc2hha2VNZXNzYWdl
Lmxlbmd0aCgpKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRDbG9zZShTb2NrZXRT
dHJlYW1IYW5kbGUqIGhhbmRsZSkKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5u
ZWwgJXAgZGlkQ2xvc2UiLCB0aGlzKTsKKyAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdl
dCgpIHx8ICFtX2hhbmRsZS5nZXQoKSk7CisgICAgaWYgKCFtX2hhbmRsZS5nZXQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fdW5oYW5kbGVkQnVmZmVyU2l6ZSA9IGhhbmRsZS0+YnVmZmVyZWRB
bW91bnQoKTsKKyAgICBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQgPSBtX2NsaWVudDsK
KyAgICBtX2NsaWVudCA9IDA7CisgICAgbV9oYW5kbGUgPSAwOworICAgIGNsaWVudC0+ZGlkQ2xv
c2UoKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNlaXZlRGF0YShTb2NrZXRT
dHJlYW1IYW5kbGUqIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKK3sKKyAgICBM
T0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkUmVjZWl2ZURhdGEgJWQiLCB0aGlz
LCBsZW4pOworICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5kbGUuZ2V0KCkpOworICAgIGlmICgh
YXBwZW5kVG9CdWZmZXIoZGF0YSwgbGVuKSkgeworICAgICAgICBkaWRDbG9zZShoYW5kbGUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX2hhbmRzaGFrZS5tb2RlKCkgIT0gV2Vi
U29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQpIHsKKyAgICAgICAgaWYgKCFtX2hhbmRzaGFrZS5y
ZWFkU2VydmVySGFuZHNoYWtlKG1fYnVmZmVyLmdldCgpLCBtX2J1ZmZlclNpemUpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBzd2l0Y2ggKG1faGFuZHNoYWtlLm1vZGUoKSkgeworICAg
ICAgICBjYXNlIFdlYlNvY2tldEhhbmRzaGFrZTo6Q29ubmVjdGVkOgorICAgICAgICAgICAgLy8g
RklYTUU6IGlmIHNldENvb2tpZSBvciBzZXRDb29raWUyIGV4aXN0cywgc3RvcmUgaW4gQ29va2ll
SmFyLgorICAgICAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNvbm5l
Y3RlZCIsIHRoaXMpOworICAgICAgICAgICAgbV9jbGllbnQtPmRpZENvbm5lY3QoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYlNvY2tldEhhbmRzaGFrZTo6UmVkaXJlY3Q6
CisgICAgICAgICAgICBMT0coTmV0d29yaywgIlJlZGlyZWN0IHRvICVzIiwgbV9oYW5kc2hha2Uu
cmVkaXJlY3RMb2NhdGlvbigpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmVkaXJlY3Qo
bV9oYW5kc2hha2UucmVkaXJlY3RMb2NhdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgY2FzZSBXZWJTb2NrZXRIYW5kc2hha2U6OkF1dGhlbnRpY2F0ZToKKyAgICAgICAgICAg
IGF1dGhlbnRpY2F0ZShtX2hhbmRzaGFrZS53d3dBdXRoZW50aWNhdGUoKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldENoYW5uZWwgJXAgY29ubmVjdGlvbiBmYWlsZWQiLCB0aGlzKTsKKyAgICAgICAgICAg
IGRpZENsb3NlKGhhbmRsZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgc2tpcEJ1ZmZlcihtX2hhbmRzaGFrZS5zZXJ2ZXJIYW5kc2hha2VMZW5ndGgoKSk7CisgICAg
ICAgIGlmICghbV9idWZmZXIuZ2V0KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIExP
RyhOZXR3b3JrLCAicmVtYWluaW5nIGluIHJlYWQgYnVmICV1bCIsIG1fYnVmZmVyU2l6ZSk7Cisg
ICAgfQorCisgICAgY29uc3QgY2hhciogbmV4dEZyYW1lID0gbV9idWZmZXIuZ2V0KCk7CisgICAg
Y29uc3QgY2hhciogcCA9IG1fYnVmZmVyLmdldCgpOworICAgIGNvbnN0IGNoYXIqIGVuZCA9IHAg
KyBtX2J1ZmZlclNpemU7CisgICAgd2hpbGUgKHAgPCBlbmQpIHsKKyAgICAgICAgdW5zaWduZWQg
Y2hhciBmcmFtZUJ5dGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqcCsrKTsKKyAgICAg
ICAgaWYgKChmcmFtZUJ5dGUgJiAweDgwKSA9PSAweDgwKSB7CisgICAgICAgICAgICBpbnQgbGVu
Z3RoID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChwIDwgZW5kICYmICgqcCAmIDB4ODApID09IDB4
ODApIHsKKyAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ+OjptYXgoKSAvIDEyOCkgeworICAgICAgICAgICAgICAgICAgICBMT0coTmV0d29yaywgImZy
YW1lIGxlbmd0aCBvdmVyZmxvdyAlZCIsIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIGRp
ZENsb3NlKGhhbmRsZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoICogMTI3ICsgKnAgJiAweDdm
OworICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChw
ICsgbGVuZ3RoIDwgZW5kKSB7CisgICAgICAgICAgICAgICAgcCArPSBsZW5ndGg7CisgICAgICAg
ICAgICAgICAgbmV4dEZyYW1lID0gcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1zZ1N0YXJ0ID0gcDsKKyAgICAgICAgICAgIHdoaWxl
IChwIDwgZW5kICYmICpwICE9ICdceGZmJykKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAg
ICAgICBpZiAocCA8IGVuZCAmJiAqcCA9PSAnXHhmZicpIHsKKyAgICAgICAgICAgICAgICBpZiAo
ZnJhbWVCeXRlID09IDB4MDApCisgICAgICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlTWVzc2FnZShTdHJpbmc6OmZyb21VVEY4KG1zZ1N0YXJ0LCBwIC0gbXNnU3RhcnQpKTsKKyAg
ICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgbmV4dEZyYW1lID0gcDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBza2lwQnVmZmVyKG5leHRGcmFtZSAtIG1f
YnVmZmVyLmdldCgpKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRGYWlsKFNvY2tl
dFN0cmVhbUhhbmRsZSogaGFuZGxlLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYpCit7CisgICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZEZhaWwiLCB0aGlzKTsKKyAgICBB
U1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdldCgpIHx8ICFtX2hhbmRsZS5nZXQoKSk7CisgICAg
ZGlkQ2xvc2UoaGFuZGxlKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpyZWRpcmVjdChj
b25zdCBTdHJpbmcmIGxvY2F0aW9uKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hh
bm5lbCAlcCByZWRpcmVjdCB0byAlcyIsIHRoaXMsIGxvY2F0aW9uLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIG1faGFuZGxlLmNsZWFyKCk7CisgICAgbV9oYW5kc2hha2Uuc2V0VVJMKEtVUkwobG9jYXRp
b24pKTsKKyAgICBjb25uZWN0KCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6YXV0aGVu
dGljYXRlKGNvbnN0IFN0cmluZyYgLyogd3d3QXV0aGVudGljYXRlICovKQoreworICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICAvLyBPYnRhaW4gY3JlZGVudGlhbHMgZm9yIGhhbmRs
aW5nIHd3d0F1dGhlbnRpY2F0ZS4KKyAgICAvLyAgIHd3d0F1dGhlbnRpY2F0ZSA9IGNoYWxsZW5n
ZQorICAgIC8vICAgY2hhbGxlbmdlID0gYXV0aC1zY2hlbWUgMSpTUCByZWFsbSAqKCAiLCIgYXV0
aC1wYXJhbSApCisgICAgLy8gICBhdXRoLXNjaGVtZSA9IHRva2VuCisgICAgLy8gICBhdXRoLXBh
cmFtID0gdG9rZW4gIj0iIHF1b3RlZC1zdHJpbmcKKyAgICAvLyAgIHJlYWxtID0gInJlYWxtIiAi
PSIgcmVhbS12YWx1ZQorICAgIC8vICAgcmVhbG0tdmFsdWUgPSBxdW90ZWQtc3RyaW5nCisgICAg
Ly8gICBjcmVkZW50aWFscyA9IGJhc2ljLWNyZWRlbnRpYWxzCisgICAgLy8gICAgICAgICAgICAg
ICB8ICggYXV0aC1zY2hlbWUgI2F1dGgtcGFyYW0gKQorICAgIC8vICAgYmFzaWMtY3JlZGVudGlh
bHMgPSAiQmFzaWMiIFNQIGJhc2ljLWNvb2tpZQorICAgIC8vICAgYmFzaWMtY29va2llID0gPGJh
c2U2NCBlbmRvZGluZyBvZiB1c2VyaWQtcGFzc3dvcmQsIGV4Y2VwdCBub3QgbGltaXRlZCB0byA3
NiBjaGFyL2xpbmU+CisgICAgLy8gICB1c2VyaWQtcGFzc3dvcmQgPSBbIHRva2VuIF0gIjoiICpU
RVhUCisgICAgLy8gSWYgZXhpc3RzLCBzZXQgaXQgdG8gdGhlIG1faGFuZHNoYWtlLiAgT3RoZXJ3
aXNlLCBkaWRGYWlsLgorICAgIC8vIElmIHdlIGFscmVhZHkgdHJpZWQgdGhlIHNhbWUgY3JlZGVu
dGlhbHMsIGRpZEZhaWwuCisgICAgLy8gQ2xvc2UgdGhlIGNvbm5lY3Rpb24gYnkgbV9oYW5kbGUu
Y2xlYXIoKS4KKyAgICAvLyBjb25uZWN0KCkuCisgICAgZGlkQ2xvc2UobV9oYW5kbGUuZ2V0KCkp
OworfQorCitib29sIFdlYlNvY2tldENoYW5uZWw6OmFwcGVuZFRvQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW4pCit7CisgICAgY2hhciogbmV3QnVmZmVyID0gMDsKKyAgICBpZiAodHJ5
RmFzdE1hbGxvYyhtX2J1ZmZlclNpemUgKyBsZW4pLmdldFZhbHVlKG5ld0J1ZmZlcikpIHsKKyAg
ICAgICAgaWYgKG1fYnVmZmVyLmdldCgpKQorICAgICAgICAgICAgbWVtY3B5KG5ld0J1ZmZlciwg
bV9idWZmZXIuZ2V0KCksIG1fYnVmZmVyU2l6ZSk7CisgICAgICAgIG1lbWNweShuZXdCdWZmZXIg
KyBtX2J1ZmZlclNpemUsIGRhdGEsIGxlbik7CisgICAgICAgIG1fYnVmZmVyLnNldChuZXdCdWZm
ZXIpOworICAgICAgICBtX2J1ZmZlclNpemUgKz0gbGVuOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgTE9HKE5ldHdvcmssICJUb28gbG9uZyBXZWJTb2NrZXQgZnJhbWUgJWQiLCBt
X2J1ZmZlclNpemUgKyBsZW4pOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpza2lwQnVmZmVyKGludCBsZW4pCit7CisgICAgQVNTRVJUKGxlbiA8PSBtX2J1
ZmZlclNpemUpOworICAgIG1fYnVmZmVyU2l6ZSAtPSBsZW47CisgICAgaWYgKCFtX2J1ZmZlclNp
emUpIHsKKyAgICAgICAgbV9idWZmZXIuc2V0KDApOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIG1lbW1vdmUobV9idWZmZXIuZ2V0KCksIG1fYnVmZmVyLmdldCgpICsgbGVuLCBtX2J1ZmZl
clNpemUpOworfQorCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIEVOQUJM
RShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmZjJkMWIKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0wLDAgKzEsOTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJTb2NrZXRDaGFubmVsX2gKKyNkZWZpbmUgV2ViU29ja2V0Q2hhbm5lbF9oCisKKyNp
ZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2UuaCIKKyNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBjbGFzcyBTdHJpbmc7
CisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlOworICAgIGNsYXNzIFNvY2tldFN0cmVhbUVy
cm9yOworICAgIGNsYXNzIFdlYlNvY2tldENoYW5uZWxDbGllbnQ7CisKKyAgICBjbGFzcyBXZWJT
b2NrZXRDaGFubmVsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5lbD4sIHB1Ymxp
YyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViU29ja2V0Q2hhbm5lbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSB7IHJldHVybiBuZXcgV2ViU29ja2V0Q2hhbm5l
bChjb250ZXh0LCBjbGllbnQsIHVybCwgcHJvdG9jb2wpOyB9CisgICAgICAgIHZpcnR1YWwgfldl
YlNvY2tldENoYW5uZWwoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdCgpOworCisg
ICAgICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbXNnKTsKKyAgICAgICAgdmly
dHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CisKKyAgICAgICAgdmly
dHVhbCB2b2lkIGNsb3NlKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxPcGVuU3RyZWFt
KFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEtVUkwmKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHdpbGxTZW5kRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50KTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZE9wZW4oU29ja2V0U3RyZWFtSGFuZGxlKik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRDbG9zZShTb2NrZXRTdHJlYW1IYW5kbGUqKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IGNoYXIq
LCBpbnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChTb2NrZXRTdHJlYW1IYW5kbGUq
LCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgV2Vi
U29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViU29ja2V0Q2hhbm5lbENs
aWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKTsKKworICAgICAgICB2b2lkIHJlZGly
ZWN0KGNvbnN0IFN0cmluZyYgbG9jYXRpb24pOworICAgICAgICB2b2lkIGF1dGhlbnRpY2F0ZShj
b25zdCBTdHJpbmcmIHd3d0F1dGhlbnRpY2F0ZSk7CisKKyAgICAgICAgYm9vbCBhcHBlbmRUb0J1
ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKTsKKyAgICAgICAgdm9pZCBza2lwQnVmZmVy
KGludCBsZW4pOworCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsK
KyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogbV9jbGllbnQ7CisgICAgICAgIFdlYlNv
Y2tldEhhbmRzaGFrZSBtX2hhbmRzaGFrZTsKKyAgICAgICAgUmVmUHRyPFNvY2tldFN0cmVhbUhh
bmRsZT4gbV9oYW5kbGU7CisgICAgICAgIE93blB0cjxjaGFyPiBtX2J1ZmZlcjsKKyAgICAgICAg
aW50IG1fYnVmZmVyU2l6ZTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtX3VuaGFuZGxlZEJ1ZmZl
clNpemU7CisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBF
TkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAgLy8gV2ViU29ja2V0Q2hhbm5lbF9oCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIGIvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi40NjNjYWRhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaApAQCAtMCwwICsxLDUzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViU29ja2V0Q2hhbm5lbENsaWVudF9oCisjZGVmaW5lIFdlYlNvY2tldENoYW5uZWxDbGll
bnRfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
KyAgICBjbGFzcyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAg
IHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWxDbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpZENvbm5lY3QoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKGNvbnN0IFN0cmluZyYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoKSB7
IH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCgpIHsg
fQorICAgIH07CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxF
KFdFQl9TT0NLRVRTKQorCisjZW5kaWYgIC8vIFdlYlNvY2tldENoYW5uZWxDbGllbnRfaApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5mMmIwM2FjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTAsMCArMSw1MTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2ViU29j
a2V0SGFuZHNoYWtlLmgiCisKKyNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKKyNpbmNsdWRlICJI
VFRQSGVhZGVyTWFwLmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKKyNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGNoYXIgd2ViU29ja2V0U2VydmVy
SGFuZHNoYWtlSGVhZGVyW10gPSAiSFRUUC8xLjEgMTAxIFdlYiBTb2NrZXQgUHJvdG9jb2wgSGFu
ZHNoYWtlXHJcbiI7Citjb25zdCBjaGFyIHdlYlNvY2tldFVwZ3JhZGVIZWFkZXJbXSA9ICJVcGdy
YWRlOiBXZWJTb2NrZXRcclxuIgorICAgICAgICAiQ29ubmVjdGlvbjogVXBncmFkZVxyXG4iOwor
CitzdGF0aWMgU3RyaW5nIGV4dHJhY3RSZXNwb25zZUNvZGUoY29uc3QgY2hhciogaGVhZGVyLCBp
bnQgbGVuKQoreworICAgIGNvbnN0IGNoYXIqIHNwYWNlMSA9IDA7CisgICAgY29uc3QgY2hhciog
c3BhY2UyID0gMDsKKyAgICBjb25zdCBjaGFyKiBwOworICAgIGZvciAocCA9IGhlYWRlcjsgcCAt
IGhlYWRlciA8IGxlbjsgcCsrKSB7CisgICAgICAgIGlmICgqcCA9PSAnICcpIHsKKyAgICAgICAg
ICAgIGlmICghc3BhY2UxKQorICAgICAgICAgICAgICAgIHNwYWNlMSA9IHA7CisgICAgICAgICAg
ICBlbHNlIGlmICghc3BhY2UyKQorICAgICAgICAgICAgICAgIHNwYWNlMiA9IHA7CisgICAgICAg
IH0gZWxzZSBpZiAoKnAgPT0gJ1xuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBp
ZiAocCAtIGhlYWRlciA9PSBsZW4pCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBpZiAo
IXNwYWNlMSB8fCAhc3BhY2UyKQorICAgICAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIFN0cmlu
ZyhzcGFjZTEgKyAxLCBzcGFjZTIgLSBzcGFjZTEgLSAxKTsKK30KKworc3RhdGljIGJvb2wgaGFk
U2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpCit7Cisg
ICAgZm9yIChjb25zdCBjaGFyKiBwID0gc3RhcnQ7IHAgJiYgcCA8IGVuZDsgcCsrKSB7CisgICAg
ICAgIHAgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtY2hyKHAsICdccicsIGVuZCAtIHAp
KTsKKyAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGlmIChwICsgMyA8IGVuZCAmJiAqKHAgKyAxKSA9PSAnXG4nICYmICoocCArIDIpID09ICdccicg
JiYgKihwICsgMykgPT0gJ1xuJykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZTo6V2ViU29ja2V0SGFuZHNo
YWtlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fdXJsKHVybCkKKyAgICAsIG1fY2xpZW50UHJv
dG9jb2wocHJvdG9jb2wpCisgICAgLCBtX3NlY3VyZShtX3VybC5wcm90b2NvbElzKCJ3c3MiKSkK
KyAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9zZXJ2ZXJIYW5kc2hha2VMZW5ndGgo
MCkKKyAgICAsIG1fbW9kZShJbmNvbXBsZXRlKQoreworfQorCitXZWJTb2NrZXRIYW5kc2hha2U6
On5XZWJTb2NrZXRIYW5kc2hha2UoKQoreworfQorCitjb25zdCBLVVJMJiBXZWJTb2NrZXRIYW5k
c2hha2U6OnVybCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXJsOworfQorCit2b2lkIFdlYlNv
Y2tldEhhbmRzaGFrZTo6c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICBtX3VybCA9IHVy
bC5jb3B5KCk7Cit9CisKK2NvbnN0IFN0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6Omhvc3QoKSBj
b25zdAoreworICAgIHJldHVybiBtX3VybC5ob3N0KCkubG93ZXIoKTsKK30KKworY29uc3QgU3Ry
aW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudFByb3RvY29sKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jbGllbnRQcm90b2NvbDsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNl
dENsaWVudFByb3RvY29sKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCit7CisgICAgbV9jbGllbnRQ
cm90b2NvbCA9IHByb3RvY29sOworfQorCitib29sIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VjdXJl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZWN1cmU7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFu
ZHNoYWtlOjpzZXRTZWN1cmUoYm9vbCBzZWN1cmUpCit7CisgICAgbV9zZWN1cmUgPSBzZWN1cmU7
Cit9CisKK1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudE9yaWdpbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKTsKK30K
KworU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50TG9jYXRpb24oKSBjb25zdAorewor
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChtX3NlY3VyZSA/
ICJ3c3MiIDogIndzIik7CisgICAgYnVpbGRlci5hcHBlbmQoIjovLyIpOworICAgIGJ1aWxkZXIu
YXBwZW5kKGhvc3QoKSk7CisgICAgaWYgKG1fdXJsLnBvcnQoKSkgeworICAgICAgICBpZiAoKCFt
X3NlY3VyZSAmJiBtX3VybC5wb3J0KCkgIT0gODEpIHx8IChtX3NlY3VyZSAmJiBtX3VybC5wb3J0
KCkgIT0gODE1KSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjoiKTsKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG1fdXJsLnBvcnQoKSkpOworICAgICAg
ICB9CisgICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKG1fdXJsLnBhdGgoKSk7CisgICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworQ1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNs
aWVudEhhbmRzaGFrZU1lc3NhZ2UoKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKKworICAgIGJ1aWxkZXIuYXBwZW5kKCJHRVQgIik7CisgICAgYnVpbGRlci5hcHBlbmQodXJs
KCkucGF0aCgpKTsKKyAgICBpZiAoIXVybCgpLnF1ZXJ5KCkuaXNFbXB0eSgpKSB7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCI/Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHVybCgpLnF1ZXJ5
KCkpOworICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZCgiIEhUVFAvMS4xXHJcbiIpOworICAgIGJ1
aWxkZXIuYXBwZW5kKCJVcGdyYWRlOiBXZWJTb2NrZXRcclxuIik7CisgICAgYnVpbGRlci5hcHBl
bmQoIkNvbm5lY3Rpb246IFVwZ3JhZGVcclxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIkhvc3Q6
ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKGhvc3QoKSk7CisgICAgaWYgKHVybCgpLnBvcnQoKSkg
eworICAgICAgICBpZiAoKCFzZWN1cmUoKSAmJiB1cmwoKS5wb3J0KCkgIT0gODApIHx8IChzZWN1
cmUoKSAmJiB1cmwoKS5wb3J0KCkgIT0gNDQzKSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIjoiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHVybCgp
LnBvcnQoKSkpOworICAgICAgICB9CisgICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7
CisgICAgYnVpbGRlci5hcHBlbmQoIk9yaWdpbjogIik7CisgICAgYnVpbGRlci5hcHBlbmQoY2xp
ZW50T3JpZ2luKCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisgICAgaWYgKCFjbGll
bnRQcm90b2NvbCgpLmlzRW1wdHkoKSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZCgiV2ViU29j
a2V0LVByb3RvY29sOiAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoY2xpZW50UHJvdG9jb2wo
KSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisgICAgfQorICAgIEtVUkwgdXJs
ID0gdXJsT3ZlckhUVFAoKTsKKyAgICAvLyBGSVhNRTogc2V0IGF1dGhlbnRpY2F0aW9uIGluZm9y
bWF0aW9uIG9yIGNvb2tpZXMgZm9yIHVybC4KKyAgICAvLyBTZXQgIkF1dGhvcml6YXRpb246IDxj
cmVkZW50aWFscz4iIGlmIGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uIGV4aXN0cyBmb3IgdXJs
LgorICAgIC8vIFNldCAiQ29va2llOiA8Y29va2llPiIgb3IgIkNvb2tpZTI6IDxjb29raWU+IiBp
ZiBjb29raWVzIGV4aXN0cyBmb3IgdXJsLgorICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7Cisg
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0
SGFuZHNoYWtlOjpyZXNldCgpCit7CisgICAgbV9zZXJ2ZXJIYW5kc2hha2VMZW5ndGggPSAwOwor
ICAgIG1fbW9kZSA9IEluY29tcGxldGU7CisKKyAgICBtX3dzT3JpZ2luID0gU3RyaW5nKCk7Cisg
ICAgbV93c0xvY2F0aW9uID0gU3RyaW5nKCk7CisgICAgbV93c1Byb3RvY29sID0gU3RyaW5nKCk7
CisgICAgbV9zZXRDb29raWUgPSBTdHJpbmcoKTsKKyAgICBtX3NldENvb2tpZTIgPSBTdHJpbmco
KTsKKyAgICBtX2xvY2F0aW9uID0gU3RyaW5nKCk7CisgICAgbV93d3dBdXRoZW50aWNhdGUgPSBT
dHJpbmcoKTsKK30KKworYm9vbCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hh
a2UoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgbGVuKQoreworICAgIG1fc2VydmVySGFuZHNo
YWtlTGVuZ3RoID0gMDsKKyAgICBtX21vZGUgPSBJbmNvbXBsZXRlOworICAgIGlmIChsZW4gPCBz
aXplb2Yod2ViU29ja2V0U2VydmVySGFuZHNoYWtlSGVhZGVyKSAtIDEpIHsKKyAgICAgICAgTE9H
KE5ldHdvcmssICJzaG9ydCByZXNwb25zZSBoZWFkZXIgbGVuPSVkIiwgbGVuKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoIW1lbWNtcChoZWFkZXIsIHdlYlNvY2tldFNl
cnZlckhhbmRzaGFrZUhlYWRlciwgc2l6ZW9mKHdlYlNvY2tldFNlcnZlckhhbmRzaGFrZUhlYWRl
cikgLSAxKSkKKyAgICAgICAgbV9tb2RlID0gTm9ybWFsOworICAgIGVsc2UgeworICAgICAgICBj
b25zdCBTdHJpbmcmIGNvZGUgPSBleHRyYWN0UmVzcG9uc2VDb2RlKGhlYWRlciwgbGVuKTsKKyAg
ICAgICAgaWYgKGNvZGUuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAic2hv
cnQgc2VydmVyIGhhbmRzaGFrZTogJXMiLCBoZWFkZXIpOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgICAgIGlmIChjb2RlLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgTE9HKE5ldHdvcmssICJubyByZXNwb25zZSBjb2RlIGZvdW5kOiAlcyIsIGhlYWRlcik7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBMT0coTmV0d29yaywg
InJlc3BvbnNlIGNvZGU6ICVzIiwgY29kZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKGNv
ZGUgPT0gIjMwMSIgfHwgY29kZSA9PSAiMzAyIiB8fCBjb2RlID09ICIzMDMiIHx8IGNvZGUgPT0g
IjMwNyIpCisgICAgICAgICAgICBtX21vZGUgPSBSZWRpcmVjdDsKKyAgICAgICAgZWxzZSBpZiAo
Y29kZSA9PSAiNDAxIikKKyAgICAgICAgICAgIG1fbW9kZSA9IEF1dGhlbnRpY2F0ZTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBMT0coTmV0d29yaywgIk1pc21hdGNoIHNlcnZlciBoYW5k
c2hha2U6ICVzIiwgaGVhZGVyKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICAgfQorICAgIGNvbnN0IGNoYXIqIHAgPSBoZWFkZXIgKyBzaXplb2Yod2ViU29ja2V0U2Vy
dmVySGFuZHNoYWtlSGVhZGVyKSAtIDE7CisgICAgY29uc3QgY2hhciogZW5kID0gaGVhZGVyICsg
bGVuICsgMTsKKworICAgIGlmIChtX21vZGUgPT0gTm9ybWFsKSB7CisgICAgICAgIHNpemVfdCBo
ZWFkZXJTaXplID0gZW5kIC0gcDsKKyAgICAgICAgaWYgKGhlYWRlclNpemUgPCBzaXplb2Yod2Vi
U29ja2V0VXBncmFkZUhlYWRlcikgLSAxKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBpZiAobWVtY21wKHAsIHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIsIHNpemVvZih3ZWJTb2Nr
ZXRVcGdyYWRlSGVhZGVyKSAtIDEpKSB7CisgICAgICAgICAgICBMT0coTmV0d29yaywgIkJhZCB1
cGdyYWRlIGhlYWRlcjogJXMiLCBwKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICAgIHAgKz0gc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMTsKKyAg
ICB9CisKKyAgICBpZiAoIWhhZFNlcnZlckhhbmRzaGFrZShwLCBlbmQpKSB7CisgICAgICAgIExP
RyhOZXR3b3JrLCAiaW5jb21wbGV0ZSBzZXJ2ZXIgaGFuZHNoYWtlIGxlbj0lZCIsIGxlbik7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgSFRUUEhlYWRlck1hcCBoZWFkZXJzOwor
ICAgIHAgPSBwYXJzZUhlYWRlcihwLCBlbmQsICZoZWFkZXJzKTsKKyAgICBpZiAoIXApIHsKKyAg
ICAgICAgTE9HKE5ldHdvcmssICJwYXJzZUhlYWRlciBmYWlsZWQiKTsKKyAgICAgICAgbV9tb2Rl
ID0gRmFpbGVkOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFwcm9jZXNz
SGVhZGVyKGhlYWRlcnMpKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiaGVhZGVyIHByb2Nlc3Mg
ZmFpbGVkIik7CisgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIHN3aXRjaCAobV9tb2RlKSB7CisgICAgY2FzZSBOb3JtYWw6CisgICAgICAg
IGhhbmRzaGFrZSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlZGlyZWN0OgorICAgICAg
ICBpZiAobV9sb2NhdGlvbi5pc051bGwoKSkKKyAgICAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdXRoZW50aWNhdGU6CisgICAgICAgIGlmIChtX3d3
d0F1dGhlbnRpY2F0ZS5pc051bGwoKSkKKyAgICAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbV9tb2RlID0gRmFpbGVkOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgbV9zZXJ2ZXJIYW5kc2hha2VMZW5ndGggPSBwIC0gaGVh
ZGVyOworICAgIHJldHVybiB0cnVlOworfQorCitzaXplX3QgV2ViU29ja2V0SGFuZHNoYWtlOjpz
ZXJ2ZXJIYW5kc2hha2VMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3NlcnZlckhhbmRz
aGFrZUxlbmd0aDsKK30KKworV2ViU29ja2V0SGFuZHNoYWtlOjpNb2RlIFdlYlNvY2tldEhhbmRz
aGFrZTo6bW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbW9kZTsKK30KKworY29uc3QgU3Ry
aW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlcldlYlNvY2tldE9yaWdpbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fd3NPcmlnaW47Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpz
ZXRTZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRPcmlnaW4pCit7
CisgICAgbV93c09yaWdpbiA9IHdlYlNvY2tldE9yaWdpbjsKK30KKworY29uc3QgU3RyaW5nJiBX
ZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlcldlYlNvY2tldExvY2F0aW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV93c0xvY2F0aW9uOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0
U2VydmVyV2ViU29ja2V0TG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRMb2NhdGlvbikK
K3sKKyAgICBtX3dzTG9jYXRpb24gPSB3ZWJTb2NrZXRMb2NhdGlvbjsKK30KKworY29uc3QgU3Ry
aW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlcldlYlNvY2tldFByb3RvY29sKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV93c1Byb3RvY29sOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFr
ZTo6c2V0U2VydmVyV2ViU29ja2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRQcm90
b2NvbCkKK3sKKyAgICBtX3dzUHJvdG9jb2wgPSB3ZWJTb2NrZXRQcm90b2NvbDsKK30KKworY29u
c3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlclNldENvb2tpZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fc2V0Q29va2llOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6
c2V0U2VydmVyU2V0Q29va2llKGNvbnN0IFN0cmluZyYgc2V0Q29va2llKQoreworICAgIG1fc2V0
Q29va2llID0gc2V0Q29va2llOworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFr
ZTo6c2VydmVyU2V0Q29va2llMigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2V0Q29va2llMjsK
K30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFNlcnZlclNldENvb2tpZTIoY29uc3Qg
U3RyaW5nJiBzZXRDb29raWUyKQoreworICAgIG1fc2V0Q29va2llMiA9IHNldENvb2tpZTI7Cit9
CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWRpcmVjdExvY2F0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9sb2NhdGlvbjsKK30KKworY29uc3QgU3RyaW5nJiBXZWJT
b2NrZXRIYW5kc2hha2U6Ond3d0F1dGhlbnRpY2F0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
d3d3QXV0aGVudGljYXRlOworfQorCitLVVJMIFdlYlNvY2tldEhhbmRzaGFrZTo6dXJsT3ZlckhU
VFAoKSBjb25zdAoreworICAgIEtVUkwgdXJsID0gbV91cmwuY29weSgpOworICAgIHVybC5zZXRQ
cm90b2NvbChtX3NlY3VyZSA/ICJodHRwcyIgOiAiaHR0cCIpOworICAgIGludCBwb3J0ID0gdXJs
LnBvcnQoKTsKKyAgICBpZiAoIXBvcnQpCisgICAgICAgIHBvcnQgPSBtX3NlY3VyZSA/IDgxNSA6
IDgxOworICAgIHVybC5zZXRQb3J0KHBvcnQpOworICAgIHJldHVybiB1cmw7Cit9CisKK2NvbnN0
IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cGFyc2VIZWFkZXIoY29uc3QgY2hhciogc3RhcnQs
IGNvbnN0IGNoYXIqIGVuZCwgSFRUUEhlYWRlck1hcCogaGVhZGVycykKK3sKKyAgICBWZWN0b3I8
Y2hhcj4gbmFtZTsKKyAgICBWZWN0b3I8Y2hhcj4gdmFsdWU7CisgICAgZm9yIChjb25zdCBjaGFy
KiBwID0gc3RhcnQ7IHAgPCBlbmQ7IHArKykgeworICAgICAgICBuYW1lLmNsZWFyKCk7CisgICAg
ICAgIHZhbHVlLmNsZWFyKCk7CisKKyAgICAgICAgZm9yICg7IHAgPCBlbmQ7IHArKykgeworICAg
ICAgICAgICAgc3dpdGNoICgqcCkgeworICAgICAgICAgICAgY2FzZSAnXHInOgorICAgICAgICAg
ICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAocCAr
IDEgPCBlbmQgJiYgKihwICsgMSkgPT0gJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBwICsgMjsKKyAgICAgICAgICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDRiBkb2Vzbid0
IGZvbGxvdyBMRiBwPSVwIGVuZD0lcCIsIHAsIGVuZCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBMT0coTmV0d29yaywg
IlVuZXhwZWN0ZWQgQ1IgaW4gbmFtZSIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICAgICAgY2FzZSAnXG4nOgorICAgICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiVW5leHBl
Y3RlZCBMRiBpbiBuYW1lIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAg
ICBjYXNlICc6JzoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgaWYgKCpwID49IDB4NDEgJiYgKnAgPD0gMHg1YSkKKyAgICAgICAg
ICAgICAgICAgICAgbmFtZS5hcHBlbmQoKnAgKyAweDIwKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIG5hbWUuYXBwZW5kKCpwKTsKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgqcCA9PSAnOicpIHsKKyAg
ICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBmb3IgKDsgcCA8IGVuZCAmJiAqcCA9PSAweDIwOyBwKysp
IHsgfQorCisgICAgICAgIGZvciAoOyBwIDwgZW5kOyBwKyspIHsKKyAgICAgICAgICAgIHN3aXRj
aCAoKnApIHsKKyAgICAgICAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgJ1xuJzoKKyAgICAgICAgICAgICAgICBMT0coTmV0d29yaywgIlVu
ZXhwZWN0ZWQgTEYgaW4gdmFsdWUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdmFsdWUuYXBwZW5kKCpwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmICgqcCA9PSAnXHInKSB7CisgICAgICAgICAgICAgICAg
KytwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGlmIChwID49IGVuZCB8fCAqcCAhPSAnXG4nKSB7CisgICAgICAgICAgICBMT0coTmV0
d29yaywgIkNSIGRvZXNuJ3QgZm9sbG93IExGIGFmdGVyIHZhbHVlIHA9JXAgZW5kPSVwIiwgcCwg
ZW5kKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIEF0b21pY1N0
cmluZyBuYW1lU3RyKFN0cmluZzo6ZnJvbVVURjgobmFtZS5kYXRhKCksIG5hbWUuc2l6ZSgpKSk7
CisgICAgICAgIFN0cmluZyB2YWx1ZVN0ciA9IFN0cmluZzo6ZnJvbVVURjgodmFsdWUuZGF0YSgp
LCB2YWx1ZS5zaXplKCkpOworICAgICAgICBMT0coTmV0d29yaywgIm5hbWU9JXMgdmFsdWU9JXMi
LCBuYW1lU3RyLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHZhbHVlU3RyLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICBoZWFkZXJzLT5hZGQobmFtZVN0ciwgdmFsdWVTdHIpOworICAgIH0KKyAgICBM
T0coTmV0d29yaywgIlVuZXhwZWN0ZWQgZW5kIG9mIGhlYWRlciIpOworICAgIHJldHVybiAwOwor
fQorCitib29sIFdlYlNvY2tldEhhbmRzaGFrZTo6cHJvY2Vzc0hlYWRlcihjb25zdCBIVFRQSGVh
ZGVyTWFwJiBoZWFkZXJzKQoreworICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBoZWFkZXJzLmJlZ2luKCk7IGl0ICE9IGhlYWRlcnMuZW5kKCk7ICsraXQpIHsKKyAg
ICAgICAgc3dpdGNoIChtX21vZGUpIHsKKyAgICAgICAgY2FzZSBOb3JtYWw6CisgICAgICAgICAg
ICBpZiAoaXQtPmZpcnN0ID09ICJ3ZWJzb2NrZXQtb3JpZ2luIikgeworICAgICAgICAgICAgICAg
IGlmICghbV93c09yaWdpbi5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgIG1fd3NPcmlnaW4gPSBpdC0+c2Vjb25kOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChpdC0+Zmlyc3QgPT0gIndlYnNvY2tldC1sb2NhdGlvbiIpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoIW1fd3NMb2NhdGlvbi5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIG1fd3NMb2NhdGlvbiA9IGl0LT5zZWNv
bmQ7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGl0LT5maXJzdCA9PSAid2Vic29ja2V0LXByb3Rv
Y29sIikgeworICAgICAgICAgICAgICAgIGlmICghbV93c1Byb3RvY29sLmlzTnVsbCgpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgbV93c1Byb3Rv
Y29sID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJz
ZXQtY29va2llIikgeworICAgICAgICAgICAgICAgIGlmICghbV9zZXRDb29raWUuaXNOdWxsKCkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBtX3Nl
dENvb2tpZSA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGl0LT5maXJzdCA9
PSAic2V0LWNvb2tpZTIiKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtX3NldENvb2tpZTIuaXNO
dWxsKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICBtX3NldENvb2tpZTIgPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgUmVkaXJlY3Q6CisgICAgICAgICAgICBpZiAoaXQtPmZpcnN0
ID09ICJsb2NhdGlvbiIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fbG9jYXRpb24uaXNOdWxs
KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBt
X2xvY2F0aW9uID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEF1dGhlbnRpY2F0ZToKKyAgICAgICAgICAgIGlmIChpdC0+Zmlyc3Qg
PT0gInd3dy1hdXRoZW50aWNhdGUiKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtX3d3d0F1dGhl
bnRpY2F0ZS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgIG1fd3d3QXV0aGVudGljYXRlID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgTE9H
KE5ldHdvcmssICJ1bmV4cGVjdGVkIG1vZGU6ICVkIiwgbV9tb2RlKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBXZWJTb2NrZXRIYW5kc2hha2U6OmhhbmRzaGFrZSgpCit7CisgICAgQVNTRVJUKG1fbW9kZSA9
PSBOb3JtYWwpOworICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAgICBpZiAobV93c09yaWdpbi5pc051
bGwoKSB8fCBtX3dzTG9jYXRpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChjbGllbnRPcmlnaW4oKSAhPSBtX3dzT3JpZ2luKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAi
TWlzbWF0Y2ggb3JpZ2luOiAlcyAhPSAlcyIsIGNsaWVudE9yaWdpbigpLnV0ZjgoKS5kYXRhKCks
IG1fd3NPcmlnaW4udXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKGNsaWVudExvY2F0aW9uKCkgIT0gbV93c0xvY2F0aW9uKSB7CisgICAgICAgIExPRyhOZXR3
b3JrLCAiTWlzbWF0Y2ggbG9jYXRpb246ICVzICE9ICVzIiwgY2xpZW50TG9jYXRpb24oKS51dGY4
KCkuZGF0YSgpLCBtX3dzTG9jYXRpb24udXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgaWYgKCFtX2NsaWVudFByb3RvY29sLmlzRW1wdHkoKSAmJiBtX2NsaWVudFBy
b3RvY29sICE9IG1fd3NQcm90b2NvbCkgeworICAgICAgICBMT0coTmV0d29yaywgIk1pc21hdGNo
IHByb3RvY29sOiAlcyAhPSAlcyIsIG1fY2xpZW50UHJvdG9jb2wudXRmOCgpLmRhdGEoKSwgbV93
c1Byb3RvY29sLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1f
bW9kZSA9IENvbm5lY3RlZDsKKyAgICByZXR1cm47Cit9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2
NGEwYjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlLmgKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTb2NrZXRIYW5kc2hha2VfaAor
I2RlZmluZSBXZWJTb2NrZXRIYW5kc2hha2VfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQor
CisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OworICAgIGNsYXNzIEhUVFBIZWFkZXJNYXA7CisKKyAgICBjbGFzcyBX
ZWJTb2NrZXRIYW5kc2hha2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgZW51bSBNb2RlIHsKKyAg
ICAgICAgICAgIEluY29tcGxldGUsIE5vcm1hbCwgUmVkaXJlY3QsIEF1dGhlbnRpY2F0ZSwgRmFp
bGVkLCBDb25uZWN0ZWQKKyAgICAgICAgfTsKKyAgICAgICAgV2ViU29ja2V0SGFuZHNoYWtlKGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KTsKKyAgICAgICAgfldlYlNvY2tldEhhbmRzaGFrZSgpOworCisgICAgICAgIGNv
bnN0IEtVUkwmIHVybCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFVSTChjb25zdCBLVVJMJiB1
cmwpOworICAgICAgICBjb25zdCBTdHJpbmcgaG9zdCgpIGNvbnN0OworCisgICAgICAgIGNvbnN0
IFN0cmluZyYgY2xpZW50UHJvdG9jb2woKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRDbGllbnRQ
cm90b2NvbChjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKKworICAgICAgICBib29sIHNlY3VyZSgp
IGNvbnN0OworICAgICAgICB2b2lkIHNldFNlY3VyZShib29sIHNlY3VyZSk7CisKKyAgICAgICAg
U3RyaW5nIGNsaWVudE9yaWdpbigpIGNvbnN0OworICAgICAgICBTdHJpbmcgY2xpZW50TG9jYXRp
b24oKSBjb25zdDsKKworICAgICAgICBDU3RyaW5nIGNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKSBj
b25zdDsKKworICAgICAgICB2b2lkIHJlc2V0KCk7CisKKyAgICAgICAgYm9vbCByZWFkU2VydmVy
SGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbik7CisgICAgICAgIHNpemVf
dCBzZXJ2ZXJIYW5kc2hha2VMZW5ndGgoKSBjb25zdDsKKyAgICAgICAgTW9kZSBtb2RlKCkgY29u
c3Q7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oKSBjb25z
dDsKKyAgICAgICAgdm9pZCBzZXRTZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oY29uc3QgU3RyaW5nJiB3
ZWJTb2NrZXRPcmlnaW4pOworCisgICAgICAgIGNvbnN0IFN0cmluZyYgc2VydmVyV2ViU29ja2V0
TG9jYXRpb24oKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTZXJ2ZXJXZWJTb2NrZXRMb2NhdGlv
bihjb25zdCBTdHJpbmcmIHdlYlNvY2tldExvY2F0aW9uKTsKKworICAgICAgICBjb25zdCBTdHJp
bmcmIHNlcnZlcldlYlNvY2tldFByb3RvY29sKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2Vy
dmVyV2ViU29ja2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRQcm90b2NvbCk7CisK
KyAgICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJTZXRDb29raWUoKSBjb25zdDsKKyAgICAgICAg
dm9pZCBzZXRTZXJ2ZXJTZXRDb29raWUoY29uc3QgU3RyaW5nJiBzZXRDb29raWUpOworICAgICAg
ICBjb25zdCBTdHJpbmcmIHNlcnZlclNldENvb2tpZTIoKSBjb25zdDsKKyAgICAgICAgdm9pZCBz
ZXRTZXJ2ZXJTZXRDb29raWUyKGNvbnN0IFN0cmluZyYgc2V0Q29va2llMik7CisKKyAgICAgICAg
Y29uc3QgU3RyaW5nJiByZWRpcmVjdExvY2F0aW9uKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFN0
cmluZyYgd3d3QXV0aGVudGljYXRlKCkgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBL
VVJMIHVybE92ZXJIVFRQKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IGNoYXIqIHBhcnNlSGVhZGVy
KGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQsIEhUVFBIZWFkZXJNYXAqIGhlYWRl
cnMpOworICAgICAgICBib29sIHByb2Nlc3NIZWFkZXIoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVh
ZGVycyk7CisgICAgICAgIHZvaWQgaGFuZHNoYWtlKCk7CisKKyAgICAgICAgS1VSTCBtX3VybDsK
KyAgICAgICAgU3RyaW5nIG1fY2xpZW50UHJvdG9jb2w7CisgICAgICAgIGJvb2wgbV9zZWN1cmU7
CisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKKworICAgICAgICBz
aXplX3QgbV9zZXJ2ZXJIYW5kc2hha2VMZW5ndGg7CisgICAgICAgIE1vZGUgbV9tb2RlOworCisg
ICAgICAgIFN0cmluZyBtX3dzT3JpZ2luOworICAgICAgICBTdHJpbmcgbV93c0xvY2F0aW9uOwor
ICAgICAgICBTdHJpbmcgbV93c1Byb3RvY29sOworICAgICAgICBTdHJpbmcgbV9zZXRDb29raWU7
CisgICAgICAgIFN0cmluZyBtX3NldENvb2tpZTI7CisgICAgICAgIFN0cmluZyBtX2xvY2F0aW9u
OworICAgICAgICBTdHJpbmcgbV93d3dBdXRoZW50aWNhdGU7CisgICAgfTsKKworfSAgLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRp
ZiAgLy8gV2ViU29ja2V0SGFuZHNoYWtlX2g=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38806</attachid>
            <date>2009-08-31 03:21:18 -0700</date>
            <delta_ts>2009-09-01 01:31:12 -0700</delta_ts>
            <desc>WebSocket API implementation</desc>
            <filename>bug-28038-20090831192117.patch</filename>
            <type>text/plain</type>
            <size>67146</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBmNjVjYWUwLi5hNWYwYmUwIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMDktMDgtMzEgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IFdURjo6
dHJ5RmFzdE1hbGxvYygpIHVzZWQgaW4gV2ViU29ja2V0Q2hhbm5lbC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MDM4CisKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5leHA6CisKIDIwMDktMDgtMjcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4KZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmV4cAppbmRleCBkNDVhMjJkLi5hMTY1NjIxIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZXhwCkBAIC0yOTUsNiArMjk1LDcgQEAgX19aTjNXVEYxMmRldGFjaFRocmVhZEVq
CiBfX1pOM1dURjEyaXNNYWluVGhyZWFkRXYKIF9fWk4zV1RGMTJyYW5kb21OdW1iZXJFdgogX19a
TjNXVEYxM2N1cnJlbnRUaHJlYWRFdgorX19aTjNXVEYxM3RyeUZhc3RNYWxsb2NFbQogX19aTjNX
VEYxM3RyeUZhc3RDYWxsb2NFbW0KIF9fWk4zV1RGMTN0cnlGYXN0TWFsbG9jRW0KIF9fWk4zV1RG
MTVUaHJlYWRDb25kaXRpb240d2FpdEVSTlNfNU11dGV4RQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmOTg0NGQxLi5lZDQyMDY1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDYwIEBACisyMDA5LTA4LTMxICBGdW1pdG9zaGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYlNv
Y2tldCBBUEkgaW1wbGVtZW50YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yODAzOAorICAgICAgICAKKyAgICAgICAgQWRkIGJ1aWxkIHN5c3Rl
bXMgb25seSBmb3IgR05VbWFrZWZpbGUgYW5kIFdlYkNvcmUueGNvZGVwcm9qIG5vdy4KKyAgICAg
ICAgT3RoZXIgYnVpbGQgc3lzdGVtcyB3aWxsIGJlIHVwZGF0ZWQgb25jZSB0aGUgY29kZSBpcyBm
dW5jdGlvbmFsLgorICAgICAgICBUZXN0cyB3aWxsIGJlIGxhbmRlZCBvbmNlIHRoZSBjb2RlIGlz
IGNvbXBsZXRlZCBhbmQgZnVuY3Rpb25hbC4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNw
cDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OndlYlNvY2tldCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvRXZlbnRUYXJnZXQpOgorICAgICAgICAqIGRvbS9F
dmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6dG9XZWJTb2Nr
ZXQpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5oOgorICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93LmlkbDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc1ZhbGlkUHJvdG9jb2xTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldDo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjphZGRF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6cmVtb3ZlRXZlbnRM
aXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNoRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0OjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNo
T3BlbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlzcGF0Y2hNZXNzYWdl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaXNwYXRjaENsb3NlRXZlbnQp
OgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Oik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNldE9ub3Blbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXQ6Om9ub3Blbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNldE9ubWVz
c2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Om9ubWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNldE9uY2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0OjpvbmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6dG9XZWJTb2Nr
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpldmVudExpc3RlbmVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmNwcDogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmg6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmg6
IEFkZGVkLgorCiAyMDA5LTA4LTI5ICBBZGVsZSBQZXRlcnNvbiAgPGFkZWxlQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5jcHAgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAppbmRleCA3
NWJlOGEzLi5kZGExY2JmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAor
KysgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMzQyLDYgKzM0Miw3IEBACiAjaW5j
bHVkZSAiSlNXZWJLaXRDU1NNYXRyaXguY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0UG9pbnQuY3Bw
IgogI2luY2x1ZGUgIkpTV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCIKKyNpbmNsdWRlICJKU1dl
YlNvY2tldC5jcHAiCiAjaW5jbHVkZSAiSlNXaGVlbEV2ZW50LmNwcCIKICNpbmNsdWRlICJKU1dv
cmtlci5jcHAiCiAjaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0LmNwcCIKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDBmOGIy
YmQuLjIzNmE3MWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzIzMSw3ICszMjMxLDEyIEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2Uu
aCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5o
IFwKIAlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCi0JV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIFwKKwlXZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgXAorCVdlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmggXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsQ2xpZW50LmggXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3Bw
IFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKIAogd2ViY29yZWd0
a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJl
YW1FcnJvci5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYjQxYjY4Yi4uY2Q0MzhhMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTg4Niw2ICs4ODYsOSBAQAogCQk1MTBENEEzNjEwMzE2NUVFMDA0OUVBNTQg
LyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3Ry
ZWFtSGFuZGxlQmFzZS5jcHAgKi87IH07CiAJCTUxMEQ0QTM3MTAzMTY1RUUwMDQ5RUE1NCAvKiBT
b2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZS5oICovOyB9OwogCQk1MTBENEEzODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50LmggKi87IH07CisJCTUxMEQ0QTRFMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFu
bmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLzsgfTsKKwkJ
NTEwRDRBNEYxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTQ4MTAzMTc3QTIwMDQ5
RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggKi87IH07CisJCTUxMEQ0QTUwMTAzMTc3QTIwMDQ5
RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEE0OTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29j
a2V0Q2hhbm5lbENsaWVudC5oICovOyB9OwogCQk1MTE2RDk3NzBDRjE3N0JEMDBDMkI4NEQgLyog
RGF0YWJhc2VEZXRhaWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTE2RDk3NTBDRjE3N0JEMDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTExRjIzMTcw
REMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjIzMTMwREMxNjBEQTAwNEYwMDMyIC8q
IExvY2FsU3RvcmFnZVRhc2suY3BwICovOyB9OwogCQk1MTFGMjMxODBEQzE2MERBMDA0RjAwMzIg
LyogTG9jYWxTdG9yYWdlVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTExRjIzMTQwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2su
aCAqLzsgfTsKQEAgLTk3Miw2ICs5NzUsMTAgQEAKIAkJNTFBQkFFMUIxMDNDMThGRjAwOEM1MjYw
IC8qIFNvY2tldFN0cmVhbUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUFCQUUxQTEwM0MxOEZGMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtRXJy
b3IuaCAqLzsgfTsKIAkJNTFBQkFFMUUxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhh
bmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFB
QkFFMUMxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oICovOyB9OwogCQk1
MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFMUQxMDND
MTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCAqLzsgfTsKKwkJNTFB
QkFFMkUxMDNENEY3NTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFMkMxMDNENEY3NTAw
OEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuY3BwICovOyB9OworCQk1MUFCQUUyRjEwM0Q0
Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFMkQxMDNENEY3NTAwOEM1MjYwIC8qIFdl
YlNvY2tldEhhbmRzaGFrZXIuaCAqLzsgfTsKKwkJNTFBQkFFNDQxMDQzQUI0QTAwOEM1MjYwIC8q
IFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUFCQUU0MjEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNo
YWtlLmNwcCAqLzsgfTsKKwkJNTFBQkFFNDUxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhh
bmRzaGFrZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFBQkFFNDMxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oICovOyB9Owog
CQk1MUIyNDE3QjBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjI0MTdBMEQ5MzFG
M0YwMEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tICovOyB9OwogCQk1MUJFMzdFMDBE
QUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdl
QXJlYS5oICovOyB9OwogCQk1MUMwQUEzOTBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzBBQTM4
MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02MDMwLDYgKzYwMzcsOSBAQAogCQk1MTBENEEz
MDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8q
IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEE0NzEwMzE3N0EyMDA0OUVB
NTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJTb2NrZXRDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTEwRDRBNDgxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0Q2hhbm5lbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTBENEE0OTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0
Q2hhbm5lbENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTZEOTc1
MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VEZXRhaWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxMUYyMzEzMERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2FsU3RvcmFnZVRhc2suY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFGMjMxNDBEQzE2MERBMDA0RjAwMzIg
LyogTG9jYWxTdG9yYWdlVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
b2NhbFN0b3JhZ2VUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTIzLDYg
KzYxMzMsMTAgQEAKIAkJNTFBQkFFMUExMDNDMThGRjAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUVy
cm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNvY2tldFN0cmVhbUVycm9y
Lmg7IHBhdGggPSBjZi9Tb2NrZXRTdHJlYW1FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUFCQUUxQzEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNvY2tldFN0cmVhbUhhbmRsZS5oOyBw
YXRoID0gY2YvU29ja2V0U3RyZWFtSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTb2NrZXRTdHJlYW1IYW5k
bGVDRk5ldC5jcHA7IHBhdGggPSBjZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUJBRTJDMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJT
b2NrZXRIYW5kc2hha2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlNvY2tldEhhbmRzaGFrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MUFCQUUyRDEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUJBRTQyMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFF
NDMxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFCMjQxN0EwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hp
dmVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMZWdhY3lX
ZWJBcmNoaXZlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJFMzdERTBE
QUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RvcmFnZUFyZWEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFD
MEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENhY2hlZEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMDU4Miw2ICsxMDU5NiwxMSBAQAogCQk1MThBMzRCRDEwMjZDODMxMDAxQjY4OTYgLyog
d2Vic29ja2V0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJNTFBQkFFNDIxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgKi8s
CisJCQkJNTFBQkFFNDMxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oICov
LAorCQkJCTUxMEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAq
LywKKwkJCQk1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oICov
LAorCQkJCTUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50
LmggKi8sCiAJCQkJNTE4QTM0QkUxMDI2QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tldC5jcHAgKi8s
CiAJCQkJNTE4QTM0QkYxMDI2QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tldC5oICovLAogCQkJCTUx
OEEzNEMwMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJTb2NrZXQuaWRsICovLApAQCAtMTc1NzksNiAr
MTc1OTgsOSBAQAogCQkJCTUxMEQ0QTM4MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQUJBRTFCMTAzQzE4RkYwMDhDNTI2
MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBQkFFMUUxMDND
MTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTEwRDRBNEYxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUxMEQ0QTUwMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUFCQUU0NTEwNDNBQjRBMDA4QzUyNjAgLyogV2Vi
U29ja2V0SGFuZHNoYWtlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE5Njc3LDYgKzE5Njk5LDggQEAK
IAkJCQk1MTBENEEzMzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxMEQ0QTM2MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRT
dHJlYW1IYW5kbGVCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQUJBRTFGMTAzQzE5MTMw
MDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1MTBENEE0RTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1MUFCQUU0NDEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNo
YWtlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAppbmRleCBlZmQzMTE0Li4wNGZkYzc2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNTMsNiArNTMsNyBAQAogCiAjaW5jbHVkZSAiSlNXZWJL
aXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTV2ViS2l0UG9pbnRDb25zdHJ1
Y3Rvci5oIgorI2luY2x1ZGUgIkpTV2ViU29ja2V0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJK
U1dvcmtlckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuaCIKQEAgLTY0NSw2
ICs2NDYsMTMgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2hhcmVkV29ya2VyKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorSlNWYWx1
ZSBKU0RPTVdpbmRvdzo6d2ViU29ja2V0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNXZWJTb2NrZXRDb25zdHJ1Y3Rvcj4oZXhlYywgdGhp
cyk7Cit9CisjZW5kaWYKKwogLy8gQ3VzdG9tIGZ1bmN0aW9ucwogCiAvLyBIZWxwZXIgZm9yIHdp
bmRvdy5vcGVuKCkgYW5kIHdpbmRvdy5zaG93TW9kYWxEaWFsb2coKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudFRhcmdldC5jcHAKaW5kZXggZWQ4MGQ4MC4uMDQyMWQxMCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRUYXJnZXQuY3BwCkBAIC03OCw2ICs3OCwxMSBAQAogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvbi5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisjaW5jbHVkZSAi
SlNXZWJTb2NrZXQuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXQuaCIKKyNlbmRpZgorCiB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzksNiArMTQ0LDExIEBA
IEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEV2ZW50VGFyZ2V0KiB0YXJnCiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIG5vdGlm
aWNhdGlvbik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBpZiAoV2Vi
U29ja2V0KiB3ZWJTb2NrZXQgPSB0YXJnZXQtPnRvV2ViU29ja2V0KCkpCisgICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIHdlYlNvY2tldCk7CisjZW5kaWYKKwogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBqc051bGwoKTsKIH0KQEAgLTE4Myw2ICsxOTMsMTAgQEAgRXZlbnRU
YXJnZXQqIHRvRXZlbnRUYXJnZXQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgIENPTlZFUlRfVE9f
RVZFTlRfVEFSR0VUKE5vdGlmaWNhdGlvbikKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NL
RVRTKQorICAgIENPTlZFUlRfVE9fRVZFTlRfVEFSR0VUKFdlYlNvY2tldCkKKyNlbmRpZgorCiAg
ICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNw
cCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCAyZjEzZGE4Li42NTI2NDRmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuY3BwCkBAIC04Myw2ICs4MywxMyBAQCBTVkdFbGVtZW50SW5zdGFuY2UqIEV2
ZW50VGFyZ2V0Ojp0b1NWR0VsZW1lbnRJbnN0YW5jZSgpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShXRUJfU09DS0VUUykKK1dlYlNvY2tldCogRXZlbnRUYXJnZXQ6OnRvV2ViU29ja2V0KCkKK3sK
KyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiBNZXNzYWdlUG9ydCogRXZlbnRUYXJnZXQ6OnRv
TWVzc2FnZVBvcnQoKQogewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggNmQzY2I3Yy4u
NmJjYzNmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC01MSw2ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIGNsYXNzIFNoYXJlZFdv
cmtlcjsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXJDb250ZXh0OworICAgIGNsYXNzIFdlYlNvY2tl
dDsKICAgICBjbGFzcyBXb3JrZXI7CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CiAgICAgY2xh
c3MgWE1MSHR0cFJlcXVlc3RVcGxvYWQ7CkBAIC03NSwxMSArNzYsMTMgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIFdvcmtlciogdG9Xb3JrZXIoKTsKICAgICAgICAgdmly
dHVhbCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB0b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKTsK
ICNlbmRpZgotCiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogICAgICAgICB2aXJ0dWFsIFNo
YXJlZFdvcmtlciogdG9TaGFyZWRXb3JrZXIoKTsKICAgICAgICAgdmlydHVhbCBTaGFyZWRXb3Jr
ZXJDb250ZXh0KiB0b1NoYXJlZFdvcmtlckNvbnRleHQoKTsKICNlbmRpZgorI2lmIEVOQUJMRShX
RUJfU09DS0VUUykKKyAgICAgICAgdmlydHVhbCBXZWJTb2NrZXQqIHRvV2ViU29ja2V0KCk7Cisj
ZW5kaWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICB2aXJ0dWFsIE5vdGlm
aWNhdGlvbiogdG9Ob3RpZmljYXRpb24oKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggOWM5ZTQ4MS4uMDAy
ZDliNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTQ4MSw2ICs0ODEsMTAgQEAgbW9kdWxlIHdpbmRvdyB7
CiAgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyXSBTaGFyZWRXb3JrZXJDb25zdHJ1
Y3RvciBTaGFyZWRXb3JrZXI7IC8vIFVzYWJsZSB3aXRoIHRoZSBuZXcgb3BlcmF0b3IKICNlbmRp
ZgogCisjaWYgZGVmaW5lZChFTkFCTEVfV0VCX1NPQ0tFVFMpICYmIEVOQUJMRV9XRUJfU09DS0VU
UworICAgICAgICBhdHRyaWJ1dGUgW0pTQ0N1c3RvbUdldHRlcl0gV2ViU29ja2V0Q29uc3RydWN0
b3IgV2ViU29ja2V0OyAvLyBVc2FibGUgd2l0aCB0aGUgbmV3IG9wZXJhdG9yCisjZW5kaWYKKwog
ICAgICAgICBhdHRyaWJ1dGUgUGx1Z2luQ29uc3RydWN0b3IgUGx1Z2luOwogICAgICAgICBhdHRy
aWJ1dGUgUGx1Z2luQXJyYXlDb25zdHJ1Y3RvciBQbHVnaW5BcnJheTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcAppbmRleCA5OTljMWZmLi4xMGY1NjE4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcApAQCAtMzQsMTMgKzM0LDM1IEBACiAKICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKIAorI2lu
Y2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5l
ci5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5j
bHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5l
bC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitzdGF0aWMgYm9vbCBpc1ZhbGlkUHJvdG9jb2xTdHJpbmcoY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJiBwcm90b2NvbCkKK3sKKyAgICBpZiAocHJvdG9jb2wuaXNOdWxsKCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChwcm90b2NvbC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHByb3RvY29sLmNoYXJhY3RlcnMo
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3RvY29sLmxlbmd0aCgpOyBpKyspIHsK
KyAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gPCAweDIxIHx8IGNoYXJhY3RlcnNbaV0gPiAweDdF
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogV2ViU29ja2V0OjpXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
ICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9zdGF0ZShDT05O
RUNUSU5HKQpAQCAtNTksMzkgKzgxLDQ5IEBAIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0
IEtVUkwmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY29ubmVjdCB0byAlcyBwcm90
b2NvbD0lcyIsIHRoaXMsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBwcm90b2NvbC51dGY4
KCkuZGF0YSgpKTsKICAgICBtX3VybCA9IHVybDsKICAgICBtX3Byb3RvY29sID0gcHJvdG9jb2w7
CiAKICAgICBpZiAoIW1fdXJsLnByb3RvY29sSXMoIndzIikgJiYgIW1fdXJsLnByb3RvY29sSXMo
IndzcyIpKSB7CisgICAgICAgIExPR19FUlJPUigiRXJyb3I6IHdyb25nIHVybCBmb3IgV2ViU29j
a2V0ICVzIiwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBtX3N0YXRlID0g
Q0xPU0VEOwogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgaWYgKCFtX3Byb3RvY29sLmlzTnVsbCgpICYmIG1fcHJvdG9jb2wuaXNFbXB0eSgpKSB7
CisgICAgaWYgKCFpc1ZhbGlkUHJvdG9jb2xTdHJpbmcobV9wcm90b2NvbCkpIHsKKyAgICAgICAg
TE9HX0VSUk9SKCJFcnJvcjogd3JvbmcgcHJvdG9jb2wgZm9yIFdlYlNvY2tldCAlcyIsIG1fcHJv
dG9jb2wudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBDTE9TRUQ7CiAgICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAvLyBGSVhNRTog
Q2hlY2sgcHJvdG9jb2wgaXMgdmFsaWQgZm9ybS4KLSAgICAvLyBGSVhNRTogQ29ubmVjdCBXZWJT
b2NrZXRDaGFubmVsLgorICAgIC8vIEZJWE1FOiBpZiBtX3VybC5wb3J0KCkgaXMgYmxvY2tpbmcg
cG9ydCwgcmFpc2UgU0VDVVJJVFlfRVJSLgorCisgICAgbV9jaGFubmVsID0gV2ViU29ja2V0Q2hh
bm5lbDo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcywgbV91cmwsIG1fcHJv
dG9jb2wpOworICAgIG1fY2hhbm5lbC0+Y29ubmVjdCgpOwogfQogCi1ib29sIFdlYlNvY2tldDo6
c2VuZChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiBlYykKK2Jvb2wgV2ViU29ja2V0Ojpz
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYg
KG1fc3RhdGUgIT0gT1BFTikgeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIHNlbmQg
JXMiLCB0aGlzLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChtX3N0YXRlID09IENP
Tk5FQ1RJTkcpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KLSAgICAvLyBGSVhNRTogc2VuZCBtZXNzYWdlIG9uIFdlYlNvY2tl
dENoYW5uZWwuCi0gICAgcmV0dXJuIGZhbHNlOworICAgIC8vIE5vIGV4Y2VwdGlvbiBpcyByYWlz
ZWQgaWYgdGhlIGNvbm5lY3Rpb24gd2FzIG9uY2UgZXN0YWJsaXNoZWQgYnV0IGhhcyBzdWJzZXF1
ZW50bHkgYmVlbiBjbG9zZWQuCisgICAgaWYgKG1fc3RhdGUgPT0gQ0xPU0VEKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgLy8gRklYTUU6IGNoZWNrIG1lc3NhZ2UgaXMgdmFsaWQgdXRmOC4K
KyAgICByZXR1cm4gbV9jaGFubmVsLT5zZW5kKG1lc3NhZ2UpOwogfQogCiB2b2lkIFdlYlNvY2tl
dDo6Y2xvc2UoKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlIiwgdGhp
cyk7CiAgICAgaWYgKG1fc3RhdGUgPT0gQ0xPU0VEKQogICAgICAgICByZXR1cm47CiAgICAgbV9z
dGF0ZSA9IENMT1NFRDsKLSAgICAvLyBGSVhNRTogY2xvc2UgV2ViU29ja2V0Q2hhbm5lbC4KKyAg
ICBtX2NoYW5uZWwtPmNsb3NlKCk7CiB9CiAKIGNvbnN0IEtVUkwmIFdlYlNvY2tldDo6dXJsKCkg
Y29uc3QKQEAgLTEwNiw3ICsxMzgsOCBAQCBXZWJTb2NrZXQ6OlN0YXRlIFdlYlNvY2tldDo6cmVh
ZHlTdGF0ZSgpIGNvbnN0CiAKIHVuc2lnbmVkIGxvbmcgV2ViU29ja2V0OjpidWZmZXJlZEFtb3Vu
dCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IGFzayBwbGF0Zm9ybSBjb2RlIHRvIGdldCBidWZm
ZXJlZCBhbW91bnQgdG8gYmUgc2VudC4KKyAgICBpZiAobV9zdGF0ZSA9PSBPUEVOKQorICAgICAg
ICByZXR1cm4gbV9jaGFubmVsLT5idWZmZXJlZEFtb3VudCgpOwogICAgIHJldHVybiAwOwogfQog
CkBAIC0xMTUsMjQgKzE0OCw1NyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBXZWJTb2NrZXQ6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiBBY3RpdmVET01PYmpl
Y3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIH0KIAotdm9pZCBXZWJTb2NrZXQ6OmFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiwgYm9vbCkKK3ZvaWQgV2ViU29ja2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIs
IGJvb2wpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgorICAgIEV2ZW50TGlzdGVu
ZXJzTWFwOjppdGVyYXRvciBpdGVyID0gbV9ldmVudExpc3RlbmVycy5maW5kKGV2ZW50VHlwZSk7
CisgICAgaWYgKGl0ZXIgPT0gbV9ldmVudExpc3RlbmVycy5lbmQoKSkgeworICAgICAgICBMaXN0
ZW5lclZlY3RvciBsaXN0ZW5lcnM7CisgICAgICAgIGxpc3RlbmVycy5hcHBlbmQoZXZlbnRMaXN0
ZW5lcik7CisgICAgICAgIG1fZXZlbnRMaXN0ZW5lcnMuYWRkKGV2ZW50VHlwZSwgbGlzdGVuZXJz
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBMaXN0ZW5lclZlY3RvciYgbGlzdGVuZXJzID0gaXRl
ci0+c2Vjb25kOworICAgICAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjppdGVyYXRvciBsaXN0ZW5l
ckl0ZXIgPSBsaXN0ZW5lcnMuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9IGxpc3RlbmVycy5lbmQo
KTsgKytsaXN0ZW5lckl0ZXIpCisgICAgICAgICAgICBpZiAoKmxpc3RlbmVySXRlciA9PSBldmVu
dExpc3RlbmVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsaXN0ZW5lcnMu
YXBwZW5kKGV2ZW50TGlzdGVuZXIpOworICAgICAgICBtX2V2ZW50TGlzdGVuZXJzLmFkZChldmVu
dFR5cGUsIGxpc3RlbmVycyk7CisgICAgfQogfQogCi12b2lkIFdlYlNvY2tldDo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmLCBFdmVudExpc3RlbmVyKiwgYm9vbCkKK3Zv
aWQgV2ViU29ja2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyLCBib29sKQogewotICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBFdmVudExpc3RlbmVyc01hcDo6aXRlcmF0b3IgaXRl
ciA9IG1fZXZlbnRMaXN0ZW5lcnMuZmluZChldmVudFR5cGUpOworICAgIGlmIChpdGVyID09IG1f
ZXZlbnRMaXN0ZW5lcnMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIExpc3RlbmVyVmVj
dG9yJiBsaXN0ZW5lcnMgPSBpdGVyLT5zZWNvbmQ7CisgICAgZm9yIChMaXN0ZW5lclZlY3Rvcjo6
Y29uc3RfaXRlcmF0b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVuZXJzLmJlZ2luKCk7IGxpc3RlbmVy
SXRlciAhPSBsaXN0ZW5lcnMuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKQorICAgICAgICBpZiAoKmxp
c3RlbmVySXRlciA9PSBldmVudExpc3RlbmVyKSB7CisgICAgICAgICAgICBsaXN0ZW5lcnMucmVt
b3ZlKGxpc3RlbmVySXRlciAtIGxpc3RlbmVycy5iZWdpbigpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogfQogCi1ib29sIFdlYlNvY2tldDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpCitib29sIFdlYlNvY2tldDo6ZGlzcGF0Y2hFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiBldnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgdGhpcy4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFldnQgfHwg
ZXZ0LT50eXBlKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGVjID0gRXZlbnRFeGNlcHRpb246OlVO
U1BFQ0lGSUVEX0VWRU5UX1RZUEVfRVJSOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICBMaXN0ZW5lclZlY3RvciBsaXN0ZW5lcnNDb3B5ID0gbV9ldmVudExpc3RlbmVycy5nZXQo
ZXZ0LT50eXBlKCkpOworICAgIGZvciAoTGlzdGVuZXJWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGxp
c3RlbmVySXRlciA9IGxpc3RlbmVyc0NvcHkuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9IGxpc3Rl
bmVyc0NvcHkuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKSB7CisgICAgICAgIGV2dC0+c2V0VGFyZ2V0
KHRoaXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIGxp
c3RlbmVySXRlci0+Z2V0KCktPmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwgZmFsc2UpOworICAgIH0K
KyAgICByZXR1cm4gIWV2dC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogfQogCiB2b2lkIFdlYlNvY2tl
dDo6ZGlkQ29ubmVjdCgpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkQ29u
bmVjdCIsIHRoaXMpOwogICAgIGlmIChtX3N0YXRlICE9IENPTk5FQ1RJTkcpIHsKICAgICAgICAg
ZGlkQ2xvc2UoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTQzLDYgKzIwOSw3IEBAIHZvaWQgV2Vi
U29ja2V0OjpkaWRDb25uZWN0KCkKIAogdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNzYWdl
KGNvbnN0IFN0cmluZyYgbXNnKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRp
ZFJlY2VpdmVNZXNzYWdlICVzIiwgdGhpcywgbXNnLnV0ZjgoKS5kYXRhKCkpOwogICAgIGlmICht
X3N0YXRlICE9IE9QRU4pCiAgICAgICAgIHJldHVybjsKICAgICBkaXNwYXRjaE1lc3NhZ2VFdmVu
dChtc2cpOwpAQCAtMTUwLDIzICsyMTcsNTMgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKQogCiB2b2lkIFdlYlNvY2tldDo6ZGlkQ2xvc2UoKQog
eworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZENsb3NlIiwgdGhpcyk7CiAgICAg
bV9zdGF0ZSA9IENMT1NFRDsKICAgICBkaXNwYXRjaENsb3NlRXZlbnQoKTsKIH0KIAogdm9pZCBX
ZWJTb2NrZXQ6OmRpc3BhdGNoT3BlbkV2ZW50KCkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50
IHRoaXMuCisgICAgUmVmUHRyPEV2ZW50PiBldnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5vcGVuRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgaWYgKG1fb25vcGVuKSB7CisgICAgICAg
IGV2dC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhp
cyk7CisgICAgICAgIG1fb25vcGVuLT5oYW5kbGVFdmVudChldnQuZ2V0KCksIGZhbHNlKTsKKyAg
ICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2dC5y
ZWxlYXNlKCksIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKIH0KIAotdm9pZCBXZWJTb2NrZXQ6OmRp
c3BhdGNoTWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYpCit2b2lkIFdlYlNvY2tldDo6ZGlzcGF0
Y2hNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBtc2cpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxl
bWVudCB0aGlzLgorICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2dCA9IE1lc3NhZ2VFdmVudDo6
Y3JlYXRlKCk7CisgICAgLy8gRklYTUU6IG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgbWVz
c2FnZVBvcnQuCisgICAgZXZ0LT5pbml0TWVzc2FnZUV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdl
RXZlbnQsIGZhbHNlLCBmYWxzZSwgbXNnLCAiIiwgIiIsIDAsIDApOworICAgIGlmIChtX29ubWVz
c2FnZSkgeworICAgICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRD
dXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29ubWVzc2FnZS0+aGFuZGxlRXZlbnQoZXZ0
LmdldCgpLCBmYWxzZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
ZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7CiB9CiAK
IHZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaENsb3NlRXZlbnQoKQogewotICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQgdGhpcy4KKyAgICBSZWZQdHI8RXZlbnQ+IGV2dCA9IEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCBmYWxzZSk7CisgICAgaWYgKG1fb25jbG9zZSkg
eworICAgICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50
VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29uY2xvc2UtPmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwg
ZmFsc2UpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNo
RXZlbnQoZXZ0LnJlbGVhc2UoKSwgZWMpOworICAgIEFTU0VSVCghZWMpOwogfQogCiB9ICAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IDQ4NWUyY2MuLjZhYjc4
NTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTMxLDkzICszMSwxMDQgQEAKICNpZm5kZWYg
V2ViU29ja2V0X2gKICNkZWZpbmUgV2ViU29ja2V0X2gKIAorI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKKwogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkF0b21pY1N0cmlu
Z0hhc2guaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJn
ZXQuaCIKICNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVu
dC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFN0cmluZzsKKyAgICBjbGFzcyBTdHJp
bmc7CisgICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbDsKIAotY2xhc3MgV2ViU29ja2V0IDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViU29ja2V0KGNvbnRleHQpKTsgfQotICAgIHZpcnR1YWwgfldlYlNvY2tldCgpOwor
ICAgIGNsYXNzIFdlYlNvY2tldCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlNvY2tldD4sIHB1Ymxp
YyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFdlYlNvY2tldENo
YW5uZWxDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
U29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgeyByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYlNvY2tldChjb250ZXh0KSk7IH0KKyAgICAgICAgdmlydHVhbCB+V2Vi
U29ja2V0KCk7CiAKLSAgICBlbnVtIFN0YXRlIHsKLSAgICAgICAgQ09OTkVDVElORyA9IDAsCi0g
ICAgICAgIE9QRU4gPSAxLAotICAgICAgICBDTE9TRUQgPSAyCi0gICAgfTsKKyAgICAgICAgZW51
bSBTdGF0ZSB7CisgICAgICAgICAgICBDT05ORUNUSU5HID0gMCwKKyAgICAgICAgICAgIE9QRU4g
PSAxLAorICAgICAgICAgICAgQ0xPU0VEID0gMgorICAgICAgICB9OwogCi0gICAgdm9pZCBjb25u
ZWN0KGNvbnN0IEtVUkwmIHVybCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgY29ubmVjdChj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZvaWQgY2xvc2UoKTsKKyAgICAgICAgdm9p
ZCBjbG9zZSgpOwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7Ci0gICAgU3RhdGUgcmVh
ZHlTdGF0ZSgpIGNvbnN0OwotICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25z
dDsKKyAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7CisgICAgICAgIFN0YXRlIHJlYWR5
U3RhdGUoKSBjb25zdDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNv
bnN0OwogCi0gICAgdm9pZCBzZXRPbm9wZW4oUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVu
dExpc3RlbmVyKSB7IG1fb25vcGVuID0gZXZlbnRMaXN0ZW5lcjsgfQotICAgIEV2ZW50TGlzdGVu
ZXIqIG9ub3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fb25vcGVuLmdldCgpOyB9Ci0gICAgdm9pZCBz
ZXRPbm1lc3NhZ2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1f
b25tZXNzYWdlID0gZXZlbnRMaXN0ZW5lcjsgfQotICAgIEV2ZW50TGlzdGVuZXIqIG9ubWVzc2Fn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25tZXNzYWdlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRPbmNs
b3NlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uY2xvc2Ug
PSBldmVudExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25jbG9zZSgpIGNvbnN0IHsg
cmV0dXJuIG1fb25jbG9zZS5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldE9ub3BlbihQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbm9wZW4gPSBldmVudExpc3Rl
bmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9ub3BlbigpIGNvbnN0IHsgcmV0dXJuIG1f
b25vcGVuLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0T25tZXNzYWdlKFBhc3NSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29ubWVzc2FnZSA9IGV2ZW50TGlzdGVuZXI7
IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25tZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9v
bm1lc3NhZ2UuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRPbmNsb3NlKFBhc3NSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uY2xvc2UgPSBldmVudExpc3RlbmVyOyB9
CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uY2xvc2UoKSBjb25zdCB7IHJldHVybiBtX29uY2xv
c2UuZ2V0KCk7IH0KIAotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBXZWJTb2NrZXQq
IHRvV2ViU29ja2V0KCkgeyByZXR1cm4gdGhpczsgfQorICAgICAgICAvLyBFdmVudFRhcmdldAor
ICAgICAgICB2aXJ0dWFsIFdlYlNvY2tldCogdG9XZWJTb2NrZXQoKSB7IHJldHVybiB0aGlzOyB9
CiAKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lcios
IGJvb2wgdXNlQ2FwdHVyZSk7Ci0gICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPEV2ZW50TGlzdGVuZXI+ID4gTGlzdGVuZXJWZWN0b3I7CisgICAgICAgIHR5cGVkZWYgSGFz
aE1hcDxBdG9taWNTdHJpbmcsIExpc3RlbmVyVmVjdG9yPiBFdmVudExpc3RlbmVyc01hcDsKIAot
ICAgIC8vIEFjdGl2ZURPTU9iamVjdAotICAgIC8vIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdDsKLSAgICAvLyB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwot
ICAgIC8vIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Q7Ci0gICAgLy8gdmlydHVhbCB2
b2lkIHN1c3BlbmQoKTsKLSAgICAvLyB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7Ci0gICAgLy8gdmly
dHVhbCB2b2lkIHN0b3AoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4s
IGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1
c2VDYXB0dXJlKTsKKyAgICAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0
cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAmIGV2
ZW50TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9ldmVudExpc3RlbmVyczsgfQogCi0gICAgdXNpbmcg
UmVmQ291bnRlZDxXZWJTb2NrZXQ+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJTb2Nr
ZXQ+OjpkZXJlZjsKKyAgICAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CisgICAgICAgIC8vICB2aXJ0
dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CisgICAgICAgIC8vIHZpcnR1YWwg
dm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CisgICAgICAgIC8vIHZpcnR1YWwgYm9vbCBjYW5TdXNw
ZW5kKCkgY29uc3Q7CisgICAgICAgIC8vIHZpcnR1YWwgdm9pZCBzdXNwZW5kKCk7CisgICAgICAg
IC8vIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lkIHN0b3Ao
KTsKIAotcHJpdmF0ZToKLSAgICBXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwor
ICAgICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldD46OnJlZjsKKyAgICAgICAgdXNpbmcg
UmVmQ291bnRlZDxXZWJTb2NrZXQ+OjpkZXJlZjsKIAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVu
dFRhcmdldCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgp
IHsgZGVyZWYoKTsgfQorICAgICAgICAvLyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRDb25uZWN0KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZyk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRD
bG9zZSgpOwogCi0gICAgLy8gV2ViU29ja2V0Q2hhbm5lbENsaWVudAotICAgIHZvaWQgZGlkQ29u
bmVjdCgpOwotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtc2cpOwot
ICAgIHZvaWQgZGlkQ2xvc2UoKTsKKyAgICBwcml2YXRlOgorICAgICAgICBXZWJTb2NrZXQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwogCi0gICAgdm9pZCBkaXNwYXRjaE9wZW5FdmVudCgpOwot
ICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBtc2cpOwotICAgIHZv
aWQgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRh
cmdldCgpIHsgcmVmKCk7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSB7IGRlcmVmKCk7IH0KIAotICAgIC8vIEZJWE1FOiBhZGQgV2ViU29ja2V0Q2hhbm5lbC4KKyAg
ICAgICAgdm9pZCBkaXNwYXRjaE9wZW5FdmVudCgpOworICAgICAgICB2b2lkIGRpc3BhdGNoTWVz
c2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgbXNnKTsKKyAgICAgICAgdm9pZCBkaXNwYXRjaENsb3Nl
RXZlbnQoKTsKIAotICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ub3BlbjsKLSAgICBSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gbV9vbm1lc3NhZ2U7Ci0gICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IG1fb25jbG9zZTsKKyAgICAgICAgUmVmUHRyPFdlYlNvY2tldENoYW5uZWw+IG1fY2hhbm5lbDsK
IAotICAgIFN0YXRlIG1fc3RhdGU7Ci0gICAgS1VSTCBtX3VybDsKLSAgICBTdHJpbmcgbV9wcm90
b2NvbDsKLX07CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ub3BlbjsKKyAgICAg
ICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25tZXNzYWdlOworICAgICAgICBSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gbV9vbmNsb3NlOworICAgICAgICBFdmVudExpc3RlbmVyc01hcCBtX2V2ZW50
TGlzdGVuZXJzOworCisgICAgICAgIFN0YXRlIG1fc3RhdGU7CisgICAgICAgIEtVUkwgbV91cmw7
CisgICAgICAgIFN0cmluZyBtX3Byb3RvY29sOworICAgIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCiAjZW5kaWYgIC8vIFdl
YlNvY2tldF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhkZGFlMAotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMCwwICsxLDI4MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRl
ICJXZWJTb2NrZXRDaGFubmVsLmgiCisKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAi
Q29va2llSmFyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKKyNpbmNsdWRlICJTb2Nr
ZXRTdHJlYW1IYW5kbGUuaCIKKyNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCisjaW5jbHVkZSAiV2Vi
U29ja2V0Q2hhbm5lbENsaWVudC5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1dlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCisgICAgOiBtX2NvbnRl
eHQoY29udGV4dCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1faGFuZHNoYWtlKFdl
YlNvY2tldEhhbmRzaGFrZSh1cmwsIHByb3RvY29sLCBjb250ZXh0KSkKKyAgICAsIG1fYnVmZmVy
KDApCisgICAgLCBtX2J1ZmZlclNpemUoMCkKKyAgICAsIG1fdW5oYW5kbGVkQnVmZmVyU2l6ZSgw
KQoreworfQorCitXZWJTb2NrZXRDaGFubmVsOjp+V2ViU29ja2V0Q2hhbm5lbCgpCit7Cit9CisK
K3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdCgpCit7CisgICAgTE9HKE5ldHdvcmssICJX
ZWJTb2NrZXRDaGFubmVsICVwIGNvbm5lY3QiLCB0aGlzKTsKKyAgICBBU1NFUlQoIW1faGFuZGxl
LmdldCgpKTsKKyAgICBtX2hhbmRzaGFrZS5yZXNldCgpOworICAgIG1faGFuZGxlID0gU29ja2V0
U3RyZWFtSGFuZGxlOjpjcmVhdGUobV9oYW5kc2hha2UudXJsKCksIHRoaXMpOworfQorCitib29s
IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtc2cpCit7CisgICAgTE9HKE5l
dHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQgJXMiLCB0aGlzLCBtc2cudXRmOCgpLmRh
dGEoKSk7CisgICAgVmVjdG9yPGNoYXI+IGJ1ZjsKKyAgICBidWYuYXBwZW5kKCdcMCcpOyAgLy8g
ZnJhbWUgdHlwZQorICAgIGJ1Zi5hcHBlbmQobXNnLnV0ZjgoKS5kYXRhKCksIG1zZy51dGY4KCku
bGVuZ3RoKCkpOworICAgIGJ1Zi5hcHBlbmQoJ1x4ZmYnKTsgIC8vIGZyYW1lIGVuZAorICAgIGlm
ICghbV9oYW5kbGUuZ2V0KCkpIHsKKyAgICAgICAgbV91bmhhbmRsZWRCdWZmZXJTaXplICs9IGJ1
Zi5zaXplKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIG1faGFu
ZGxlLT5zZW5kKGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkpOworfQorCit1bnNpZ25lZCBsb25nIFdl
YlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKK3sKKyAgICBMT0coTmV0d29y
aywgIldlYlNvY2tldENoYW5uZWwgJXAgYnVmZmVyZWRBbW91bnQiLCB0aGlzKTsKKyAgICBpZiAo
IW1faGFuZGxlLmdldCgpKQorICAgICAgICByZXR1cm4gbV91bmhhbmRsZWRCdWZmZXJTaXplOwor
ICAgIHJldHVybiBtX2hhbmRsZS0+YnVmZmVyZWRBbW91bnQoKTsKK30KKwordm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpjbG9zZSgpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVs
ICVwIGNsb3NlIiwgdGhpcyk7CisgICAgaWYgKG1faGFuZGxlLmdldCgpKQorICAgICAgICBtX2hh
bmRsZS0+Y2xvc2UoKTsgIC8vIHdpbGwgY2FsbCBkaWRDbG9zZSgpCit9CisKK3ZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6d2lsbE9wZW5TdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgS1VS
TCYpCit7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6d2lsbFNlbmREYXRhKFNvY2tldFN0
cmVhbUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQpCit7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6ZGlkT3BlbihTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKK3sKKyAgICBMT0coTmV0
d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkT3BlbiIsIHRoaXMpOworICAgIEFTU0VSVCho
YW5kbGUgPT0gbV9oYW5kbGUuZ2V0KCkpOworICAgIGNvbnN0IENTdHJpbmcmIGhhbmRzaGFrZU1l
c3NhZ2UgPSBtX2hhbmRzaGFrZS5jbGllbnRIYW5kc2hha2VNZXNzYWdlKCk7CisgICAgaWYgKCFo
YW5kbGUtPnNlbmQoaGFuZHNoYWtlTWVzc2FnZS5kYXRhKCksIGhhbmRzaGFrZU1lc3NhZ2UubGVu
Z3RoKCkpKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiRXJyb3IgaW4gc2VuZGluZyBoYW5kc2hh
a2UgbWVzc2FnZS4iKTsKKyAgICAgICAgaGFuZGxlLT5jbG9zZSgpOworICAgIH0KK30KKwordm9p
ZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRDbG9zZShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkK
K3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkQ2xvc2UiLCB0aGlz
KTsKKyAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdldCgpIHx8ICFtX2hhbmRsZS5nZXQo
KSk7CisgICAgaWYgKCFtX2hhbmRsZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fdW5o
YW5kbGVkQnVmZmVyU2l6ZSA9IGhhbmRsZS0+YnVmZmVyZWRBbW91bnQoKTsKKyAgICBXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50KiBjbGllbnQgPSBtX2NsaWVudDsKKyAgICBtX2NsaWVudCA9IDA7Cisg
ICAgbV9oYW5kbGUgPSAwOworICAgIGNsaWVudC0+ZGlkQ2xvc2UoKTsKK30KKwordm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpkaWRSZWNlaXZlRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tl
dENoYW5uZWwgJXAgZGlkUmVjZWl2ZURhdGEgJWQiLCB0aGlzLCBsZW4pOworICAgIEFTU0VSVCho
YW5kbGUgPT0gbV9oYW5kbGUuZ2V0KCkpOworICAgIGlmICghYXBwZW5kVG9CdWZmZXIoZGF0YSwg
bGVuKSkgeworICAgICAgICBoYW5kbGUtPmNsb3NlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaWYgKG1faGFuZHNoYWtlLm1vZGUoKSAhPSBXZWJTb2NrZXRIYW5kc2hha2U6OkNvbm5l
Y3RlZCkgeworICAgICAgICBpZiAoIW1faGFuZHNoYWtlLnJlYWRTZXJ2ZXJIYW5kc2hha2UobV9i
dWZmZXIuZ2V0KCksIG1fYnVmZmVyU2l6ZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IHN3aXRjaCAobV9oYW5kc2hha2UubW9kZSgpKSB7CisgICAgICAgIGNhc2UgV2ViU29ja2V0SGFu
ZHNoYWtlOjpDb25uZWN0ZWQ6CisgICAgICAgICAgICBpZiAoIW1faGFuZHNoYWtlLnNlcnZlclNl
dENvb2tpZSgpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGlmIChtX2NvbnRleHQtPmlz
RG9jdW1lbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgIGlm
IChjb29raWVzRW5hYmxlZChkb2N1bWVudCkpCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC0+c2V0Q29va2llKG1faGFuZHNoYWtlLnNlcnZlclNldENvb2tpZSgpKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBGSVhNRTogaGFuZGxlIHNl
dC1jb29raWUyLgorICAgICAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVw
IGNvbm5lY3RlZCIsIHRoaXMpOworICAgICAgICAgICAgbV9jbGllbnQtPmRpZENvbm5lY3QoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYlNvY2tldEhhbmRzaGFrZTo6UmVk
aXJlY3Q6CisgICAgICAgICAgICBMT0coTmV0d29yaywgIlJlZGlyZWN0IHRvICVzIiwgbV9oYW5k
c2hha2UucmVkaXJlY3RMb2NhdGlvbigpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmVk
aXJlY3QobV9oYW5kc2hha2UucmVkaXJlY3RMb2NhdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgY2FzZSBXZWJTb2NrZXRIYW5kc2hha2U6OkF1dGhlbnRpY2F0ZToKKyAgICAg
ICAgICAgIGF1dGhlbnRpY2F0ZShtX2hhbmRzaGFrZS53d3dBdXRoZW50aWNhdGUoKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBMT0coTmV0d29y
aywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVjdGlvbiBmYWlsZWQiLCB0aGlzKTsKKyAgICAg
ICAgICAgIGhhbmRsZS0+Y2xvc2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBza2lwQnVmZmVyKG1faGFuZHNoYWtlLnNlcnZlckhhbmRzaGFrZUxlbmd0aCgpKTsK
KyAgICAgICAgaWYgKCFtX2J1ZmZlci5nZXQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgTE9HKE5ldHdvcmssICJyZW1haW5pbmcgaW4gcmVhZCBidWYgJXVsIiwgbV9idWZmZXJTaXpl
KTsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyKiBuZXh0RnJhbWUgPSBtX2J1ZmZlci5nZXQoKTsK
KyAgICBjb25zdCBjaGFyKiBwID0gbV9idWZmZXIuZ2V0KCk7CisgICAgY29uc3QgY2hhciogZW5k
ID0gcCArIG1fYnVmZmVyU2l6ZTsKKyAgICB3aGlsZSAocCA8IGVuZCkgeworICAgICAgICB1bnNp
Z25lZCBjaGFyIGZyYW1lQnl0ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCpwKyspOwor
ICAgICAgICBpZiAoKGZyYW1lQnl0ZSAmIDB4ODApID09IDB4ODApIHsKKyAgICAgICAgICAgIGlu
dCBsZW5ndGggPSAwOworICAgICAgICAgICAgd2hpbGUgKHAgPCBlbmQgJiYgKCpwICYgMHg4MCkg
PT0gMHg4MCkgeworICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludD46Om1heCgpIC8gMTI4KSB7CisgICAgICAgICAgICAgICAgICAgIExPRyhOZXR3b3Jr
LCAiZnJhbWUgbGVuZ3RoIG92ZXJmbG93ICVkIiwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAg
ICAgaGFuZGxlLT5jbG9zZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aCAqIDEyOCArICpwICYg
MHg3ZjsKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAocCArIGxlbmd0aCA8IGVuZCkgeworICAgICAgICAgICAgICAgIHAgKz0gbGVuZ3RoOworICAg
ICAgICAgICAgICAgIG5leHRGcmFtZSA9IHA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBtc2dTdGFydCA9IHA7CisgICAgICAgICAgICB3
aGlsZSAocCA8IGVuZCAmJiAqcCAhPSAnXHhmZicpCisgICAgICAgICAgICAgICAgKytwOworICAg
ICAgICAgICAgaWYgKHAgPCBlbmQgJiYgKnAgPT0gJ1x4ZmYnKSB7CisgICAgICAgICAgICAgICAg
aWYgKGZyYW1lQnl0ZSA9PSAweDAwKQorICAgICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZU1lc3NhZ2UoU3RyaW5nOjpmcm9tVVRGOChtc2dTdGFydCwgcCAtIG1zZ1N0YXJ0KSk7
CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgIG5leHRGcmFtZSA9IHA7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgc2tpcEJ1ZmZlcihuZXh0RnJhbWUg
LSBtX2J1ZmZlci5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmFpbChT
b2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImKQorewor
ICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRGYWlsIiwgdGhpcyk7Cisg
ICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hhbmRsZS5nZXQoKSB8fCAhbV9oYW5kbGUuZ2V0KCkpOwor
ICAgIGhhbmRsZS0+Y2xvc2UoKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpyZWRpcmVj
dChjb25zdCBTdHJpbmcmIGxvY2F0aW9uKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
Q2hhbm5lbCAlcCByZWRpcmVjdCB0byAlcyIsIHRoaXMsIGxvY2F0aW9uLnV0ZjgoKS5kYXRhKCkp
OworICAgIG1faGFuZGxlLmNsZWFyKCk7CisgICAgbV9oYW5kc2hha2Uuc2V0VVJMKEtVUkwobG9j
YXRpb24pKTsKKyAgICBjb25uZWN0KCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6YXV0
aGVudGljYXRlKGNvbnN0IFN0cmluZyYgLyogd3d3QXV0aGVudGljYXRlICovKQoreworICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICAvLyBPYnRhaW4gY3JlZGVudGlhbHMgZm9yIGhh
bmRsaW5nIHd3d0F1dGhlbnRpY2F0ZS4KKyAgICAvLyAgIHd3d0F1dGhlbnRpY2F0ZSA9IGNoYWxs
ZW5nZQorICAgIC8vICAgY2hhbGxlbmdlID0gYXV0aC1zY2hlbWUgMSpTUCByZWFsbSAqKCAiLCIg
YXV0aC1wYXJhbSApCisgICAgLy8gICBhdXRoLXNjaGVtZSA9IHRva2VuCisgICAgLy8gICBhdXRo
LXBhcmFtID0gdG9rZW4gIj0iIHF1b3RlZC1zdHJpbmcKKyAgICAvLyAgIHJlYWxtID0gInJlYWxt
IiAiPSIgcmVhbS12YWx1ZQorICAgIC8vICAgcmVhbG0tdmFsdWUgPSBxdW90ZWQtc3RyaW5nCisg
ICAgLy8gICBjcmVkZW50aWFscyA9IGJhc2ljLWNyZWRlbnRpYWxzCisgICAgLy8gICAgICAgICAg
ICAgICB8ICggYXV0aC1zY2hlbWUgI2F1dGgtcGFyYW0gKQorICAgIC8vICAgYmFzaWMtY3JlZGVu
dGlhbHMgPSAiQmFzaWMiIFNQIGJhc2ljLWNvb2tpZQorICAgIC8vICAgYmFzaWMtY29va2llID0g
PGJhc2U2NCBlbmRvZGluZyBvZiB1c2VyaWQtcGFzc3dvcmQsIGV4Y2VwdCBub3QgbGltaXRlZCB0
byA3NiBjaGFyL2xpbmU+CisgICAgLy8gICB1c2VyaWQtcGFzc3dvcmQgPSBbIHRva2VuIF0gIjoi
ICpURVhUCisgICAgLy8gSWYgZXhpc3RzLCBzZXQgaXQgdG8gdGhlIG1faGFuZHNoYWtlLiAgT3Ro
ZXJ3aXNlLCBkaWRGYWlsLgorICAgIC8vIElmIHdlIGFscmVhZHkgdHJpZWQgdGhlIHNhbWUgY3Jl
ZGVudGlhbHMsIGRpZEZhaWwuCisgICAgLy8gQ2xvc2UgdGhlIGNvbm5lY3Rpb24gYnkgbV9oYW5k
bGUuY2xlYXIoKS4KKyAgICAvLyBjb25uZWN0KCkuCisgICAgaWYgKG1faGFuZGxlLmdldCgpKQor
ICAgICAgICBtX2hhbmRsZS0+Y2xvc2UoKTsKK30KKworYm9vbCBXZWJTb2NrZXRDaGFubmVsOjph
cHBlbmRUb0J1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQoreworICAgIGNoYXIqIG5l
d0J1ZmZlciA9IDA7CisgICAgaWYgKHRyeUZhc3RNYWxsb2MobV9idWZmZXJTaXplICsgbGVuKS5n
ZXRWYWx1ZShuZXdCdWZmZXIpKSB7CisgICAgICAgIGlmIChtX2J1ZmZlci5nZXQoKSkKKyAgICAg
ICAgICAgIG1lbWNweShuZXdCdWZmZXIsIG1fYnVmZmVyLmdldCgpLCBtX2J1ZmZlclNpemUpOwor
ICAgICAgICBtZW1jcHkobmV3QnVmZmVyICsgbV9idWZmZXJTaXplLCBkYXRhLCBsZW4pOworICAg
ICAgICBtX2J1ZmZlci5zZXQobmV3QnVmZmVyKTsKKyAgICAgICAgbV9idWZmZXJTaXplICs9IGxl
bjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIExPRyhOZXR3b3JrLCAiVG9vIGxv
bmcgV2ViU29ja2V0IGZyYW1lICVkIiwgbV9idWZmZXJTaXplICsgbGVuKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2tpcEJ1ZmZlcihpbnQgbGVuKQor
eworICAgIEFTU0VSVChsZW4gPD0gbV9idWZmZXJTaXplKTsKKyAgICBtX2J1ZmZlclNpemUgLT0g
bGVuOworICAgIGlmICghbV9idWZmZXJTaXplKSB7CisgICAgICAgIG1fYnVmZmVyLnNldCgwKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtZW1tb3ZlKG1fYnVmZmVyLmdldCgpLCBtX2J1
ZmZlci5nZXQoKSArIGxlbiwgbV9idWZmZXJTaXplKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmYy
ZDFiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0Q2hhbm5lbF9oCisjZGVmaW5l
IFdlYlNvY2tldENoYW5uZWxfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVk
ZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNo
YWtlLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CisgICAgY2xhc3MgU3RyaW5nOworICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZTsK
KyAgICBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvcjsKKyAgICBjbGFzcyBXZWJTb2NrZXRDaGFubmVs
Q2xpZW50OworCisgICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbCA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYlNvY2tldENoYW5uZWw+LCBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50IHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldENoYW5uZWw+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkgeyBy
ZXR1cm4gbmV3IFdlYlNvY2tldENoYW5uZWwoY29udGV4dCwgY2xpZW50LCB1cmwsIHByb3RvY29s
KTsgfQorICAgICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDaGFubmVsKCk7CisKKyAgICAgICAgdmly
dHVhbCB2b2lkIGNvbm5lY3QoKTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBT
dHJpbmcmIG1zZyk7CisgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3Vu
dCgpIGNvbnN0OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOworCisgICAgICAgIHZp
cnR1YWwgdm9pZCB3aWxsT3BlblN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBLVVJM
Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZERhdGEoU29ja2V0U3RyZWFtSGFuZGxl
KiwgY29uc3QgY2hhciosIGludCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuKFNvY2tl
dFN0cmVhbUhhbmRsZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoU29ja2V0U3Ry
ZWFtSGFuZGxlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShTb2NrZXRT
dHJlYW1IYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImKTsKKwor
ICAgIHByaXZhdGU6CisgICAgICAgIFdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFdlYlNvY2tldENoYW5uZWxDbGllbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5n
Jik7CisKKyAgICAgICAgdm9pZCByZWRpcmVjdChjb25zdCBTdHJpbmcmIGxvY2F0aW9uKTsKKyAg
ICAgICAgdm9pZCBhdXRoZW50aWNhdGUoY29uc3QgU3RyaW5nJiB3d3dBdXRoZW50aWNhdGUpOwor
CisgICAgICAgIGJvb2wgYXBwZW5kVG9CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbik7
CisgICAgICAgIHZvaWQgc2tpcEJ1ZmZlcihpbnQgbGVuKTsKKworICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CisgICAgICAgIFdlYlNvY2tldENoYW5uZWxDbGllbnQq
IG1fY2xpZW50OworICAgICAgICBXZWJTb2NrZXRIYW5kc2hha2UgbV9oYW5kc2hha2U7CisgICAg
ICAgIFJlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IG1faGFuZGxlOworICAgICAgICBPd25QdHI8
Y2hhcj4gbV9idWZmZXI7CisgICAgICAgIGludCBtX2J1ZmZlclNpemU7CisgICAgICAgIHVuc2ln
bmVkIGxvbmcgbV91bmhhbmRsZWRCdWZmZXJTaXplOworICAgIH07CisKK30gIC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYgIC8v
IFdlYlNvY2tldENoYW5uZWxfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWxDbGllbnQuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzY2FkYQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50
LmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldENoYW5uZWxDbGllbnRfaAorI2Rl
ZmluZSBXZWJTb2NrZXRDaGFubmVsQ2xpZW50X2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENsaWVu
dCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDaGFubmVsQ2xpZW50
KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDb25uZWN0KCkgeyB9CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpZENsb3NlKCkgeyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIFdl
YlNvY2tldENoYW5uZWxDbGllbnQoKSB7IH0KKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlmICAvLyBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2UuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRmMDllOQotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBA
IC0wLDAgKzEsNTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfU09D
S0VUUykKKworI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZS5oIgorCisjaW5jbHVkZSAiQXRv
bWljU3RyaW5nLmgiCisjaW5jbHVkZSAiQ29va2llSmFyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGNoYXIg
d2ViU29ja2V0U2VydmVySGFuZHNoYWtlSGVhZGVyW10gPSAiSFRUUC8xLjEgMTAxIFdlYiBTb2Nr
ZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbiI7Citjb25zdCBjaGFyIHdlYlNvY2tldFVwZ3JhZGVI
ZWFkZXJbXSA9ICJVcGdyYWRlOiBXZWJTb2NrZXRcclxuIgorICAgICAgICAiQ29ubmVjdGlvbjog
VXBncmFkZVxyXG4iOworCitzdGF0aWMgU3RyaW5nIGV4dHJhY3RSZXNwb25zZUNvZGUoY29uc3Qg
Y2hhciogaGVhZGVyLCBpbnQgbGVuKQoreworICAgIGNvbnN0IGNoYXIqIHNwYWNlMSA9IDA7Cisg
ICAgY29uc3QgY2hhciogc3BhY2UyID0gMDsKKyAgICBjb25zdCBjaGFyKiBwOworICAgIGZvciAo
cCA9IGhlYWRlcjsgcCAtIGhlYWRlciA8IGxlbjsgcCsrKSB7CisgICAgICAgIGlmICgqcCA9PSAn
ICcpIHsKKyAgICAgICAgICAgIGlmICghc3BhY2UxKQorICAgICAgICAgICAgICAgIHNwYWNlMSA9
IHA7CisgICAgICAgICAgICBlbHNlIGlmICghc3BhY2UyKQorICAgICAgICAgICAgICAgIHNwYWNl
MiA9IHA7CisgICAgICAgIH0gZWxzZSBpZiAoKnAgPT0gJ1xuJykKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBpZiAocCAtIGhlYWRlciA9PSBsZW4pCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKyAgICBpZiAoIXNwYWNlMSB8fCAhc3BhY2UyKQorICAgICAgICByZXR1cm4gIiI7Cisg
ICAgcmV0dXJuIFN0cmluZyhzcGFjZTEgKyAxLCBzcGFjZTIgLSBzcGFjZTEgLSAxKTsKK30KKwor
c3RhdGljIGJvb2wgaGFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBj
aGFyKiBlbmQpCit7CisgICAgZm9yIChjb25zdCBjaGFyKiBwID0gc3RhcnQ7IHAgJiYgcCA8IGVu
ZDsgcCsrKSB7CisgICAgICAgIHAgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtY2hyKHAs
ICdccicsIGVuZCAtIHApKTsKKyAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGlmIChwICsgMyA8IGVuZCAmJiAqKHAgKyAxKSA9PSAnXG4nICYmICoo
cCArIDIpID09ICdccicgJiYgKihwICsgMykgPT0gJ1xuJykKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZTo6
V2ViU29ja2V0SGFuZHNoYWtlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fdXJsKHVybCkKKyAg
ICAsIG1fY2xpZW50UHJvdG9jb2wocHJvdG9jb2wpCisgICAgLCBtX3NlY3VyZShtX3VybC5wcm90
b2NvbElzKCJ3c3MiKSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9zZXJ2ZXJI
YW5kc2hha2VMZW5ndGgoMCkKKyAgICAsIG1fbW9kZShJbmNvbXBsZXRlKQoreworfQorCitXZWJT
b2NrZXRIYW5kc2hha2U6On5XZWJTb2NrZXRIYW5kc2hha2UoKQoreworfQorCitjb25zdCBLVVJM
JiBXZWJTb2NrZXRIYW5kc2hha2U6OnVybCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXJsOwor
fQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkKK3sK
KyAgICBtX3VybCA9IHVybC5jb3B5KCk7Cit9CisKK2NvbnN0IFN0cmluZyBXZWJTb2NrZXRIYW5k
c2hha2U6Omhvc3QoKSBjb25zdAoreworICAgIHJldHVybiBtX3VybC5ob3N0KCkubG93ZXIoKTsK
K30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudFByb3RvY29sKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnRQcm90b2NvbDsKK30KKwordm9pZCBXZWJTb2Nr
ZXRIYW5kc2hha2U6OnNldENsaWVudFByb3RvY29sKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCit7
CisgICAgbV9jbGllbnRQcm90b2NvbCA9IHByb3RvY29sOworfQorCitib29sIFdlYlNvY2tldEhh
bmRzaGFrZTo6c2VjdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZWN1cmU7Cit9CisKK3Zv
aWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZWN1cmUoYm9vbCBzZWN1cmUpCit7CisgICAgbV9z
ZWN1cmUgPSBzZWN1cmU7Cit9CisKK1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudE9y
aWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+
dG9TdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50TG9jYXRp
b24oKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFw
cGVuZChtX3NlY3VyZSA/ICJ3c3MiIDogIndzIik7CisgICAgYnVpbGRlci5hcHBlbmQoIjovLyIp
OworICAgIGJ1aWxkZXIuYXBwZW5kKGhvc3QoKSk7CisgICAgaWYgKG1fdXJsLnBvcnQoKSkgewor
ICAgICAgICBpZiAoKCFtX3NlY3VyZSAmJiBtX3VybC5wb3J0KCkgIT0gODEpIHx8IChtX3NlY3Vy
ZSAmJiBtX3VybC5wb3J0KCkgIT0gODE1KSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
IjoiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG1fdXJsLnBv
cnQoKSkpOworICAgICAgICB9CisgICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKG1fdXJsLnBhdGgo
KSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworQ1N0cmluZyBXZWJTb2Nr
ZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKSBjb25zdAoreworICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKKworICAgIGJ1aWxkZXIuYXBwZW5kKCJHRVQgIik7CisgICAgYnVp
bGRlci5hcHBlbmQodXJsKCkucGF0aCgpKTsKKyAgICBpZiAoIXVybCgpLnF1ZXJ5KCkuaXNFbXB0
eSgpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI/Iik7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHVybCgpLnF1ZXJ5KCkpOworICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZCgiIEhUVFAvMS4x
XHJcbiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJVcGdyYWRlOiBXZWJTb2NrZXRcclxuIik7Cisg
ICAgYnVpbGRlci5hcHBlbmQoIkNvbm5lY3Rpb246IFVwZ3JhZGVcclxuIik7CisgICAgYnVpbGRl
ci5hcHBlbmQoIkhvc3Q6ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKGhvc3QoKSk7CisgICAgaWYg
KHVybCgpLnBvcnQoKSkgeworICAgICAgICBpZiAoKCFzZWN1cmUoKSAmJiB1cmwoKS5wb3J0KCkg
IT0gODApIHx8IChzZWN1cmUoKSAmJiB1cmwoKS5wb3J0KCkgIT0gNDQzKSkgeworICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIjoiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmlu
Zzo6bnVtYmVyKHVybCgpLnBvcnQoKSkpOworICAgICAgICB9CisgICAgfQorICAgIGJ1aWxkZXIu
YXBwZW5kKCJcclxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIk9yaWdpbjogIik7CisgICAgYnVp
bGRlci5hcHBlbmQoY2xpZW50T3JpZ2luKCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7
CisgICAgaWYgKCFjbGllbnRQcm90b2NvbCgpLmlzRW1wdHkoKSkgeworICAgICAgICBidWlsZGVy
LmFwcGVuZCgiV2ViU29ja2V0LVByb3RvY29sOiAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
Y2xpZW50UHJvdG9jb2woKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisgICAg
fQorICAgIEtVUkwgdXJsID0gdXJsT3ZlckhUVFAoKTsKKyAgICAvLyBGSVhNRTogc2V0IGF1dGhl
bnRpY2F0aW9uIGluZm9ybWF0aW9uIG9yIGNvb2tpZXMgZm9yIHVybC4KKyAgICAvLyBTZXQgIkF1
dGhvcml6YXRpb246IDxjcmVkZW50aWFscz4iIGlmIGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9u
IGV4aXN0cyBmb3IgdXJsLgorICAgIGlmIChtX2NvbnRleHQtPmlzRG9jdW1lbnQoKSkgeworICAg
ICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fY29udGV4
dCk7CisgICAgICAgIFN0cmluZyBjb29raWUgPSBjb29raWVzKGRvY3VtZW50LCB1cmwpOworICAg
ICAgICBpZiAoIWNvb2tpZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCJDb29raWU6ICIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoY29va2llKTsKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisgICAgICAgIH0KKyAgICAgICAgLy8gU2V0
ICJDb29raWUyOiA8Y29va2llPiIgaWYgY29va2llcyAyIGV4aXN0cyBmb3IgdXJsPworICAgIH0K
KyAgICBidWlsZGVyLmFwcGVuZCgiXHJcbiIpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCkudXRmOCgpOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVzZXQoKQoreworICAg
IG1fc2VydmVySGFuZHNoYWtlTGVuZ3RoID0gMDsKKyAgICBtX21vZGUgPSBJbmNvbXBsZXRlOwor
CisgICAgbV93c09yaWdpbiA9IFN0cmluZygpOworICAgIG1fd3NMb2NhdGlvbiA9IFN0cmluZygp
OworICAgIG1fd3NQcm90b2NvbCA9IFN0cmluZygpOworICAgIG1fc2V0Q29va2llID0gU3RyaW5n
KCk7CisgICAgbV9zZXRDb29raWUyID0gU3RyaW5nKCk7CisgICAgbV9sb2NhdGlvbiA9IFN0cmlu
ZygpOworICAgIG1fd3d3QXV0aGVudGljYXRlID0gU3RyaW5nKCk7Cit9CisKK2Jvb2wgV2ViU29j
a2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6
ZV90IGxlbikKK3sKKyAgICBtX3NlcnZlckhhbmRzaGFrZUxlbmd0aCA9IDA7CisgICAgbV9tb2Rl
ID0gSW5jb21wbGV0ZTsKKyAgICBpZiAobGVuIDwgc2l6ZW9mKHdlYlNvY2tldFNlcnZlckhhbmRz
aGFrZUhlYWRlcikgLSAxKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAic2hvcnQgcmVzcG9uc2Ug
aGVhZGVyIGxlbj0lZCIsIGxlbik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
aWYgKCFtZW1jbXAoaGVhZGVyLCB3ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hha2VIZWFkZXIsIHNpemVv
Zih3ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hha2VIZWFkZXIpIC0gMSkpCisgICAgICAgIG1fbW9kZSA9
IE5vcm1hbDsKKyAgICBlbHNlIHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBjb2RlID0gZXh0cmFj
dFJlc3BvbnNlQ29kZShoZWFkZXIsIGxlbik7CisgICAgICAgIGlmIChjb2RlLmlzTnVsbCgpKSB7
CisgICAgICAgICAgICBMT0coTmV0d29yaywgInNob3J0IHNlcnZlciBoYW5kc2hha2U6ICVzIiwg
aGVhZGVyKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoY29kZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAibm8gcmVzcG9u
c2UgY29kZSBmb3VuZDogJXMiLCBoZWFkZXIpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICAgICAgTE9HKE5ldHdvcmssICJyZXNwb25zZSBjb2RlOiAlcyIsIGNvZGUu
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGlmIChjb2RlID09ICIzMDEiIHx8IGNvZGUgPT0gIjMw
MiIgfHwgY29kZSA9PSAiMzAzIiB8fCBjb2RlID09ICIzMDciKQorICAgICAgICAgICAgbV9tb2Rl
ID0gUmVkaXJlY3Q7CisgICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gIjQwMSIpCisgICAgICAgICAg
ICBtX21vZGUgPSBBdXRoZW50aWNhdGU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgTE9H
KE5ldHdvcmssICJNaXNtYXRjaCBzZXJ2ZXIgaGFuZHNoYWtlOiAlcyIsIGhlYWRlcik7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjb25zdCBjaGFyKiBw
ID0gaGVhZGVyICsgc2l6ZW9mKHdlYlNvY2tldFNlcnZlckhhbmRzaGFrZUhlYWRlcikgLSAxOwor
ICAgIGNvbnN0IGNoYXIqIGVuZCA9IGhlYWRlciArIGxlbiArIDE7CisKKyAgICBpZiAobV9tb2Rl
ID09IE5vcm1hbCkgeworICAgICAgICBzaXplX3QgaGVhZGVyU2l6ZSA9IGVuZCAtIHA7CisgICAg
ICAgIGlmIChoZWFkZXJTaXplIDwgc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKG1lbWNtcChwLCB3ZWJTb2Nr
ZXRVcGdyYWRlSGVhZGVyLCBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRlcikgLSAxKSkgewor
ICAgICAgICAgICAgTE9HKE5ldHdvcmssICJCYWQgdXBncmFkZSBoZWFkZXI6ICVzIiwgcCk7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBwICs9IHNpemVvZih3
ZWJTb2NrZXRVcGdyYWRlSGVhZGVyKSAtIDE7CisgICAgfQorCisgICAgaWYgKCFoYWRTZXJ2ZXJI
YW5kc2hha2UocCwgZW5kKSkgeworICAgICAgICBMT0coTmV0d29yaywgImluY29tcGxldGUgc2Vy
dmVyIGhhbmRzaGFrZSBsZW49JWQiLCBsZW4pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIEhUVFBIZWFkZXJNYXAgaGVhZGVyczsKKyAgICBwID0gcGFyc2VIZWFkZXIocCwgZW5k
LCAmaGVhZGVycyk7CisgICAgaWYgKCFwKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAicGFyc2VI
ZWFkZXIgZmFpbGVkIik7CisgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIGlmICghcHJvY2Vzc0hlYWRlcihoZWFkZXJzKSkgeworICAgICAg
ICBMT0coTmV0d29yaywgImhlYWRlciBwcm9jZXNzIGZhaWxlZCIpOworICAgICAgICBtX21vZGUg
PSBGYWlsZWQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBzd2l0Y2ggKG1fbW9k
ZSkgeworICAgIGNhc2UgTm9ybWFsOgorICAgICAgICBoYW5kc2hha2UoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBSZWRpcmVjdDoKKyAgICAgICAgaWYgKG1fbG9jYXRpb24uaXNOdWxsKCkp
CisgICAgICAgICAgICBtX21vZGUgPSBGYWlsZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QXV0aGVudGljYXRlOgorICAgICAgICBpZiAobV93d3dBdXRoZW50aWNhdGUuaXNOdWxsKCkpCisg
ICAgICAgICAgICBtX21vZGUgPSBGYWlsZWQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIG1f
c2VydmVySGFuZHNoYWtlTGVuZ3RoID0gcCAtIGhlYWRlcjsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kworc2l6ZV90IFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVySGFuZHNoYWtlTGVuZ3RoKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9zZXJ2ZXJIYW5kc2hha2VMZW5ndGg7Cit9CisKK1dlYlNvY2tl
dEhhbmRzaGFrZTo6TW9kZSBXZWJTb2NrZXRIYW5kc2hha2U6Om1vZGUoKSBjb25zdAoreworICAg
IHJldHVybiBtX21vZGU7Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0SGFuZHNoYWtlOjpz
ZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oKSBjb25zdAoreworICAgIHJldHVybiBtX3dzT3JpZ2luOwor
fQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyV2ViU29ja2V0T3JpZ2luKGNv
bnN0IFN0cmluZyYgd2ViU29ja2V0T3JpZ2luKQoreworICAgIG1fd3NPcmlnaW4gPSB3ZWJTb2Nr
ZXRPcmlnaW47Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJX
ZWJTb2NrZXRMb2NhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3NMb2NhdGlvbjsKK30K
Kwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFNlcnZlcldlYlNvY2tldExvY2F0aW9uKGNv
bnN0IFN0cmluZyYgd2ViU29ja2V0TG9jYXRpb24pCit7CisgICAgbV93c0xvY2F0aW9uID0gd2Vi
U29ja2V0TG9jYXRpb247Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0SGFuZHNoYWtlOjpz
ZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3NQcm90b2Nv
bDsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFNlcnZlcldlYlNvY2tldFByb3Rv
Y29sKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0UHJvdG9jb2wpCit7CisgICAgbV93c1Byb3RvY29s
ID0gd2ViU29ja2V0UHJvdG9jb2w7Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0SGFuZHNo
YWtlOjpzZXJ2ZXJTZXRDb29raWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NldENvb2tpZTsK
K30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFNlcnZlclNldENvb2tpZShjb25zdCBT
dHJpbmcmIHNldENvb2tpZSkKK3sKKyAgICBtX3NldENvb2tpZSA9IHNldENvb2tpZTsKK30KKwor
Y29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlclNldENvb2tpZTIoKSBjb25z
dAoreworICAgIHJldHVybiBtX3NldENvb2tpZTI7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNo
YWtlOjpzZXRTZXJ2ZXJTZXRDb29raWUyKGNvbnN0IFN0cmluZyYgc2V0Q29va2llMikKK3sKKyAg
ICBtX3NldENvb2tpZTIgPSBzZXRDb29raWUyOworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tl
dEhhbmRzaGFrZTo6cmVkaXJlY3RMb2NhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbG9j
YXRpb247Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0SGFuZHNoYWtlOjp3d3dBdXRoZW50
aWNhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3d3d0F1dGhlbnRpY2F0ZTsKK30KKworS1VS
TCBXZWJTb2NrZXRIYW5kc2hha2U6OnVybE92ZXJIVFRQKCkgY29uc3QKK3sKKyAgICBLVVJMIHVy
bCA9IG1fdXJsLmNvcHkoKTsKKyAgICB1cmwuc2V0UHJvdG9jb2wobV9zZWN1cmUgPyAiaHR0cHMi
IDogImh0dHAiKTsKKyAgICBpbnQgcG9ydCA9IHVybC5wb3J0KCk7CisgICAgaWYgKCFwb3J0KQor
ICAgICAgICBwb3J0ID0gbV9zZWN1cmUgPyA4MTUgOiA4MTsKKyAgICB1cmwuc2V0UG9ydChwb3J0
KTsKKyAgICByZXR1cm4gdXJsOworfQorCitjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6
OnBhcnNlSGVhZGVyKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQsIEhUVFBIZWFk
ZXJNYXAqIGhlYWRlcnMpCit7CisgICAgVmVjdG9yPGNoYXI+IG5hbWU7CisgICAgVmVjdG9yPGNo
YXI+IHZhbHVlOworICAgIGZvciAoY29uc3QgY2hhciogcCA9IHN0YXJ0OyBwIDwgZW5kOyBwKysp
IHsKKyAgICAgICAgbmFtZS5jbGVhcigpOworICAgICAgICB2YWx1ZS5jbGVhcigpOworCisgICAg
ICAgIGZvciAoOyBwIDwgZW5kOyBwKyspIHsKKyAgICAgICAgICAgIHN3aXRjaCAoKnApIHsKKyAg
ICAgICAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHAgKyAxIDwgZW5kICYmICoocCArIDEpID09ICdc
bicpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcCArIDI7CisgICAgICAgICAgICAg
ICAgICAgIExPRyhOZXR3b3JrLCAiQ0YgZG9lc24ndCBmb2xsb3cgTEYgcD0lcCBlbmQ9JXAiLCBw
LCBlbmQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgTE9HKE5ldHdvcmssICJVbmV4cGVjdGVkIENSIGluIG5hbWUiKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGNhc2UgJ1xuJzoKKyAgICAg
ICAgICAgICAgICBMT0coTmV0d29yaywgIlVuZXhwZWN0ZWQgTEYgaW4gbmFtZSIpOworICAgICAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgY2FzZSAnOic6CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGlmICgqcCA+
PSAweDQxICYmICpwIDw9IDB4NWEpCisgICAgICAgICAgICAgICAgICAgIG5hbWUuYXBwZW5kKCpw
ICsgMHgyMCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBuYW1l
LmFwcGVuZCgqcCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoKnAgPT0gJzonKSB7CisgICAgICAgICAgICAgICAgKytwOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZm9y
ICg7IHAgPCBlbmQgJiYgKnAgPT0gMHgyMDsgcCsrKSB7IH0KKworICAgICAgICBmb3IgKDsgcCA8
IGVuZDsgcCsrKSB7CisgICAgICAgICAgICBzd2l0Y2ggKCpwKSB7CisgICAgICAgICAgICBjYXNl
ICdccic6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdcbic6Cisg
ICAgICAgICAgICAgICAgTE9HKE5ldHdvcmssICJVbmV4cGVjdGVkIExGIGluIHZhbHVlIik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIHZhbHVlLmFwcGVuZCgqcCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
KnAgPT0gJ1xyJykgeworICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAocCA+PSBlbmQgfHwgKnAg
IT0gJ1xuJykgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDUiBkb2Vzbid0IGZvbGxvdyBM
RiBhZnRlciB2YWx1ZSBwPSVwIGVuZD0lcCIsIHAsIGVuZCk7CisgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgfQorICAgICAgICBBdG9taWNTdHJpbmcgbmFtZVN0cihTdHJpbmc6OmZyb21V
VEY4KG5hbWUuZGF0YSgpLCBuYW1lLnNpemUoKSkpOworICAgICAgICBTdHJpbmcgdmFsdWVTdHIg
PSBTdHJpbmc6OmZyb21VVEY4KHZhbHVlLmRhdGEoKSwgdmFsdWUuc2l6ZSgpKTsKKyAgICAgICAg
TE9HKE5ldHdvcmssICJuYW1lPSVzIHZhbHVlPSVzIiwgbmFtZVN0ci5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCB2YWx1ZVN0ci51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaGVhZGVycy0+YWRkKG5h
bWVTdHIsIHZhbHVlU3RyKTsKKyAgICB9CisgICAgTE9HKE5ldHdvcmssICJVbmV4cGVjdGVkIGVu
ZCBvZiBoZWFkZXIiKTsKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBXZWJTb2NrZXRIYW5kc2hh
a2U6OnByb2Nlc3NIZWFkZXIoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKK3sKKyAgICBm
b3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVycy5iZWdpbigpOyBp
dCAhPSBoZWFkZXJzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7Cisg
ICAgICAgIGNhc2UgTm9ybWFsOgorICAgICAgICAgICAgaWYgKGl0LT5maXJzdCA9PSAid2Vic29j
a2V0LW9yaWdpbiIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fd3NPcmlnaW4uaXNOdWxsKCkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBtX3dz
T3JpZ2luID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQtPmZpcnN0ID09
ICJ3ZWJzb2NrZXQtbG9jYXRpb24iKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtX3dzTG9jYXRp
b24uaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICBtX3dzTG9jYXRpb24gPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgfSBlbHNlIGlm
IChpdC0+Zmlyc3QgPT0gIndlYnNvY2tldC1wcm90b2NvbCIpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIW1fd3NQcm90b2NvbC5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgIG1fd3NQcm90b2NvbCA9IGl0LT5zZWNvbmQ7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKGl0LT5maXJzdCA9PSAic2V0LWNvb2tpZSIpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIW1fc2V0Q29va2llLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgbV9zZXRDb29raWUgPSBpdC0+c2Vjb25kOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChpdC0+Zmlyc3QgPT0gInNldC1jb29raWUyIikgeworICAgICAg
ICAgICAgICAgIGlmICghbV9zZXRDb29raWUyLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgbV9zZXRDb29raWUyID0gaXQtPnNlY29u
ZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJlZGly
ZWN0OgorICAgICAgICAgICAgaWYgKGl0LT5maXJzdCA9PSAibG9jYXRpb24iKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFtX2xvY2F0aW9uLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgbV9sb2NhdGlvbiA9IGl0LT5zZWNvbmQ7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBdXRoZW50aWNh
dGU6CisgICAgICAgICAgICBpZiAoaXQtPmZpcnN0ID09ICJ3d3ctYXV0aGVudGljYXRlIikgewor
ICAgICAgICAgICAgICAgIGlmICghbV93d3dBdXRoZW50aWNhdGUuaXNOdWxsKCkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBtX3d3d0F1dGhlbnRp
Y2F0ZSA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAidW5leHBlY3RlZCBtb2Rl
OiAlZCIsIG1fbW9kZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpoYW5k
c2hha2UoKQoreworICAgIEFTU0VSVChtX21vZGUgPT0gTm9ybWFsKTsKKyAgICBtX21vZGUgPSBG
YWlsZWQ7CisgICAgaWYgKG1fd3NPcmlnaW4uaXNOdWxsKCkgfHwgbV93c0xvY2F0aW9uLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoY2xpZW50T3JpZ2luKCkgIT0gbV93c09y
aWdpbikgeworICAgICAgICBMT0coTmV0d29yaywgIk1pc21hdGNoIG9yaWdpbjogJXMgIT0gJXMi
LCBjbGllbnRPcmlnaW4oKS51dGY4KCkuZGF0YSgpLCBtX3dzT3JpZ2luLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChjbGllbnRMb2NhdGlvbigpICE9IG1f
d3NMb2NhdGlvbikgeworICAgICAgICBMT0coTmV0d29yaywgIk1pc21hdGNoIGxvY2F0aW9uOiAl
cyAhPSAlcyIsIGNsaWVudExvY2F0aW9uKCkudXRmOCgpLmRhdGEoKSwgbV93c0xvY2F0aW9uLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghbV9jbGllbnRQ
cm90b2NvbC5pc0VtcHR5KCkgJiYgbV9jbGllbnRQcm90b2NvbCAhPSBtX3dzUHJvdG9jb2wpIHsK
KyAgICAgICAgTE9HKE5ldHdvcmssICJNaXNtYXRjaCBwcm90b2NvbDogJXMgIT0gJXMiLCBtX2Ns
aWVudFByb3RvY29sLnV0ZjgoKS5kYXRhKCksIG1fd3NQcm90b2NvbC51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX21vZGUgPSBDb25uZWN0ZWQ7CisgICAgcmV0
dXJuOworfQorCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIEVOQUJMRShX
RUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjRhMGIzCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC0wLDAgKzEsMTE4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViU29ja2V0SGFuZHNoYWtlX2gKKyNkZWZpbmUgV2ViU29ja2V0SGFuZHNoYWtl
X2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBjbGFz
cyBIVFRQSGVhZGVyTWFwOworCisgICAgY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIGVudW0gTW9kZSB7CisgICAgICAgICAgICBJbmNvbXBsZXRlLCBOb3Jt
YWwsIFJlZGlyZWN0LCBBdXRoZW50aWNhdGUsIEZhaWxlZCwgQ29ubmVjdGVkCisgICAgICAgIH07
CisgICAgICAgIFdlYlNvY2tldEhhbmRzaGFrZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCk7CisgICAgICAgIH5XZWJT
b2NrZXRIYW5kc2hha2UoKTsKKworICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKKyAg
ICAgICAgdm9pZCBzZXRVUkwoY29uc3QgS1VSTCYgdXJsKTsKKyAgICAgICAgY29uc3QgU3RyaW5n
IGhvc3QoKSBjb25zdDsKKworICAgICAgICBjb25zdCBTdHJpbmcmIGNsaWVudFByb3RvY29sKCkg
Y29uc3Q7CisgICAgICAgIHZvaWQgc2V0Q2xpZW50UHJvdG9jb2woY29uc3QgU3RyaW5nJiBwcm90
b2NvbCk7CisKKyAgICAgICAgYm9vbCBzZWN1cmUoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRT
ZWN1cmUoYm9vbCBzZWN1cmUpOworCisgICAgICAgIFN0cmluZyBjbGllbnRPcmlnaW4oKSBjb25z
dDsKKyAgICAgICAgU3RyaW5nIGNsaWVudExvY2F0aW9uKCkgY29uc3Q7CisKKyAgICAgICAgQ1N0
cmluZyBjbGllbnRIYW5kc2hha2VNZXNzYWdlKCkgY29uc3Q7CisKKyAgICAgICAgdm9pZCByZXNl
dCgpOworCisgICAgICAgIGJvb2wgcmVhZFNlcnZlckhhbmRzaGFrZShjb25zdCBjaGFyKiBoZWFk
ZXIsIHNpemVfdCBsZW4pOworICAgICAgICBzaXplX3Qgc2VydmVySGFuZHNoYWtlTGVuZ3RoKCkg
Y29uc3Q7CisgICAgICAgIE1vZGUgbW9kZSgpIGNvbnN0OworCisgICAgICAgIGNvbnN0IFN0cmlu
ZyYgc2VydmVyV2ViU29ja2V0T3JpZ2luKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2VydmVy
V2ViU29ja2V0T3JpZ2luKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0T3JpZ2luKTsKKworICAgICAg
ICBjb25zdCBTdHJpbmcmIHNlcnZlcldlYlNvY2tldExvY2F0aW9uKCkgY29uc3Q7CisgICAgICAg
IHZvaWQgc2V0U2VydmVyV2ViU29ja2V0TG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRM
b2NhdGlvbik7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJXZWJTb2NrZXRQcm90b2Nv
bCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNlcnZlcldlYlNvY2tldFByb3RvY29sKGNvbnN0
IFN0cmluZyYgd2ViU29ja2V0UHJvdG9jb2wpOworCisgICAgICAgIGNvbnN0IFN0cmluZyYgc2Vy
dmVyU2V0Q29va2llKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2VydmVyU2V0Q29va2llKGNv
bnN0IFN0cmluZyYgc2V0Q29va2llKTsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJTZXRD
b29raWUyKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2VydmVyU2V0Q29va2llMihjb25zdCBT
dHJpbmcmIHNldENvb2tpZTIpOworCisgICAgICAgIGNvbnN0IFN0cmluZyYgcmVkaXJlY3RMb2Nh
dGlvbigpIGNvbnN0OworICAgICAgICBjb25zdCBTdHJpbmcmIHd3d0F1dGhlbnRpY2F0ZSgpIGNv
bnN0OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgS1VSTCB1cmxPdmVySFRUUCgpIGNvbnN0Owor
ICAgICAgICBjb25zdCBjaGFyKiBwYXJzZUhlYWRlcihjb25zdCBjaGFyKiBzdGFydCwgY29uc3Qg
Y2hhciogZW5kLCBIVFRQSGVhZGVyTWFwKiBoZWFkZXJzKTsKKyAgICAgICAgYm9vbCBwcm9jZXNz
SGVhZGVyKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpOworICAgICAgICB2b2lkIGhhbmRz
aGFrZSgpOworCisgICAgICAgIEtVUkwgbV91cmw7CisgICAgICAgIFN0cmluZyBtX2NsaWVudFBy
b3RvY29sOworICAgICAgICBib29sIG1fc2VjdXJlOworICAgICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBtX2NvbnRleHQ7CisKKyAgICAgICAgc2l6ZV90IG1fc2VydmVySGFuZHNoYWtlTGVu
Z3RoOworICAgICAgICBNb2RlIG1fbW9kZTsKKworICAgICAgICBTdHJpbmcgbV93c09yaWdpbjsK
KyAgICAgICAgU3RyaW5nIG1fd3NMb2NhdGlvbjsKKyAgICAgICAgU3RyaW5nIG1fd3NQcm90b2Nv
bDsKKyAgICAgICAgU3RyaW5nIG1fc2V0Q29va2llOworICAgICAgICBTdHJpbmcgbV9zZXRDb29r
aWUyOworICAgICAgICBTdHJpbmcgbV9sb2NhdGlvbjsKKyAgICAgICAgU3RyaW5nIG1fd3d3QXV0
aGVudGljYXRlOworICAgIH07CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAg
Ly8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYgIC8vIFdlYlNvY2tldEhhbmRzaGFrZV9o
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38849</attachid>
            <date>2009-09-01 01:31:17 -0700</date>
            <delta_ts>2009-09-01 22:24:08 -0700</delta_ts>
            <desc>WebSocket API implementation</desc>
            <filename>bug-28038-20090901173115.patch</filename>
            <type>text/plain</type>
            <size>66614</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBlZjEyMWZhLi4xNmMyMTBhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMDktMDktMDEgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IFdURjo6
dHJ5RmFzdE1hbGxvYygpIHVzZWQgaW4gV2ViU29ja2V0Q2hhbm5lbC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MDM4CisKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5leHA6CisKIDIwMDktMDgtMzEgIFJvYmVydCBBZ29zdG9uICA8QWdvc3Rvbi5S
b2JlcnRAc3R1ZC51LXN6ZWdlZC5odT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJy
YWNsb3VnaC4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBi
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCBkNDVhMjJkLi5hMTY1NjIx
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKKysrIGIvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0yOTUsNiArMjk1LDcgQEAgX19aTjNX
VEYxMmRldGFjaFRocmVhZEVqCiBfX1pOM1dURjEyaXNNYWluVGhyZWFkRXYKIF9fWk4zV1RGMTJy
YW5kb21OdW1iZXJFdgogX19aTjNXVEYxM2N1cnJlbnRUaHJlYWRFdgorX19aTjNXVEYxM3RyeUZh
c3RNYWxsb2NFbQogX19aTjNXVEYxM3RyeUZhc3RDYWxsb2NFbW0KIF9fWk4zV1RGMTN0cnlGYXN0
TWFsbG9jRW0KIF9fWk4zV1RGMTVUaHJlYWRDb25kaXRpb240d2FpdEVSTlNfNU11dGV4RQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NDA4
OTY1Li42YjcyZmU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDA5LTA5LTAxICBGdW1pdG9zaGkgVWthaSAg
PHVrYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYlNvY2tldCBBUEkgaW1wbGVtZW50YXRpb24uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODAzOAorCisgICAgICAgIEFkZCBi
dWlsZCBzeXN0ZW1zIG9ubHkgZm9yIEdOVW1ha2VmaWxlLmFtIGFuZCBXZWJDb3JlLnhjb2RlcHJv
aiBub3cuCisgICAgICAgIE90aGVyIGJ1aWxkIHN5c3RlbXMgd2lsbCBiZSB1cGRhdGVkIG9uY2Ug
dGhlIGNvZGUgaXMgZnVuY3Rpb25hbC4KKyAgICAgICAgVGVzdHMgd2lsbCBiZSBsYW5kZWQgb25j
ZSB0aGUgY29kZSBpcyBjb21wbGV0ZWQgYW5kIGZ1bmN0aW9uYWwuCisKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5jcHA6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojp3ZWJT
b2NrZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjp0b0V2ZW50VGFyZ2V0KToKKyAg
ICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJn
ZXQ6OnRvV2ViU29ja2V0KToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzazo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NXZWJTb2NrZXRFdmVudFRhc2s6On5Qcm9jZXNzV2Vi
U29ja2V0RXZlbnRUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NXZWJTb2NrZXRFdmVu
dFRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NXZWJTb2NrZXRF
dmVudFRhc2s6OlByb2Nlc3NXZWJTb2NrZXRFdmVudFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6
aXNWYWxpZFByb3RvY29sU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y29u
bmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0OjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmJ1
ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6YWRkRXZlbnRMaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkQ29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXQ6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaXNwYXRjaE9wZW5FdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNoTWVzc2FnZUV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlzcGF0Y2hDbG9zZUV2ZW50KToKKyAgICAg
ICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjopOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0OjpzZXRPbm9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
Ojpvbm9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpzZXRPbm1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojpvbm1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0OjpzZXRPbmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
b25jbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnRvV2ViU29ja2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXQ6OmRlcmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHA6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5oOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQu
aDogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oOiBBZGRlZC4K
KwogMjAwOS0wOC0zMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUnViYmVyc3RhbXBlZCBieSBTYW0gV2VpbmlnCmRpZmYgLS1naXQgYS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLmNwcCBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCmluZGV4IDc1YmU4YTMu
LmRkYTFjYmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC0zNDIsNiArMzQyLDcgQEAKICNpbmNsdWRlICJK
U1dlYktpdENTU01hdHJpeC5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRQb2ludC5jcHAiCiAjaW5j
bHVkZSAiSlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwIgorI2luY2x1ZGUgIkpTV2ViU29ja2V0
LmNwcCIKICNpbmNsdWRlICJKU1doZWVsRXZlbnQuY3BwIgogI2luY2x1ZGUgIkpTV29ya2VyLmNw
cCIKICNpbmNsdWRlICJKU1dvcmtlckNvbnRleHQuY3BwIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMGY4YjJiZC4uMjM2
YTcxYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCkBAIC0zMjMxLDcgKzMyMzEsMTIgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oIFwKIAlX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggXAogCVdl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIFwKLQlXZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmgKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggXAorCVdlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuaCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGll
bnQuaCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgXAorCVdl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAogCiB3ZWJjb3JlZ3RrX3NvdXJj
ZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUVycm9y
LmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNDFi
NjhiLi5jZDQzOGEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtODg2LDYgKzg4Niw5IEBACiAJCTUxMEQ0QTM2MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2Nr
ZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMEQ0QTMwMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5k
bGVCYXNlLmNwcCAqLzsgfTsKIAkJNTEwRDRBMzcxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0
cmVhbUhhbmRsZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNl
LmggKi87IH07CiAJCTUxMEQ0QTM4MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAq
LzsgfTsKKwkJNTEwRDRBNEUxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBNDcx
MDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwICovOyB9OworCQk1MTBENEE0
RjEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBNDgxMDMxNzdBMjAwNDlFQTU0IC8q
IFdlYlNvY2tldENoYW5uZWwuaCAqLzsgfTsKKwkJNTEwRDRBNTAxMDMxNzdBMjAwNDlFQTU0IC8q
IFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50LmggKi87IH07CiAJCTUxMTZEOTc3MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFz
ZURldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTFGMjMxNzBEQzE2MERB
MDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGMjMxMzBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxT
dG9yYWdlVGFzay5jcHAgKi87IH07CiAJCTUxMUYyMzE4MERDMTYwREEwMDRGMDAzMiAvKiBMb2Nh
bFN0b3JhZ2VUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTFGMjMxNDBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5oICovOyB9
OwpAQCAtOTcyLDYgKzk3NSwxMCBAQAogCQk1MUFCQUUxQjEwM0MxOEZGMDA4QzUyNjAgLyogU29j
a2V0U3RyZWFtRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUJBRTFBMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oICov
OyB9OwogCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUxQzEw
M0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggKi87IH07CiAJCTUxQUJBRTFG
MTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUxRDEwM0MxOTEzMDA4
QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwICovOyB9OworCQk1MUFCQUUyRTEw
M0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUyQzEwM0Q0Rjc1MDA4QzUyNjAg
LyogV2ViU29ja2V0SGFuZHNoYWtlci5jcHAgKi87IH07CisJCTUxQUJBRTJGMTAzRDRGNzUwMDhD
NTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUyRDEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0
SGFuZHNoYWtlci5oICovOyB9OworCQk1MUFCQUU0NDEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29j
a2V0SGFuZHNoYWtlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUJBRTQyMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3Bw
ICovOyB9OworCQk1MUFCQUU0NTEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUU0
MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggKi87IH07CiAJCTUxQjI0
MTdCMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMjQxN0EwRDkzMUYzRjAwRTgz
RjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gKi87IH07CiAJCTUxQkUzN0UwMERBRUUwMEUw
MDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFCRTM3REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmgg
Ki87IH07CiAJCTUxQzBBQTM5MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEFBMzgwRjJBQTEw
QTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTYwMzAsNiArNjAzNyw5IEBACiAJCTUxMEQ0QTMwMTAzMTY1
RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0
U3RyZWFtSGFuZGxlQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Nr
ZXRTdHJlYW1IYW5kbGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEQ0
QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAvKiBX
ZWJTb2NrZXRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlNvY2tldENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBE
NEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVs
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldENoYW5u
ZWxDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExNkQ5NzUwQ0YxNzdC
RDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEYXRhYmFzZURldGFpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTExRjIzMTMwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxTdG9yYWdlVGFzay5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYyMzE0MERDMTYwREEwMDRGMDAzMiAvKiBMb2Nh
bFN0b3JhZ2VUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsU3Rv
cmFnZVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxMjMsNiArNjEzMywx
MCBAQAogCQk1MUFCQUUxQTEwM0MxOEZGMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtRXJyb3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU29ja2V0U3RyZWFtRXJyb3IuaDsgcGF0
aCA9IGNmL1NvY2tldFN0cmVhbUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxQUJBRTFDMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU29ja2V0U3RyZWFtSGFuZGxlLmg7IHBhdGggPSBj
Zi9Tb2NrZXRTdHJlYW1IYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFB
QkFFMUQxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0
LmNwcDsgcGF0aCA9IGNmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFMkMxMDNENEY3NTAwOEM1MjYwIC8qIFdlYlNvY2tldEhh
bmRzaGFrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29j
a2V0SGFuZHNoYWtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUJBRTJE
MTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTFBQkFFNDIxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRz
aGFrZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRI
YW5kc2hha2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUFCQUU0MzEwNDNB
QjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUIyNDE3QTBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExlZ2FjeVdlYkFyY2hp
dmVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkUzN0RFMERBRUUwMEUw
MDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdG9yYWdlQXJlYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUEzODBG
MkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2FjaGVkRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEw
NTgyLDYgKzEwNTk2LDExIEBACiAJCTUxOEEzNEJEMTAyNkM4MzEwMDFCNjg5NiAvKiB3ZWJzb2Nr
ZXRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MUFC
QUU0MjEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCAqLywKKwkJCQk1
MUFCQUU0MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggKi8sCisJCQkJ
NTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwICovLAorCQkJ
CTUxMEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggKi8sCisJCQkJ
NTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCAqLywK
IAkJCQk1MThBMzRCRTEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmNwcCAqLywKIAkJCQk1
MThBMzRCRjEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmggKi8sCiAJCQkJNTE4QTM0QzAx
MDI2QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tldC5pZGwgKi8sCkBAIC0xNzU3OSw2ICsxNzU5OCw5
IEBACiAJCQkJNTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBQkFFMUIxMDNDMThGRjAwOEM1MjYwIC8qIFNv
Y2tldFN0cmVhbUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUFCQUUxRTEwM0MxOTEzMDA4
QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTBENEE0
RjEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTEwRDRBNTAxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTUxQUJBRTQ1MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRI
YW5kc2hha2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTk2NzcsNiArMTk2OTksOCBAQAogCQkJCTUx
MEQ0QTMzMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTEwRDRBMzYxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhh
bmRsZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBQkFFMUYxMDNDMTkxMzAwOEM1MjYw
IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMEQ0
QTRFMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTUxQUJBRTQ0MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
CmluZGV4IDk0MmI5ZmQuLjAwMmM0N2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCkBAIC01Myw2ICs1Myw5IEBACiAKICNpbmNsdWRlICJKU1dlYktpdENTU01h
dHJpeENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNXZWJLaXRQb2ludENvbnN0cnVjdG9yLmgi
CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorI2luY2x1ZGUgIkpTV2ViU29ja2V0Q29uc3RydWN0
b3IuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkpTV29ya2VyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1hTTFRQcm9jZXNz
b3JDb25zdHJ1Y3Rvci5oIgpAQCAtNjQ1LDYgKzY0OCwxMyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93
OjpzaGFyZWRXb3JrZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogfQogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoV0VCX1NPQ0tFVFMpCitKU1ZhbHVlIEpTRE9NV2luZG93Ojp3ZWJTb2NrZXQoRXhlY1N0
YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1dlYlNv
Y2tldENvbnN0cnVjdG9yPihleGVjLCB0aGlzKTsKK30KKyNlbmRpZgorCiAvLyBDdXN0b20gZnVu
Y3Rpb25zCiAKIC8vIEhlbHBlciBmb3Igd2luZG93Lm9wZW4oKSBhbmQgd2luZG93LnNob3dNb2Rh
bERpYWxvZygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQu
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAppbmRleCBlZDgwZDgw
Li4wNDIxZDEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQu
Y3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAKQEAgLTc4LDYg
Kzc4LDExIEBACiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJM
RShXRUJfU09DS0VUUykKKyNpbmNsdWRlICJKU1dlYlNvY2tldC5oIgorI2luY2x1ZGUgIldlYlNv
Y2tldC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTEzOSw2ICsxNDQsMTEgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXZlbnRUYXJnZXQqIHRhcmcKICAgICAg
ICAgcmV0dXJuIHRvSlMoZXhlYywgbm90aWZpY2F0aW9uKTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KFdFQl9TT0NLRVRTKQorICAgIGlmIChXZWJTb2NrZXQqIHdlYlNvY2tldCA9IHRhcmdldC0+dG9X
ZWJTb2NrZXQoKSkKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgd2ViU29ja2V0KTsKKyNlbmRp
ZgorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwogfQpA
QCAtMTgzLDYgKzE5MywxMCBAQCBFdmVudFRhcmdldCogdG9FdmVudFRhcmdldChKU0M6OkpTVmFs
dWUgdmFsdWUpCiAgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJHRVQoTm90aWZpY2F0aW9uKQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJH
RVQoV2ViU29ja2V0KQorI2VuZGlmCisKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3Bw
CmluZGV4IDJmMTNkYTguLjY1MjY0NGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmNwcAorKysgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTgzLDYgKzgzLDEz
IEBAIFNWR0VsZW1lbnRJbnN0YW5jZSogRXZlbnRUYXJnZXQ6OnRvU1ZHRWxlbWVudEluc3RhbmNl
KCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorV2ViU29ja2V0KiBFdmVu
dFRhcmdldDo6dG9XZWJTb2NrZXQoKQoreworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKIE1l
c3NhZ2VQb3J0KiBFdmVudFRhcmdldDo6dG9NZXNzYWdlUG9ydCgpCiB7CiAgICAgcmV0dXJuIDA7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuaAppbmRleCA2ZDNjYjdjLi42YmNjM2ZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5oCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTUxLDYg
KzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyOwogICAgIGNsYXNzIFNoYXJlZFdvcmtlckNv
bnRleHQ7CisgICAgY2xhc3MgV2ViU29ja2V0OwogICAgIGNsYXNzIFdvcmtlcjsKICAgICBjbGFz
cyBYTUxIdHRwUmVxdWVzdDsKICAgICBjbGFzcyBYTUxIdHRwUmVxdWVzdFVwbG9hZDsKQEAgLTc1
LDExICs3NiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgV29ya2Vy
KiB0b1dvcmtlcigpOwogICAgICAgICB2aXJ0dWFsIERlZGljYXRlZFdvcmtlckNvbnRleHQqIHRv
RGVkaWNhdGVkV29ya2VyQ29udGV4dCgpOwogI2VuZGlmCi0KICNpZiBFTkFCTEUoU0hBUkVEX1dP
UktFUlMpCiAgICAgICAgIHZpcnR1YWwgU2hhcmVkV29ya2VyKiB0b1NoYXJlZFdvcmtlcigpOwog
ICAgICAgICB2aXJ0dWFsIFNoYXJlZFdvcmtlckNvbnRleHQqIHRvU2hhcmVkV29ya2VyQ29udGV4
dCgpOwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgICAgICB2aXJ0dWFsIFdl
YlNvY2tldCogdG9XZWJTb2NrZXQoKTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCiAgICAgICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uKiB0b05vdGlmaWNhdGlvbigpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmlkbAppbmRleCA5YzllNDgxLi4wMDJkOWI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmlkbAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtNDgxLDYg
KzQ4MSwxMCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIFtKU0NDdXN0b21H
ZXR0ZXJdIFNoYXJlZFdvcmtlckNvbnN0cnVjdG9yIFNoYXJlZFdvcmtlcjsgLy8gVXNhYmxlIHdp
dGggdGhlIG5ldyBvcGVyYXRvcgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9XRUJfU09D
S0VUUykgJiYgRU5BQkxFX1dFQl9TT0NLRVRTCisgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9t
R2V0dGVyXSBXZWJTb2NrZXRDb25zdHJ1Y3RvciBXZWJTb2NrZXQ7IC8vIFVzYWJsZSB3aXRoIHRo
ZSBuZXcgb3BlcmF0b3IKKyNlbmRpZgorCiAgICAgICAgIGF0dHJpYnV0ZSBQbHVnaW5Db25zdHJ1
Y3RvciBQbHVnaW47CiAgICAgICAgIGF0dHJpYnV0ZSBQbHVnaW5BcnJheUNvbnN0cnVjdG9yIFBs
dWdpbkFycmF5OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDk5OWMxZmYuLjMwZGJl
YjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0zNCwxMyArMzQsNTkgQEAKIAogI2lu
Y2x1ZGUgIldlYlNvY2tldC5oIgogCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24u
aCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIK
KyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFByb2Nlc3NXZWJTb2NrZXRFdmVu
dFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiB2b2lkIChXZWJTb2NrZXQ6OipNZXRob2QpKFBhc3NSZWZQdHI8RXZlbnQ+KTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrPiBjcmVhdGUo
UGFzc1JlZlB0cjxXZWJTb2NrZXQ+IHdlYlNvY2tldCwgTWV0aG9kIG1ldGhvZCwgUGFzc1JlZlB0
cjxFdmVudD4gZXZlbnQpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFByb2Nlc3NXZWJTb2Nr
ZXRFdmVudFRhc2sod2ViU29ja2V0LCBtZXRob2QsIGV2ZW50KTsKKyAgICB9CisgICAgdmlydHVh
bCB+UHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzaygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwZXJm
b3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAgICB7CisgICAgICAgIChtX3dlYlNv
Y2tldC5nZXQoKS0+Km1fbWV0aG9kKShtX2V2ZW50KTsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAg
ICBQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrKFBhc3NSZWZQdHI8V2ViU29ja2V0PiB3ZWJTb2Nr
ZXQsIE1ldGhvZCBtZXRob2QsIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQorICAgICAgICA6IG1f
d2ViU29ja2V0KHdlYlNvY2tldCkKKyAgICAgICAgLCBtX21ldGhvZChtZXRob2QpCisgICAgICAg
ICwgbV9ldmVudChldmVudCkgeyB9CisKKyAgICBSZWZQdHI8V2ViU29ja2V0PiBtX3dlYlNvY2tl
dDsKKyAgICBNZXRob2QgbV9tZXRob2Q7CisgICAgUmVmUHRyPEV2ZW50PiBtX2V2ZW50OworfTsK
Kworc3RhdGljIGJvb2wgaXNWYWxpZFByb3RvY29sU3RyaW5nKGNvbnN0IFdlYkNvcmU6OlN0cmlu
ZyYgcHJvdG9jb2wpCit7CisgICAgaWYgKHByb3RvY29sLmlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAocHJvdG9jb2wuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBwcm90b2NvbC5jaGFyYWN0ZXJzKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm90b2NvbC5sZW5ndGgoKTsgaSsrKSB7Cisg
ICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldIDwgMHgyMSB8fCBjaGFyYWN0ZXJzW2ldID4gMHg3RSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IFdlYlNvY2tldDo6V2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAg
ICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fc3RhdGUoQ09OTkVD
VElORykKQEAgLTU5LDM5ICsxMDUsNDkgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3Qg
S1VSTCYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3Qo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBjb25uZWN0IHRvICVzIHByb3Rv
Y29sPSVzIiwgdGhpcywgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHByb3RvY29sLnV0Zjgo
KS5kYXRhKCkpOwogICAgIG1fdXJsID0gdXJsOwogICAgIG1fcHJvdG9jb2wgPSBwcm90b2NvbDsK
IAogICAgIGlmICghbV91cmwucHJvdG9jb2xJcygid3MiKSAmJiAhbV91cmwucHJvdG9jb2xJcygi
d3NzIikpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJFcnJvcjogd3JvbmcgdXJsIGZvciBXZWJTb2Nr
ZXQgJXMiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBD
TE9TRUQ7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBpZiAoIW1fcHJvdG9jb2wuaXNOdWxsKCkgJiYgbV9wcm90b2NvbC5pc0VtcHR5KCkpIHsK
KyAgICBpZiAoIWlzVmFsaWRQcm90b2NvbFN0cmluZyhtX3Byb3RvY29sKSkgeworICAgICAgICBM
T0dfRVJST1IoIkVycm9yOiB3cm9uZyBwcm90b2NvbCBmb3IgV2ViU29ja2V0ICVzIiwgbV9wcm90
b2NvbC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAgICAgICAg
ZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIC8vIEZJWE1FOiBD
aGVjayBwcm90b2NvbCBpcyB2YWxpZCBmb3JtLgotICAgIC8vIEZJWE1FOiBDb25uZWN0IFdlYlNv
Y2tldENoYW5uZWwuCisgICAgLy8gRklYTUU6IGlmIG1fdXJsLnBvcnQoKSBpcyBibG9ja2luZyBw
b3J0LCByYWlzZSBTRUNVUklUWV9FUlIuCisKKyAgICBtX2NoYW5uZWwgPSBXZWJTb2NrZXRDaGFu
bmVsOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCBtX3VybCwgbV9wcm90
b2NvbCk7CisgICAgbV9jaGFubmVsLT5jb25uZWN0KCk7CiB9CiAKLWJvb2wgV2ViU29ja2V0Ojpz
ZW5kKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmIGVjKQorYm9vbCBXZWJTb2NrZXQ6OnNl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAo
bV9zdGF0ZSAhPSBPUEVOKSB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgc2VuZCAl
cyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKG1fc3RhdGUgPT0gQ09O
TkVDVElORykgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQotICAgIC8vIEZJWE1FOiBzZW5kIG1lc3NhZ2Ugb24gV2ViU29ja2V0
Q2hhbm5lbC4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gTm8gZXhjZXB0aW9uIGlzIHJhaXNl
ZCBpZiB0aGUgY29ubmVjdGlvbiB3YXMgb25jZSBlc3RhYmxpc2hlZCBidXQgaGFzIHN1YnNlcXVl
bnRseSBiZWVuIGNsb3NlZC4KKyAgICBpZiAobV9zdGF0ZSA9PSBDTE9TRUQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAvLyBGSVhNRTogY2hlY2sgbWVzc2FnZSBpcyB2YWxpZCB1dGY4Lgor
ICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQobWVzc2FnZSk7CiB9CiAKIHZvaWQgV2ViU29ja2V0
OjpjbG9zZSgpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY2xvc2UiLCB0aGlz
KTsKICAgICBpZiAobV9zdGF0ZSA9PSBDTE9TRUQpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0
YXRlID0gQ0xPU0VEOwotICAgIC8vIEZJWE1FOiBjbG9zZSBXZWJTb2NrZXRDaGFubmVsLgorICAg
IG1fY2hhbm5lbC0+Y2xvc2UoKTsKIH0KIAogY29uc3QgS1VSTCYgV2ViU29ja2V0Ojp1cmwoKSBj
b25zdApAQCAtMTA2LDcgKzE2Miw4IEBAIFdlYlNvY2tldDo6U3RhdGUgV2ViU29ja2V0OjpyZWFk
eVN0YXRlKCkgY29uc3QKIAogdW5zaWduZWQgbG9uZyBXZWJTb2NrZXQ6OmJ1ZmZlcmVkQW1vdW50
KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogYXNrIHBsYXRmb3JtIGNvZGUgdG8gZ2V0IGJ1ZmZl
cmVkIGFtb3VudCB0byBiZSBzZW50LgorICAgIGlmIChtX3N0YXRlID09IE9QRU4pCisgICAgICAg
IHJldHVybiBtX2NoYW5uZWwtPmJ1ZmZlcmVkQW1vdW50KCk7CiAgICAgcmV0dXJuIDA7CiB9CiAK
QEAgLTExNSw1OCArMTcyLDEyMCBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBXZWJTb2NrZXQ6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiBBY3RpdmVET01PYmpl
Y3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIH0KIAotdm9pZCBXZWJTb2NrZXQ6OmFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiwgYm9vbCkKK3ZvaWQgV2ViU29ja2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIs
IGJvb2wpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgorICAgIEV2ZW50TGlzdGVu
ZXJzTWFwOjppdGVyYXRvciBpdGVyID0gbV9ldmVudExpc3RlbmVycy5maW5kKGV2ZW50VHlwZSk7
CisgICAgaWYgKGl0ZXIgPT0gbV9ldmVudExpc3RlbmVycy5lbmQoKSkgeworICAgICAgICBMaXN0
ZW5lclZlY3RvciBsaXN0ZW5lcnM7CisgICAgICAgIGxpc3RlbmVycy5hcHBlbmQoZXZlbnRMaXN0
ZW5lcik7CisgICAgICAgIG1fZXZlbnRMaXN0ZW5lcnMuYWRkKGV2ZW50VHlwZSwgbGlzdGVuZXJz
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBMaXN0ZW5lclZlY3RvciYgbGlzdGVuZXJzID0gaXRl
ci0+c2Vjb25kOworICAgICAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjppdGVyYXRvciBsaXN0ZW5l
ckl0ZXIgPSBsaXN0ZW5lcnMuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9IGxpc3RlbmVycy5lbmQo
KTsgKytsaXN0ZW5lckl0ZXIpCisgICAgICAgICAgICBpZiAoKmxpc3RlbmVySXRlciA9PSBldmVu
dExpc3RlbmVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsaXN0ZW5lcnMu
YXBwZW5kKGV2ZW50TGlzdGVuZXIpOworICAgICAgICBtX2V2ZW50TGlzdGVuZXJzLmFkZChldmVu
dFR5cGUsIGxpc3RlbmVycyk7CisgICAgfQogfQogCi12b2lkIFdlYlNvY2tldDo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmLCBFdmVudExpc3RlbmVyKiwgYm9vbCkKK3Zv
aWQgV2ViU29ja2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyLCBib29sKQogewotICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBFdmVudExpc3RlbmVyc01hcDo6aXRlcmF0b3IgaXRl
ciA9IG1fZXZlbnRMaXN0ZW5lcnMuZmluZChldmVudFR5cGUpOworICAgIGlmIChpdGVyID09IG1f
ZXZlbnRMaXN0ZW5lcnMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIExpc3RlbmVyVmVj
dG9yJiBsaXN0ZW5lcnMgPSBpdGVyLT5zZWNvbmQ7CisgICAgZm9yIChMaXN0ZW5lclZlY3Rvcjo6
Y29uc3RfaXRlcmF0b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVuZXJzLmJlZ2luKCk7IGxpc3RlbmVy
SXRlciAhPSBsaXN0ZW5lcnMuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKQorICAgICAgICBpZiAoKmxp
c3RlbmVySXRlciA9PSBldmVudExpc3RlbmVyKSB7CisgICAgICAgICAgICBsaXN0ZW5lcnMucmVt
b3ZlKGxpc3RlbmVySXRlciAtIGxpc3RlbmVycy5iZWdpbigpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogfQogCi1ib29sIFdlYlNvY2tldDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpCitib29sIFdlYlNvY2tldDo6ZGlzcGF0Y2hFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiBldnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgdGhpcy4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFldnQgfHwg
ZXZ0LT50eXBlKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGVjID0gRXZlbnRFeGNlcHRpb246OlVO
U1BFQ0lGSUVEX0VWRU5UX1RZUEVfRVJSOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICBMaXN0ZW5lclZlY3RvciBsaXN0ZW5lcnNDb3B5ID0gbV9ldmVudExpc3RlbmVycy5nZXQo
ZXZ0LT50eXBlKCkpOworICAgIGZvciAoTGlzdGVuZXJWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGxp
c3RlbmVySXRlciA9IGxpc3RlbmVyc0NvcHkuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9IGxpc3Rl
bmVyc0NvcHkuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKSB7CisgICAgICAgIGV2dC0+c2V0VGFyZ2V0
KHRoaXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIGxp
c3RlbmVySXRlci0+Z2V0KCktPmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwgZmFsc2UpOworICAgIH0K
KyAgICByZXR1cm4gIWV2dC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogfQogCiB2b2lkIFdlYlNvY2tl
dDo6ZGlkQ29ubmVjdCgpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkQ29u
bmVjdCIsIHRoaXMpOwogICAgIGlmIChtX3N0YXRlICE9IENPTk5FQ1RJTkcpIHsKICAgICAgICAg
ZGlkQ2xvc2UoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX3N0YXRlID0gT1BFTjsK
LSAgICBkaXNwYXRjaE9wZW5FdmVudCgpOworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
cG9zdFRhc2soUHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzazo6Y3JlYXRlKHRoaXMsICZXZWJTb2Nr
ZXQ6OmRpc3BhdGNoT3BlbkV2ZW50LCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5vcGVuRXZl
bnQsIGZhbHNlLCBmYWxzZSkpKTsKIH0KIAogdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNz
YWdlKGNvbnN0IFN0cmluZyYgbXNnKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVw
IGRpZFJlY2VpdmVNZXNzYWdlICVzIiwgdGhpcywgbXNnLnV0ZjgoKS5kYXRhKCkpOwogICAgIGlm
IChtX3N0YXRlICE9IE9QRU4pCiAgICAgICAgIHJldHVybjsKLSAgICBkaXNwYXRjaE1lc3NhZ2VF
dmVudChtc2cpOworICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2dCA9IE1lc3NhZ2VFdmVudDo6
Y3JlYXRlKCk7CisgICAgLy8gRklYTUU6IG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgbWVz
c2FnZVBvcnQuCisgICAgZXZ0LT5pbml0TWVzc2FnZUV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdl
RXZlbnQsIGZhbHNlLCBmYWxzZSwgbXNnLCAiIiwgIiIsIDAsIDApOworICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soUHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzazo6Y3JlYXRl
KHRoaXMsICZXZWJTb2NrZXQ6OmRpc3BhdGNoTWVzc2FnZUV2ZW50LCBldnQpKTsKIH0KIAogdm9p
ZCBXZWJTb2NrZXQ6OmRpZENsb3NlKCkKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAl
cCBkaWRDbG9zZSIsIHRoaXMpOwogICAgIG1fc3RhdGUgPSBDTE9TRUQ7Ci0gICAgZGlzcGF0Y2hD
bG9zZUV2ZW50KCk7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhQcm9j
ZXNzV2ViU29ja2V0RXZlbnRUYXNrOjpjcmVhdGUodGhpcywgJldlYlNvY2tldDo6ZGlzcGF0Y2hD
bG9zZUV2ZW50LCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwg
ZmFsc2UpKSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaE9wZW5FdmVudCgpCit2b2lk
IFdlYlNvY2tldDo6ZGlzcGF0Y2hPcGVuRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZ0KQogewot
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBpZiAobV9vbm9wZW4pIHsKKyAgICAg
ICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldCh0
aGlzKTsKKyAgICAgICAgbV9vbm9wZW4tPmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwgZmFsc2UpOwor
ICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZ0
LnJlbGVhc2VSZWYoKSwgZWMpOworICAgIEFTU0VSVCghZWMpOwogfQogCi12b2lkIFdlYlNvY2tl
dDo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJikKK3ZvaWQgV2ViU29ja2V0Ojpk
aXNwYXRjaE1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldnQpCiB7Ci0gICAgLy8gRklY
TUU6IGltcGxlbWVudCB0aGlzLgorICAgIGlmIChtX29ubWVzc2FnZSkgeworICAgICAgICBldnQt
PnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMpOwor
ICAgICAgICBtX29ubWVzc2FnZS0+aGFuZGxlRXZlbnQoZXZ0LmdldCgpLCBmYWxzZSk7CisgICAg
fQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hFdmVudChldnQucmVs
ZWFzZVJlZigpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7CiB9CiAKLXZvaWQgV2ViU29ja2V0Ojpk
aXNwYXRjaENsb3NlRXZlbnQoKQordm9pZCBXZWJTb2NrZXQ6OmRpc3BhdGNoQ2xvc2VFdmVudChQ
YXNzUmVmUHRyPEV2ZW50PiBldnQpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgor
ICAgIGlmIChtX29uY2xvc2UpIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAg
ICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbmNsb3NlLT5oYW5k
bGVFdmVudChldnQuZ2V0KCksIGZhbHNlKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNlUmVmKCksIGVjKTsKKyAgICBBU1NF
UlQoIWVjKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQu
aAppbmRleCA0ODVlMmNjLi5jNGVmNjRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0LmgKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC0zMSw5
MyArMzEsMTA0IEBACiAjaWZuZGVmIFdlYlNvY2tldF9oCiAjZGVmaW5lIFdlYlNvY2tldF9oCiAK
KyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIK
ICNpbmNsdWRlICJBdG9taWNTdHJpbmdIYXNoLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5o
IgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
dHJpbmc7CisgICAgY2xhc3MgU3RyaW5nOworICAgIGNsYXNzIFdlYlNvY2tldENoYW5uZWw7CiAK
LWNsYXNzIFdlYlNvY2tldCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlNvY2tldD4sIHB1YmxpYyBF
dmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlNvY2tldChjb250ZXh0KSk7IH0KLSAgICB2
aXJ0dWFsIH5XZWJTb2NrZXQoKTsKKyAgICBjbGFzcyBXZWJTb2NrZXQgOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJTb2NrZXQ+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmpl
Y3QsIHB1YmxpYyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpOyB9
CisgICAgICAgIHZpcnR1YWwgfldlYlNvY2tldCgpOwogCi0gICAgZW51bSBTdGF0ZSB7Ci0gICAg
ICAgIENPTk5FQ1RJTkcgPSAwLAotICAgICAgICBPUEVOID0gMSwKLSAgICAgICAgQ0xPU0VEID0g
MgotICAgIH07CisgICAgICAgIGVudW0gU3RhdGUgeworICAgICAgICAgICAgQ09OTkVDVElORyA9
IDAsCisgICAgICAgICAgICBPUEVOID0gMSwKKyAgICAgICAgICAgIENMT1NFRCA9IDIKKyAgICAg
ICAgfTsKIAotICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiB1cmwsIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwg
RXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIGJvb2wgc2VuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgYm9vbCBzZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdm9pZCBjbG9zZSgp
OworICAgICAgICB2b2lkIGNsb3NlKCk7CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsK
LSAgICBTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgbG9uZyBidWZmZXJl
ZEFtb3VudCgpIGNvbnN0OworICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKKyAgICAg
ICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZl
cmVkQW1vdW50KCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldE9ub3BlbihQYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbm9wZW4gPSBldmVudExpc3RlbmVyOyB9Ci0g
ICAgRXZlbnRMaXN0ZW5lciogb25vcGVuKCkgY29uc3QgeyByZXR1cm4gbV9vbm9wZW4uZ2V0KCk7
IH0KLSAgICB2b2lkIHNldE9ubWVzc2FnZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50
TGlzdGVuZXIpIHsgbV9vbm1lc3NhZ2UgPSBldmVudExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0
ZW5lciogb25tZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9vbm1lc3NhZ2UuZ2V0KCk7IH0KLSAg
ICB2b2lkIHNldE9uY2xvc2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVy
KSB7IG1fb25jbG9zZSA9IGV2ZW50TGlzdGVuZXI7IH0KLSAgICBFdmVudExpc3RlbmVyKiBvbmNs
b3NlKCkgY29uc3QgeyByZXR1cm4gbV9vbmNsb3NlLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0
T25vcGVuKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29ub3Bl
biA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25vcGVuKCkgY29u
c3QgeyByZXR1cm4gbV9vbm9wZW4uZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRPbm1lc3NhZ2Uo
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25tZXNzYWdlID0g
ZXZlbnRMaXN0ZW5lcjsgfQorICAgICAgICBFdmVudExpc3RlbmVyKiBvbm1lc3NhZ2UoKSBjb25z
dCB7IHJldHVybiBtX29ubWVzc2FnZS5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldE9uY2xvc2Uo
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25jbG9zZSA9IGV2
ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25jbG9zZSgpIGNvbnN0IHsg
cmV0dXJuIG1fb25jbG9zZS5nZXQoKTsgfQogCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0
dWFsIFdlYlNvY2tldCogdG9XZWJTb2NrZXQoKSB7IHJldHVybiB0aGlzOyB9CisgICAgICAgIC8v
IEV2ZW50VGFyZ2V0CisgICAgICAgIHZpcnR1YWwgV2ViU29ja2V0KiB0b1dlYlNvY2tldCgpIHsg
cmV0dXJuIHRoaXM7IH0KIAotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAotICAgIHZpcnR1
YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpOwotICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBF
dmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0
Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB0eXBl
ZGVmIFZlY3RvcjxSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gPiBMaXN0ZW5lclZlY3RvcjsKKyAgICAg
ICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgTGlzdGVuZXJWZWN0b3I+IEV2ZW50TGlz
dGVuZXJzTWFwOwogCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0Ci0gICAgLy8gdmlydHVhbCBib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwotICAgIC8vIHZpcnR1YWwgdm9pZCBjb250ZXh0
RGVzdHJveWVkKCk7Ci0gICAgLy8gdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKLSAg
ICAvLyB2aXJ0dWFsIHZvaWQgc3VzcGVuZCgpOwotICAgIC8vIHZpcnR1YWwgdm9pZCByZXN1bWUo
KTsKLSAgICAvLyB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxF
dmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOworICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hF
dmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICBFdmVudExp
c3RlbmVyc01hcCYgZXZlbnRMaXN0ZW5lcnMoKSB7IHJldHVybiBtX2V2ZW50TGlzdGVuZXJzOyB9
CiAKLSAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldD46OnJlZjsKLSAgICB1c2luZyBSZWZD
b3VudGVkPFdlYlNvY2tldD46OmRlcmVmOworICAgICAgICAvLyBBY3RpdmVET01PYmplY3QKKyAg
ICAgICAgLy8gIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKKyAgICAg
ICAgLy8gdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKKyAgICAgICAgLy8gdmlydHVh
bCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lkIHN1c3Bl
bmQoKTsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lkIHJlc3VtZSgpOworICAgICAgICAvLyB2aXJ0
dWFsIHZvaWQgc3RvcCgpOwogCi1wcml2YXRlOgotICAgIFdlYlNvY2tldChTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kik7CisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Pjo6cmVmOwor
ICAgICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldD46OmRlcmVmOwogCi0gICAgdmlydHVh
bCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJl
ZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAgICAgIC8vIFdlYlNvY2tldENoYW5uZWxD
bGllbnQKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENvbm5lY3QoKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZENsb3NlKCk7CiAKLSAgICAvLyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50Ci0g
ICAgdm9pZCBkaWRDb25uZWN0KCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBT
dHJpbmcmIG1zZyk7Ci0gICAgdm9pZCBkaWRDbG9zZSgpOworICAgIHByaXZhdGU6CisgICAgICAg
IFdlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICB2b2lkIGRpc3BhdGNo
T3BlbkV2ZW50KCk7Ci0gICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcm
IG1zZyk7Ci0gICAgdm9pZCBkaXNwYXRjaENsb3NlRXZlbnQoKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQogCi0gICAgLy8gRklYTUU6IGFkZCBXZWJTb2Nr
ZXRDaGFubmVsLgorICAgICAgICB2b2lkIGRpc3BhdGNoT3BlbkV2ZW50KFBhc3NSZWZQdHI8RXZl
bnQ+KTsKKyAgICAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPEV2ZW50
Pik7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsK
IAotICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ub3BlbjsKLSAgICBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gbV9vbm1lc3NhZ2U7Ci0gICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25jbG9z
ZTsKKyAgICAgICAgUmVmUHRyPFdlYlNvY2tldENoYW5uZWw+IG1fY2hhbm5lbDsKIAotICAgIFN0
YXRlIG1fc3RhdGU7Ci0gICAgS1VSTCBtX3VybDsKLSAgICBTdHJpbmcgbV9wcm90b2NvbDsKLX07
CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ub3BlbjsKKyAgICAgICAgUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IG1fb25tZXNzYWdlOworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4gbV9vbmNsb3NlOworICAgICAgICBFdmVudExpc3RlbmVyc01hcCBtX2V2ZW50TGlzdGVuZXJz
OworCisgICAgICAgIFN0YXRlIG1fc3RhdGU7CisgICAgICAgIEtVUkwgbV91cmw7CisgICAgICAg
IFN0cmluZyBtX3Byb3RvY29sOworICAgIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
KyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCiAjZW5kaWYgIC8vIFdlYlNvY2tldF9o
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMTYyMzBhZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMCwwICsxLDI0OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRlICJXZWJTb2Nr
ZXRDaGFubmVsLmgiCisKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiQ29va2llSmFy
LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1I
YW5kbGUuaCIKKyNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hh
bm5lbENsaWVudC5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1dlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCisgICAgOiBtX2NvbnRleHQoY29udGV4
dCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1faGFuZHNoYWtlKHVybCwgcHJvdG9j
b2wsIGNvbnRleHQpCisgICAgLCBtX2J1ZmZlcigwKQorICAgICwgbV9idWZmZXJTaXplKDApCisg
ICAgLCBtX3VuaGFuZGxlZEJ1ZmZlclNpemUoMCkKK3sKK30KKworV2ViU29ja2V0Q2hhbm5lbDo6
fldlYlNvY2tldENoYW5uZWwoKQoreworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNvbm5l
Y3QoKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjb25uZWN0Iiwg
dGhpcyk7CisgICAgQVNTRVJUKCFtX2hhbmRsZS5nZXQoKSk7CisgICAgbV9oYW5kc2hha2UucmVz
ZXQoKTsKKyAgICBtX2hhbmRsZSA9IFNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlKG1faGFuZHNo
YWtlLnVybCgpLCB0aGlzKTsKK30KKworYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0
IFN0cmluZyYgbXNnKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBz
ZW5kICVzIiwgdGhpcywgbXNnLnV0ZjgoKS5kYXRhKCkpOworICAgIFZlY3RvcjxjaGFyPiBidWY7
CisgICAgYnVmLmFwcGVuZCgnXDAnKTsgIC8vIGZyYW1lIHR5cGUKKyAgICBidWYuYXBwZW5kKG1z
Zy51dGY4KCkuZGF0YSgpLCBtc2cudXRmOCgpLmxlbmd0aCgpKTsKKyAgICBidWYuYXBwZW5kKCdc
eGZmJyk7ICAvLyBmcmFtZSBlbmQKKyAgICBpZiAoIW1faGFuZGxlLmdldCgpKSB7CisgICAgICAg
IG1fdW5oYW5kbGVkQnVmZmVyU2l6ZSArPSBidWYuc2l6ZSgpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIHJldHVybiBtX2hhbmRsZS0+c2VuZChidWYuZGF0YSgpLCBidWYuc2l6
ZSgpKTsKK30KKwordW5zaWduZWQgbG9uZyBXZWJTb2NrZXRDaGFubmVsOjpidWZmZXJlZEFtb3Vu
dCgpIGNvbnN0Cit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGJ1ZmZl
cmVkQW1vdW50IiwgdGhpcyk7CisgICAgaWYgKCFtX2hhbmRsZS5nZXQoKSkKKyAgICAgICAgcmV0
dXJuIG1fdW5oYW5kbGVkQnVmZmVyU2l6ZTsKKyAgICByZXR1cm4gbV9oYW5kbGUtPmJ1ZmZlcmVk
QW1vdW50KCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoKQoreworICAgIExP
RyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjbG9zZSIsIHRoaXMpOworICAgIGlmICht
X2hhbmRsZS5nZXQoKSkKKyAgICAgICAgbV9oYW5kbGUtPmNsb3NlKCk7ICAvLyB3aWxsIGNhbGwg
ZGlkQ2xvc2UoKQorfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OndpbGxPcGVuU3RyZWFtKFNv
Y2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEtVUkwmKQoreworfQorCit2b2lkIFdlYlNvY2tldENo
YW5uZWw6OndpbGxTZW5kRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50
KQoreworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZE9wZW4oU29ja2V0U3RyZWFtSGFu
ZGxlKiBoYW5kbGUpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRp
ZE9wZW4iLCB0aGlzKTsKKyAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdldCgpKTsKKyAg
ICBjb25zdCBDU3RyaW5nJiBoYW5kc2hha2VNZXNzYWdlID0gbV9oYW5kc2hha2UuY2xpZW50SGFu
ZHNoYWtlTWVzc2FnZSgpOworICAgIGlmICghaGFuZGxlLT5zZW5kKGhhbmRzaGFrZU1lc3NhZ2Uu
ZGF0YSgpLCBoYW5kc2hha2VNZXNzYWdlLmxlbmd0aCgpKSkgeworICAgICAgICBMT0coTmV0d29y
aywgIkVycm9yIGluIHNlbmRpbmcgaGFuZHNoYWtlIG1lc3NhZ2UuIik7CisgICAgICAgIGhhbmRs
ZS0+Y2xvc2UoKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkQ2xvc2Uo
U29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2Nr
ZXRDaGFubmVsICVwIGRpZENsb3NlIiwgdGhpcyk7CisgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hh
bmRsZS5nZXQoKSB8fCAhbV9oYW5kbGUuZ2V0KCkpOworICAgIGlmICghbV9oYW5kbGUuZ2V0KCkp
CisgICAgICAgIHJldHVybjsKKyAgICBtX3VuaGFuZGxlZEJ1ZmZlclNpemUgPSBoYW5kbGUtPmJ1
ZmZlcmVkQW1vdW50KCk7CisgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50ID0gbV9j
bGllbnQ7CisgICAgbV9jbGllbnQgPSAwOworICAgIG1faGFuZGxlID0gMDsKKyAgICBjbGllbnQt
PmRpZENsb3NlKCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZURhdGEo
U29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pCit7
CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZFJlY2VpdmVEYXRhICVk
IiwgdGhpcywgbGVuKTsKKyAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdldCgpKTsKKyAg
ICBpZiAoIWFwcGVuZFRvQnVmZmVyKGRhdGEsIGxlbikpIHsKKyAgICAgICAgaGFuZGxlLT5jbG9z
ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX2hhbmRzaGFrZS5tb2RlKCkg
IT0gV2ViU29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQpIHsKKyAgICAgICAgaW50IGhlYWRlckxl
bmd0aCA9IG1faGFuZHNoYWtlLnJlYWRTZXJ2ZXJIYW5kc2hha2UobV9idWZmZXIuZ2V0KCksIG1f
YnVmZmVyU2l6ZSk7CisgICAgICAgIGlmIChoZWFkZXJMZW5ndGggPD0gMCkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgc3dpdGNoIChtX2hhbmRzaGFrZS5tb2RlKCkpIHsKKyAgICAgICAg
Y2FzZSBXZWJTb2NrZXRIYW5kc2hha2U6OkNvbm5lY3RlZDoKKyAgICAgICAgICAgIGlmICghbV9o
YW5kc2hha2Uuc2VydmVyU2V0Q29va2llKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAg
aWYgKG1fY29udGV4dC0+aXNEb2N1bWVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9jb250ZXh0KTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvb2tpZXNFbmFibGVkKGRvY3VtZW50KSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LT5zZXRDb29raWUobV9oYW5kc2hha2Uuc2VydmVyU2V0Q29v
a2llKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8v
IEZJWE1FOiBoYW5kbGUgc2V0LWNvb2tpZTIuCisgICAgICAgICAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldENoYW5uZWwgJXAgY29ubmVjdGVkIiwgdGhpcyk7CisgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkQ29ubmVjdCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViU29j
a2V0SGFuZHNoYWtlOjpBdXRoZW50aWNhdGU6CisgICAgICAgICAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldENoYW5uZWwgJXAgY29ubmVjdGlvbiByZXF1aXJlcyBhdXRoZW50aWNhdGlvbiIsIHRo
aXMpOworICAgICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBhdXRoZW50aWNhdGUgbWVjaGFu
aXN1bS4KKyAgICAgICAgICAgIGhhbmRsZS0+Y2xvc2UoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hh
bm5lbCAlcCBjb25uZWN0aW9uIGZhaWxlZCIsIHRoaXMpOworICAgICAgICAgICAgaGFuZGxlLT5j
bG9zZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHNraXBCdWZm
ZXIoaGVhZGVyTGVuZ3RoKTsKKyAgICAgICAgaWYgKCFtX2J1ZmZlci5nZXQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgTE9HKE5ldHdvcmssICJyZW1haW5pbmcgaW4gcmVhZCBidWYg
JXVsIiwgbV9idWZmZXJTaXplKTsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyKiBuZXh0RnJhbWUg
PSBtX2J1ZmZlci5nZXQoKTsKKyAgICBjb25zdCBjaGFyKiBwID0gbV9idWZmZXIuZ2V0KCk7Cisg
ICAgY29uc3QgY2hhciogZW5kID0gcCArIG1fYnVmZmVyU2l6ZTsKKyAgICB3aGlsZSAocCA8IGVu
ZCkgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGZyYW1lQnl0ZSA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KCpwKyspOworICAgICAgICBpZiAoKGZyYW1lQnl0ZSAmIDB4ODApID09IDB4ODAp
IHsKKyAgICAgICAgICAgIGludCBsZW5ndGggPSAwOworICAgICAgICAgICAgd2hpbGUgKHAgPCBl
bmQgJiYgKCpwICYgMHg4MCkgPT0gMHg4MCkgeworICAgICAgICAgICAgICAgIGlmIChsZW5ndGgg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpIC8gMTI4KSB7CisgICAgICAgICAgICAg
ICAgICAgIExPRyhOZXR3b3JrLCAiZnJhbWUgbGVuZ3RoIG92ZXJmbG93ICVkIiwgbGVuZ3RoKTsK
KyAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5jbG9zZSgpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxl
bmd0aCAqIDEyOCArICpwICYgMHg3ZjsKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAocCArIGxlbmd0aCA8IGVuZCkgeworICAgICAgICAgICAgICAg
IHAgKz0gbGVuZ3RoOworICAgICAgICAgICAgICAgIG5leHRGcmFtZSA9IHA7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBtc2dTdGFydCA9
IHA7CisgICAgICAgICAgICB3aGlsZSAocCA8IGVuZCAmJiAqcCAhPSAnXHhmZicpCisgICAgICAg
ICAgICAgICAgKytwOworICAgICAgICAgICAgaWYgKHAgPCBlbmQgJiYgKnAgPT0gJ1x4ZmYnKSB7
CisgICAgICAgICAgICAgICAgaWYgKGZyYW1lQnl0ZSA9PSAweDAwKQorICAgICAgICAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2UoU3RyaW5nOjpmcm9tVVRGOChtc2dTdGFy
dCwgcCAtIG1zZ1N0YXJ0KSk7CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAg
IG5leHRGcmFtZSA9IHA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgc2tp
cEJ1ZmZlcihuZXh0RnJhbWUgLSBtX2J1ZmZlci5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6ZGlkRmFpbChTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSwgY29uc3QgU29ja2V0
U3RyZWFtRXJyb3ImKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBk
aWRGYWlsIiwgdGhpcyk7CisgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hhbmRsZS5nZXQoKSB8fCAh
bV9oYW5kbGUuZ2V0KCkpOworICAgIGhhbmRsZS0+Y2xvc2UoKTsKK30KKworYm9vbCBXZWJTb2Nr
ZXRDaGFubmVsOjphcHBlbmRUb0J1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQorewor
ICAgIGNoYXIqIG5ld0J1ZmZlciA9IDA7CisgICAgaWYgKHRyeUZhc3RNYWxsb2MobV9idWZmZXJT
aXplICsgbGVuKS5nZXRWYWx1ZShuZXdCdWZmZXIpKSB7CisgICAgICAgIGlmIChtX2J1ZmZlci5n
ZXQoKSkKKyAgICAgICAgICAgIG1lbWNweShuZXdCdWZmZXIsIG1fYnVmZmVyLmdldCgpLCBtX2J1
ZmZlclNpemUpOworICAgICAgICBtZW1jcHkobmV3QnVmZmVyICsgbV9idWZmZXJTaXplLCBkYXRh
LCBsZW4pOworICAgICAgICBtX2J1ZmZlci5zZXQobmV3QnVmZmVyKTsKKyAgICAgICAgbV9idWZm
ZXJTaXplICs9IGxlbjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIExPRyhOZXR3
b3JrLCAiVG9vIGxvbmcgV2ViU29ja2V0IGZyYW1lICVkIiwgbV9idWZmZXJTaXplICsgbGVuKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2tpcEJ1ZmZl
cihpbnQgbGVuKQoreworICAgIEFTU0VSVChsZW4gPD0gbV9idWZmZXJTaXplKTsKKyAgICBtX2J1
ZmZlclNpemUgLT0gbGVuOworICAgIGlmICghbV9idWZmZXJTaXplKSB7CisgICAgICAgIG1fYnVm
ZmVyLnNldCgwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtZW1tb3ZlKG1fYnVmZmVy
LmdldCgpLCBtX2J1ZmZlci5nZXQoKSArIGxlbiwgbV9idWZmZXJTaXplKTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4yMThjMTc4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuaApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0Q2hhbm5l
bF9oCisjZGVmaW5lIFdlYlNvY2tldENoYW5uZWxfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRT
KQorCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCisjaW5jbHVkZSAiV2Vi
U29ja2V0SGFuZHNoYWtlLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgY2xhc3MgU3RyaW5nOworICAgIGNsYXNzIFNvY2tldFN0
cmVhbUhhbmRsZTsKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvcjsKKyAgICBjbGFzcyBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50OworCisgICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYlNvY2tldENoYW5uZWw+LCBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tl
dENoYW5uZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50KiBjbGllbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCkgeyByZXR1cm4gbmV3IFdlYlNvY2tldENoYW5uZWwoY29udGV4dCwgY2xpZW50LCB1
cmwsIHByb3RvY29sKTsgfQorICAgICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDaGFubmVsKCk7CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoKTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wg
c2VuZChjb25zdCBTdHJpbmcmIG1zZyk7CisgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBi
dWZmZXJlZEFtb3VudCgpIGNvbnN0OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOwor
CisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsT3BlblN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUq
LCBjb25zdCBLVVJMJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZERhdGEoU29ja2V0
U3RyZWFtSGFuZGxlKiwgY29uc3QgY2hhciosIGludCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRPcGVuKFNvY2tldFN0cmVhbUhhbmRsZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xv
c2UoU29ja2V0U3RyZWFtSGFuZGxlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50KTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWwoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgU29ja2V0U3RyZWFt
RXJyb3ImKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFdlYlNvY2tldENoYW5uZWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFdlYlNvY2tldENoYW5uZWxDbGllbnQqLCBjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJik7CisKKyAgICAgICAgYm9vbCBhcHBlbmRUb0J1ZmZlcihjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuKTsKKyAgICAgICAgdm9pZCBza2lwQnVmZmVyKGludCBsZW4pOworCisg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKKyAgICAgICAgV2ViU29j
a2V0Q2hhbm5lbENsaWVudCogbV9jbGllbnQ7CisgICAgICAgIFdlYlNvY2tldEhhbmRzaGFrZSBt
X2hhbmRzaGFrZTsKKyAgICAgICAgUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gbV9oYW5kbGU7
CisgICAgICAgIE93blB0cjxjaGFyPiBtX2J1ZmZlcjsKKyAgICAgICAgaW50IG1fYnVmZmVyU2l6
ZTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtX3VuaGFuZGxlZEJ1ZmZlclNpemU7CisgICAgfTsK
KworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tF
VFMpCisKKyNlbmRpZiAgLy8gV2ViU29ja2V0Q2hhbm5lbF9oCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIGIvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWxDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi40NjNjYWRhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWxDbGllbnQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0Q2hh
bm5lbENsaWVudF9oCisjZGVmaW5lIFdlYlNvY2tldENoYW5uZWxDbGllbnRfaAorCisjaWYgRU5B
QkxFKFdFQl9TT0NLRVRTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfldlYlNv
Y2tldENoYW5uZWxDbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENvbm5lY3Qo
KSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoKSB7IH0KKworICAgIHByb3Rl
Y3RlZDoKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCgpIHsgfQorICAgIH07CisKK30g
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQor
CisjZW5kaWYgIC8vIFdlYlNvY2tldENoYW5uZWxDbGllbnRfaApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li41Y2ExMDU4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5jcHAKQEAgLTAsMCArMSw0OTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlLmgi
CisKKyNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5j
bHVkZSAiQ29va2llSmFyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJIVFRQ
SGVhZGVyTWFwLmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKKyNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGNoYXIgd2ViU29ja2V0U2VydmVySGFu
ZHNoYWtlSGVhZGVyW10gPSAiSFRUUC8xLjEgMTAxIFdlYiBTb2NrZXQgUHJvdG9jb2wgSGFuZHNo
YWtlXHJcbiI7Citjb25zdCBjaGFyIHdlYlNvY2tldFVwZ3JhZGVIZWFkZXJbXSA9ICJVcGdyYWRl
OiBXZWJTb2NrZXRcclxuIjsKK2NvbnN0IGNoYXIgd2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlcltd
ID0gIkNvbm5lY3Rpb246IFVwZ3JhZGVcclxuIjsKKworc3RhdGljIFN0cmluZyBleHRyYWN0UmVz
cG9uc2VDb2RlKGNvbnN0IGNoYXIqIGhlYWRlciwgaW50IGxlbikKK3sKKyAgICBjb25zdCBjaGFy
KiBzcGFjZTEgPSAwOworICAgIGNvbnN0IGNoYXIqIHNwYWNlMiA9IDA7CisgICAgY29uc3QgY2hh
ciogcDsKKyAgICBmb3IgKHAgPSBoZWFkZXI7IHAgLSBoZWFkZXIgPCBsZW47IHArKykgeworICAg
ICAgICBpZiAoKnAgPT0gJyAnKSB7CisgICAgICAgICAgICBpZiAoIXNwYWNlMSkKKyAgICAgICAg
ICAgICAgICBzcGFjZTEgPSBwOworICAgICAgICAgICAgZWxzZSBpZiAoIXNwYWNlMikKKyAgICAg
ICAgICAgICAgICBzcGFjZTIgPSBwOworICAgICAgICB9IGVsc2UgaWYgKCpwID09ICdcbicpCisg
ICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKHAgLSBoZWFkZXIgPT0gbGVuKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgaWYgKCFzcGFjZTEgfHwgIXNwYWNlMikKKyAgICAg
ICAgcmV0dXJuICIiOworICAgIHJldHVybiBTdHJpbmcoc3BhY2UxICsgMSwgc3BhY2UyIC0gc3Bh
Y2UxIC0gMSk7Cit9CisKK3N0YXRpYyBib29sIGNvbnRhaW5zVHdvQ1JMRlBhaXJzKGNvbnN0IGNo
YXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpCit7CisgICAgZm9yIChjb25zdCBjaGFyKiBwID0g
c3RhcnQ7IHAgJiYgcCA8IGVuZDsgcCsrKSB7CisgICAgICAgIHAgPSBzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4obWVtY2hyKHAsICdccicsIGVuZCAtIHApKTsKKyAgICAgICAgaWYgKCFwKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChwICsgMyA8IGVuZCAmJiAqKHAg
KyAxKSA9PSAnXG4nICYmICoocCArIDIpID09ICdccicgJiYgKihwICsgMykgPT0gJ1xuJykKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1dl
YlNvY2tldEhhbmRzaGFrZTo6V2ViU29ja2V0SGFuZHNoYWtlKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAg
ICA6IG1fdXJsKHVybCkKKyAgICAsIG1fY2xpZW50UHJvdG9jb2wocHJvdG9jb2wpCisgICAgLCBt
X3NlY3VyZShtX3VybC5wcm90b2NvbElzKCJ3c3MiKSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0
KQorICAgICwgbV9tb2RlKEluY29tcGxldGUpCit7Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZTo6
fldlYlNvY2tldEhhbmRzaGFrZSgpCit7Cit9CisKK2NvbnN0IEtVUkwmIFdlYlNvY2tldEhhbmRz
aGFrZTo6dXJsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91cmw7Cit9CisKK3ZvaWQgV2ViU29j
a2V0SGFuZHNoYWtlOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQoreworICAgIG1fdXJsID0gdXJs
LmNvcHkoKTsKK30KKworY29uc3QgU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6aG9zdCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fdXJsLmhvc3QoKS5sb3dlcigpOworfQorCitjb25zdCBTdHJp
bmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50UHJvdG9jb2woKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NsaWVudFByb3RvY29sOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0
Q2xpZW50UHJvdG9jb2woY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3sKKyAgICBtX2NsaWVudFBy
b3RvY29sID0gcHJvdG9jb2w7Cit9CisKK2Jvb2wgV2ViU29ja2V0SGFuZHNoYWtlOjpzZWN1cmUo
KSBjb25zdAoreworICAgIHJldHVybiBtX3NlY3VyZTsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5k
c2hha2U6OnNldFNlY3VyZShib29sIHNlY3VyZSkKK3sKKyAgICBtX3NlY3VyZSA9IHNlY3VyZTsK
K30KKworU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50T3JpZ2luKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9jb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpOworfQor
CitTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRMb2NhdGlvbigpIGNvbnN0Cit7Cisg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fc2VjdXJlID8g
IndzcyIgOiAid3MiKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiOi8vIik7CisgICAgYnVpbGRlci5h
cHBlbmQobV91cmwuaG9zdCgpLmxvd2VyKCkpOworICAgIGlmIChtX3VybC5wb3J0KCkpIHsKKyAg
ICAgICAgaWYgKCghbV9zZWN1cmUgJiYgbV91cmwucG9ydCgpICE9IDgxKSB8fCAobV9zZWN1cmUg
JiYgbV91cmwucG9ydCgpICE9IDgxNSkpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6
Iik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihtX3VybC5wb3J0
KCkpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZChtX3VybC5wYXRoKCkp
OworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK0NTdHJpbmcgV2ViU29ja2V0
SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VNZXNzYWdlKCkgY29uc3QKK3sKKyAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7CisKKyAgICBidWlsZGVyLmFwcGVuZCgiR0VUICIpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKG1fdXJsLnBhdGgoKSk7CisgICAgaWYgKCFtX3VybC5xdWVyeSgpLmlzRW1wdHko
KSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZCgiPyIpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZChtX3VybC5xdWVyeSgpKTsKKyAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoIiBIVFRQLzEuMVxy
XG4iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiVXBncmFkZTogV2ViU29ja2V0XHJcbiIpOworICAg
IGJ1aWxkZXIuYXBwZW5kKCJDb25uZWN0aW9uOiBVcGdyYWRlXHJcbiIpOworICAgIGJ1aWxkZXIu
YXBwZW5kKCJIb3N0OiAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChtX3VybC5ob3N0KCkubG93ZXIo
KSk7CisgICAgaWYgKG1fdXJsLnBvcnQoKSkgeworICAgICAgICBpZiAoKCFtX3NlY3VyZSAmJiBt
X3VybC5wb3J0KCkgIT0gODApIHx8IChtX3NlY3VyZSAmJiBtX3VybC5wb3J0KCkgIT0gNDQzKSkg
eworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjoiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKFN0cmluZzo6bnVtYmVyKG1fdXJsLnBvcnQoKSkpOworICAgICAgICB9CisgICAgfQor
ICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIk9yaWdpbjog
Iik7CisgICAgYnVpbGRlci5hcHBlbmQoY2xpZW50T3JpZ2luKCkpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKCJcclxuIik7CisgICAgaWYgKCFtX2NsaWVudFByb3RvY29sLmlzRW1wdHkoKSkgeworICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiV2ViU29ja2V0LVByb3RvY29sOiAiKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQobV9jbGllbnRQcm90b2NvbCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJc
clxuIik7CisgICAgfQorICAgIEtVUkwgdXJsID0gaHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5k
Q29va2llcygpOworICAgIC8vIEZJWE1FOiBzZXQgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24g
b3IgY29va2llcyBmb3IgdXJsLgorICAgIC8vIFNldCAiQXV0aG9yaXphdGlvbjogPGNyZWRlbnRp
YWxzPiIgaWYgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gZXhpc3RzIGZvciB1cmwuCisgICAg
aWYgKG1fY29udGV4dC0+aXNEb2N1bWVudCgpKSB7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9jb250ZXh0KTsKKyAgICAgICAgU3RyaW5nIGNv
b2tpZSA9IGNvb2tpZXMoZG9jdW1lbnQsIHVybCk7CisgICAgICAgIGlmICghY29va2llLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIkNvb2tpZTogIik7CisgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChjb29raWUpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
IlxyXG4iKTsKKyAgICAgICAgfQorICAgICAgICAvLyBTZXQgIkNvb2tpZTI6IDxjb29raWU+IiBp
ZiBjb29raWVzIDIgZXhpc3RzIGZvciB1cmw/CisgICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKCJc
clxuIik7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7Cit9CisKK3ZvaWQg
V2ViU29ja2V0SGFuZHNoYWtlOjpyZXNldCgpCit7CisgICAgbV9tb2RlID0gSW5jb21wbGV0ZTsK
KworICAgIG1fd3NPcmlnaW4gPSBTdHJpbmcoKTsKKyAgICBtX3dzTG9jYXRpb24gPSBTdHJpbmco
KTsKKyAgICBtX3dzUHJvdG9jb2wgPSBTdHJpbmcoKTsKKyAgICBtX3NldENvb2tpZSA9IFN0cmlu
ZygpOworICAgIG1fc2V0Q29va2llMiA9IFN0cmluZygpOworICAgIG1fbG9jYXRpb24gPSBTdHJp
bmcoKTsKKyAgICBtX3d3d0F1dGhlbnRpY2F0ZSA9IFN0cmluZygpOworfQorCitpbnQgV2ViU29j
a2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6
ZV90IGxlbikKK3sKKyAgICBtX21vZGUgPSBJbmNvbXBsZXRlOworICAgIGlmIChsZW4gPCBzaXpl
b2Yod2ViU29ja2V0U2VydmVySGFuZHNoYWtlSGVhZGVyKSAtIDEpIHsKKyAgICAgICAgLy8gSnVz
dCBoYXNuJ3QgYmVlbiByZWNlaXZlZCBmdWxseSB5ZXQuCisgICAgICAgIHJldHVybiAtMTsKKyAg
ICB9CisgICAgaWYgKCFtZW1jbXAoaGVhZGVyLCB3ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hha2VIZWFk
ZXIsIHNpemVvZih3ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hha2VIZWFkZXIpIC0gMSkpCisgICAgICAg
IG1fbW9kZSA9IE5vcm1hbDsKKyAgICBlbHNlIHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBjb2Rl
ID0gZXh0cmFjdFJlc3BvbnNlQ29kZShoZWFkZXIsIGxlbik7CisgICAgICAgIGlmIChjb2RlLmlz
TnVsbCgpKSB7CisgICAgICAgICAgICBMT0coTmV0d29yaywgInNob3J0IHNlcnZlciBoYW5kc2hh
a2U6ICVzIiwgaGVhZGVyKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoY29kZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAibm8g
cmVzcG9uc2UgY29kZSBmb3VuZDogJXMiLCBoZWFkZXIpOworICAgICAgICAgICAgcmV0dXJuIGxl
bjsKKyAgICAgICAgfQorICAgICAgICBMT0coTmV0d29yaywgInJlc3BvbnNlIGNvZGU6ICVzIiwg
Y29kZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKGNvZGUgPT0gIjQwMSIpCisgICAgICAg
ICAgICBtX21vZGUgPSBBdXRoZW50aWNhdGU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
TE9HKE5ldHdvcmssICJNaXNtYXRjaCBzZXJ2ZXIgaGFuZHNoYWtlOiAlcyIsIGhlYWRlcik7Cisg
ICAgICAgICAgICByZXR1cm4gbGVuOworICAgICAgICB9CisgICAgfQorICAgIGNvbnN0IGNoYXIq
IHAgPSBoZWFkZXIgKyBzaXplb2Yod2ViU29ja2V0U2VydmVySGFuZHNoYWtlSGVhZGVyKSAtIDE7
CisgICAgY29uc3QgY2hhciogZW5kID0gaGVhZGVyICsgbGVuICsgMTsKKworICAgIGlmIChtX21v
ZGUgPT0gTm9ybWFsKSB7CisgICAgICAgIHNpemVfdCBoZWFkZXJTaXplID0gZW5kIC0gcDsKKyAg
ICAgICAgaWYgKGhlYWRlclNpemUgPCBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRlcikgLSAx
KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChtZW1jbXAocCwgd2ViU29ja2V0
VXBncmFkZUhlYWRlciwgc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMSkpIHsKKyAg
ICAgICAgICAgIExPRyhOZXR3b3JrLCAiQmFkIHVwZ3JhZGUgaGVhZGVyOiAlcyIsIHApOworICAg
ICAgICAgICAgcmV0dXJuIHAgLSBoZWFkZXIgKyBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRl
cikgLSAxOworICAgICAgICB9CisgICAgICAgIHAgKz0gc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVI
ZWFkZXIpIC0gMTsKKworICAgICAgICBoZWFkZXJTaXplID0gZW5kIC0gcDsKKyAgICAgICAgaWYg
KGhlYWRlclNpemUgPCBzaXplb2Yod2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlcikgLSAxKQorICAg
ICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAobWVtY21wKHAsIHdlYlNvY2tldENvbm5l
Y3Rpb25IZWFkZXIsIHNpemVvZih3ZWJTb2NrZXRDb25uZWN0aW9uSGVhZGVyKSAtIDEpKSB7Cisg
ICAgICAgICAgICBMT0coTmV0d29yaywgIkJhZCBjb25uZWN0aW9uIGhlYWRlcjogJXMiLCBwKTsK
KyAgICAgICAgICAgIHJldHVybiBwIC0gaGVhZGVyICsgc2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rp
b25IZWFkZXIpIC0gMTsKKyAgICAgICAgfQorICAgICAgICBwICs9IHNpemVvZih3ZWJTb2NrZXRD
b25uZWN0aW9uSGVhZGVyKSAtIDE7CisgICAgfQorCisgICAgaWYgKCFjb250YWluc1R3b0NSTEZQ
YWlycyhwLCBlbmQpKSB7CisgICAgICAgIC8vIEp1c3QgaGFzbid0IGJlZW4gcmVjZWl2ZWQgZnVs
bHkgeWV0LgorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIEhUVFBIZWFkZXJNYXAgaGVh
ZGVyczsKKyAgICBwID0gcmVhZEhUVFBIZWFkZXJzKHAsIGVuZCwgJmhlYWRlcnMpOworICAgIGlm
ICghcCkgeworICAgICAgICBMT0coTmV0d29yaywgInJlYWRIVFRQSGVhZGVycyBmYWlsZWQiKTsK
KyAgICAgICAgbV9tb2RlID0gRmFpbGVkOworICAgICAgICByZXR1cm4gbGVuOworICAgIH0KKyAg
ICBpZiAoIXByb2Nlc3NIZWFkZXJzKGhlYWRlcnMpKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAi
aGVhZGVyIHByb2Nlc3MgZmFpbGVkIik7CisgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAgICAg
ICAgcmV0dXJuIHAgLSBoZWFkZXI7CisgICAgfQorICAgIHN3aXRjaCAobV9tb2RlKSB7CisgICAg
Y2FzZSBOb3JtYWw6CisgICAgICAgIGNoZWNrUmVzcG9uc2VIZWFkZXJzKCk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQXV0aGVudGljYXRlOgorICAgICAgICBpZiAobV93d3dBdXRoZW50aWNh
dGUuaXNOdWxsKCkpCisgICAgICAgICAgICBtX21vZGUgPSBGYWlsZWQ7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIHJldHVybiBwIC0gaGVhZGVyOworfQorCitXZWJTb2NrZXRIYW5kc2hha2U6
Ok1vZGUgV2ViU29ja2V0SGFuZHNoYWtlOjptb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9t
b2RlOworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyV2ViU29j
a2V0T3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93c09yaWdpbjsKK30KKwordm9pZCBX
ZWJTb2NrZXRIYW5kc2hha2U6OnNldFNlcnZlcldlYlNvY2tldE9yaWdpbihjb25zdCBTdHJpbmcm
IHdlYlNvY2tldE9yaWdpbikKK3sKKyAgICBtX3dzT3JpZ2luID0gd2ViU29ja2V0T3JpZ2luOwor
fQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyV2ViU29ja2V0TG9j
YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX3dzTG9jYXRpb247Cit9CisKK3ZvaWQgV2Vi
U29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJXZWJTb2NrZXRMb2NhdGlvbihjb25zdCBTdHJpbmcm
IHdlYlNvY2tldExvY2F0aW9uKQoreworICAgIG1fd3NMb2NhdGlvbiA9IHdlYlNvY2tldExvY2F0
aW9uOworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyV2ViU29j
a2V0UHJvdG9jb2woKSBjb25zdAoreworICAgIHJldHVybiBtX3dzUHJvdG9jb2w7Cit9CisKK3Zv
aWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbChjb25zdCBT
dHJpbmcmIHdlYlNvY2tldFByb3RvY29sKQoreworICAgIG1fd3NQcm90b2NvbCA9IHdlYlNvY2tl
dFByb3RvY29sOworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVy
U2V0Q29va2llKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZXRDb29raWU7Cit9CisKK3ZvaWQg
V2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJTZXRDb29raWUoY29uc3QgU3RyaW5nJiBzZXRD
b29raWUpCit7CisgICAgbV9zZXRDb29raWUgPSBzZXRDb29raWU7Cit9CisKK2NvbnN0IFN0cmlu
ZyYgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJTZXRDb29raWUyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9zZXRDb29raWUyOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2Vy
dmVyU2V0Q29va2llMihjb25zdCBTdHJpbmcmIHNldENvb2tpZTIpCit7CisgICAgbV9zZXRDb29r
aWUyID0gc2V0Q29va2llMjsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6
Ond3d0F1dGhlbnRpY2F0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3d3QXV0aGVudGljYXRl
OworfQorCitLVVJMIFdlYlNvY2tldEhhbmRzaGFrZTo6aHR0cFVSTEZvckF1dGhlbnRpY2F0aW9u
QW5kQ29va2llcygpIGNvbnN0Cit7CisgICAgS1VSTCB1cmwgPSBtX3VybC5jb3B5KCk7CisgICAg
dXJsLnNldFByb3RvY29sKG1fc2VjdXJlID8gImh0dHBzIiA6ICJodHRwIik7CisgICAgaW50IHBv
cnQgPSB1cmwucG9ydCgpOworICAgIGlmICghcG9ydCkKKyAgICAgICAgcG9ydCA9IG1fc2VjdXJl
ID8gODE1IDogODE7CisgICAgdXJsLnNldFBvcnQocG9ydCk7CisgICAgcmV0dXJuIHVybDsKK30K
KworY29uc3QgY2hhciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMoY29uc3Qg
Y2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCwgSFRUUEhlYWRlck1hcCogaGVhZGVycykKK3sK
KyAgICBWZWN0b3I8Y2hhcj4gbmFtZTsKKyAgICBWZWN0b3I8Y2hhcj4gdmFsdWU7CisgICAgZm9y
IChjb25zdCBjaGFyKiBwID0gc3RhcnQ7IHAgPCBlbmQ7IHArKykgeworICAgICAgICBuYW1lLmNs
ZWFyKCk7CisgICAgICAgIHZhbHVlLmNsZWFyKCk7CisKKyAgICAgICAgZm9yICg7IHAgPCBlbmQ7
IHArKykgeworICAgICAgICAgICAgc3dpdGNoICgqcCkgeworICAgICAgICAgICAgY2FzZSAnXHIn
OgorICAgICAgICAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAocCArIDEgPCBlbmQgJiYgKihwICsgMSkgPT0gJ1xuJykKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBwICsgMjsKKyAgICAgICAgICAgICAgICAgICAgTE9HKE5ldHdvcmss
ICJDUiBkb2Vzbid0IGZvbGxvdyBMRiBwPSVwIGVuZD0lcCIsIHAsIGVuZCk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBM
T0coTmV0d29yaywgIlVuZXhwZWN0ZWQgQ1IgaW4gbmFtZSIpOworICAgICAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgY2FzZSAnXG4nOgorICAgICAgICAgICAgICAgIExPRyhOZXR3
b3JrLCAiVW5leHBlY3RlZCBMRiBpbiBuYW1lIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgICAgICBjYXNlICc6JzoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgaWYgKCpwID49IDB4NDEgJiYgKnAgPD0gMHg1
YSkKKyAgICAgICAgICAgICAgICAgICAgbmFtZS5hcHBlbmQoKnAgKyAweDIwKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5hbWUuYXBwZW5kKCpwKTsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgqcCA9
PSAnOicpIHsKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3IgKDsgcCA8IGVuZCAmJiAqcCA9
PSAweDIwOyBwKyspIHsgfQorCisgICAgICAgIGZvciAoOyBwIDwgZW5kOyBwKyspIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAoKnApIHsKKyAgICAgICAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ1xuJzoKKyAgICAgICAgICAgICAgICBMT0co
TmV0d29yaywgIlVuZXhwZWN0ZWQgTEYgaW4gdmFsdWUiKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdmFsdWUuYXBwZW5k
KCpwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgqcCA9PSAnXHInKSB7CisgICAg
ICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGlmIChwID49IGVuZCB8fCAqcCAhPSAnXG4nKSB7CisgICAgICAg
ICAgICBMT0coTmV0d29yaywgIkNSIGRvZXNuJ3QgZm9sbG93IExGIGFmdGVyIHZhbHVlIHA9JXAg
ZW5kPSVwIiwgcCwgZW5kKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAg
ICAgIEF0b21pY1N0cmluZyBuYW1lU3RyKFN0cmluZzo6ZnJvbVVURjgobmFtZS5kYXRhKCksIG5h
bWUuc2l6ZSgpKSk7CisgICAgICAgIFN0cmluZyB2YWx1ZVN0ciA9IFN0cmluZzo6ZnJvbVVURjgo
dmFsdWUuZGF0YSgpLCB2YWx1ZS5zaXplKCkpOworICAgICAgICBMT0coTmV0d29yaywgIm5hbWU9
JXMgdmFsdWU9JXMiLCBuYW1lU3RyLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHZhbHVlU3RyLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICBoZWFkZXJzLT5hZGQobmFtZVN0ciwgdmFsdWVTdHIpOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworYm9v
bCBXZWJTb2NrZXRIYW5kc2hha2U6OnByb2Nlc3NIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAm
IGhlYWRlcnMpCit7CisgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IGhlYWRlcnMuYmVnaW4oKTsgaXQgIT0gaGVhZGVycy5lbmQoKTsgKytpdCkgeworICAgICAgICBz
d2l0Y2ggKG1fbW9kZSkgeworICAgICAgICBjYXNlIE5vcm1hbDoKKyAgICAgICAgICAgIGlmIChp
dC0+Zmlyc3QgPT0gIndlYnNvY2tldC1vcmlnaW4iKQorICAgICAgICAgICAgICAgIG1fd3NPcmln
aW4gPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJ3ZWJz
b2NrZXQtbG9jYXRpb24iKQorICAgICAgICAgICAgICAgIG1fd3NMb2NhdGlvbiA9IGl0LT5zZWNv
bmQ7CisgICAgICAgICAgICBlbHNlIGlmIChpdC0+Zmlyc3QgPT0gIndlYnNvY2tldC1wcm90b2Nv
bCIpCisgICAgICAgICAgICAgICAgbV93c1Byb3RvY29sID0gaXQtPnNlY29uZDsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKGl0LT5maXJzdCA9PSAic2V0LWNvb2tpZSIpCisgICAgICAgICAgICAgICAg
bV9zZXRDb29raWUgPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgZWxzZSBpZiAoaXQtPmZpcnN0
ID09ICJzZXQtY29va2llMiIpCisgICAgICAgICAgICAgICAgbV9zZXRDb29raWUyID0gaXQtPnNl
Y29uZDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjYXNlIEF1dGhlbnRpY2F0ZToK
KyAgICAgICAgICAgIGlmIChpdC0+Zmlyc3QgPT0gInd3dy1hdXRoZW50aWNhdGUiKQorICAgICAg
ICAgICAgICAgIG1fd3d3QXV0aGVudGljYXRlID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBjYXNlIEluY29tcGxldGU6CisgICAgICAgIGNhc2UgRmFpbGVkOgor
ICAgICAgICBjYXNlIENvbm5lY3RlZDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OmNoZWNrUmVzcG9uc2VI
ZWFkZXJzKCkKK3sKKyAgICBBU1NFUlQobV9tb2RlID09IE5vcm1hbCk7CisgICAgbV9tb2RlID0g
RmFpbGVkOworICAgIGlmIChtX3dzT3JpZ2luLmlzTnVsbCgpIHx8IG1fd3NMb2NhdGlvbi5pc051
bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNsaWVudE9yaWdpbigpICE9IG1fd3NP
cmlnaW4pIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJNaXNtYXRjaCBvcmlnaW46ICVzICE9ICVz
IiwgY2xpZW50T3JpZ2luKCkudXRmOCgpLmRhdGEoKSwgbV93c09yaWdpbi51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoY2xpZW50TG9jYXRpb24oKSAhPSBt
X3dzTG9jYXRpb24pIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJNaXNtYXRjaCBsb2NhdGlvbjog
JXMgIT0gJXMiLCBjbGllbnRMb2NhdGlvbigpLnV0ZjgoKS5kYXRhKCksIG1fd3NMb2NhdGlvbi51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIW1fY2xpZW50
UHJvdG9jb2wuaXNFbXB0eSgpICYmIG1fY2xpZW50UHJvdG9jb2wgIT0gbV93c1Byb3RvY29sKSB7
CisgICAgICAgIExPRyhOZXR3b3JrLCAiTWlzbWF0Y2ggcHJvdG9jb2w6ICVzICE9ICVzIiwgbV9j
bGllbnRQcm90b2NvbC51dGY4KCkuZGF0YSgpLCBtX3dzUHJvdG9jb2wudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9tb2RlID0gQ29ubmVjdGVkOworICAgIHJl
dHVybjsKK30KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBFTkFCTEUo
V0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlLmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGIyZGYyZgotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaApAQCAtMCwwICsxLDExOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlNvY2tldEhhbmRzaGFrZV9oCisjZGVmaW5lIFdlYlNvY2tldEhhbmRzaGFr
ZV9oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgQ1N0cmluZzsKKyAgICBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OworICAgIGNsYXNzIEhUVFBIZWFkZXJNYXA7CisKKyAgICBjbGFz
cyBXZWJTb2NrZXRIYW5kc2hha2UgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIHB1YmxpYzoK
KyAgICAgICAgZW51bSBNb2RlIHsKKyAgICAgICAgICAgIEluY29tcGxldGUsIE5vcm1hbCwgQXV0
aGVudGljYXRlLCBGYWlsZWQsIENvbm5lY3RlZAorICAgICAgICB9OworICAgICAgICBXZWJTb2Nr
ZXRIYW5kc2hha2UoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKKyAgICAgICAgfldlYlNvY2tldEhhbmRzaGFrZSgpOworCisgICAg
ICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFVSTChjb25zdCBL
VVJMJik7CisgICAgICAgIGNvbnN0IFN0cmluZyBob3N0KCkgY29uc3Q7CisKKyAgICAgICAgY29u
c3QgU3RyaW5nJiBjbGllbnRQcm90b2NvbCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldENsaWVu
dFByb3RvY29sKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOworCisgICAgICAgIGJvb2wgc2VjdXJl
KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2VjdXJlKGJvb2wgc2VjdXJlKTsKKworICAgICAg
ICBTdHJpbmcgY2xpZW50T3JpZ2luKCkgY29uc3Q7CisgICAgICAgIFN0cmluZyBjbGllbnRMb2Nh
dGlvbigpIGNvbnN0OworCisgICAgICAgIENTdHJpbmcgY2xpZW50SGFuZHNoYWtlTWVzc2FnZSgp
IGNvbnN0OworCisgICAgICAgIHZvaWQgcmVzZXQoKTsKKworICAgICAgICBpbnQgcmVhZFNlcnZl
ckhhbmRzaGFrZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBsZW4pOworICAgICAgICBNb2Rl
IG1vZGUoKSBjb25zdDsKKworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZlcldlYlNvY2tldE9y
aWdpbigpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNlcnZlcldlYlNvY2tldE9yaWdpbihjb25z
dCBTdHJpbmcmIHdlYlNvY2tldE9yaWdpbik7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2
ZXJXZWJTb2NrZXRMb2NhdGlvbigpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNlcnZlcldlYlNv
Y2tldExvY2F0aW9uKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0TG9jYXRpb24pOworCisgICAgICAg
IGNvbnN0IFN0cmluZyYgc2VydmVyV2ViU29ja2V0UHJvdG9jb2woKSBjb25zdDsKKyAgICAgICAg
dm9pZCBzZXRTZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHdlYlNvY2tldFBy
b3RvY29sKTsKKworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZlclNldENvb2tpZSgpIGNvbnN0
OworICAgICAgICB2b2lkIHNldFNlcnZlclNldENvb2tpZShjb25zdCBTdHJpbmcmIHNldENvb2tp
ZSk7CisgICAgICAgIGNvbnN0IFN0cmluZyYgc2VydmVyU2V0Q29va2llMigpIGNvbnN0OworICAg
ICAgICB2b2lkIHNldFNlcnZlclNldENvb2tpZTIoY29uc3QgU3RyaW5nJiBzZXRDb29raWUyKTsK
KworICAgICAgICBjb25zdCBTdHJpbmcmIHd3d0F1dGhlbnRpY2F0ZSgpIGNvbnN0OworCisgICAg
cHJpdmF0ZToKKyAgICAgICAgS1VSTCBodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVz
KCkgY29uc3Q7CisKKyAgICAgICAgLy8gUmVhZHMgYWxsIGhlYWRlcnMgZXhjZXB0IGZvciB0aGUg
dHdvIHByZWRlZmluZWQgb25lcy4KKyAgICAgICAgY29uc3QgY2hhciogcmVhZEhUVFBIZWFkZXJz
KGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQsIEhUVFBIZWFkZXJNYXAqIGhlYWRl
cnMpOworICAgICAgICBib29sIHByb2Nlc3NIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhl
YWRlcnMpOworICAgICAgICB2b2lkIGNoZWNrUmVzcG9uc2VIZWFkZXJzKCk7CisKKyAgICAgICAg
S1VSTCBtX3VybDsKKyAgICAgICAgU3RyaW5nIG1fY2xpZW50UHJvdG9jb2w7CisgICAgICAgIGJv
b2wgbV9zZWN1cmU7CisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsK
KworICAgICAgICBzaXplX3QgbV9zZXJ2ZXJIYW5kc2hha2VMZW5ndGg7CisgICAgICAgIE1vZGUg
bV9tb2RlOworCisgICAgICAgIFN0cmluZyBtX3dzT3JpZ2luOworICAgICAgICBTdHJpbmcgbV93
c0xvY2F0aW9uOworICAgICAgICBTdHJpbmcgbV93c1Byb3RvY29sOworICAgICAgICBTdHJpbmcg
bV9zZXRDb29raWU7CisgICAgICAgIFN0cmluZyBtX3NldENvb2tpZTI7CisgICAgICAgIFN0cmlu
ZyBtX2xvY2F0aW9uOworICAgICAgICBTdHJpbmcgbV93d3dBdXRoZW50aWNhdGU7CisgICAgfTsK
KworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tF
VFMpCisKKyNlbmRpZiAgLy8gV2ViU29ja2V0SGFuZHNoYWtlX2g=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38911</attachid>
            <date>2009-09-01 22:24:14 -0700</date>
            <delta_ts>2009-09-04 08:05:14 -0700</delta_ts>
            <desc>WebSocket API implementation</desc>
            <filename>bug-28038-20090902142412.patch</filename>
            <type>text/plain</type>
            <size>66183</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBlZjEyMWZhLi4xNmMyMTBhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMDktMDktMDEgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IFdURjo6
dHJ5RmFzdE1hbGxvYygpIHVzZWQgaW4gV2ViU29ja2V0Q2hhbm5lbC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MDM4CisKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5leHA6CisKIDIwMDktMDgtMzEgIFJvYmVydCBBZ29zdG9uICA8QWdvc3Rvbi5S
b2JlcnRAc3R1ZC51LXN6ZWdlZC5odT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJy
YWNsb3VnaC4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBi
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCBkNDVhMjJkLi5hMTY1NjIx
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKKysrIGIvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0yOTUsNiArMjk1LDcgQEAgX19aTjNX
VEYxMmRldGFjaFRocmVhZEVqCiBfX1pOM1dURjEyaXNNYWluVGhyZWFkRXYKIF9fWk4zV1RGMTJy
YW5kb21OdW1iZXJFdgogX19aTjNXVEYxM2N1cnJlbnRUaHJlYWRFdgorX19aTjNXVEYxM3RyeUZh
c3RNYWxsb2NFbQogX19aTjNXVEYxM3RyeUZhc3RDYWxsb2NFbW0KIF9fWk4zV1RGMTN0cnlGYXN0
TWFsbG9jRW0KIF9fWk4zV1RGMTVUaHJlYWRDb25kaXRpb240d2FpdEVSTlNfNU11dGV4RQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyN2Zl
OWViLi5lYzg1NGU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDA5LTA5LTAxICBGdW1pdG9zaGkgVWthaSAg
PHVrYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYlNvY2tldCBBUEkgaW1wbGVtZW50YXRpb24uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODAzOAorICAgICAgICAKKyAgICAg
ICAgQWRkIGJ1aWxkIHN5c3RlbXMgb25seSBmb3IgR05VbWFrZWZpbGUuYW0gYW5kIFdlYkNvcmUu
eGNvZGVwcm9qIG5vdy4KKyAgICAgICAgT3RoZXIgYnVpbGQgc3lzdGVtcyB3aWxsIGJlIHVwZGF0
ZWQgb25jZSB0aGUgY29kZSBpcyBmdW5jdGlvbmFsLgorICAgICAgICBUZXN0cyB3aWxsIGJlIGxh
bmRlZCBvbmNlIHRoZSBjb2RlIGlzIGNvbXBsZXRlZCBhbmQgZnVuY3Rpb25hbC4KKworICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3c6OndlYlNvY2tldCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvRXZlbnRUYXJn
ZXQpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFRhcmdldDo6dG9XZWJTb2NrZXQpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5oOgor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzazo6flBy
b2Nlc3NXZWJTb2NrZXRFdmVudFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dlYlNv
Y2tldEV2ZW50VGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dl
YlNvY2tldEV2ZW50VGFzazo6UHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzayk6CisgICAgICAgIChX
ZWJDb3JlOjppc1ZhbGlkUHJvdG9jb2xTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldDo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjphZGRF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6cmVtb3ZlRXZlbnRM
aXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNoRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0OjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNo
T3BlbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlzcGF0Y2hNZXNzYWdl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaXNwYXRjaENsb3NlRXZlbnQp
OgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Oik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNldE9ub3Blbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXQ6Om9ub3Blbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNldE9ubWVz
c2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Om9ubWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNldE9uY2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0OjpvbmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6dG9XZWJTb2Nr
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpldmVudExpc3RlbmVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmNwcDogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmg6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmg6
IEFkZGVkLgorCiAyMDA5LTA5LTAxICBQYXRyaWNrIE11ZWxsZXIgIDxQYXRyaWNrX011ZWxsZXJA
dXMuaWJtLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMuY3BwCmluZGV4IDc1YmU4YTMuLmRkYTFjYmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMuY3BwCisrKyBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC0zNDIsNiAr
MzQyLDcgQEAKICNpbmNsdWRlICJKU1dlYktpdENTU01hdHJpeC5jcHAiCiAjaW5jbHVkZSAiSlNX
ZWJLaXRQb2ludC5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwIgor
I2luY2x1ZGUgIkpTV2ViU29ja2V0LmNwcCIKICNpbmNsdWRlICJKU1doZWVsRXZlbnQuY3BwIgog
I2luY2x1ZGUgIkpTV29ya2VyLmNwcCIKICNpbmNsdWRlICJKU1dvcmtlckNvbnRleHQuY3BwIgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KaW5kZXggZjI3OTNjNS4uMGVlMjk0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zMjMyLDcgKzMyMzIsMTIgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3Ry
ZWFtSGFuZGxlQmFzZS5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50LmggXAogCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIFwKLQlX
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0LmggXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBcCisJV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBcCisJV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWxDbGllbnQuaCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5jcHAgXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
aAogCiB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvY2tldFN0cmVhbUVycm9yLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBiNDFiNjhiLi5jZDQzOGEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODg2LDYgKzg4Niw5IEBACiAJCTUxMEQ0QTM2MTAz
MTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMwMTAzMTY1RUUwMDQ5RUE1
NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCAqLzsgfTsKIAkJNTEwRDRBMzcxMDMxNjVF
RTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1NCAvKiBT
b2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggKi87IH07CiAJCTUxMEQ0QTM4MTAzMTY1RUUwMDQ5RUE1
NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQuaCAqLzsgfTsKKwkJNTEwRDRBNEUxMDMxNzdBMjAwNDlFQTU0IC8q
IFdlYlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwu
Y3BwICovOyB9OworCQk1MTBENEE0RjEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5l
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRB
NDgxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCAqLzsgfTsKKwkJNTEwRDRB
NTAxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTQ5MTAzMTc3QTIwMDQ5
RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggKi87IH07CiAJCTUxMTZEOTc3MENGMTc3
QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFz
ZURldGFpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTFGMjMxNzBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGMjMxMzBEQzE2
MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAgKi87IH07CiAJCTUxMUYyMzE4MERD
MTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGMjMxNDBEQzE2MERBMDA0RjAwMzIgLyogTG9j
YWxTdG9yYWdlVGFzay5oICovOyB9OwpAQCAtOTcyLDYgKzk3NSwxMCBAQAogCQk1MUFCQUUxQjEw
M0MxOEZGMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFBMTAzQzE4RkYwMDhDNTI2MCAvKiBT
b2NrZXRTdHJlYW1FcnJvci5oICovOyB9OwogCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyog
U29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUFCQUUxQzEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxl
LmggKi87IH07CiAJCTUxQUJBRTFGMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5k
bGVDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUFCQUUxRDEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3Bw
ICovOyB9OworCQk1MUFCQUUyRTEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFC
QUUyQzEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5jcHAgKi87IH07CisJ
CTUxQUJBRTJGMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUyRDEwM0Q0Rjc1
MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5oICovOyB9OworCQk1MUFCQUU0NDEwNDNB
QjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTQyMTA0M0FCNEEwMDhDNTI2MCAvKiBX
ZWJTb2NrZXRIYW5kc2hha2UuY3BwICovOyB9OworCQk1MUFCQUU0NTEwNDNBQjRBMDA4QzUyNjAg
LyogV2ViU29ja2V0SGFuZHNoYWtlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUFCQUU0MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNo
YWtlLmggKi87IH07CiAJCTUxQjI0MTdCMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNo
aXZlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFCMjQxN0EwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gKi87IH07
CiAJCTUxQkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTM3REUwREFFRTAwRTAwMTA4
NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi87IH07CiAJCTUxQzBBQTM5MEYyQUExMEEwMDE2NDhDMiAv
KiBDYWNoZWRGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTYwMzAsNiArNjAzNyw5
IEBACiAJCTUxMEQ0QTMwMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUhh
bmRsZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBENEEzMTEwMzE2
NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0QTQ3
MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hh
bm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRDaGFubmVs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1
NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlNvY2tldENoYW5uZWxDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTExNkQ5NzUwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZURldGFpbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjIzMTMwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3Rv
cmFnZVRhc2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxT
dG9yYWdlVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYyMzE0MERD
MTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExvY2FsU3RvcmFnZVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTYxMjMsNiArNjEzMywxMCBAQAogCQk1MUFCQUUxQTEwM0MxOEZGMDA4QzUyNjAgLyog
U29ja2V0U3RyZWFtRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU29j
a2V0U3RyZWFtRXJyb3IuaDsgcGF0aCA9IGNmL1NvY2tldFN0cmVhbUVycm9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQUJBRTFDMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRT
dHJlYW1IYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU29ja2V0U3Ry
ZWFtSGFuZGxlLmg7IHBhdGggPSBjZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTFBQkFFMUQxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVh
bUhhbmRsZUNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNv
Y2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDsgcGF0aCA9IGNmL1NvY2tldFN0cmVhbUhhbmRsZUNG
TmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFMkMxMDNENEY3NTAw
OEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxQUJBRTJEMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hh
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFr
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFNDIxMDQzQUI0QTAwOEM1
MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MUFCQUU0MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIyNDE3QTBEOTMxRjNGMDBFODNGNUMgLyog
TGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IExlZ2FjeVdlYkFyY2hpdmVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkRnJhbWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNTgyLDYgKzEwNTk2LDExIEBACiAJCTUxOEEzNEJEMTAyNkM4
MzEwMDFCNjg5NiAvKiB3ZWJzb2NrZXRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk1MUFCQUU0MjEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFu
ZHNoYWtlLmNwcCAqLywKKwkJCQk1MUFCQUU0MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0
SGFuZHNoYWtlLmggKi8sCisJCQkJNTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tl
dENoYW5uZWwuY3BwICovLAorCQkJCTUxMEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2Nr
ZXRDaGFubmVsLmggKi8sCisJCQkJNTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tl
dENoYW5uZWxDbGllbnQuaCAqLywKIAkJCQk1MThBMzRCRTEwMjZDODMxMDAxQjY4OTYgLyogV2Vi
U29ja2V0LmNwcCAqLywKIAkJCQk1MThBMzRCRjEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0
LmggKi8sCiAJCQkJNTE4QTM0QzAxMDI2QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tldC5pZGwgKi8s
CkBAIC0xNzU3OSw2ICsxNzU5OCw5IEBACiAJCQkJNTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8q
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBQkFFMUIx
MDNDMThGRjAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1MTBENEE0RjEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5l
bC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRBNTAxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNv
Y2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQUJBRTQ1MTA0M0FCNEEw
MDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTk2Nzcs
NiArMTk2OTksOCBAQAogCQkJCTUxMEQ0QTMzMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1FcnJvckJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwRDRBMzYxMDMxNjVFRTAwNDlF
QTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFB
QkFFMUYxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTUxMEQ0QTRFMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFu
bmVsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxQUJBRTQ0MTA0M0FCNEEwMDhDNTI2MCAvKiBX
ZWJTb2NrZXRIYW5kc2hha2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDk0MmI5ZmQuLjAwMmM0N2UgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC01Myw2ICs1Myw5IEBACiAKICNp
bmNsdWRlICJKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNXZWJL
aXRQb2ludENvbnN0cnVjdG9yLmgiCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorI2luY2x1ZGUg
IkpTV2ViU29ja2V0Q29uc3RydWN0b3IuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkpTV29ya2VyQ29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJKU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5oIgpAQCAtNjQ1LDYgKzY0OCwxMyBA
QCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzaGFyZWRXb3JrZXIoRXhlY1N0YXRlKiBleGVjKSBjb25z
dAogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCitKU1ZhbHVlIEpTRE9NV2lu
ZG93Ojp3ZWJTb2NrZXQoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBnZXRE
T01Db25zdHJ1Y3RvcjxKU1dlYlNvY2tldENvbnN0cnVjdG9yPihleGVjLCB0aGlzKTsKK30KKyNl
bmRpZgorCiAvLyBDdXN0b20gZnVuY3Rpb25zCiAKIC8vIEhlbHBlciBmb3Igd2luZG93Lm9wZW4o
KSBhbmQgd2luZG93LnNob3dNb2RhbERpYWxvZygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFy
Z2V0LmNwcAppbmRleCBlZDgwZDgwLi4wNDIxZDEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dFRhcmdldC5jcHAKQEAgLTc4LDYgKzc4LDExIEBACiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgi
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyNpbmNsdWRlICJKU1dlYlNvY2tl
dC5oIgorI2luY2x1ZGUgIldlYlNvY2tldC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzOSw2ICsxNDQsMTEgQEAgSlNWYWx1ZSB0
b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXZl
bnRUYXJnZXQqIHRhcmcKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgbm90aWZpY2F0aW9uKTsK
ICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGlmIChXZWJTb2NrZXQqIHdl
YlNvY2tldCA9IHRhcmdldC0+dG9XZWJTb2NrZXQoKSkKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhl
Yywgd2ViU29ja2V0KTsKKyNlbmRpZgorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIGpzTnVsbCgpOwogfQpAQCAtMTgzLDYgKzE5MywxMCBAQCBFdmVudFRhcmdldCogdG9F
dmVudFRhcmdldChKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJH
RVQoTm90aWZpY2F0aW9uKQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAg
Q09OVkVSVF9UT19FVkVOVF9UQVJHRVQoV2ViU29ja2V0KQorI2VuZGlmCisKICAgICByZXR1cm4g
MDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDJmMTNkYTguLjY1MjY0NGYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dC5jcHAKQEAgLTgzLDYgKzgzLDEzIEBAIFNWR0VsZW1lbnRJbnN0YW5jZSogRXZlbnRUYXJnZXQ6
OnRvU1ZHRWxlbWVudEluc3RhbmNlKCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NL
RVRTKQorV2ViU29ja2V0KiBFdmVudFRhcmdldDo6dG9XZWJTb2NrZXQoKQoreworICAgIHJldHVy
biAwOworfQorI2VuZGlmCisKIE1lc3NhZ2VQb3J0KiBFdmVudFRhcmdldDo6dG9NZXNzYWdlUG9y
dCgpCiB7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dC5oIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCA2ZDNjYjdjLi42YmNjM2ZiIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0LmgKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyOwogICAg
IGNsYXNzIFNoYXJlZFdvcmtlckNvbnRleHQ7CisgICAgY2xhc3MgV2ViU29ja2V0OwogICAgIGNs
YXNzIFdvcmtlcjsKICAgICBjbGFzcyBYTUxIdHRwUmVxdWVzdDsKICAgICBjbGFzcyBYTUxIdHRw
UmVxdWVzdFVwbG9hZDsKQEAgLTc1LDExICs3NiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgV29ya2VyKiB0b1dvcmtlcigpOwogICAgICAgICB2aXJ0dWFsIERlZGlj
YXRlZFdvcmtlckNvbnRleHQqIHRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpOwogI2VuZGlmCi0K
ICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCiAgICAgICAgIHZpcnR1YWwgU2hhcmVkV29ya2Vy
KiB0b1NoYXJlZFdvcmtlcigpOwogICAgICAgICB2aXJ0dWFsIFNoYXJlZFdvcmtlckNvbnRleHQq
IHRvU2hhcmVkV29ya2VyQ29udGV4dCgpOwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRT
KQorICAgICAgICB2aXJ0dWFsIFdlYlNvY2tldCogdG9XZWJTb2NrZXQoKTsKKyNlbmRpZgogCiAj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uKiB0
b05vdGlmaWNhdGlvbigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwg
Yi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCA5YzllNDgxLi4wMDJkOWI0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbApAQCAtNDgxLDYgKzQ4MSwxMCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAg
YXR0cmlidXRlIFtKU0NDdXN0b21HZXR0ZXJdIFNoYXJlZFdvcmtlckNvbnN0cnVjdG9yIFNoYXJl
ZFdvcmtlcjsgLy8gVXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRvcgogI2VuZGlmCiAKKyNpZiBk
ZWZpbmVkKEVOQUJMRV9XRUJfU09DS0VUUykgJiYgRU5BQkxFX1dFQl9TT0NLRVRTCisgICAgICAg
IGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyXSBXZWJTb2NrZXRDb25zdHJ1Y3RvciBXZWJTb2Nr
ZXQ7IC8vIFVzYWJsZSB3aXRoIHRoZSBuZXcgb3BlcmF0b3IKKyNlbmRpZgorCiAgICAgICAgIGF0
dHJpYnV0ZSBQbHVnaW5Db25zdHJ1Y3RvciBQbHVnaW47CiAgICAgICAgIGF0dHJpYnV0ZSBQbHVn
aW5BcnJheUNvbnN0cnVjdG9yIFBsdWdpbkFycmF5OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
CmluZGV4IDk5OWMxZmYuLjMwZGJlYjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0z
NCwxMyArMzQsNTkgQEAKIAogI2luY2x1ZGUgIldlYlNvY2tldC5oIgogCisjaW5jbHVkZSAiQ1N0
cmluZy5oIgorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5j
bHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZXNz
YWdlRXZlbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IFByb2Nlc3NXZWJTb2NrZXRFdmVudFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzayB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB2b2lkIChXZWJTb2NrZXQ6OipNZXRob2Qp
KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9jZXNzV2ViU29j
a2V0RXZlbnRUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IHdlYlNvY2tldCwgTWV0
aG9kIG1ldGhvZCwgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCisgICAgeworICAgICAgICByZXR1
cm4gbmV3IFByb2Nlc3NXZWJTb2NrZXRFdmVudFRhc2sod2ViU29ja2V0LCBtZXRob2QsIGV2ZW50
KTsKKyAgICB9CisgICAgdmlydHVhbCB+UHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzaygpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAg
ICB7CisgICAgICAgIChtX3dlYlNvY2tldC5nZXQoKS0+Km1fbWV0aG9kKShtX2V2ZW50KTsKKyAg
ICB9CisKKyAgcHJpdmF0ZToKKyAgICBQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrKFBhc3NSZWZQ
dHI8V2ViU29ja2V0PiB3ZWJTb2NrZXQsIE1ldGhvZCBtZXRob2QsIFBhc3NSZWZQdHI8RXZlbnQ+
IGV2ZW50KQorICAgICAgICA6IG1fd2ViU29ja2V0KHdlYlNvY2tldCkKKyAgICAgICAgLCBtX21l
dGhvZChtZXRob2QpCisgICAgICAgICwgbV9ldmVudChldmVudCkgeyB9CisKKyAgICBSZWZQdHI8
V2ViU29ja2V0PiBtX3dlYlNvY2tldDsKKyAgICBNZXRob2QgbV9tZXRob2Q7CisgICAgUmVmUHRy
PEV2ZW50PiBtX2V2ZW50OworfTsKKworc3RhdGljIGJvb2wgaXNWYWxpZFByb3RvY29sU3RyaW5n
KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgcHJvdG9jb2wpCit7CisgICAgaWYgKHByb3RvY29sLmlz
TnVsbCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAocHJvdG9jb2wuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBw
cm90b2NvbC5jaGFyYWN0ZXJzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm90b2Nv
bC5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldIDwgMHgyMSB8fCBj
aGFyYWN0ZXJzW2ldID4gMHg3RSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIFdlYlNvY2tldDo6V2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykK
ICAgICAsIG1fc3RhdGUoQ09OTkVDVElORykKQEAgLTU5LDM5ICsxMDUsNDkgQEAgdm9pZCBXZWJT
b2NrZXQ6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9p
ZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAl
cCBjb25uZWN0IHRvICVzIHByb3RvY29sPSVzIiwgdGhpcywgdXJsLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIHByb3RvY29sLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fdXJsID0gdXJsOwogICAgIG1f
cHJvdG9jb2wgPSBwcm90b2NvbDsKIAogICAgIGlmICghbV91cmwucHJvdG9jb2xJcygid3MiKSAm
JiAhbV91cmwucHJvdG9jb2xJcygid3NzIikpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJFcnJvcjog
d3JvbmcgdXJsIGZvciBXZWJTb2NrZXQgJXMiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIG1fc3RhdGUgPSBDTE9TRUQ7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fcHJvdG9jb2wuaXNOdWxsKCkgJiYgbV9w
cm90b2NvbC5pc0VtcHR5KCkpIHsKKyAgICBpZiAoIWlzVmFsaWRQcm90b2NvbFN0cmluZyhtX3By
b3RvY29sKSkgeworICAgICAgICBMT0dfRVJST1IoIkVycm9yOiB3cm9uZyBwcm90b2NvbCBmb3Ig
V2ViU29ja2V0ICVzIiwgbV9wcm90b2NvbC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbV9zdGF0
ZSA9IENMT1NFRDsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIC8vIEZJWE1FOiBDaGVjayBwcm90b2NvbCBpcyB2YWxpZCBmb3JtLgotICAgIC8v
IEZJWE1FOiBDb25uZWN0IFdlYlNvY2tldENoYW5uZWwuCisgICAgLy8gRklYTUU6IGlmIG1fdXJs
LnBvcnQoKSBpcyBibG9ja2luZyBwb3J0LCByYWlzZSBTRUNVUklUWV9FUlIuCisKKyAgICBtX2No
YW5uZWwgPSBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCB0aGlzLCBtX3VybCwgbV9wcm90b2NvbCk7CisgICAgbV9jaGFubmVsLT5jb25uZWN0KCk7CiB9
CiAKLWJvb2wgV2ViU29ja2V0OjpzZW5kKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmIGVj
KQorYm9vbCBXZWJTb2NrZXQ6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKLSAgICBpZiAobV9zdGF0ZSAhPSBPUEVOKSB7CisgICAgTE9HKE5ldHdvcmss
ICJXZWJTb2NrZXQgJXAgc2VuZCAlcyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7Cisg
ICAgaWYgKG1fc3RhdGUgPT0gQ09OTkVDVElORykgewogICAgICAgICBlYyA9IElOVkFMSURfU1RB
VEVfRVJSOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIC8vIEZJWE1FOiBzZW5k
IG1lc3NhZ2Ugb24gV2ViU29ja2V0Q2hhbm5lbC4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgLy8g
Tm8gZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiB0aGUgY29ubmVjdGlvbiB3YXMgb25jZSBlc3RhYmxp
c2hlZCBidXQgaGFzIHN1YnNlcXVlbnRseSBiZWVuIGNsb3NlZC4KKyAgICBpZiAobV9zdGF0ZSA9
PSBDTE9TRUQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBGSVhNRTogY2hlY2sgbWVz
c2FnZSBpcyB2YWxpZCB1dGY4LgorICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQobWVzc2FnZSk7
CiB9CiAKIHZvaWQgV2ViU29ja2V0OjpjbG9zZSgpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXQgJXAgY2xvc2UiLCB0aGlzKTsKICAgICBpZiAobV9zdGF0ZSA9PSBDTE9TRUQpCiAgICAg
ICAgIHJldHVybjsKICAgICBtX3N0YXRlID0gQ0xPU0VEOwotICAgIC8vIEZJWE1FOiBjbG9zZSBX
ZWJTb2NrZXRDaGFubmVsLgorICAgIG1fY2hhbm5lbC0+Y2xvc2UoKTsKIH0KIAogY29uc3QgS1VS
TCYgV2ViU29ja2V0Ojp1cmwoKSBjb25zdApAQCAtMTA2LDcgKzE2Miw4IEBAIFdlYlNvY2tldDo6
U3RhdGUgV2ViU29ja2V0OjpyZWFkeVN0YXRlKCkgY29uc3QKIAogdW5zaWduZWQgbG9uZyBXZWJT
b2NrZXQ6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogYXNrIHBsYXRm
b3JtIGNvZGUgdG8gZ2V0IGJ1ZmZlcmVkIGFtb3VudCB0byBiZSBzZW50LgorICAgIGlmIChtX3N0
YXRlID09IE9QRU4pCisgICAgICAgIHJldHVybiBtX2NoYW5uZWwtPmJ1ZmZlcmVkQW1vdW50KCk7
CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTExNSw1OCArMTcyLDEyMCBAQCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBXZWJTb2NrZXQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAg
IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIH0KIAot
dm9pZCBXZWJTb2NrZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiwgUGFz
c1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCkKK3ZvaWQgV2ViU29ja2V0OjphZGRFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGV2ZW50TGlzdGVuZXIsIGJvb2wpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0
aGlzLgorICAgIEV2ZW50TGlzdGVuZXJzTWFwOjppdGVyYXRvciBpdGVyID0gbV9ldmVudExpc3Rl
bmVycy5maW5kKGV2ZW50VHlwZSk7CisgICAgaWYgKGl0ZXIgPT0gbV9ldmVudExpc3RlbmVycy5l
bmQoKSkgeworICAgICAgICBMaXN0ZW5lclZlY3RvciBsaXN0ZW5lcnM7CisgICAgICAgIGxpc3Rl
bmVycy5hcHBlbmQoZXZlbnRMaXN0ZW5lcik7CisgICAgICAgIG1fZXZlbnRMaXN0ZW5lcnMuYWRk
KGV2ZW50VHlwZSwgbGlzdGVuZXJzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBMaXN0ZW5lclZl
Y3RvciYgbGlzdGVuZXJzID0gaXRlci0+c2Vjb25kOworICAgICAgICBmb3IgKExpc3RlbmVyVmVj
dG9yOjppdGVyYXRvciBsaXN0ZW5lckl0ZXIgPSBsaXN0ZW5lcnMuYmVnaW4oKTsgbGlzdGVuZXJJ
dGVyICE9IGxpc3RlbmVycy5lbmQoKTsgKytsaXN0ZW5lckl0ZXIpCisgICAgICAgICAgICBpZiAo
Kmxpc3RlbmVySXRlciA9PSBldmVudExpc3RlbmVyKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBsaXN0ZW5lcnMuYXBwZW5kKGV2ZW50TGlzdGVuZXIpOworICAgICAgICBtX2V2
ZW50TGlzdGVuZXJzLmFkZChldmVudFR5cGUsIGxpc3RlbmVycyk7CisgICAgfQogfQogCi12b2lk
IFdlYlNvY2tldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmLCBFdmVu
dExpc3RlbmVyKiwgYm9vbCkKK3ZvaWQgV2ViU29ja2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVy
LCBib29sKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBFdmVudExpc3Rl
bmVyc01hcDo6aXRlcmF0b3IgaXRlciA9IG1fZXZlbnRMaXN0ZW5lcnMuZmluZChldmVudFR5cGUp
OworICAgIGlmIChpdGVyID09IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMgPSBpdGVyLT5zZWNvbmQ7CisgICAg
Zm9yIChMaXN0ZW5lclZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVu
ZXJzLmJlZ2luKCk7IGxpc3RlbmVySXRlciAhPSBsaXN0ZW5lcnMuZW5kKCk7ICsrbGlzdGVuZXJJ
dGVyKQorICAgICAgICBpZiAoKmxpc3RlbmVySXRlciA9PSBldmVudExpc3RlbmVyKSB7CisgICAg
ICAgICAgICBsaXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVySXRlciAtIGxpc3RlbmVycy5iZWdpbigp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogfQogCi1ib29sIFdlYlNvY2tldDo6
ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpCitib29sIFdl
YlNvY2tldDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldnQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KLSAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFldnQgfHwgZXZ0LT50eXBlKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGVj
ID0gRXZlbnRFeGNlcHRpb246OlVOU1BFQ0lGSUVEX0VWRU5UX1RZUEVfRVJSOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBMaXN0ZW5lclZlY3RvciBsaXN0ZW5lcnNDb3B5ID0g
bV9ldmVudExpc3RlbmVycy5nZXQoZXZ0LT50eXBlKCkpOworICAgIGZvciAoTGlzdGVuZXJWZWN0
b3I6OmNvbnN0X2l0ZXJhdG9yIGxpc3RlbmVySXRlciA9IGxpc3RlbmVyc0NvcHkuYmVnaW4oKTsg
bGlzdGVuZXJJdGVyICE9IGxpc3RlbmVyc0NvcHkuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKSB7Cisg
ICAgICAgIGV2dC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJn
ZXQodGhpcyk7CisgICAgICAgIGxpc3RlbmVySXRlci0+Z2V0KCktPmhhbmRsZUV2ZW50KGV2dC5n
ZXQoKSwgZmFsc2UpOworICAgIH0KKyAgICByZXR1cm4gIWV2dC0+ZGVmYXVsdFByZXZlbnRlZCgp
OwogfQogCiB2b2lkIFdlYlNvY2tldDo6ZGlkQ29ubmVjdCgpCiB7CisgICAgTE9HKE5ldHdvcmss
ICJXZWJTb2NrZXQgJXAgZGlkQ29ubmVjdCIsIHRoaXMpOwogICAgIGlmIChtX3N0YXRlICE9IENP
Tk5FQ1RJTkcpIHsKICAgICAgICAgZGlkQ2xvc2UoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBtX3N0YXRlID0gT1BFTjsKLSAgICBkaXNwYXRjaE9wZW5FdmVudCgpOworICAgIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soUHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzazo6
Y3JlYXRlKHRoaXMsICZXZWJTb2NrZXQ6OmRpc3BhdGNoT3BlbkV2ZW50LCBFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5vcGVuRXZlbnQsIGZhbHNlLCBmYWxzZSkpKTsKIH0KIAogdm9pZCBXZWJT
b2NrZXQ6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKQogeworICAgIExPRyhO
ZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZFJlY2VpdmVNZXNzYWdlICVzIiwgdGhpcywgbXNnLnV0
ZjgoKS5kYXRhKCkpOwogICAgIGlmIChtX3N0YXRlICE9IE9QRU4pCiAgICAgICAgIHJldHVybjsK
LSAgICBkaXNwYXRjaE1lc3NhZ2VFdmVudChtc2cpOworICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+
IGV2dCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKCk7CisgICAgLy8gRklYTUU6IG9yaWdpbiwgbGFz
dEV2ZW50SWQsIHNvdXJjZSwgbWVzc2FnZVBvcnQuCisgICAgZXZ0LT5pbml0TWVzc2FnZUV2ZW50
KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIGZhbHNlLCBmYWxzZSwgbXNnLCAiIiwgIiIsIDAs
IDApOworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soUHJvY2Vzc1dlYlNv
Y2tldEV2ZW50VGFzazo6Y3JlYXRlKHRoaXMsICZXZWJTb2NrZXQ6OmRpc3BhdGNoTWVzc2FnZUV2
ZW50LCBldnQpKTsKIH0KIAogdm9pZCBXZWJTb2NrZXQ6OmRpZENsb3NlKCkKIHsKKyAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRDbG9zZSIsIHRoaXMpOwogICAgIG1fc3RhdGUgPSBD
TE9TRUQ7Ci0gICAgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5wb3N0VGFzayhQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrOjpjcmVhdGUodGhpcywg
JldlYlNvY2tldDo6ZGlzcGF0Y2hDbG9zZUV2ZW50LCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5jbG9zZUV2ZW50LCBmYWxzZSwgZmFsc2UpKSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0OjpkaXNw
YXRjaE9wZW5FdmVudCgpCit2b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hPcGVuRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4gZXZ0KQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBp
ZiAobV9vbm9wZW4pIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2
dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbm9wZW4tPmhhbmRsZUV2ZW50
KGV2dC5nZXQoKSwgZmFsc2UpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIGRpc3BhdGNoRXZlbnQoZXZ0LnJlbGVhc2VSZWYoKSwgZWMpOworICAgIEFTU0VSVCghZWMp
OwogfQogCi12b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5n
JikKK3ZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaE1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPEV2ZW50
PiBldnQpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgorICAgIGlmIChtX29ubWVz
c2FnZSkgeworICAgICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRD
dXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29ubWVzc2FnZS0+aGFuZGxlRXZlbnQoZXZ0
LmdldCgpLCBmYWxzZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
ZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZVJlZigpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7CiB9
CiAKLXZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaENsb3NlRXZlbnQoKQordm9pZCBXZWJTb2NrZXQ6
OmRpc3BhdGNoQ2xvc2VFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldnQpCiB7Ci0gICAgLy8gRklY
TUU6IGltcGxlbWVudCB0aGlzLgorICAgIGlmIChtX29uY2xvc2UpIHsKKyAgICAgICAgZXZ0LT5z
ZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAg
ICAgICAgbV9vbmNsb3NlLT5oYW5kbGVFdmVudChldnQuZ2V0KCksIGZhbHNlKTsKKyAgICB9CisK
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNl
UmVmKCksIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCA0ODVlMmNjLi5jNGVmNjRlIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldC5oCkBAIC0zMSw5MyArMzEsMTA0IEBACiAjaWZuZGVmIFdlYlNvY2tldF9oCiAj
ZGVmaW5lIFdlYlNvY2tldF9oCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKICNpbmNsdWRl
ICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJBdG9taWNTdHJpbmdIYXNoLmgiCiAjaW5j
bHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKICNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTdHJpbmc7CisgICAgY2xhc3MgU3RyaW5nOworICAgIGNsYXNz
IFdlYlNvY2tldENoYW5uZWw7CiAKLWNsYXNzIFdlYlNvY2tldCA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYlNvY2tldD4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlNvY2tl
dChjb250ZXh0KSk7IH0KLSAgICB2aXJ0dWFsIH5XZWJTb2NrZXQoKTsKKyAgICBjbGFzcyBXZWJT
b2NrZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTb2NrZXQ+LCBwdWJsaWMgRXZlbnRUYXJnZXQs
IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50IHsK
KyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJTb2NrZXQoY29udGV4dCkpOyB9CisgICAgICAgIHZpcnR1YWwgfldlYlNvY2tldCgpOwogCi0g
ICAgZW51bSBTdGF0ZSB7Ci0gICAgICAgIENPTk5FQ1RJTkcgPSAwLAotICAgICAgICBPUEVOID0g
MSwKLSAgICAgICAgQ0xPU0VEID0gMgotICAgIH07CisgICAgICAgIGVudW0gU3RhdGUgeworICAg
ICAgICAgICAgQ09OTkVDVElORyA9IDAsCisgICAgICAgICAgICBPUEVOID0gMSwKKyAgICAgICAg
ICAgIENMT1NFRCA9IDIKKyAgICAgICAgfTsKIAotICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJM
JiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQg
Y29ubmVjdChjb25zdCBLVVJMJiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIGNvbm5l
Y3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmKTsK
IAotICAgIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICAgICAgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYp
OwogCi0gICAgdm9pZCBjbG9zZSgpOworICAgICAgICB2b2lkIGNsb3NlKCk7CiAKLSAgICBjb25z
dCBLVVJMJiB1cmwoKSBjb25zdDsKLSAgICBTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7Ci0gICAg
dW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0OworICAgICAgICBjb25zdCBLVVJM
JiB1cmwoKSBjb25zdDsKKyAgICAgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OworICAgICAg
ICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldE9u
b3BlbihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbm9wZW4g
PSBldmVudExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25vcGVuKCkgY29uc3QgeyBy
ZXR1cm4gbV9vbm9wZW4uZ2V0KCk7IH0KLSAgICB2b2lkIHNldE9ubWVzc2FnZShQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbm1lc3NhZ2UgPSBldmVudExpc3Rl
bmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25tZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9v
bm1lc3NhZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIHNldE9uY2xvc2UoUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25jbG9zZSA9IGV2ZW50TGlzdGVuZXI7IH0KLSAg
ICBFdmVudExpc3RlbmVyKiBvbmNsb3NlKCkgY29uc3QgeyByZXR1cm4gbV9vbmNsb3NlLmdldCgp
OyB9CisgICAgICAgIHZvaWQgc2V0T25vcGVuKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZl
bnRMaXN0ZW5lcikgeyBtX29ub3BlbiA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRM
aXN0ZW5lciogb25vcGVuKCkgY29uc3QgeyByZXR1cm4gbV9vbm9wZW4uZ2V0KCk7IH0KKyAgICAg
ICAgdm9pZCBzZXRPbm1lc3NhZ2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3Rl
bmVyKSB7IG1fb25tZXNzYWdlID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgICAgICBFdmVudExpc3Rl
bmVyKiBvbm1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX29ubWVzc2FnZS5nZXQoKTsgfQorICAg
ICAgICB2b2lkIHNldE9uY2xvc2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3Rl
bmVyKSB7IG1fb25jbG9zZSA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5l
ciogb25jbG9zZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25jbG9zZS5nZXQoKTsgfQogCi0gICAgLy8g
RXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIFdlYlNvY2tldCogdG9XZWJTb2NrZXQoKSB7IHJldHVy
biB0aGlzOyB9CisgICAgICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgICAgIHZpcnR1YWwgV2ViU29j
a2V0KiB0b1dlYlNvY2tldCgpIHsgcmV0dXJuIHRoaXM7IH0KIAotICAgIHZpcnR1YWwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAgICAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNh
cHR1cmUpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9u
Q29kZSYpOworICAgICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gPiBM
aXN0ZW5lclZlY3RvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgTGlz
dGVuZXJWZWN0b3I+IEV2ZW50TGlzdGVuZXJzTWFwOwogCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0
Ci0gICAgLy8gdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwotICAgIC8v
IHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7Ci0gICAgLy8gdmlydHVhbCBib29sIGNh
blN1c3BlbmQoKSBjb25zdDsKLSAgICAvLyB2aXJ0dWFsIHZvaWQgc3VzcGVuZCgpOwotICAgIC8v
IHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKLSAgICAvLyB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOworICAgICAgICB2
aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgICAgICBFdmVudExpc3RlbmVyc01hcCYgZXZlbnRMaXN0ZW5lcnMoKSB7IHJldHVy
biBtX2V2ZW50TGlzdGVuZXJzOyB9CiAKLSAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldD46
OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldD46OmRlcmVmOworICAgICAgICAv
LyBBY3RpdmVET01PYmplY3QKKyAgICAgICAgLy8gIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdDsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQo
KTsKKyAgICAgICAgLy8gdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKKyAgICAgICAg
Ly8gdmlydHVhbCB2b2lkIHN1c3BlbmQoKTsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lkIHJlc3Vt
ZSgpOworICAgICAgICAvLyB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogCi1wcml2YXRlOgotICAgIFdl
YlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgICAgIHVzaW5nIFJlZkNvdW50
ZWQ8V2ViU29ja2V0Pjo6cmVmOworICAgICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldD46
OmRlcmVmOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAgICAg
IC8vIFdlYlNvY2tldENoYW5uZWxDbGllbnQKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENvbm5l
Y3QoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYgbXNnKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKCk7CiAKLSAgICAvLyBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50Ci0gICAgdm9pZCBkaWRDb25uZWN0KCk7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZyk7Ci0gICAgdm9pZCBkaWRDbG9zZSgpOwor
ICAgIHByaXZhdGU6CisgICAgICAgIFdlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CiAKLSAgICB2b2lkIGRpc3BhdGNoT3BlbkV2ZW50KCk7Ci0gICAgdm9pZCBkaXNwYXRjaE1lc3Nh
Z2VFdmVudChjb25zdCBTdHJpbmcmIG1zZyk7Ci0gICAgdm9pZCBkaXNwYXRjaENsb3NlRXZlbnQo
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQogCi0gICAg
Ly8gRklYTUU6IGFkZCBXZWJTb2NrZXRDaGFubmVsLgorICAgICAgICB2b2lkIGRpc3BhdGNoT3Bl
bkV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAgICAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VF
dmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+KTsKIAotICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ub3Bl
bjsKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbm1lc3NhZ2U7Ci0gICAgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IG1fb25jbG9zZTsKKyAgICAgICAgUmVmUHRyPFdlYlNvY2tldENoYW5uZWw+
IG1fY2hhbm5lbDsKIAotICAgIFN0YXRlIG1fc3RhdGU7Ci0gICAgS1VSTCBtX3VybDsKLSAgICBT
dHJpbmcgbV9wcm90b2NvbDsKLX07CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29u
b3BlbjsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25tZXNzYWdlOworICAgICAg
ICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbmNsb3NlOworICAgICAgICBFdmVudExpc3RlbmVy
c01hcCBtX2V2ZW50TGlzdGVuZXJzOworCisgICAgICAgIFN0YXRlIG1fc3RhdGU7CisgICAgICAg
IEtVUkwgbV91cmw7CisgICAgICAgIFN0cmluZyBtX3Byb3RvY29sOworICAgIH07CiAKIH0gIC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCiAj
ZW5kaWYgIC8vIFdlYlNvY2tldF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYyMzBhZgotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMCww
ICsxLDI0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMp
CisKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCisKKyNpbmNsdWRlICJDU3RyaW5nLmgi
CisjaW5jbHVkZSAiQ29va2llSmFyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKKyNp
bmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKKyNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCisj
aW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENo
YW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENs
aWVudCogY2xpZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCisg
ICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1f
aGFuZHNoYWtlKHVybCwgcHJvdG9jb2wsIGNvbnRleHQpCisgICAgLCBtX2J1ZmZlcigwKQorICAg
ICwgbV9idWZmZXJTaXplKDApCisgICAgLCBtX3VuaGFuZGxlZEJ1ZmZlclNpemUoMCkKK3sKK30K
KworV2ViU29ja2V0Q2hhbm5lbDo6fldlYlNvY2tldENoYW5uZWwoKQoreworfQorCit2b2lkIFdl
YlNvY2tldENoYW5uZWw6OmNvbm5lY3QoKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
Q2hhbm5lbCAlcCBjb25uZWN0IiwgdGhpcyk7CisgICAgQVNTRVJUKCFtX2hhbmRsZS5nZXQoKSk7
CisgICAgbV9oYW5kc2hha2UucmVzZXQoKTsKKyAgICBtX2hhbmRsZSA9IFNvY2tldFN0cmVhbUhh
bmRsZTo6Y3JlYXRlKG1faGFuZHNoYWtlLnVybCgpLCB0aGlzKTsKK30KKworYm9vbCBXZWJTb2Nr
ZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbXNnKQoreworICAgIExPRyhOZXR3b3JrLCAi
V2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kICVzIiwgdGhpcywgbXNnLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIFZlY3RvcjxjaGFyPiBidWY7CisgICAgYnVmLmFwcGVuZCgnXDAnKTsgIC8vIGZyYW1lIHR5
cGUKKyAgICBidWYuYXBwZW5kKG1zZy51dGY4KCkuZGF0YSgpLCBtc2cudXRmOCgpLmxlbmd0aCgp
KTsKKyAgICBidWYuYXBwZW5kKCdceGZmJyk7ICAvLyBmcmFtZSBlbmQKKyAgICBpZiAoIW1faGFu
ZGxlLmdldCgpKSB7CisgICAgICAgIG1fdW5oYW5kbGVkQnVmZmVyU2l6ZSArPSBidWYuc2l6ZSgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBtX2hhbmRsZS0+c2Vu
ZChidWYuZGF0YSgpLCBidWYuc2l6ZSgpKTsKK30KKwordW5zaWduZWQgbG9uZyBXZWJTb2NrZXRD
aGFubmVsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0Cit7CisgICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXRDaGFubmVsICVwIGJ1ZmZlcmVkQW1vdW50IiwgdGhpcyk7CisgICAgaWYgKCFtX2hhbmRs
ZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIG1fdW5oYW5kbGVkQnVmZmVyU2l6ZTsKKyAgICByZXR1
cm4gbV9oYW5kbGUtPmJ1ZmZlcmVkQW1vdW50KCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5l
bDo6Y2xvc2UoKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjbG9z
ZSIsIHRoaXMpOworICAgIGlmIChtX2hhbmRsZS5nZXQoKSkKKyAgICAgICAgbV9oYW5kbGUtPmNs
b3NlKCk7ICAvLyB3aWxsIGNhbGwgZGlkQ2xvc2UoKQorfQorCit2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OndpbGxPcGVuU3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEtVUkwmKQorewor
fQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OndpbGxTZW5kRGF0YShTb2NrZXRTdHJlYW1IYW5k
bGUqLCBjb25zdCBjaGFyKiwgaW50KQoreworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRp
ZE9wZW4oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCit7CisgICAgTE9HKE5ldHdvcmssICJX
ZWJTb2NrZXRDaGFubmVsICVwIGRpZE9wZW4iLCB0aGlzKTsKKyAgICBBU1NFUlQoaGFuZGxlID09
IG1faGFuZGxlLmdldCgpKTsKKyAgICBjb25zdCBDU3RyaW5nJiBoYW5kc2hha2VNZXNzYWdlID0g
bV9oYW5kc2hha2UuY2xpZW50SGFuZHNoYWtlTWVzc2FnZSgpOworICAgIGlmICghaGFuZGxlLT5z
ZW5kKGhhbmRzaGFrZU1lc3NhZ2UuZGF0YSgpLCBoYW5kc2hha2VNZXNzYWdlLmxlbmd0aCgpKSkg
eworICAgICAgICBMT0coTmV0d29yaywgIkVycm9yIGluIHNlbmRpbmcgaGFuZHNoYWtlIG1lc3Nh
Z2UuIik7CisgICAgICAgIGhhbmRsZS0+Y2xvc2UoKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6ZGlkQ2xvc2UoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCit7CisgICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZENsb3NlIiwgdGhpcyk7CisgICAg
QVNTRVJUKGhhbmRsZSA9PSBtX2hhbmRsZS5nZXQoKSB8fCAhbV9oYW5kbGUuZ2V0KCkpOworICAg
IGlmICghbV9oYW5kbGUuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3VuaGFuZGxlZEJ1
ZmZlclNpemUgPSBoYW5kbGUtPmJ1ZmZlcmVkQW1vdW50KCk7CisgICAgV2ViU29ja2V0Q2hhbm5l
bENsaWVudCogY2xpZW50ID0gbV9jbGllbnQ7CisgICAgbV9jbGllbnQgPSAwOworICAgIG1faGFu
ZGxlID0gMDsKKyAgICBjbGllbnQtPmRpZENsb3NlKCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6ZGlkUmVjZWl2ZURhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW4pCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVs
ICVwIGRpZFJlY2VpdmVEYXRhICVkIiwgdGhpcywgbGVuKTsKKyAgICBBU1NFUlQoaGFuZGxlID09
IG1faGFuZGxlLmdldCgpKTsKKyAgICBpZiAoIWFwcGVuZFRvQnVmZmVyKGRhdGEsIGxlbikpIHsK
KyAgICAgICAgaGFuZGxlLT5jbG9zZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlm
IChtX2hhbmRzaGFrZS5tb2RlKCkgIT0gV2ViU29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQpIHsK
KyAgICAgICAgaW50IGhlYWRlckxlbmd0aCA9IG1faGFuZHNoYWtlLnJlYWRTZXJ2ZXJIYW5kc2hh
a2UobV9idWZmZXIuZ2V0KCksIG1fYnVmZmVyU2l6ZSk7CisgICAgICAgIGlmIChoZWFkZXJMZW5n
dGggPD0gMCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3dpdGNoIChtX2hhbmRzaGFr
ZS5tb2RlKCkpIHsKKyAgICAgICAgY2FzZSBXZWJTb2NrZXRIYW5kc2hha2U6OkNvbm5lY3RlZDoK
KyAgICAgICAgICAgIGlmICghbV9oYW5kc2hha2Uuc2VydmVyU2V0Q29va2llKCkuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICAgICAgaWYgKG1fY29udGV4dC0+aXNEb2N1bWVudCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50
Kj4obV9jb250ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZXNFbmFibGVkKGRv
Y3VtZW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5zZXRDb29raWUobV9o
YW5kc2hha2Uuc2VydmVyU2V0Q29va2llKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC8vIEZJWE1FOiBoYW5kbGUgc2V0LWNvb2tpZTIuCisgICAgICAg
ICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVjdGVkIiwgdGhpcyk7
CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ29ubmVjdCgpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgV2ViU29ja2V0SGFuZHNoYWtlOjpBdXRoZW50aWNhdGU6CisgICAgICAg
ICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVjdGlvbiByZXF1aXJl
cyBhdXRoZW50aWNhdGlvbiIsIHRoaXMpOworICAgICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVu
dCBhdXRoZW50aWNhdGUgbWVjaGFuaXN1bS4KKyAgICAgICAgICAgIGhhbmRsZS0+Y2xvc2UoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPRyhO
ZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjb25uZWN0aW9uIGZhaWxlZCIsIHRoaXMpOwor
ICAgICAgICAgICAgaGFuZGxlLT5jbG9zZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIHNraXBCdWZmZXIoaGVhZGVyTGVuZ3RoKTsKKyAgICAgICAgaWYgKCFtX2J1
ZmZlci5nZXQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgTE9HKE5ldHdvcmssICJy
ZW1haW5pbmcgaW4gcmVhZCBidWYgJXVsIiwgbV9idWZmZXJTaXplKTsKKyAgICB9CisKKyAgICBj
b25zdCBjaGFyKiBuZXh0RnJhbWUgPSBtX2J1ZmZlci5nZXQoKTsKKyAgICBjb25zdCBjaGFyKiBw
ID0gbV9idWZmZXIuZ2V0KCk7CisgICAgY29uc3QgY2hhciogZW5kID0gcCArIG1fYnVmZmVyU2l6
ZTsKKyAgICB3aGlsZSAocCA8IGVuZCkgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGZyYW1lQnl0
ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCpwKyspOworICAgICAgICBpZiAoKGZyYW1l
Qnl0ZSAmIDB4ODApID09IDB4ODApIHsKKyAgICAgICAgICAgIGludCBsZW5ndGggPSAwOworICAg
ICAgICAgICAgd2hpbGUgKHAgPCBlbmQgJiYgKCpwICYgMHg4MCkgPT0gMHg4MCkgeworICAgICAg
ICAgICAgICAgIGlmIChsZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpIC8g
MTI4KSB7CisgICAgICAgICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiZnJhbWUgbGVuZ3RoIG92
ZXJmbG93ICVkIiwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5jbG9zZSgp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aCAqIDEyOCArICpwICYgMHg3ZjsKKyAgICAgICAgICAg
ICAgICArK3A7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocCArIGxlbmd0aCA8IGVu
ZCkgeworICAgICAgICAgICAgICAgIHAgKz0gbGVuZ3RoOworICAgICAgICAgICAgICAgIG5leHRG
cmFtZSA9IHA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBj
b25zdCBjaGFyKiBtc2dTdGFydCA9IHA7CisgICAgICAgICAgICB3aGlsZSAocCA8IGVuZCAmJiAq
cCAhPSAnXHhmZicpCisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgaWYgKHAgPCBl
bmQgJiYgKnAgPT0gJ1x4ZmYnKSB7CisgICAgICAgICAgICAgICAgaWYgKGZyYW1lQnl0ZSA9PSAw
eDAwKQorICAgICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2UoU3Ry
aW5nOjpmcm9tVVRGOChtc2dTdGFydCwgcCAtIG1zZ1N0YXJ0KSk7CisgICAgICAgICAgICAgICAg
KytwOworICAgICAgICAgICAgICAgIG5leHRGcmFtZSA9IHA7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisgICAgc2tpcEJ1ZmZlcihuZXh0RnJhbWUgLSBtX2J1ZmZlci5nZXQoKSk7
Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmFpbChTb2NrZXRTdHJlYW1IYW5kbGUq
IGhhbmRsZSwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImKQoreworICAgIExPRyhOZXR3b3JrLCAi
V2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRGYWlsIiwgdGhpcyk7CisgICAgQVNTRVJUKGhhbmRsZSA9
PSBtX2hhbmRsZS5nZXQoKSB8fCAhbV9oYW5kbGUuZ2V0KCkpOworICAgIGhhbmRsZS0+Y2xvc2Uo
KTsKK30KKworYm9vbCBXZWJTb2NrZXRDaGFubmVsOjphcHBlbmRUb0J1ZmZlcihjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuKQoreworICAgIGNoYXIqIG5ld0J1ZmZlciA9IDA7CisgICAgaWYgKHRy
eUZhc3RNYWxsb2MobV9idWZmZXJTaXplICsgbGVuKS5nZXRWYWx1ZShuZXdCdWZmZXIpKSB7Cisg
ICAgICAgIGlmIChtX2J1ZmZlci5nZXQoKSkKKyAgICAgICAgICAgIG1lbWNweShuZXdCdWZmZXIs
IG1fYnVmZmVyLmdldCgpLCBtX2J1ZmZlclNpemUpOworICAgICAgICBtZW1jcHkobmV3QnVmZmVy
ICsgbV9idWZmZXJTaXplLCBkYXRhLCBsZW4pOworICAgICAgICBtX2J1ZmZlci5zZXQobmV3QnVm
ZmVyKTsKKyAgICAgICAgbV9idWZmZXJTaXplICs9IGxlbjsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIExPRyhOZXR3b3JrLCAiVG9vIGxvbmcgV2ViU29ja2V0IGZyYW1lICVkIiwg
bV9idWZmZXJTaXplICsgbGVuKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6c2tpcEJ1ZmZlcihpbnQgbGVuKQoreworICAgIEFTU0VSVChsZW4gPD0gbV9i
dWZmZXJTaXplKTsKKyAgICBtX2J1ZmZlclNpemUgLT0gbGVuOworICAgIGlmICghbV9idWZmZXJT
aXplKSB7CisgICAgICAgIG1fYnVmZmVyLnNldCgwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBtZW1tb3ZlKG1fYnVmZmVyLmdldCgpLCBtX2J1ZmZlci5nZXQoKSArIGxlbiwgbV9idWZm
ZXJTaXplKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBFTkFC
TEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMThjMTc4Ci0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtMCwwICsxLDg3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViU29ja2V0Q2hhbm5lbF9oCisjZGVmaW5lIFdlYlNvY2tldENoYW5uZWxfaAorCisj
aWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlLmgiCisjaW5jbHVkZSA8d3RmL093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgY2xhc3MgU3RyaW5n
OworICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZTsKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1F
cnJvcjsKKyAgICBjbGFzcyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OworCisgICAgY2xhc3MgV2Vi
U29ja2V0Q2hhbm5lbCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlNvY2tldENoYW5uZWw+LCBwdWJs
aWMgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYlNvY2tldENoYW5uZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkgeyByZXR1cm4gbmV3IFdlYlNvY2tldENoYW5u
ZWwoY29udGV4dCwgY2xpZW50LCB1cmwsIHByb3RvY29sKTsgfQorICAgICAgICB2aXJ0dWFsIH5X
ZWJTb2NrZXRDaGFubmVsKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoKTsKKwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1zZyk7CisgICAgICAgIHZp
cnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0OworCisgICAgICAgIHZp
cnR1YWwgdm9pZCBjbG9zZSgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsT3BlblN0cmVh
bShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBLVVJMJik7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCB3aWxsU2VuZERhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgY2hhciosIGludCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuKFNvY2tldFN0cmVhbUhhbmRsZSopOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoU29ja2V0U3RyZWFtSGFuZGxlKik7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBjaGFy
KiwgaW50KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoU29ja2V0U3RyZWFtSGFuZGxl
KiwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFdl
YlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYlNvY2tldENoYW5uZWxD
bGllbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7CisKKyAgICAgICAgYm9vbCBhcHBl
bmRUb0J1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKTsKKyAgICAgICAgdm9pZCBza2lw
QnVmZmVyKGludCBsZW4pOworCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29u
dGV4dDsKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogbV9jbGllbnQ7CisgICAgICAg
IFdlYlNvY2tldEhhbmRzaGFrZSBtX2hhbmRzaGFrZTsKKyAgICAgICAgUmVmUHRyPFNvY2tldFN0
cmVhbUhhbmRsZT4gbV9oYW5kbGU7CisgICAgICAgIE93blB0cjxjaGFyPiBtX2J1ZmZlcjsKKyAg
ICAgICAgaW50IG1fYnVmZmVyU2l6ZTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtX3VuaGFuZGxl
ZEJ1ZmZlclNpemU7CisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
ICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAgLy8gV2ViU29ja2V0Q2hhbm5lbF9o
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5o
IGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjNjYWRhCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaApAQCAtMCwwICsxLDUzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViU29ja2V0Q2hhbm5lbENsaWVudF9oCisjZGVmaW5lIFdlYlNvY2tldENoYW5u
ZWxDbGllbnRfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyAgICBjbGFzcyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50IHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWxDbGllbnQoKSB7IH0KKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZENvbm5lY3QoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKGNvbnN0IFN0cmluZyYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xv
c2UoKSB7IH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVu
dCgpIHsgfQorICAgIH07CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8g
RU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYgIC8vIFdlYlNvY2tldENoYW5uZWxDbGllbnRf
aApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAg
Yi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTU1YWI4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTAsMCArMSw0NzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAi
V2ViU29ja2V0SGFuZHNoYWtlLmgiCisKKyNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKKyNpbmNs
dWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiQ29va2llSmFyLmgiCisjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCisj
aW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBjaGFyIHdlYlNvY2tldFNlcnZlckhhbmRzaGFr
ZUhlYWRlcltdID0gIkhUVFAvMS4xIDEwMSBXZWIgU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxy
XG4iOworY29uc3QgY2hhciB3ZWJTb2NrZXRVcGdyYWRlSGVhZGVyW10gPSAiVXBncmFkZTogV2Vi
U29ja2V0XHJcbiI7Citjb25zdCBjaGFyIHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXJbXSA9ICJD
b25uZWN0aW9uOiBVcGdyYWRlXHJcbiI7CisKK3N0YXRpYyBTdHJpbmcgZXh0cmFjdFJlc3BvbnNl
Q29kZShjb25zdCBjaGFyKiBoZWFkZXIsIGludCBsZW4pCit7CisgICAgY29uc3QgY2hhciogc3Bh
Y2UxID0gMDsKKyAgICBjb25zdCBjaGFyKiBzcGFjZTIgPSAwOworICAgIGNvbnN0IGNoYXIqIHA7
CisgICAgZm9yIChwID0gaGVhZGVyOyBwIC0gaGVhZGVyIDwgbGVuOyBwKyspIHsKKyAgICAgICAg
aWYgKCpwID09ICcgJykgeworICAgICAgICAgICAgaWYgKCFzcGFjZTEpCisgICAgICAgICAgICAg
ICAgc3BhY2UxID0gcDsKKyAgICAgICAgICAgIGVsc2UgaWYgKCFzcGFjZTIpCisgICAgICAgICAg
ICAgICAgc3BhY2UyID0gcDsKKyAgICAgICAgfSBlbHNlIGlmICgqcCA9PSAnXG4nKQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChwIC0gaGVhZGVyID09IGxlbikKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworICAgIGlmICghc3BhY2UxIHx8ICFzcGFjZTIpCisgICAgICAgIHJl
dHVybiAiIjsKKyAgICByZXR1cm4gU3RyaW5nKHNwYWNlMSArIDEsIHNwYWNlMiAtIHNwYWNlMSAt
IDEpOworfQorCitXZWJTb2NrZXRIYW5kc2hha2U6OldlYlNvY2tldEhhbmRzaGFrZShjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCisgICAgOiBtX3VybCh1cmwpCisgICAgLCBtX2NsaWVudFByb3RvY29sKHByb3Rv
Y29sKQorICAgICwgbV9zZWN1cmUobV91cmwucHJvdG9jb2xJcygid3NzIikpCisgICAgLCBtX2Nv
bnRleHQoY29udGV4dCkKKyAgICAsIG1fbW9kZShJbmNvbXBsZXRlKQoreworfQorCitXZWJTb2Nr
ZXRIYW5kc2hha2U6On5XZWJTb2NrZXRIYW5kc2hha2UoKQoreworfQorCitjb25zdCBLVVJMJiBX
ZWJTb2NrZXRIYW5kc2hha2U6OnVybCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXJsOworfQor
Cit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkKK3sKKyAg
ICBtX3VybCA9IHVybC5jb3B5KCk7Cit9CisKK2NvbnN0IFN0cmluZyBXZWJTb2NrZXRIYW5kc2hh
a2U6Omhvc3QoKSBjb25zdAoreworICAgIHJldHVybiBtX3VybC5ob3N0KCkubG93ZXIoKTsKK30K
KworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudFByb3RvY29sKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnRQcm90b2NvbDsKK30KKwordm9pZCBXZWJTb2NrZXRI
YW5kc2hha2U6OnNldENsaWVudFByb3RvY29sKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCit7Cisg
ICAgbV9jbGllbnRQcm90b2NvbCA9IHByb3RvY29sOworfQorCitib29sIFdlYlNvY2tldEhhbmRz
aGFrZTo6c2VjdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZWN1cmU7Cit9CisKK3ZvaWQg
V2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZWN1cmUoYm9vbCBzZWN1cmUpCit7CisgICAgbV9zZWN1
cmUgPSBzZWN1cmU7Cit9CisKK1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudE9yaWdp
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9T
dHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50TG9jYXRpb24o
KSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVu
ZChtX3NlY3VyZSA/ICJ3c3MiIDogIndzIik7CisgICAgYnVpbGRlci5hcHBlbmQoIjovLyIpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKG1fdXJsLmhvc3QoKS5sb3dlcigpKTsKKyAgICBpZiAobV91cmwu
cG9ydCgpKSB7CisgICAgICAgIGlmICgoIW1fc2VjdXJlICYmIG1fdXJsLnBvcnQoKSAhPSA4MCkg
fHwgKG1fc2VjdXJlICYmIG1fdXJsLnBvcnQoKSAhPSA0NDMpKSB7CisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgiOiIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1i
ZXIobV91cmwucG9ydCgpKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgYnVpbGRlci5hcHBlbmQo
bV91cmwucGF0aCgpKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitDU3Ry
aW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlTWVzc2FnZSgpIGNvbnN0Cit7
CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworCisgICAgYnVpbGRlci5hcHBlbmQoIkdFVCAi
KTsKKyAgICBidWlsZGVyLmFwcGVuZChtX3VybC5wYXRoKCkpOworICAgIGlmICghbV91cmwucXVl
cnkoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIj8iKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQobV91cmwucXVlcnkoKSk7CisgICAgfQorICAgIGJ1aWxkZXIuYXBwZW5k
KCIgSFRUUC8xLjFcclxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIlVwZ3JhZGU6IFdlYlNvY2tl
dFxyXG4iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQ29ubmVjdGlvbjogVXBncmFkZVxyXG4iKTsK
KyAgICBidWlsZGVyLmFwcGVuZCgiSG9zdDogIik7CisgICAgYnVpbGRlci5hcHBlbmQobV91cmwu
aG9zdCgpLmxvd2VyKCkpOworICAgIGlmIChtX3VybC5wb3J0KCkpIHsKKyAgICAgICAgaWYgKCgh
bV9zZWN1cmUgJiYgbV91cmwucG9ydCgpICE9IDgwKSB8fCAobV9zZWN1cmUgJiYgbV91cmwucG9y
dCgpICE9IDQ0MykpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6Iik7CisgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihtX3VybC5wb3J0KCkpKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZCgiXHJcbiIpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKCJPcmlnaW46ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKGNsaWVudE9yaWdpbigpKTsKKyAg
ICBidWlsZGVyLmFwcGVuZCgiXHJcbiIpOworICAgIGlmICghbV9jbGllbnRQcm90b2NvbC5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIldlYlNvY2tldC1Qcm90b2NvbDogIik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fY2xpZW50UHJvdG9jb2wpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgiXHJcbiIpOworICAgIH0KKyAgICBLVVJMIHVybCA9IGh0dHBVUkxGb3JBdXRo
ZW50aWNhdGlvbkFuZENvb2tpZXMoKTsKKyAgICAvLyBGSVhNRTogc2V0IGF1dGhlbnRpY2F0aW9u
IGluZm9ybWF0aW9uIG9yIGNvb2tpZXMgZm9yIHVybC4KKyAgICAvLyBTZXQgIkF1dGhvcml6YXRp
b246IDxjcmVkZW50aWFscz4iIGlmIGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uIGV4aXN0cyBm
b3IgdXJsLgorICAgIGlmIChtX2NvbnRleHQtPmlzRG9jdW1lbnQoKSkgeworICAgICAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fY29udGV4dCk7CisgICAg
ICAgIFN0cmluZyBjb29raWUgPSBjb29raWVzKGRvY3VtZW50LCB1cmwpOworICAgICAgICBpZiAo
IWNvb2tpZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJDb29raWU6
ICIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoY29va2llKTsKKyAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCJcclxuIik7CisgICAgICAgIH0KKyAgICAgICAgLy8gU2V0ICJDb29raWUy
OiA8Y29va2llPiIgaWYgY29va2llcyAyIGV4aXN0cyBmb3IgdXJsPworICAgIH0KKyAgICBidWls
ZGVyLmFwcGVuZCgiXHJcbiIpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgp
OworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVzZXQoKQoreworICAgIG1fbW9kZSA9
IEluY29tcGxldGU7CisKKyAgICBtX3dzT3JpZ2luID0gU3RyaW5nKCk7CisgICAgbV93c0xvY2F0
aW9uID0gU3RyaW5nKCk7CisgICAgbV93c1Byb3RvY29sID0gU3RyaW5nKCk7CisgICAgbV9zZXRD
b29raWUgPSBTdHJpbmcoKTsKKyAgICBtX3NldENvb2tpZTIgPSBTdHJpbmcoKTsKKyAgICBtX2xv
Y2F0aW9uID0gU3RyaW5nKCk7CisgICAgbV93d3dBdXRoZW50aWNhdGUgPSBTdHJpbmcoKTsKK30K
KworaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZShjb25zdCBjaGFy
KiBoZWFkZXIsIHNpemVfdCBsZW4pCit7CisgICAgbV9tb2RlID0gSW5jb21wbGV0ZTsKKyAgICBp
ZiAobGVuIDwgc2l6ZW9mKHdlYlNvY2tldFNlcnZlckhhbmRzaGFrZUhlYWRlcikgLSAxKSB7Cisg
ICAgICAgIC8vIEp1c3QgaGFzbid0IGJlZW4gcmVjZWl2ZWQgZnVsbHkgeWV0LgorICAgICAgICBy
ZXR1cm4gLTE7CisgICAgfQorICAgIGlmICghbWVtY21wKGhlYWRlciwgd2ViU29ja2V0U2VydmVy
SGFuZHNoYWtlSGVhZGVyLCBzaXplb2Yod2ViU29ja2V0U2VydmVySGFuZHNoYWtlSGVhZGVyKSAt
IDEpKQorICAgICAgICBtX21vZGUgPSBOb3JtYWw7CisgICAgZWxzZSB7CisgICAgICAgIGNvbnN0
IFN0cmluZyYgY29kZSA9IGV4dHJhY3RSZXNwb25zZUNvZGUoaGVhZGVyLCBsZW4pOworICAgICAg
ICBpZiAoY29kZS5pc051bGwoKSkgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJzaG9ydCBz
ZXJ2ZXIgaGFuZHNoYWtlOiAlcyIsIGhlYWRlcik7CisgICAgICAgICAgICByZXR1cm4gLTE7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGNvZGUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBMT0co
TmV0d29yaywgIm5vIHJlc3BvbnNlIGNvZGUgZm91bmQ6ICVzIiwgaGVhZGVyKTsKKyAgICAgICAg
ICAgIHJldHVybiBsZW47CisgICAgICAgIH0KKyAgICAgICAgTE9HKE5ldHdvcmssICJyZXNwb25z
ZSBjb2RlOiAlcyIsIGNvZGUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGlmIChjb2RlID09ICI0
MDEiKQorICAgICAgICAgICAgbV9tb2RlID0gQXV0aGVudGljYXRlOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiTWlzbWF0Y2ggc2VydmVyIGhhbmRzaGFrZTogJXMi
LCBoZWFkZXIpOworICAgICAgICAgICAgcmV0dXJuIGxlbjsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBjb25zdCBjaGFyKiBwID0gaGVhZGVyICsgc2l6ZW9mKHdlYlNvY2tldFNlcnZlckhhbmRzaGFr
ZUhlYWRlcikgLSAxOworICAgIGNvbnN0IGNoYXIqIGVuZCA9IGhlYWRlciArIGxlbiArIDE7CisK
KyAgICBpZiAobV9tb2RlID09IE5vcm1hbCkgeworICAgICAgICBzaXplX3QgaGVhZGVyU2l6ZSA9
IGVuZCAtIHA7CisgICAgICAgIGlmIChoZWFkZXJTaXplIDwgc2l6ZW9mKHdlYlNvY2tldFVwZ3Jh
ZGVIZWFkZXIpIC0gMSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAobWVtY21w
KHAsIHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIsIHNpemVvZih3ZWJTb2NrZXRVcGdyYWRlSGVhZGVy
KSAtIDEpKSB7CisgICAgICAgICAgICBMT0coTmV0d29yaywgIkJhZCB1cGdyYWRlIGhlYWRlcjog
JXMiLCBwKTsKKyAgICAgICAgICAgIHJldHVybiBwIC0gaGVhZGVyICsgc2l6ZW9mKHdlYlNvY2tl
dFVwZ3JhZGVIZWFkZXIpIC0gMTsKKyAgICAgICAgfQorICAgICAgICBwICs9IHNpemVvZih3ZWJT
b2NrZXRVcGdyYWRlSGVhZGVyKSAtIDE7CisKKyAgICAgICAgaGVhZGVyU2l6ZSA9IGVuZCAtIHA7
CisgICAgICAgIGlmIChoZWFkZXJTaXplIDwgc2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rpb25IZWFk
ZXIpIC0gMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKG1lbWNtcChwLCB3
ZWJTb2NrZXRDb25uZWN0aW9uSGVhZGVyLCBzaXplb2Yod2ViU29ja2V0Q29ubmVjdGlvbkhlYWRl
cikgLSAxKSkgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJCYWQgY29ubmVjdGlvbiBoZWFk
ZXI6ICVzIiwgcCk7CisgICAgICAgICAgICByZXR1cm4gcCAtIGhlYWRlciArIHNpemVvZih3ZWJT
b2NrZXRDb25uZWN0aW9uSGVhZGVyKSAtIDE7CisgICAgICAgIH0KKyAgICAgICAgcCArPSBzaXpl
b2Yod2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlcikgLSAxOworICAgIH0KKworICAgIGlmICghc3Ry
bnN0cihwLCAiXHJcblxyXG4iLCBlbmQgLSBwKSkgeworICAgICAgICAvLyBKdXN0IGhhc24ndCBi
ZWVuIHJlY2VpdmVkIGZ1bGx5IHlldC4KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBI
VFRQSGVhZGVyTWFwIGhlYWRlcnM7CisgICAgcCA9IHJlYWRIVFRQSGVhZGVycyhwLCBlbmQsICZo
ZWFkZXJzKTsKKyAgICBpZiAoIXApIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJyZWFkSFRUUEhl
YWRlcnMgZmFpbGVkIik7CisgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAgICAgICAgcmV0dXJu
IGxlbjsKKyAgICB9CisgICAgaWYgKCFwcm9jZXNzSGVhZGVycyhoZWFkZXJzKSkgeworICAgICAg
ICBMT0coTmV0d29yaywgImhlYWRlciBwcm9jZXNzIGZhaWxlZCIpOworICAgICAgICBtX21vZGUg
PSBGYWlsZWQ7CisgICAgICAgIHJldHVybiBwIC0gaGVhZGVyOworICAgIH0KKyAgICBzd2l0Y2gg
KG1fbW9kZSkgeworICAgIGNhc2UgTm9ybWFsOgorICAgICAgICBjaGVja1Jlc3BvbnNlSGVhZGVy
cygpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1dGhlbnRpY2F0ZToKKyAgICAgICAgaWYg
KG1fd3d3QXV0aGVudGljYXRlLmlzTnVsbCgpKQorICAgICAgICAgICAgbV9tb2RlID0gRmFpbGVk
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBtX21vZGUgPSBGYWlsZWQ7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gcCAtIGhlYWRlcjsKK30KKworV2Vi
U29ja2V0SGFuZHNoYWtlOjpNb2RlIFdlYlNvY2tldEhhbmRzaGFrZTo6bW9kZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fbW9kZTsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hh
a2U6OnNlcnZlcldlYlNvY2tldE9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3NPcmln
aW47Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJXZWJTb2NrZXRPcmln
aW4oY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRPcmlnaW4pCit7CisgICAgbV93c09yaWdpbiA9IHdl
YlNvY2tldE9yaWdpbjsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OnNl
cnZlcldlYlNvY2tldExvY2F0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93c0xvY2F0aW9u
OworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyV2ViU29ja2V0TG9jYXRp
b24oY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRMb2NhdGlvbikKK3sKKyAgICBtX3dzTG9jYXRpb24g
PSB3ZWJTb2NrZXRMb2NhdGlvbjsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hh
a2U6OnNlcnZlcldlYlNvY2tldFByb3RvY29sKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93c1By
b3RvY29sOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyV2ViU29ja2V0
UHJvdG9jb2woY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRQcm90b2NvbCkKK3sKKyAgICBtX3dzUHJv
dG9jb2wgPSB3ZWJTb2NrZXRQcm90b2NvbDsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRI
YW5kc2hha2U6OnNlcnZlclNldENvb2tpZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2V0Q29v
a2llOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyU2V0Q29va2llKGNv
bnN0IFN0cmluZyYgc2V0Q29va2llKQoreworICAgIG1fc2V0Q29va2llID0gc2V0Q29va2llOwor
fQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyU2V0Q29va2llMigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2V0Q29va2llMjsKK30KKwordm9pZCBXZWJTb2NrZXRI
YW5kc2hha2U6OnNldFNlcnZlclNldENvb2tpZTIoY29uc3QgU3RyaW5nJiBzZXRDb29raWUyKQor
eworICAgIG1fc2V0Q29va2llMiA9IHNldENvb2tpZTI7Cit9CisKK2NvbnN0IFN0cmluZyYgV2Vi
U29ja2V0SGFuZHNoYWtlOjp3d3dBdXRoZW50aWNhdGUoKSBjb25zdAoreworICAgIHJldHVybiBt
X3d3d0F1dGhlbnRpY2F0ZTsKK30KKworS1VSTCBXZWJTb2NrZXRIYW5kc2hha2U6Omh0dHBVUkxG
b3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAoreworICAgIEtVUkwgdXJsID0gbV91
cmwuY29weSgpOworICAgIHVybC5zZXRQcm90b2NvbChtX3NlY3VyZSA/ICJodHRwcyIgOiAiaHR0
cCIpOworICAgIHJldHVybiB1cmw7Cit9CisKK2NvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFr
ZTo6cmVhZEhUVFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQsIEhU
VFBIZWFkZXJNYXAqIGhlYWRlcnMpCit7CisgICAgVmVjdG9yPGNoYXI+IG5hbWU7CisgICAgVmVj
dG9yPGNoYXI+IHZhbHVlOworICAgIGZvciAoY29uc3QgY2hhciogcCA9IHN0YXJ0OyBwIDwgZW5k
OyBwKyspIHsKKyAgICAgICAgbmFtZS5jbGVhcigpOworICAgICAgICB2YWx1ZS5jbGVhcigpOwor
CisgICAgICAgIGZvciAoOyBwIDwgZW5kOyBwKyspIHsKKyAgICAgICAgICAgIHN3aXRjaCAoKnAp
IHsKKyAgICAgICAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgICAgICAgICBpZiAobmFtZS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHAgKyAxIDwgZW5kICYmICoocCArIDEp
ID09ICdcbicpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcCArIDI7CisgICAgICAg
ICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiQ1IgZG9lc24ndCBmb2xsb3cgTEYgcD0lcCBlbmQ9
JXAiLCBwLCBlbmQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgTE9HKE5ldHdvcmssICJVbmV4cGVjdGVkIENSIGluIG5h
bWUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGNhc2UgJ1xuJzoK
KyAgICAgICAgICAgICAgICBMT0coTmV0d29yaywgIlVuZXhwZWN0ZWQgTEYgaW4gbmFtZSIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgY2FzZSAnOic6CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGlm
ICgqcCA+PSAweDQxICYmICpwIDw9IDB4NWEpCisgICAgICAgICAgICAgICAgICAgIG5hbWUuYXBw
ZW5kKCpwICsgMHgyMCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBuYW1lLmFwcGVuZCgqcCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoKnAgPT0gJzonKSB7CisgICAgICAgICAgICAgICAgKytwOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgZm9yICg7IHAgPCBlbmQgJiYgKnAgPT0gMHgyMDsgcCsrKSB7IH0KKworICAgICAgICBmb3Ig
KDsgcCA8IGVuZDsgcCsrKSB7CisgICAgICAgICAgICBzd2l0Y2ggKCpwKSB7CisgICAgICAgICAg
ICBjYXNlICdccic6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdc
bic6CisgICAgICAgICAgICAgICAgTE9HKE5ldHdvcmssICJVbmV4cGVjdGVkIExGIGluIHZhbHVl
Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIHZhbHVlLmFwcGVuZCgqcCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoKnAgPT0gJ1xyJykgeworICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAocCA+PSBlbmQg
fHwgKnAgIT0gJ1xuJykgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDUiBkb2Vzbid0IGZv
bGxvdyBMRiBhZnRlciB2YWx1ZSBwPSVwIGVuZD0lcCIsIHAsIGVuZCk7CisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBBdG9taWNTdHJpbmcgbmFtZVN0cihTdHJpbmc6
OmZyb21VVEY4KG5hbWUuZGF0YSgpLCBuYW1lLnNpemUoKSkpOworICAgICAgICBTdHJpbmcgdmFs
dWVTdHIgPSBTdHJpbmc6OmZyb21VVEY4KHZhbHVlLmRhdGEoKSwgdmFsdWUuc2l6ZSgpKTsKKyAg
ICAgICAgTE9HKE5ldHdvcmssICJuYW1lPSVzIHZhbHVlPSVzIiwgbmFtZVN0ci5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCB2YWx1ZVN0ci51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaGVhZGVycy0+
YWRkKG5hbWVTdHIsIHZhbHVlU3RyKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgV2ViU29ja2V0SGFuZHNoYWtlOjpwcm9jZXNzSGVh
ZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQoreworICAgIGZvciAoSFRUUEhlYWRl
ck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJzLmJlZ2luKCk7IGl0ICE9IGhlYWRlcnMu
ZW5kKCk7ICsraXQpIHsKKyAgICAgICAgc3dpdGNoIChtX21vZGUpIHsKKyAgICAgICAgY2FzZSBO
b3JtYWw6CisgICAgICAgICAgICBpZiAoaXQtPmZpcnN0ID09ICJ3ZWJzb2NrZXQtb3JpZ2luIikK
KyAgICAgICAgICAgICAgICBtX3dzT3JpZ2luID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGl0LT5maXJzdCA9PSAid2Vic29ja2V0LWxvY2F0aW9uIikKKyAgICAgICAgICAgICAg
ICBtX3dzTG9jYXRpb24gPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgZWxzZSBpZiAoaXQtPmZp
cnN0ID09ICJ3ZWJzb2NrZXQtcHJvdG9jb2wiKQorICAgICAgICAgICAgICAgIG1fd3NQcm90b2Nv
bCA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBlbHNlIGlmIChpdC0+Zmlyc3QgPT0gInNldC1j
b29raWUiKQorICAgICAgICAgICAgICAgIG1fc2V0Q29va2llID0gaXQtPnNlY29uZDsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGl0LT5maXJzdCA9PSAic2V0LWNvb2tpZTIiKQorICAgICAgICAgICAg
ICAgIG1fc2V0Q29va2llMiA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgY2FzZSBBdXRoZW50aWNhdGU6CisgICAgICAgICAgICBpZiAoaXQtPmZpcnN0ID09ICJ3
d3ctYXV0aGVudGljYXRlIikKKyAgICAgICAgICAgICAgICBtX3d3d0F1dGhlbnRpY2F0ZSA9IGl0
LT5zZWNvbmQ7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgY2FzZSBJbmNvbXBsZXRl
OgorICAgICAgICBjYXNlIEZhaWxlZDoKKyAgICAgICAgY2FzZSBDb25uZWN0ZWQ6CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViU29ja2V0
SGFuZHNoYWtlOjpjaGVja1Jlc3BvbnNlSGVhZGVycygpCit7CisgICAgQVNTRVJUKG1fbW9kZSA9
PSBOb3JtYWwpOworICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAgICBpZiAobV93c09yaWdpbi5pc051
bGwoKSB8fCBtX3dzTG9jYXRpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChjbGllbnRPcmlnaW4oKSAhPSBtX3dzT3JpZ2luKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAi
TWlzbWF0Y2ggb3JpZ2luOiAlcyAhPSAlcyIsIGNsaWVudE9yaWdpbigpLnV0ZjgoKS5kYXRhKCks
IG1fd3NPcmlnaW4udXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKGNsaWVudExvY2F0aW9uKCkgIT0gbV93c0xvY2F0aW9uKSB7CisgICAgICAgIExPRyhOZXR3
b3JrLCAiTWlzbWF0Y2ggbG9jYXRpb246ICVzICE9ICVzIiwgY2xpZW50TG9jYXRpb24oKS51dGY4
KCkuZGF0YSgpLCBtX3dzTG9jYXRpb24udXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgaWYgKCFtX2NsaWVudFByb3RvY29sLmlzRW1wdHkoKSAmJiBtX2NsaWVudFBy
b3RvY29sICE9IG1fd3NQcm90b2NvbCkgeworICAgICAgICBMT0coTmV0d29yaywgIk1pc21hdGNo
IHByb3RvY29sOiAlcyAhPSAlcyIsIG1fY2xpZW50UHJvdG9jb2wudXRmOCgpLmRhdGEoKSwgbV93
c1Byb3RvY29sLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1f
bW9kZSA9IENvbm5lY3RlZDsKKyAgICByZXR1cm47Cit9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRi
MmRmMmYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlLmgKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTb2NrZXRIYW5kc2hha2VfaAor
I2RlZmluZSBXZWJTb2NrZXRIYW5kc2hha2VfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQor
CisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNz
IENTdHJpbmc7CisgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBjbGFzcyBI
VFRQSGVhZGVyTWFwOworCisgICAgY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGVudW0gTW9kZSB7CisgICAgICAgICAg
ICBJbmNvbXBsZXRlLCBOb3JtYWwsIEF1dGhlbnRpY2F0ZSwgRmFpbGVkLCBDb25uZWN0ZWQKKyAg
ICAgICAgfTsKKyAgICAgICAgV2ViU29ja2V0SGFuZHNoYWtlKGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgICAgIH5XZWJT
b2NrZXRIYW5kc2hha2UoKTsKKworICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKKyAg
ICAgICAgdm9pZCBzZXRVUkwoY29uc3QgS1VSTCYpOworICAgICAgICBjb25zdCBTdHJpbmcgaG9z
dCgpIGNvbnN0OworCisgICAgICAgIGNvbnN0IFN0cmluZyYgY2xpZW50UHJvdG9jb2woKSBjb25z
dDsKKyAgICAgICAgdm9pZCBzZXRDbGllbnRQcm90b2NvbChjb25zdCBTdHJpbmcmIHByb3RvY29s
KTsKKworICAgICAgICBib29sIHNlY3VyZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNlY3Vy
ZShib29sIHNlY3VyZSk7CisKKyAgICAgICAgU3RyaW5nIGNsaWVudE9yaWdpbigpIGNvbnN0Owor
ICAgICAgICBTdHJpbmcgY2xpZW50TG9jYXRpb24oKSBjb25zdDsKKworICAgICAgICBDU3RyaW5n
IGNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKSBjb25zdDsKKworICAgICAgICB2b2lkIHJlc2V0KCk7
CisKKyAgICAgICAgaW50IHJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciogaGVhZGVyLCBz
aXplX3QgbGVuKTsKKyAgICAgICAgTW9kZSBtb2RlKCkgY29uc3Q7CisKKyAgICAgICAgY29uc3Qg
U3RyaW5nJiBzZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRT
ZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRPcmlnaW4pOworCisg
ICAgICAgIGNvbnN0IFN0cmluZyYgc2VydmVyV2ViU29ja2V0TG9jYXRpb24oKSBjb25zdDsKKyAg
ICAgICAgdm9pZCBzZXRTZXJ2ZXJXZWJTb2NrZXRMb2NhdGlvbihjb25zdCBTdHJpbmcmIHdlYlNv
Y2tldExvY2F0aW9uKTsKKworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZlcldlYlNvY2tldFBy
b3RvY29sKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2VydmVyV2ViU29ja2V0UHJvdG9jb2wo
Y29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRQcm90b2NvbCk7CisKKyAgICAgICAgY29uc3QgU3RyaW5n
JiBzZXJ2ZXJTZXRDb29raWUoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTZXJ2ZXJTZXRDb29r
aWUoY29uc3QgU3RyaW5nJiBzZXRDb29raWUpOworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZl
clNldENvb2tpZTIoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTZXJ2ZXJTZXRDb29raWUyKGNv
bnN0IFN0cmluZyYgc2V0Q29va2llMik7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiB3d3dBdXRo
ZW50aWNhdGUoKSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIEtVUkwgaHR0cFVSTEZv
ckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0OworCisgICAgICAgIC8vIFJlYWRzIGFs
bCBoZWFkZXJzIGV4Y2VwdCBmb3IgdGhlIHR3byBwcmVkZWZpbmVkIG9uZXMuCisgICAgICAgIGNv
bnN0IGNoYXIqIHJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciog
ZW5kLCBIVFRQSGVhZGVyTWFwKiBoZWFkZXJzKTsKKyAgICAgICAgYm9vbCBwcm9jZXNzSGVhZGVy
cyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKTsKKyAgICAgICAgdm9pZCBjaGVja1Jlc3Bv
bnNlSGVhZGVycygpOworCisgICAgICAgIEtVUkwgbV91cmw7CisgICAgICAgIFN0cmluZyBtX2Ns
aWVudFByb3RvY29sOworICAgICAgICBib29sIG1fc2VjdXJlOworICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CisKKyAgICAgICAgc2l6ZV90IG1fc2VydmVySGFuZHNo
YWtlTGVuZ3RoOworICAgICAgICBNb2RlIG1fbW9kZTsKKworICAgICAgICBTdHJpbmcgbV93c09y
aWdpbjsKKyAgICAgICAgU3RyaW5nIG1fd3NMb2NhdGlvbjsKKyAgICAgICAgU3RyaW5nIG1fd3NQ
cm90b2NvbDsKKyAgICAgICAgU3RyaW5nIG1fc2V0Q29va2llOworICAgICAgICBTdHJpbmcgbV9z
ZXRDb29raWUyOworICAgICAgICBTdHJpbmcgbV9sb2NhdGlvbjsKKyAgICAgICAgU3RyaW5nIG1f
d3d3QXV0aGVudGljYXRlOworICAgIH07CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYgIC8vIFdlYlNvY2tldEhhbmRz
aGFrZV9o
</data>
<flag name="review"
          id="19898"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38961</attachid>
            <date>2009-09-02 19:07:49 -0700</date>
            <delta_ts>2009-09-04 08:05:05 -0700</delta_ts>
            <desc>WebSocket API implementation</desc>
            <filename>bug-28038-20090903110745.patch</filename>
            <type>text/plain</type>
            <size>65132</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAwMzY4OGJlLi5hYjZlZWJlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMDktMDktMDIgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IFdURjo6
dHJ5RmFzdE1hbGxvYygpIHVzZWQgaW4gV2ViU29ja2V0Q2hhbm5lbC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MDM4CisKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5leHA6CisKIDIwMDktMDktMDIgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFj
bG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFNob3VsZCBjcmFzaCBpZiBKSVQgY29kZSBidWZm
ZXIgYWxsb2NhdGlvbiBmYWlscy4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cCBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCBkNDVh
MjJkLi5hMTY1NjIxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5l
eHAKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0yOTUsNiArMjk1
LDcgQEAgX19aTjNXVEYxMmRldGFjaFRocmVhZEVqCiBfX1pOM1dURjEyaXNNYWluVGhyZWFkRXYK
IF9fWk4zV1RGMTJyYW5kb21OdW1iZXJFdgogX19aTjNXVEYxM2N1cnJlbnRUaHJlYWRFdgorX19a
TjNXVEYxM3RyeUZhc3RNYWxsb2NFbQogX19aTjNXVEYxM3RyeUZhc3RDYWxsb2NFbW0KIF9fWk4z
V1RGMTN0cnlGYXN0TWFsbG9jRW0KIF9fWk4zV1RGMTVUaHJlYWRDb25kaXRpb240d2FpdEVSTlNf
NU11dGV4RQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA3YjlhY2U2Li42MmQ1NzM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDA5LTA5LTAyICBGdW1p
dG9zaGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYlNvY2tldCBBUEkgaW1wbGVtZW50YXRpb24uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODAzOAorICAg
ICAgICAKKyAgICAgICAgQWRkIGJ1aWxkIHN5c3RlbXMgb25seSBmb3IgR05VbWFrZWZpbGUuYW0g
YW5kIFdlYkNvcmUueGNvZGVwcm9qIG5vdy4KKyAgICAgICAgT3RoZXIgYnVpbGQgc3lzdGVtcyB3
aWxsIGJlIHVwZGF0ZWQgb25jZSB0aGUgY29kZSBpcyBmdW5jdGlvbmFsLgorICAgICAgICBUZXN0
cyB3aWxsIGJlIGxhbmRlZCBvbmNlIHRoZSBjb2RlIGlzIGNvbXBsZXRlZCBhbmQgZnVuY3Rpb25h
bC4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01XaW5kb3c6OndlYlNvY2tldCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVu
dFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6
OnRvRXZlbnRUYXJnZXQpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudFRhcmdldDo6dG9XZWJTb2NrZXQpOgorICAgICAgICAqIGRvbS9FdmVu
dFRhcmdldC5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiB3ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2ViU29ja2V0
RXZlbnRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dlYlNvY2tldEV2
ZW50VGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dlYlNvY2tl
dEV2ZW50VGFzazo6UHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzayk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1ZhbGlkUHJvdG9jb2xTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojpj
b25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXQ6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjphZGRFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6cmVtb3ZlRXZlbnRMaXN0ZW5l
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNoRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
OjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNoT3BlbkV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaXNwYXRjaENsb3NlRXZlbnQpOgorICAg
ICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Oik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXQ6OnNldE9ub3Blbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6Om9ub3Blbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNldE9ubWVzc2FnZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Om9ubWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXQ6OnNldE9uY2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
OjpvbmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6dG9XZWJTb2NrZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpldmVudExpc3RlbmVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXQ6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldDo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcDogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmg6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVu
dC5oOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6
IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmg6IEFkZGVk
LgorCiAyMDA5LTA5LTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMuY3BwIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggNzViZThhMy4u
ZGRhMWNiZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTM0Miw2ICszNDIsNyBAQAogI2luY2x1ZGUgIkpT
V2ViS2l0Q1NTTWF0cml4LmNwcCIKICNpbmNsdWRlICJKU1dlYktpdFBvaW50LmNwcCIKICNpbmNs
dWRlICJKU1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAiCisjaW5jbHVkZSAiSlNXZWJTb2NrZXQu
Y3BwIgogI2luY2x1ZGUgIkpTV2hlZWxFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNXb3JrZXIuY3Bw
IgogI2luY2x1ZGUgIkpTV29ya2VyQ29udGV4dC5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBmMjc5M2M1Li4wZWUy
OTRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KQEAgLTMyMzIsNyArMzIzMiwxMiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggXAogCVdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBcCiAJV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgXAotCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBcCisJV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5oIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVu
dC5oIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBcCisJV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCiAKIHdlYmNvcmVndGtfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtRXJyb3Iu
aCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI0MWI2
OGIuLmNkNDM4YTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC04ODYsNiArODg2LDkgQEAKIAkJNTEwRDRBMzYxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tl
dFN0cmVhbUhhbmRsZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRs
ZUJhc2UuY3BwICovOyB9OwogCQk1MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3Ry
ZWFtSGFuZGxlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2Uu
aCAqLzsgfTsKIAkJNTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEwRDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICov
OyB9OworCQk1MTBENEE0RTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEE0NzEw
MzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi87IH07CisJCTUxMEQ0QTRG
MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyog
V2ViU29ja2V0Q2hhbm5lbC5oICovOyB9OworCQk1MTBENEE1MDEwMzE3N0EyMDA0OUVBNTQgLyog
V2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5u
ZWxDbGllbnQuaCAqLzsgfTsKIAkJNTExNkQ5NzcwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNl
RGV0YWlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTExNkQ5NzUwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMUYyMzE3MERDMTYwREEw
MDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYyMzEzMERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0
b3JhZ2VUYXNrLmNwcCAqLzsgfTsKIAkJNTExRjIzMTgwREMxNjBEQTAwNEYwMDMyIC8qIExvY2Fs
U3RvcmFnZVRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMUYyMzE0MERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmggKi87IH07
CkBAIC05NzIsNiArOTc1LDEwIEBACiAJCTUxQUJBRTFCMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2Nr
ZXRTdHJlYW1FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFBQkFFMUExMDNDMThGRjAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUVycm9yLmggKi87
IH07CiAJCTUxQUJBRTFFMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFDMTAz
QzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLzsgfTsKIAkJNTFBQkFFMUYx
MDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFEMTAzQzE5MTMwMDhD
NTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAgKi87IH07CisJCTUxQUJBRTJFMTAz
RDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTJDMTAzRDRGNzUwMDhDNTI2MCAv
KiBXZWJTb2NrZXRIYW5kc2hha2VyLmNwcCAqLzsgfTsKKwkJNTFBQkFFMkYxMDNENEY3NTAwOEM1
MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTJEMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRI
YW5kc2hha2VyLmggKi87IH07CisJCTUxQUJBRTQ0MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFBQkFFNDIxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAg
Ki87IH07CisJCTUxQUJBRTQ1MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTQz
MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCAqLzsgfTsKIAkJNTFCMjQx
N0IwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIyNDE3QTBEOTMxRjNGMDBFODNG
NUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSAqLzsgfTsKIAkJNTFCRTM3RTAwREFFRTAwRTAw
MTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUJFMzdERTBEQUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCAq
LzsgfTsKIAkJNTFDMEFBMzkwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQUEzODBGMkFBMTBB
MDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtNjAzMCw2ICs2MDM3LDkgQEAKIAkJNTEwRDRBMzAxMDMxNjVF
RTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRT
dHJlYW1IYW5kbGVCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tl
dFN0cmVhbUhhbmRsZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRB
MzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdl
YlNvY2tldENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViU29ja2V0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0
QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0Q2hhbm5l
bENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTE2RDk3NTBDRjE3N0JE
MDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERhdGFiYXNlRGV0YWlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTFGMjMxMzBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbFN0b3JhZ2VUYXNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjIzMTQwREMxNjBEQTAwNEYwMDMyIC8qIExvY2Fs
U3RvcmFnZVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxTdG9y
YWdlVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjEyMyw2ICs2MTMzLDEw
IEBACiAJCTUxQUJBRTFBMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTb2NrZXRTdHJlYW1FcnJvci5oOyBwYXRo
ID0gY2YvU29ja2V0U3RyZWFtRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFBQkFFMUMxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTb2NrZXRTdHJlYW1IYW5kbGUuaDsgcGF0aCA9IGNm
L1NvY2tldFN0cmVhbUhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUFC
QUUxRDEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQu
Y3BwOyBwYXRoID0gY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MUFCQUUyQzEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFu
ZHNoYWtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2Nr
ZXRIYW5kc2hha2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFMkQx
MDNENEY3NTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MUFCQUU0MjEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNo
YWtlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldEhh
bmRzaGFrZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUJBRTQzMTA0M0FC
NEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxQjI0MTdBMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5V2ViQXJjaGl2
ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCRTM3REUwREFFRTAwRTAw
MTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0b3JhZ2VBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQzBBQTM4MEYy
QUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWNoZWRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1
ODIsNiArMTA1OTYsMTEgQEAKIAkJNTE4QTM0QkQxMDI2QzgzMTAwMUI2ODk2IC8qIHdlYnNvY2tl
dHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxQUJB
RTQyMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwICovLAorCQkJCTUx
QUJBRTQzMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCAqLywKKwkJCQk1
MTBENEE0NzEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8sCisJCQkJ
NTEwRDRBNDgxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCAqLywKKwkJCQk1
MTBENEE0OTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oICovLAog
CQkJCTUxOEEzNEJFMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJTb2NrZXQuY3BwICovLAogCQkJCTUx
OEEzNEJGMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJTb2NrZXQuaCAqLywKIAkJCQk1MThBMzRDMDEw
MjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmlkbCAqLywKQEAgLTE3NTc5LDYgKzE3NTk4LDkg
QEAKIAkJCQk1MTBENEEzODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUFCQUUxQjEwM0MxOEZGMDA4QzUyNjAgLyogU29j
a2V0U3RyZWFtRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQUJBRTFFMTAzQzE5MTMwMDhD
NTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMEQ0QTRG
MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTBENEE1MDEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTFBQkFFNDUxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhh
bmRzaGFrZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xOTY3Nyw2ICsxOTY5OSw4IEBACiAJCQkJNTEw
RDRBMzMxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MTBENEEzNjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAg
LyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwRDRB
NEUxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTFBQkFFNDQxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAK
aW5kZXggOTQyYjlmZC4uMDAyYzQ3ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKQEAgLTUzLDYgKzUzLDkgQEAKIAogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTTWF0
cml4Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1dlYktpdFBvaW50Q29uc3RydWN0b3IuaCIK
KyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisjaW5jbHVkZSAiSlNXZWJTb2NrZXRDb25zdHJ1Y3Rv
ci5oIgorI2VuZGlmCiAjaW5jbHVkZSAiSlNXb3JrZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
IkpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTWFNMVFByb2Nlc3Nv
ckNvbnN0cnVjdG9yLmgiCkBAIC02NDUsNiArNjQ4LDEzIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6
OnNoYXJlZFdvcmtlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShXRUJfU09DS0VUUykKK0pTVmFsdWUgSlNET01XaW5kb3c6OndlYlNvY2tldChFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTV2ViU29j
a2V0Q29uc3RydWN0b3I+KGV4ZWMsIHRoaXMpOworfQorI2VuZGlmCisKIC8vIEN1c3RvbSBmdW5j
dGlvbnMKIAogLy8gSGVscGVyIGZvciB3aW5kb3cub3BlbigpIGFuZCB3aW5kb3cuc2hvd01vZGFs
RGlhbG9nKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCmluZGV4IGVkODBkODAu
LjA0MjFkMTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5j
cHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcApAQCAtNzgsNiAr
NzgsMTEgQEAKICNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKICNlbmRpZgogCisjaWYgRU5BQkxF
KFdFQl9TT0NLRVRTKQorI2luY2x1ZGUgIkpTV2ViU29ja2V0LmgiCisjaW5jbHVkZSAiV2ViU29j
a2V0LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMTM5LDYgKzE0NCwxMSBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFdmVudFRhcmdldCogdGFyZwogICAgICAg
ICByZXR1cm4gdG9KUyhleGVjLCBub3RpZmljYXRpb24pOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
V0VCX1NPQ0tFVFMpCisgICAgaWYgKFdlYlNvY2tldCogd2ViU29ja2V0ID0gdGFyZ2V0LT50b1dl
YlNvY2tldCgpKQorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCB3ZWJTb2NrZXQpOworI2VuZGlm
CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4ganNOdWxsKCk7CiB9CkBA
IC0xODMsNiArMTkzLDEwIEBAIEV2ZW50VGFyZ2V0KiB0b0V2ZW50VGFyZ2V0KEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKICAgICBDT05WRVJUX1RPX0VWRU5UX1RBUkdFVChOb3RpZmljYXRpb24pCiAjZW5k
aWYKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBDT05WRVJUX1RPX0VWRU5UX1RBUkdF
VChXZWJTb2NrZXQpCisjZW5kaWYKKwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAK
aW5kZXggMmYxM2RhOC4uNjUyNjQ0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtODMsNiArODMsMTMg
QEAgU1ZHRWxlbWVudEluc3RhbmNlKiBFdmVudFRhcmdldDo6dG9TVkdFbGVtZW50SW5zdGFuY2Uo
KQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCitXZWJTb2NrZXQqIEV2ZW50
VGFyZ2V0Ojp0b1dlYlNvY2tldCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogTWVz
c2FnZVBvcnQqIEV2ZW50VGFyZ2V0Ojp0b01lc3NhZ2VQb3J0KCkKIHsKICAgICByZXR1cm4gMDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5oCmluZGV4IDZkM2NiN2MuLjZiY2MzZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0LmgKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtNTEsNiAr
NTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXI7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyQ29u
dGV4dDsKKyAgICBjbGFzcyBXZWJTb2NrZXQ7CiAgICAgY2xhc3MgV29ya2VyOwogICAgIGNsYXNz
IFhNTEh0dHBSZXF1ZXN0OwogICAgIGNsYXNzIFhNTEh0dHBSZXF1ZXN0VXBsb2FkOwpAQCAtNzUs
MTEgKzc2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBXb3JrZXIq
IHRvV29ya2VyKCk7CiAgICAgICAgIHZpcnR1YWwgRGVkaWNhdGVkV29ya2VyQ29udGV4dCogdG9E
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCk7CiAjZW5kaWYKLQogI2lmIEVOQUJMRShTSEFSRURfV09S
S0VSUykKICAgICAgICAgdmlydHVhbCBTaGFyZWRXb3JrZXIqIHRvU2hhcmVkV29ya2VyKCk7CiAg
ICAgICAgIHZpcnR1YWwgU2hhcmVkV29ya2VyQ29udGV4dCogdG9TaGFyZWRXb3JrZXJDb250ZXh0
KCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIHZpcnR1YWwgV2Vi
U29ja2V0KiB0b1dlYlNvY2tldCgpOworI2VuZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKICAgICAgICAgdmlydHVhbCBOb3RpZmljYXRpb24qIHRvTm90aWZpY2F0aW9uKCk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCmluZGV4IDljOWU0ODEuLjAwMmQ5YjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCisrKyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC00ODEsNiAr
NDgxLDEwIEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0pTQ0N1c3RvbUdl
dHRlcl0gU2hhcmVkV29ya2VyQ29uc3RydWN0b3IgU2hhcmVkV29ya2VyOyAvLyBVc2FibGUgd2l0
aCB0aGUgbmV3IG9wZXJhdG9yCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoRU5BQkxFX1dFQl9TT0NL
RVRTKSAmJiBFTkFCTEVfV0VCX1NPQ0tFVFMKKyAgICAgICAgYXR0cmlidXRlIFtKU0NDdXN0b21H
ZXR0ZXJdIFdlYlNvY2tldENvbnN0cnVjdG9yIFdlYlNvY2tldDsgLy8gVXNhYmxlIHdpdGggdGhl
IG5ldyBvcGVyYXRvcgorI2VuZGlmCisKICAgICAgICAgYXR0cmlidXRlIFBsdWdpbkNvbnN0cnVj
dG9yIFBsdWdpbjsKICAgICAgICAgYXR0cmlidXRlIFBsdWdpbkFycmF5Q29uc3RydWN0b3IgUGx1
Z2luQXJyYXk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
IGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggOTk5YzFmZi4uOGY5MGIx
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTM0LDEzICszNCw1OCBAQAogCiAjaW5j
bHVkZSAiV2ViU29ja2V0LmgiCiAKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5o
IgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgor
I2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUHJvY2Vzc1dlYlNvY2tldEV2ZW50
VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIHZvaWQgKFdlYlNvY2tldDo6Kk1ldGhvZCkoRXZlbnQqKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxX
ZWJTb2NrZXQ+IHdlYlNvY2tldCwgTWV0aG9kIG1ldGhvZCwgUGFzc1JlZlB0cjxFdmVudD4gZXZl
bnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFByb2Nlc3NXZWJTb2NrZXRF
dmVudFRhc2sod2ViU29ja2V0LCBtZXRob2QsIGV2ZW50KSk7CisgICAgfQorICAgIHZpcnR1YWwg
dm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAgICB7CisgICAgICAg
IChtX3dlYlNvY2tldC5nZXQoKS0+Km1fbWV0aG9kKShtX2V2ZW50LmdldCgpKTsKKyAgICB9CisK
KyAgcHJpdmF0ZToKKyAgICBQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrKFBhc3NSZWZQdHI8V2Vi
U29ja2V0PiB3ZWJTb2NrZXQsIE1ldGhvZCBtZXRob2QsIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50
KQorICAgICAgICA6IG1fd2ViU29ja2V0KHdlYlNvY2tldCkKKyAgICAgICAgLCBtX21ldGhvZCht
ZXRob2QpCisgICAgICAgICwgbV9ldmVudChldmVudCkgeyB9CisKKyAgICBSZWZQdHI8V2ViU29j
a2V0PiBtX3dlYlNvY2tldDsKKyAgICBNZXRob2QgbV9tZXRob2Q7CisgICAgUmVmUHRyPEV2ZW50
PiBtX2V2ZW50OworfTsKKworc3RhdGljIGJvb2wgaXNWYWxpZFByb3RvY29sU3RyaW5nKGNvbnN0
IFdlYkNvcmU6OlN0cmluZyYgcHJvdG9jb2wpCit7CisgICAgaWYgKHByb3RvY29sLmlzTnVsbCgp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAocHJvdG9jb2wuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBwcm90b2Nv
bC5jaGFyYWN0ZXJzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm90b2NvbC5sZW5n
dGgoKTsgaSsrKSB7CisgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldIDwgMHgyMSB8fCBjaGFyYWN0
ZXJzW2ldID4gMHg3RSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKIFdlYlNvY2tldDo6V2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAs
IG1fc3RhdGUoQ09OTkVDVElORykKQEAgLTU5LDM5ICsxMDQsNDkgQEAgdm9pZCBXZWJTb2NrZXQ6
OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBXZWJT
b2NrZXQ6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBjb25u
ZWN0IHRvICVzIHByb3RvY29sPSVzIiwgdGhpcywgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCks
IHByb3RvY29sLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fdXJsID0gdXJsOwogICAgIG1fcHJvdG9j
b2wgPSBwcm90b2NvbDsKIAogICAgIGlmICghbV91cmwucHJvdG9jb2xJcygid3MiKSAmJiAhbV91
cmwucHJvdG9jb2xJcygid3NzIikpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJFcnJvcjogd3Jvbmcg
dXJsIGZvciBXZWJTb2NrZXQgJXMiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIG1fc3RhdGUgPSBDTE9TRUQ7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fcHJvdG9jb2wuaXNOdWxsKCkgJiYgbV9wcm90b2Nv
bC5pc0VtcHR5KCkpIHsKKyAgICBpZiAoIWlzVmFsaWRQcm90b2NvbFN0cmluZyhtX3Byb3RvY29s
KSkgeworICAgICAgICBMT0dfRVJST1IoIkVycm9yOiB3cm9uZyBwcm90b2NvbCBmb3IgV2ViU29j
a2V0ICVzIiwgbV9wcm90b2NvbC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbV9zdGF0ZSA9IENM
T1NFRDsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIC8vIEZJWE1FOiBDaGVjayBwcm90b2NvbCBpcyB2YWxpZCBmb3JtLgotICAgIC8vIEZJWE1F
OiBDb25uZWN0IFdlYlNvY2tldENoYW5uZWwuCisgICAgLy8gRklYTUU6IGlmIG1fdXJsLnBvcnQo
KSBpcyBibG9ja2luZyBwb3J0LCByYWlzZSBTRUNVUklUWV9FUlIuCisKKyAgICBtX2NoYW5uZWwg
PSBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlz
LCBtX3VybCwgbV9wcm90b2NvbCk7CisgICAgbV9jaGFubmVsLT5jb25uZWN0KCk7CiB9CiAKLWJv
b2wgV2ViU29ja2V0OjpzZW5kKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmIGVjKQorYm9v
bCBXZWJTb2NrZXQ6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKLSAgICBpZiAobV9zdGF0ZSAhPSBPUEVOKSB7CisgICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXQgJXAgc2VuZCAlcyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgaWYg
KG1fc3RhdGUgPT0gQ09OTkVDVElORykgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJS
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIC8vIEZJWE1FOiBzZW5kIG1lc3Nh
Z2Ugb24gV2ViU29ja2V0Q2hhbm5lbC4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gTm8gZXhj
ZXB0aW9uIGlzIHJhaXNlZCBpZiB0aGUgY29ubmVjdGlvbiB3YXMgb25jZSBlc3RhYmxpc2hlZCBi
dXQgaGFzIHN1YnNlcXVlbnRseSBiZWVuIGNsb3NlZC4KKyAgICBpZiAobV9zdGF0ZSA9PSBDTE9T
RUQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBGSVhNRTogY2hlY2sgbWVzc2FnZSBp
cyB2YWxpZCB1dGY4LgorICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQobWVzc2FnZSk7CiB9CiAK
IHZvaWQgV2ViU29ja2V0OjpjbG9zZSgpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQg
JXAgY2xvc2UiLCB0aGlzKTsKICAgICBpZiAobV9zdGF0ZSA9PSBDTE9TRUQpCiAgICAgICAgIHJl
dHVybjsKICAgICBtX3N0YXRlID0gQ0xPU0VEOwotICAgIC8vIEZJWE1FOiBjbG9zZSBXZWJTb2Nr
ZXRDaGFubmVsLgorICAgIG1fY2hhbm5lbC0+Y2xvc2UoKTsKIH0KIAogY29uc3QgS1VSTCYgV2Vi
U29ja2V0Ojp1cmwoKSBjb25zdApAQCAtMTA2LDcgKzE2MSw4IEBAIFdlYlNvY2tldDo6U3RhdGUg
V2ViU29ja2V0OjpyZWFkeVN0YXRlKCkgY29uc3QKIAogdW5zaWduZWQgbG9uZyBXZWJTb2NrZXQ6
OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogYXNrIHBsYXRmb3JtIGNv
ZGUgdG8gZ2V0IGJ1ZmZlcmVkIGFtb3VudCB0byBiZSBzZW50LgorICAgIGlmIChtX3N0YXRlID09
IE9QRU4pCisgICAgICAgIHJldHVybiBtX2NoYW5uZWwtPmJ1ZmZlcmVkQW1vdW50KCk7CiAgICAg
cmV0dXJuIDA7CiB9CiAKQEAgLTExNSw1OCArMTcxLDEyMCBAQCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBXZWJTb2NrZXQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgIHJldHVy
biBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIH0KIAotdm9pZCBX
ZWJTb2NrZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiwgUGFzc1JlZlB0
cjxFdmVudExpc3RlbmVyPiwgYm9vbCkKK3ZvaWQgV2ViU29ja2V0OjphZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGV2ZW50TGlzdGVuZXIsIGJvb2wpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgor
ICAgIEV2ZW50TGlzdGVuZXJzTWFwOjppdGVyYXRvciBpdGVyID0gbV9ldmVudExpc3RlbmVycy5m
aW5kKGV2ZW50VHlwZSk7CisgICAgaWYgKGl0ZXIgPT0gbV9ldmVudExpc3RlbmVycy5lbmQoKSkg
eworICAgICAgICBMaXN0ZW5lclZlY3RvciBsaXN0ZW5lcnM7CisgICAgICAgIGxpc3RlbmVycy5h
cHBlbmQoZXZlbnRMaXN0ZW5lcik7CisgICAgICAgIG1fZXZlbnRMaXN0ZW5lcnMuYWRkKGV2ZW50
VHlwZSwgbGlzdGVuZXJzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBMaXN0ZW5lclZlY3RvciYg
bGlzdGVuZXJzID0gaXRlci0+c2Vjb25kOworICAgICAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjpp
dGVyYXRvciBsaXN0ZW5lckl0ZXIgPSBsaXN0ZW5lcnMuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9
IGxpc3RlbmVycy5lbmQoKTsgKytsaXN0ZW5lckl0ZXIpCisgICAgICAgICAgICBpZiAoKmxpc3Rl
bmVySXRlciA9PSBldmVudExpc3RlbmVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBsaXN0ZW5lcnMuYXBwZW5kKGV2ZW50TGlzdGVuZXIpOworICAgICAgICBtX2V2ZW50TGlz
dGVuZXJzLmFkZChldmVudFR5cGUsIGxpc3RlbmVycyk7CisgICAgfQogfQogCi12b2lkIFdlYlNv
Y2tldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmLCBFdmVudExpc3Rl
bmVyKiwgYm9vbCkKK3ZvaWQgV2ViU29ja2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyLCBib29s
KQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBFdmVudExpc3RlbmVyc01h
cDo6aXRlcmF0b3IgaXRlciA9IG1fZXZlbnRMaXN0ZW5lcnMuZmluZChldmVudFR5cGUpOworICAg
IGlmIChpdGVyID09IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMgPSBpdGVyLT5zZWNvbmQ7CisgICAgZm9yIChM
aXN0ZW5lclZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVuZXJzLmJl
Z2luKCk7IGxpc3RlbmVySXRlciAhPSBsaXN0ZW5lcnMuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKQor
ICAgICAgICBpZiAoKmxpc3RlbmVySXRlciA9PSBldmVudExpc3RlbmVyKSB7CisgICAgICAgICAg
ICBsaXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVySXRlciAtIGxpc3RlbmVycy5iZWdpbigpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogfQogCi1ib29sIFdlYlNvY2tldDo6ZGlzcGF0
Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpCitib29sIFdlYlNvY2tl
dDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldnQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFldnQgfHwgZXZ0LT50eXBlKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGVjID0gRXZl
bnRFeGNlcHRpb246OlVOU1BFQ0lGSUVEX0VWRU5UX1RZUEVfRVJSOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICBMaXN0ZW5lclZlY3RvciBsaXN0ZW5lcnNDb3B5ID0gbV9ldmVu
dExpc3RlbmVycy5nZXQoZXZ0LT50eXBlKCkpOworICAgIGZvciAoTGlzdGVuZXJWZWN0b3I6OmNv
bnN0X2l0ZXJhdG9yIGxpc3RlbmVySXRlciA9IGxpc3RlbmVyc0NvcHkuYmVnaW4oKTsgbGlzdGVu
ZXJJdGVyICE9IGxpc3RlbmVyc0NvcHkuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKSB7CisgICAgICAg
IGV2dC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhp
cyk7CisgICAgICAgIGxpc3RlbmVySXRlci0+Z2V0KCktPmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwg
ZmFsc2UpOworICAgIH0KKyAgICByZXR1cm4gIWV2dC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogfQog
CiB2b2lkIFdlYlNvY2tldDo6ZGlkQ29ubmVjdCgpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXQgJXAgZGlkQ29ubmVjdCIsIHRoaXMpOwogICAgIGlmIChtX3N0YXRlICE9IENPTk5FQ1RJ
TkcpIHsKICAgICAgICAgZGlkQ2xvc2UoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBt
X3N0YXRlID0gT1BFTjsKLSAgICBkaXNwYXRjaE9wZW5FdmVudCgpOworICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soUHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzazo6Y3JlYXRl
KHRoaXMsICZXZWJTb2NrZXQ6OmRpc3BhdGNoT3BlbkV2ZW50LCBFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5vcGVuRXZlbnQsIGZhbHNlLCBmYWxzZSkpKTsKIH0KIAogdm9pZCBXZWJTb2NrZXQ6
OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKQogeworICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0ICVwIGRpZFJlY2VpdmVNZXNzYWdlICVzIiwgdGhpcywgbXNnLnV0ZjgoKS5k
YXRhKCkpOwogICAgIGlmIChtX3N0YXRlICE9IE9QRU4pCiAgICAgICAgIHJldHVybjsKLSAgICBk
aXNwYXRjaE1lc3NhZ2VFdmVudChtc2cpOworICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2dCA9
IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKCk7CisgICAgLy8gRklYTUU6IG9yaWdpbiwgbGFzdEV2ZW50
SWQsIHNvdXJjZSwgbWVzc2FnZVBvcnQuCisgICAgZXZ0LT5pbml0TWVzc2FnZUV2ZW50KGV2ZW50
TmFtZXMoKS5tZXNzYWdlRXZlbnQsIGZhbHNlLCBmYWxzZSwgbXNnLCAiIiwgIiIsIDAsIDApOwor
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soUHJvY2Vzc1dlYlNvY2tldEV2
ZW50VGFzazo6Y3JlYXRlKHRoaXMsICZXZWJTb2NrZXQ6OmRpc3BhdGNoTWVzc2FnZUV2ZW50LCBl
dnQpKTsKIH0KIAogdm9pZCBXZWJTb2NrZXQ6OmRpZENsb3NlKCkKIHsKKyAgICBMT0coTmV0d29y
aywgIldlYlNvY2tldCAlcCBkaWRDbG9zZSIsIHRoaXMpOwogICAgIG1fc3RhdGUgPSBDTE9TRUQ7
Ci0gICAgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5wb3N0VGFzayhQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrOjpjcmVhdGUodGhpcywgJldlYlNv
Y2tldDo6ZGlzcGF0Y2hDbG9zZUV2ZW50LCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbG9z
ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaE9w
ZW5FdmVudCgpCit2b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hPcGVuRXZlbnQoRXZlbnQqIGV2dCkK
IHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisgICAgaWYgKG1fb25vcGVuKSB7Cisg
ICAgICAgIGV2dC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJn
ZXQodGhpcyk7CisgICAgICAgIG1fb25vcGVuLT5oYW5kbGVFdmVudChldnQsIGZhbHNlKTsKKyAg
ICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2dCwg
ZWMpOworICAgIEFTU0VSVCghZWMpOwogfQogCi12b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hNZXNz
YWdlRXZlbnQoY29uc3QgU3RyaW5nJikKK3ZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaE1lc3NhZ2VF
dmVudChFdmVudCogZXZ0KQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBp
ZiAobV9vbm1lc3NhZ2UpIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAg
IGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbm1lc3NhZ2UtPmhhbmRs
ZUV2ZW50KGV2dCwgZmFsc2UpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIGRpc3BhdGNoRXZlbnQoZXZ0LCBlYyk7CisgICAgQVNTRVJUKCFlYyk7CiB9CiAKLXZvaWQg
V2ViU29ja2V0OjpkaXNwYXRjaENsb3NlRXZlbnQoKQordm9pZCBXZWJTb2NrZXQ6OmRpc3BhdGNo
Q2xvc2VFdmVudChFdmVudCogZXZ0KQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4K
KyAgICBpZiAobV9vbmNsb3NlKSB7CisgICAgICAgIGV2dC0+c2V0VGFyZ2V0KHRoaXMpOworICAg
ICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fb25jbG9zZS0+aGFu
ZGxlRXZlbnQoZXZ0LCBmYWxzZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgZGlzcGF0Y2hFdmVudChldnQsIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKIH0KIAogfSAg
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCA0ODVlMmNjLi4y
YmUzNDQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC0zMSw5MyArMzEsMTA0IEBACiAjaWZu
ZGVmIFdlYlNvY2tldF9oCiAjZGVmaW5lIFdlYlNvY2tldF9oCiAKKyNpZiBFTkFCTEUoV0VCX1NP
Q0tFVFMpCisKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJBdG9taWNT
dHJpbmdIYXNoLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxD
bGllbnQuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTdHJpbmc7CisgICAgY2xhc3Mg
U3RyaW5nOworICAgIGNsYXNzIFdlYlNvY2tldENoYW5uZWw7CiAKLWNsYXNzIFdlYlNvY2tldCA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYlNvY2tldD4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGlj
IEFjdGl2ZURPTU9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29j
a2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYlNvY2tldChjb250ZXh0KSk7IH0KLSAgICB2aXJ0dWFsIH5XZWJTb2NrZXQo
KTsKKyAgICBjbGFzcyBXZWJTb2NrZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTb2NrZXQ+LCBw
dWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpOyB9CisgICAgICAgIHZpcnR1YWwg
fldlYlNvY2tldCgpOwogCi0gICAgZW51bSBTdGF0ZSB7Ci0gICAgICAgIENPTk5FQ1RJTkcgPSAw
LAotICAgICAgICBPUEVOID0gMSwKLSAgICAgICAgQ0xPU0VEID0gMgotICAgIH07CisgICAgICAg
IGVudW0gU3RhdGUgeworICAgICAgICAgICAgQ09OTkVDVElORyA9IDAsCisgICAgICAgICAgICBP
UEVOID0gMSwKKyAgICAgICAgICAgIENMT1NFRCA9IDIKKyAgICAgICAgfTsKIAotICAgIHZvaWQg
Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGNvbm5l
Y3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2ws
IEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdm9pZCBjbG9zZSgpOworICAgICAgICB2b2lkIGNs
b3NlKCk7CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKLSAgICBTdGF0ZSByZWFkeVN0
YXRlKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0Owor
ICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKKyAgICAgICAgU3RhdGUgcmVhZHlTdGF0
ZSgpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7
CiAKLSAgICB2b2lkIHNldE9ub3BlbihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlz
dGVuZXIpIHsgbV9vbm9wZW4gPSBldmVudExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciog
b25vcGVuKCkgY29uc3QgeyByZXR1cm4gbV9vbm9wZW4uZ2V0KCk7IH0KLSAgICB2b2lkIHNldE9u
bWVzc2FnZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbm1l
c3NhZ2UgPSBldmVudExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25tZXNzYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9vbm1lc3NhZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIHNldE9uY2xvc2Uo
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25jbG9zZSA9IGV2
ZW50TGlzdGVuZXI7IH0KLSAgICBFdmVudExpc3RlbmVyKiBvbmNsb3NlKCkgY29uc3QgeyByZXR1
cm4gbV9vbmNsb3NlLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0T25vcGVuKFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29ub3BlbiA9IGV2ZW50TGlzdGVuZXI7
IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25vcGVuKCkgY29uc3QgeyByZXR1cm4gbV9vbm9w
ZW4uZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRPbm1lc3NhZ2UoUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25tZXNzYWdlID0gZXZlbnRMaXN0ZW5lcjsgfQor
ICAgICAgICBFdmVudExpc3RlbmVyKiBvbm1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX29ubWVz
c2FnZS5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldE9uY2xvc2UoUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25jbG9zZSA9IGV2ZW50TGlzdGVuZXI7IH0KKyAg
ICAgICAgRXZlbnRMaXN0ZW5lciogb25jbG9zZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25jbG9zZS5n
ZXQoKTsgfQogCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIFdlYlNvY2tldCogdG9X
ZWJTb2NrZXQoKSB7IHJldHVybiB0aGlzOyB9CisgICAgICAgIC8vIEV2ZW50VGFyZ2V0CisgICAg
ICAgIHZpcnR1YWwgV2ViU29ja2V0KiB0b1dlYlNvY2tldCgpIHsgcmV0dXJuIHRoaXM7IH0KIAot
ICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+LCBib29sIHVzZUNhcHR1cmUpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9v
bCB1c2VDYXB0dXJlKTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRy
PEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gPiBMaXN0ZW5lclZlY3RvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFw
PEF0b21pY1N0cmluZywgTGlzdGVuZXJWZWN0b3I+IEV2ZW50TGlzdGVuZXJzTWFwOwogCi0gICAg
Ly8gQWN0aXZlRE9NT2JqZWN0Ci0gICAgLy8gdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0OwotICAgIC8vIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7Ci0gICAg
Ly8gdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKLSAgICAvLyB2aXJ0dWFsIHZvaWQg
c3VzcGVuZCgpOwotICAgIC8vIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKLSAgICAvLyB2aXJ0dWFs
IHZvaWQgc3RvcCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9v
bCB1c2VDYXB0dXJlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNh
cHR1cmUpOworICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2
ZW50PiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICBFdmVudExpc3RlbmVyc01hcCYgZXZlbnRM
aXN0ZW5lcnMoKSB7IHJldHVybiBtX2V2ZW50TGlzdGVuZXJzOyB9CiAKLSAgICB1c2luZyBSZWZD
b3VudGVkPFdlYlNvY2tldD46OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldD46
OmRlcmVmOworICAgICAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICAgICAgLy8gIHZpcnR1YWwg
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lk
IGNvbnRleHREZXN0cm95ZWQoKTsKKyAgICAgICAgLy8gdmlydHVhbCBib29sIGNhblN1c3BlbmQo
KSBjb25zdDsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lkIHN1c3BlbmQoKTsKKyAgICAgICAgLy8g
dmlydHVhbCB2b2lkIHJlc3VtZSgpOworICAgICAgICAvLyB2aXJ0dWFsIHZvaWQgc3RvcCgpOwog
Ci1wcml2YXRlOgotICAgIFdlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAg
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Pjo6cmVmOworICAgICAgICB1c2luZyBSZWZD
b3VudGVkPFdlYlNvY2tldD46OmRlcmVmOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFy
Z2V0KCkgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBk
ZXJlZigpOyB9CisgICAgICAgIC8vIFdlYlNvY2tldENoYW5uZWxDbGllbnQKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZENvbm5lY3QoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3Nl
KCk7CiAKLSAgICAvLyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50Ci0gICAgdm9pZCBkaWRDb25uZWN0
KCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZyk7Ci0gICAg
dm9pZCBkaWRDbG9zZSgpOworICAgIHByaXZhdGU6CisgICAgICAgIFdlYlNvY2tldChTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICB2b2lkIGRpc3BhdGNoT3BlbkV2ZW50KCk7Ci0gICAg
dm9pZCBkaXNwYXRjaE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIG1zZyk7Ci0gICAgdm9pZCBk
aXNwYXRjaENsb3NlRXZlbnQoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0
KCkgeyByZWYoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsg
ZGVyZWYoKTsgfQogCi0gICAgLy8gRklYTUU6IGFkZCBXZWJTb2NrZXRDaGFubmVsLgorICAgICAg
ICB2b2lkIGRpc3BhdGNoT3BlbkV2ZW50KEV2ZW50Kik7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hN
ZXNzYWdlRXZlbnQoRXZlbnQqKTsKKyAgICAgICAgdm9pZCBkaXNwYXRjaENsb3NlRXZlbnQoRXZl
bnQqKTsKIAotICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ub3BlbjsKLSAgICBSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gbV9vbm1lc3NhZ2U7Ci0gICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1f
b25jbG9zZTsKKyAgICAgICAgUmVmUHRyPFdlYlNvY2tldENoYW5uZWw+IG1fY2hhbm5lbDsKIAot
ICAgIFN0YXRlIG1fc3RhdGU7Ci0gICAgS1VSTCBtX3VybDsKLSAgICBTdHJpbmcgbV9wcm90b2Nv
bDsKLX07CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ub3BlbjsKKyAgICAgICAg
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25tZXNzYWdlOworICAgICAgICBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gbV9vbmNsb3NlOworICAgICAgICBFdmVudExpc3RlbmVyc01hcCBtX2V2ZW50TGlz
dGVuZXJzOworCisgICAgICAgIFN0YXRlIG1fc3RhdGU7CisgICAgICAgIEtVUkwgbV91cmw7Cisg
ICAgICAgIFN0cmluZyBtX3Byb3RvY29sOworICAgIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCiAjZW5kaWYgIC8vIFdlYlNv
Y2tldF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg1MmUxMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMCwwICsxLDI0MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRlICJX
ZWJTb2NrZXRDaGFubmVsLmgiCisKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiQ29v
a2llSmFyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKKyNpbmNsdWRlICJTb2NrZXRT
dHJlYW1IYW5kbGUuaCIKKyNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCisjaW5jbHVkZSAiV2ViU29j
a2V0Q2hhbm5lbENsaWVudC5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1dlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCisgICAgOiBtX2NvbnRleHQo
Y29udGV4dCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1faGFuZHNoYWtlKHVybCwg
cHJvdG9jb2wsIGNvbnRleHQpCisgICAgLCBtX2J1ZmZlcigwKQorICAgICwgbV9idWZmZXJTaXpl
KDApCisgICAgLCBtX3VuaGFuZGxlZEJ1ZmZlclNpemUoMCkKK3sKK30KKworV2ViU29ja2V0Q2hh
bm5lbDo6fldlYlNvY2tldENoYW5uZWwoKQoreworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmNvbm5lY3QoKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjb25u
ZWN0IiwgdGhpcyk7CisgICAgQVNTRVJUKCFtX2hhbmRsZS5nZXQoKSk7CisgICAgbV9oYW5kc2hh
a2UucmVzZXQoKTsKKyAgICBtX2hhbmRsZSA9IFNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlKG1f
aGFuZHNoYWtlLnVybCgpLCB0aGlzKTsKK30KKworYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5k
KGNvbnN0IFN0cmluZyYgbXNnKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5l
bCAlcCBzZW5kICVzIiwgdGhpcywgbXNnLnV0ZjgoKS5kYXRhKCkpOworICAgIFZlY3RvcjxjaGFy
PiBidWY7CisgICAgYnVmLmFwcGVuZCgnXDAnKTsgIC8vIGZyYW1lIHR5cGUKKyAgICBidWYuYXBw
ZW5kKG1zZy51dGY4KCkuZGF0YSgpLCBtc2cudXRmOCgpLmxlbmd0aCgpKTsKKyAgICBidWYuYXBw
ZW5kKCdceGZmJyk7ICAvLyBmcmFtZSBlbmQKKyAgICBpZiAoIW1faGFuZGxlLmdldCgpKSB7Cisg
ICAgICAgIG1fdW5oYW5kbGVkQnVmZmVyU2l6ZSArPSBidWYuc2l6ZSgpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBtX2hhbmRsZS0+c2VuZChidWYuZGF0YSgpLCBi
dWYuc2l6ZSgpKTsKK30KKwordW5zaWduZWQgbG9uZyBXZWJTb2NrZXRDaGFubmVsOjpidWZmZXJl
ZEFtb3VudCgpIGNvbnN0Cit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVw
IGJ1ZmZlcmVkQW1vdW50IiwgdGhpcyk7CisgICAgaWYgKCFtX2hhbmRsZS5nZXQoKSkKKyAgICAg
ICAgcmV0dXJuIG1fdW5oYW5kbGVkQnVmZmVyU2l6ZTsKKyAgICByZXR1cm4gbV9oYW5kbGUtPmJ1
ZmZlcmVkQW1vdW50KCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoKQorewor
ICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjbG9zZSIsIHRoaXMpOworICAg
IGlmIChtX2hhbmRsZS5nZXQoKSkKKyAgICAgICAgbV9oYW5kbGUtPmNsb3NlKCk7ICAvLyB3aWxs
IGNhbGwgZGlkQ2xvc2UoKQorfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OndpbGxPcGVuU3Ry
ZWFtKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEtVUkwmKQoreworfQorCit2b2lkIFdlYlNv
Y2tldENoYW5uZWw6OndpbGxTZW5kRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBjaGFy
KiwgaW50KQoreworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZE9wZW4oU29ja2V0U3Ry
ZWFtSGFuZGxlKiBoYW5kbGUpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVs
ICVwIGRpZE9wZW4iLCB0aGlzKTsKKyAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdldCgp
KTsKKyAgICBjb25zdCBDU3RyaW5nJiBoYW5kc2hha2VNZXNzYWdlID0gbV9oYW5kc2hha2UuY2xp
ZW50SGFuZHNoYWtlTWVzc2FnZSgpOworICAgIGlmICghaGFuZGxlLT5zZW5kKGhhbmRzaGFrZU1l
c3NhZ2UuZGF0YSgpLCBoYW5kc2hha2VNZXNzYWdlLmxlbmd0aCgpKSkgeworICAgICAgICBMT0co
TmV0d29yaywgIkVycm9yIGluIHNlbmRpbmcgaGFuZHNoYWtlIG1lc3NhZ2UuIik7CisgICAgICAg
IGhhbmRsZS0+Y2xvc2UoKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlk
Q2xvc2UoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCit7CisgICAgTE9HKE5ldHdvcmssICJX
ZWJTb2NrZXRDaGFubmVsICVwIGRpZENsb3NlIiwgdGhpcyk7CisgICAgQVNTRVJUKGhhbmRsZSA9
PSBtX2hhbmRsZS5nZXQoKSB8fCAhbV9oYW5kbGUuZ2V0KCkpOworICAgIGlmICghbV9oYW5kbGUu
Z2V0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3VuaGFuZGxlZEJ1ZmZlclNpemUgPSBoYW5k
bGUtPmJ1ZmZlcmVkQW1vdW50KCk7CisgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50
ID0gbV9jbGllbnQ7CisgICAgbV9jbGllbnQgPSAwOworICAgIG1faGFuZGxlID0gMDsKKyAgICBj
bGllbnQtPmRpZENsb3NlKCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2
ZURhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBs
ZW4pCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZFJlY2VpdmVE
YXRhICVkIiwgdGhpcywgbGVuKTsKKyAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdldCgp
KTsKKyAgICBpZiAoIWFwcGVuZFRvQnVmZmVyKGRhdGEsIGxlbikpIHsKKyAgICAgICAgaGFuZGxl
LT5jbG9zZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX2hhbmRzaGFrZS5t
b2RlKCkgIT0gV2ViU29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQpIHsKKyAgICAgICAgaW50IGhl
YWRlckxlbmd0aCA9IG1faGFuZHNoYWtlLnJlYWRTZXJ2ZXJIYW5kc2hha2UobV9idWZmZXIuZ2V0
KCksIG1fYnVmZmVyU2l6ZSk7CisgICAgICAgIGlmIChoZWFkZXJMZW5ndGggPD0gMCkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgc3dpdGNoIChtX2hhbmRzaGFrZS5tb2RlKCkpIHsKKyAg
ICAgICAgY2FzZSBXZWJTb2NrZXRIYW5kc2hha2U6OkNvbm5lY3RlZDoKKyAgICAgICAgICAgIGlm
ICghbV9oYW5kc2hha2Uuc2VydmVyU2V0Q29va2llKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKG1fY29udGV4dC0+aXNEb2N1bWVudCgpKSB7CisgICAgICAgICAgICAgICAgICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9jb250ZXh0KTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZXNFbmFibGVkKGRvY3VtZW50KSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5zZXRDb29raWUobV9oYW5kc2hha2Uuc2VydmVy
U2V0Q29va2llKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBoYW5kbGUgc2V0LWNvb2tpZTIuCisgICAgICAgICAgICBMT0coTmV0d29y
aywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVjdGVkIiwgdGhpcyk7CisgICAgICAgICAgICBt
X2NsaWVudC0+ZGlkQ29ubmVjdCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVj
dGlvbiBmYWlsZWQiLCB0aGlzKTsKKyAgICAgICAgICAgIGhhbmRsZS0+Y2xvc2UoKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBza2lwQnVmZmVyKGhlYWRlckxlbmd0
aCk7CisgICAgICAgIGlmICghbV9idWZmZXIuZ2V0KCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIExPRyhOZXR3b3JrLCAicmVtYWluaW5nIGluIHJlYWQgYnVmICV1bCIsIG1fYnVmZmVy
U2l6ZSk7CisgICAgfQorCisgICAgY29uc3QgY2hhciogbmV4dEZyYW1lID0gbV9idWZmZXIuZ2V0
KCk7CisgICAgY29uc3QgY2hhciogcCA9IG1fYnVmZmVyLmdldCgpOworICAgIGNvbnN0IGNoYXIq
IGVuZCA9IHAgKyBtX2J1ZmZlclNpemU7CisgICAgd2hpbGUgKHAgPCBlbmQpIHsKKyAgICAgICAg
dW5zaWduZWQgY2hhciBmcmFtZUJ5dGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqcCsr
KTsKKyAgICAgICAgaWYgKChmcmFtZUJ5dGUgJiAweDgwKSA9PSAweDgwKSB7CisgICAgICAgICAg
ICBpbnQgbGVuZ3RoID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChwIDwgZW5kICYmICgqcCAmIDB4
ODApID09IDB4ODApIHsKKyAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID4gc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ+OjptYXgoKSAvIDEyOCkgeworICAgICAgICAgICAgICAgICAgICBMT0coTmV0
d29yaywgImZyYW1lIGxlbmd0aCBvdmVyZmxvdyAlZCIsIGxlbmd0aCk7CisgICAgICAgICAgICAg
ICAgICAgIGhhbmRsZS0+Y2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGggKiAxMjggKyAq
cCAmIDB4N2Y7CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKHAgKyBsZW5ndGggPCBlbmQpIHsKKyAgICAgICAgICAgICAgICBwICs9IGxlbmd0aDsK
KyAgICAgICAgICAgICAgICBuZXh0RnJhbWUgPSBwOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgY29uc3QgY2hhciogbXNnU3RhcnQgPSBwOworICAgICAgICAg
ICAgd2hpbGUgKHAgPCBlbmQgJiYgKnAgIT0gJ1x4ZmYnKQorICAgICAgICAgICAgICAgICsrcDsK
KyAgICAgICAgICAgIGlmIChwIDwgZW5kICYmICpwID09ICdceGZmJykgeworICAgICAgICAgICAg
ICAgIGlmIChmcmFtZUJ5dGUgPT0gMHgwMCkKKyAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVNZXNzYWdlKFN0cmluZzo6ZnJvbVVURjgobXNnU3RhcnQsIHAgLSBtc2dTdGFy
dCkpOworICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICBuZXh0RnJhbWUgPSBw
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHNraXBCdWZmZXIobmV4dEZy
YW1lIC0gbV9idWZmZXIuZ2V0KCkpOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZEZh
aWwoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJikK
K3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkRmFpbCIsIHRoaXMp
OworICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5kbGUuZ2V0KCkgfHwgIW1faGFuZGxlLmdldCgp
KTsKKyAgICBoYW5kbGUtPmNsb3NlKCk7Cit9CisKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6YXBw
ZW5kVG9CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKK3sKKyAgICBjaGFyKiBuZXdC
dWZmZXIgPSAwOworICAgIGlmICh0cnlGYXN0TWFsbG9jKG1fYnVmZmVyU2l6ZSArIGxlbikuZ2V0
VmFsdWUobmV3QnVmZmVyKSkgeworICAgICAgICBpZiAobV9idWZmZXIuZ2V0KCkpCisgICAgICAg
ICAgICBtZW1jcHkobmV3QnVmZmVyLCBtX2J1ZmZlci5nZXQoKSwgbV9idWZmZXJTaXplKTsKKyAg
ICAgICAgbWVtY3B5KG5ld0J1ZmZlciArIG1fYnVmZmVyU2l6ZSwgZGF0YSwgbGVuKTsKKyAgICAg
ICAgbV9idWZmZXIuc2V0KG5ld0J1ZmZlcik7CisgICAgICAgIG1fYnVmZmVyU2l6ZSArPSBsZW47
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBMT0coTmV0d29yaywgIlRvbyBsb25n
IFdlYlNvY2tldCBmcmFtZSAlZCIsIG1fYnVmZmVyU2l6ZSArIGxlbik7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNraXBCdWZmZXIoaW50IGxlbikKK3sK
KyAgICBBU1NFUlQobGVuIDw9IG1fYnVmZmVyU2l6ZSk7CisgICAgbV9idWZmZXJTaXplIC09IGxl
bjsKKyAgICBpZiAoIW1fYnVmZmVyU2l6ZSkgeworICAgICAgICBtX2J1ZmZlci5zZXQoMCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbWVtbW92ZShtX2J1ZmZlci5nZXQoKSwgbV9idWZm
ZXIuZ2V0KCkgKyBsZW4sIG1fYnVmZmVyU2l6ZSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE4YzE3
OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldENoYW5uZWxfaAorI2RlZmluZSBX
ZWJTb2NrZXRDaGFubmVsX2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUg
IlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFr
ZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OworICAgIGNsYXNzIFN0cmluZzsKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGU7Cisg
ICAgY2xhc3MgU29ja2V0U3RyZWFtRXJyb3I7CisgICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENs
aWVudDsKKworICAgIGNsYXNzIFdlYlNvY2tldENoYW5uZWwgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJTb2NrZXRDaGFubmVsPiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCB7CisgICAg
cHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVu
dCogY2xpZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIHsgcmV0
dXJuIG5ldyBXZWJTb2NrZXRDaGFubmVsKGNvbnRleHQsIGNsaWVudCwgdXJsLCBwcm90b2NvbCk7
IH0KKyAgICAgICAgdmlydHVhbCB+V2ViU29ja2V0Q2hhbm5lbCgpOworCisgICAgICAgIHZpcnR1
YWwgdm9pZCBjb25uZWN0KCk7CisKKyAgICAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3Ry
aW5nJiBtc2cpOworICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQo
KSBjb25zdDsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKKworICAgICAgICB2aXJ0
dWFsIHZvaWQgd2lsbE9wZW5TdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgS1VSTCYp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmREYXRhKFNvY2tldFN0cmVhbUhhbmRsZSos
IGNvbnN0IGNoYXIqLCBpbnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbihTb2NrZXRT
dHJlYW1IYW5kbGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKFNvY2tldFN0cmVh
bUhhbmRsZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoU29ja2V0U3Ry
ZWFtSGFuZGxlKiwgY29uc3QgY2hhciosIGludCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJik7CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYp
OworCisgICAgICAgIGJvb2wgYXBwZW5kVG9CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxl
bik7CisgICAgICAgIHZvaWQgc2tpcEJ1ZmZlcihpbnQgbGVuKTsKKworICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CisgICAgICAgIFdlYlNvY2tldENoYW5uZWxDbGll
bnQqIG1fY2xpZW50OworICAgICAgICBXZWJTb2NrZXRIYW5kc2hha2UgbV9oYW5kc2hha2U7Cisg
ICAgICAgIFJlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IG1faGFuZGxlOworICAgICAgICBPd25Q
dHI8Y2hhcj4gbV9idWZmZXI7CisgICAgICAgIGludCBtX2J1ZmZlclNpemU7CisgICAgICAgIHVu
c2lnbmVkIGxvbmcgbV91bmhhbmRsZWRCdWZmZXJTaXplOworICAgIH07CisKK30gIC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYg
IC8vIFdlYlNvY2tldENoYW5uZWxfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWxDbGllbnQuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzY2FkYQot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xp
ZW50LmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldENoYW5uZWxDbGllbnRfaAor
I2RlZmluZSBXZWJTb2NrZXRDaGFubmVsQ2xpZW50X2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENs
aWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDaGFubmVsQ2xp
ZW50KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDb25uZWN0KCkgeyB9CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKCkgeyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAg
IFdlYlNvY2tldENoYW5uZWxDbGllbnQoKSB7IH0KKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlmICAvLyBX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk2M2YzNAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3Bw
CkBAIC0wLDAgKzEsNDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKKworI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZS5oIgorCisjaW5jbHVkZSAi
QXRvbWljU3RyaW5nLmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkNvb2tpZUph
ci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgor
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVk
ZSAiU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgY2hhciB3
ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hha2VIZWFkZXJbXSA9ICJIVFRQLzEuMSAxMDEgV2ViIFNvY2tl
dCBQcm90b2NvbCBIYW5kc2hha2VcclxuIjsKK2NvbnN0IGNoYXIgd2ViU29ja2V0VXBncmFkZUhl
YWRlcltdID0gIlVwZ3JhZGU6IFdlYlNvY2tldFxyXG4iOworY29uc3QgY2hhciB3ZWJTb2NrZXRD
b25uZWN0aW9uSGVhZGVyW10gPSAiQ29ubmVjdGlvbjogVXBncmFkZVxyXG4iOworCitzdGF0aWMg
U3RyaW5nIGV4dHJhY3RSZXNwb25zZUNvZGUoY29uc3QgY2hhciogaGVhZGVyLCBpbnQgbGVuKQor
eworICAgIGNvbnN0IGNoYXIqIHNwYWNlMSA9IDA7CisgICAgY29uc3QgY2hhciogc3BhY2UyID0g
MDsKKyAgICBjb25zdCBjaGFyKiBwOworICAgIGZvciAocCA9IGhlYWRlcjsgcCAtIGhlYWRlciA8
IGxlbjsgcCsrKSB7CisgICAgICAgIGlmICgqcCA9PSAnICcpIHsKKyAgICAgICAgICAgIGlmICgh
c3BhY2UxKQorICAgICAgICAgICAgICAgIHNwYWNlMSA9IHA7CisgICAgICAgICAgICBlbHNlIGlm
ICghc3BhY2UyKQorICAgICAgICAgICAgICAgIHNwYWNlMiA9IHA7CisgICAgICAgIH0gZWxzZSBp
ZiAoKnAgPT0gJ1xuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAocCAtIGhl
YWRlciA9PSBsZW4pCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBpZiAoIXNwYWNlMSB8
fCAhc3BhY2UyKQorICAgICAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIFN0cmluZyhzcGFjZTEg
KyAxLCBzcGFjZTIgLSBzcGFjZTEgLSAxKTsKK30KKworV2ViU29ja2V0SGFuZHNoYWtlOjpXZWJT
b2NrZXRIYW5kc2hha2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogbV91cmwodXJsKQorICAgICwg
bV9jbGllbnRQcm90b2NvbChwcm90b2NvbCkKKyAgICAsIG1fc2VjdXJlKG1fdXJsLnByb3RvY29s
SXMoIndzcyIpKQorICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX21vZGUoSW5jb21w
bGV0ZSkKK3sKK30KKworV2ViU29ja2V0SGFuZHNoYWtlOjp+V2ViU29ja2V0SGFuZHNoYWtlKCkK
K3sKK30KKworY29uc3QgS1VSTCYgV2ViU29ja2V0SGFuZHNoYWtlOjp1cmwoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3VybDsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFVSTChj
b25zdCBLVVJMJiB1cmwpCit7CisgICAgbV91cmwgPSB1cmwuY29weSgpOworfQorCitjb25zdCBT
dHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpob3N0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91
cmwuaG9zdCgpLmxvd2VyKCk7Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0SGFuZHNoYWtl
OjpjbGllbnRQcm90b2NvbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50UHJvdG9jb2w7
Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRDbGllbnRQcm90b2NvbChjb25zdCBT
dHJpbmcmIHByb3RvY29sKQoreworICAgIG1fY2xpZW50UHJvdG9jb2wgPSBwcm90b2NvbDsKK30K
KworYm9vbCBXZWJTb2NrZXRIYW5kc2hha2U6OnNlY3VyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fc2VjdXJlOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VjdXJlKGJvb2wg
c2VjdXJlKQoreworICAgIG1fc2VjdXJlID0gc2VjdXJlOworfQorCitTdHJpbmcgV2ViU29ja2V0
SGFuZHNoYWtlOjpjbGllbnRPcmlnaW4oKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJTb2NrZXRIYW5k
c2hha2U6OmNsaWVudExvY2F0aW9uKCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgYnVpbGRlci5hcHBlbmQobV9zZWN1cmUgPyAid3NzIiA6ICJ3cyIpOworICAgIGJ1
aWxkZXIuYXBwZW5kKCI6Ly8iKTsKKyAgICBidWlsZGVyLmFwcGVuZChtX3VybC5ob3N0KCkubG93
ZXIoKSk7CisgICAgaWYgKG1fdXJsLnBvcnQoKSkgeworICAgICAgICBpZiAoKCFtX3NlY3VyZSAm
JiBtX3VybC5wb3J0KCkgIT0gODApIHx8IChtX3NlY3VyZSAmJiBtX3VybC5wb3J0KCkgIT0gNDQz
KSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjoiKTsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG1fdXJsLnBvcnQoKSkpOworICAgICAgICB9CisgICAg
fQorICAgIGJ1aWxkZXIuYXBwZW5kKG1fdXJsLnBhdGgoKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKK30KKworQ1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRz
aGFrZU1lc3NhZ2UoKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAg
IGJ1aWxkZXIuYXBwZW5kKCJHRVQgIik7CisgICAgYnVpbGRlci5hcHBlbmQobV91cmwucGF0aCgp
KTsKKyAgICBpZiAoIW1fdXJsLnF1ZXJ5KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCI/Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fdXJsLnF1ZXJ5KCkpOworICAg
IH0KKyAgICBidWlsZGVyLmFwcGVuZCgiIEhUVFAvMS4xXHJcbiIpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKCJVcGdyYWRlOiBXZWJTb2NrZXRcclxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIkNvbm5l
Y3Rpb246IFVwZ3JhZGVcclxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIkhvc3Q6ICIpOworICAg
IGJ1aWxkZXIuYXBwZW5kKG1fdXJsLmhvc3QoKS5sb3dlcigpKTsKKyAgICBpZiAobV91cmwucG9y
dCgpKSB7CisgICAgICAgIGlmICgoIW1fc2VjdXJlICYmIG1fdXJsLnBvcnQoKSAhPSA4MCkgfHwg
KG1fc2VjdXJlICYmIG1fdXJsLnBvcnQoKSAhPSA0NDMpKSB7CisgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiOiIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIo
bV91cmwucG9ydCgpKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoIlxy
XG4iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiT3JpZ2luOiAiKTsKKyAgICBidWlsZGVyLmFwcGVu
ZChjbGllbnRPcmlnaW4oKSk7CisgICAgYnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKKyAgICBpZiAo
IW1fY2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJX
ZWJTb2NrZXQtUHJvdG9jb2w6ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChtX2NsaWVudFBy
b3RvY29sKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKKyAgICB9CisgICAgS1VS
TCB1cmwgPSBodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCk7CisgICAgLy8gRklY
TUU6IHNldCBhdXRoZW50aWNhdGlvbiBpbmZvcm1hdGlvbiBvciBjb29raWVzIGZvciB1cmwuCisg
ICAgLy8gU2V0ICJBdXRob3JpemF0aW9uOiA8Y3JlZGVudGlhbHM+IiBpZiBhdXRoZW50aWNhdGlv
biBpbmZvcm1hdGlvbiBleGlzdHMgZm9yIHVybC4KKyAgICBpZiAobV9jb250ZXh0LT5pc0RvY3Vt
ZW50KCkpIHsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihtX2NvbnRleHQpOworICAgICAgICBTdHJpbmcgY29va2llID0gY29va2llcyhkb2N1bWVu
dCwgdXJsKTsKKyAgICAgICAgaWYgKCFjb29raWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiQ29va2llOiAiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNv
b2tpZSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXHJcbiIpOworICAgICAgICB9Cisg
ICAgICAgIC8vIFNldCAiQ29va2llMjogPGNvb2tpZT4iIGlmIGNvb2tpZXMgMiBleGlzdHMgZm9y
IHVybD8KKyAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKKyAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpLnV0ZjgoKTsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnJl
c2V0KCkKK3sKKyAgICBtX21vZGUgPSBJbmNvbXBsZXRlOworCisgICAgbV93c09yaWdpbiA9IFN0
cmluZygpOworICAgIG1fd3NMb2NhdGlvbiA9IFN0cmluZygpOworICAgIG1fd3NQcm90b2NvbCA9
IFN0cmluZygpOworICAgIG1fc2V0Q29va2llID0gU3RyaW5nKCk7CisgICAgbV9zZXRDb29raWUy
ID0gU3RyaW5nKCk7Cit9CisKK2ludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5k
c2hha2UoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgbGVuKQoreworICAgIG1fbW9kZSA9IElu
Y29tcGxldGU7CisgICAgaWYgKGxlbiA8IHNpemVvZih3ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hha2VI
ZWFkZXIpIC0gMSkgeworICAgICAgICAvLyBKdXN0IGhhc24ndCBiZWVuIHJlY2VpdmVkIGZ1bGx5
IHlldC4KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoIW1lbWNtcChoZWFkZXIs
IHdlYlNvY2tldFNlcnZlckhhbmRzaGFrZUhlYWRlciwgc2l6ZW9mKHdlYlNvY2tldFNlcnZlckhh
bmRzaGFrZUhlYWRlcikgLSAxKSkKKyAgICAgICAgbV9tb2RlID0gTm9ybWFsOworICAgIGVsc2Ug
eworICAgICAgICBjb25zdCBTdHJpbmcmIGNvZGUgPSBleHRyYWN0UmVzcG9uc2VDb2RlKGhlYWRl
ciwgbGVuKTsKKyAgICAgICAgaWYgKGNvZGUuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIExPRyhO
ZXR3b3JrLCAic2hvcnQgc2VydmVyIGhhbmRzaGFrZTogJXMiLCBoZWFkZXIpOworICAgICAgICAg
ICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGlmIChjb2RlLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgTE9HKE5ldHdvcmssICJubyByZXNwb25zZSBjb2RlIGZvdW5kOiAlcyIsIGhl
YWRlcik7CisgICAgICAgICAgICByZXR1cm4gbGVuOworICAgICAgICB9CisgICAgICAgIExPRyhO
ZXR3b3JrLCAicmVzcG9uc2UgY29kZTogJXMiLCBjb2RlLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICBpZiAoY29kZSA9PSAiNDAxIikKKyAgICAgICAgICAgIG1fbW9kZSA9IEF1dGhlbnRpY2F0ZTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBMT0coTmV0d29yaywgIk1pc21hdGNoIHNlcnZl
ciBoYW5kc2hha2U6ICVzIiwgaGVhZGVyKTsKKyAgICAgICAgICAgIHJldHVybiBsZW47CisgICAg
ICAgIH0KKyAgICB9CisgICAgY29uc3QgY2hhciogcCA9IGhlYWRlciArIHNpemVvZih3ZWJTb2Nr
ZXRTZXJ2ZXJIYW5kc2hha2VIZWFkZXIpIC0gMTsKKyAgICBjb25zdCBjaGFyKiBlbmQgPSBoZWFk
ZXIgKyBsZW4gKyAxOworCisgICAgaWYgKG1fbW9kZSA9PSBOb3JtYWwpIHsKKyAgICAgICAgc2l6
ZV90IGhlYWRlclNpemUgPSBlbmQgLSBwOworICAgICAgICBpZiAoaGVhZGVyU2l6ZSA8IHNpemVv
Zih3ZWJTb2NrZXRVcGdyYWRlSGVhZGVyKSAtIDEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgaWYgKG1lbWNtcChwLCB3ZWJTb2NrZXRVcGdyYWRlSGVhZGVyLCBzaXplb2Yod2ViU29j
a2V0VXBncmFkZUhlYWRlcikgLSAxKSkgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJCYWQg
dXBncmFkZSBoZWFkZXI6ICVzIiwgcCk7CisgICAgICAgICAgICByZXR1cm4gcCAtIGhlYWRlciAr
IHNpemVvZih3ZWJTb2NrZXRVcGdyYWRlSGVhZGVyKSAtIDE7CisgICAgICAgIH0KKyAgICAgICAg
cCArPSBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRlcikgLSAxOworCisgICAgICAgIGhlYWRl
clNpemUgPSBlbmQgLSBwOworICAgICAgICBpZiAoaGVhZGVyU2l6ZSA8IHNpemVvZih3ZWJTb2Nr
ZXRDb25uZWN0aW9uSGVhZGVyKSAtIDEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAg
IGlmIChtZW1jbXAocCwgd2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlciwgc2l6ZW9mKHdlYlNvY2tl
dENvbm5lY3Rpb25IZWFkZXIpIC0gMSkpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiQmFk
IGNvbm5lY3Rpb24gaGVhZGVyOiAlcyIsIHApOworICAgICAgICAgICAgcmV0dXJuIHAgLSBoZWFk
ZXIgKyBzaXplb2Yod2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlcikgLSAxOworICAgICAgICB9Cisg
ICAgICAgIHAgKz0gc2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXIpIC0gMTsKKyAgICB9
CisKKyAgICBpZiAoIXN0cm5zdHIocCwgIlxyXG5cclxuIiwgZW5kIC0gcCkpIHsKKyAgICAgICAg
Ly8gSnVzdCBoYXNuJ3QgYmVlbiByZWNlaXZlZCBmdWxseSB5ZXQuCisgICAgICAgIHJldHVybiAt
MTsKKyAgICB9CisgICAgSFRUUEhlYWRlck1hcCBoZWFkZXJzOworICAgIHAgPSByZWFkSFRUUEhl
YWRlcnMocCwgZW5kLCAmaGVhZGVycyk7CisgICAgaWYgKCFwKSB7CisgICAgICAgIExPRyhOZXR3
b3JrLCAicmVhZEhUVFBIZWFkZXJzIGZhaWxlZCIpOworICAgICAgICBtX21vZGUgPSBGYWlsZWQ7
CisgICAgICAgIHJldHVybiBsZW47CisgICAgfQorICAgIGlmICghcHJvY2Vzc0hlYWRlcnMoaGVh
ZGVycykpIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJoZWFkZXIgcHJvY2VzcyBmYWlsZWQiKTsK
KyAgICAgICAgbV9tb2RlID0gRmFpbGVkOworICAgICAgICByZXR1cm4gcCAtIGhlYWRlcjsKKyAg
ICB9CisgICAgc3dpdGNoIChtX21vZGUpIHsKKyAgICBjYXNlIE5vcm1hbDoKKyAgICAgICAgY2hl
Y2tSZXNwb25zZUhlYWRlcnMoKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgbV9tb2RlID0gRmFpbGVkOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHAg
LSBoZWFkZXI7Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZTo6TW9kZSBXZWJTb2NrZXRIYW5kc2hh
a2U6Om1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX21vZGU7Cit9CisKK2NvbnN0IFN0cmlu
ZyYgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oKSBjb25zdAorewor
ICAgIHJldHVybiBtX3dzT3JpZ2luOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0
U2VydmVyV2ViU29ja2V0T3JpZ2luKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0T3JpZ2luKQorewor
ICAgIG1fd3NPcmlnaW4gPSB3ZWJTb2NrZXRPcmlnaW47Cit9CisKK2NvbnN0IFN0cmluZyYgV2Vi
U29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJXZWJTb2NrZXRMb2NhdGlvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fd3NMb2NhdGlvbjsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFNl
cnZlcldlYlNvY2tldExvY2F0aW9uKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0TG9jYXRpb24pCit7
CisgICAgbV93c0xvY2F0aW9uID0gd2ViU29ja2V0TG9jYXRpb247Cit9CisKK2NvbnN0IFN0cmlu
ZyYgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fd3NQcm90b2NvbDsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6
OnNldFNlcnZlcldlYlNvY2tldFByb3RvY29sKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0UHJvdG9j
b2wpCit7CisgICAgbV93c1Byb3RvY29sID0gd2ViU29ja2V0UHJvdG9jb2w7Cit9CisKK2NvbnN0
IFN0cmluZyYgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJTZXRDb29raWUoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3NldENvb2tpZTsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNl
dFNlcnZlclNldENvb2tpZShjb25zdCBTdHJpbmcmIHNldENvb2tpZSkKK3sKKyAgICBtX3NldENv
b2tpZSA9IHNldENvb2tpZTsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6
OnNlcnZlclNldENvb2tpZTIoKSBjb25zdAoreworICAgIHJldHVybiBtX3NldENvb2tpZTI7Cit9
CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJTZXRDb29raWUyKGNvbnN0IFN0
cmluZyYgc2V0Q29va2llMikKK3sKKyAgICBtX3NldENvb2tpZTIgPSBzZXRDb29raWUyOworfQor
CitLVVJMIFdlYlNvY2tldEhhbmRzaGFrZTo6aHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29v
a2llcygpIGNvbnN0Cit7CisgICAgS1VSTCB1cmwgPSBtX3VybC5jb3B5KCk7CisgICAgdXJsLnNl
dFByb3RvY29sKG1fc2VjdXJlID8gImh0dHBzIiA6ICJodHRwIik7CisgICAgcmV0dXJuIHVybDsK
K30KKworY29uc3QgY2hhciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMoY29u
c3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCwgSFRUUEhlYWRlck1hcCogaGVhZGVycykK
K3sKKyAgICBWZWN0b3I8Y2hhcj4gbmFtZTsKKyAgICBWZWN0b3I8Y2hhcj4gdmFsdWU7CisgICAg
Zm9yIChjb25zdCBjaGFyKiBwID0gc3RhcnQ7IHAgPCBlbmQ7IHArKykgeworICAgICAgICBuYW1l
LmNsZWFyKCk7CisgICAgICAgIHZhbHVlLmNsZWFyKCk7CisKKyAgICAgICAgZm9yICg7IHAgPCBl
bmQ7IHArKykgeworICAgICAgICAgICAgc3dpdGNoICgqcCkgeworICAgICAgICAgICAgY2FzZSAn
XHInOgorICAgICAgICAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAocCArIDEgPCBlbmQgJiYgKihwICsgMSkgPT0gJ1xuJykKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBwICsgMjsKKyAgICAgICAgICAgICAgICAgICAgTE9HKE5ldHdv
cmssICJDUiBkb2Vzbid0IGZvbGxvdyBMRiBwPSVwIGVuZD0lcCIsIHAsIGVuZCk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBMT0coTmV0d29yaywgIlVuZXhwZWN0ZWQgQ1IgaW4gbmFtZSIpOworICAgICAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICAgICAgY2FzZSAnXG4nOgorICAgICAgICAgICAgICAgIExPRyhO
ZXR3b3JrLCAiVW5leHBlY3RlZCBMRiBpbiBuYW1lIik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgICAgICBjYXNlICc6JzoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgaWYgKCpwID49IDB4NDEgJiYgKnAgPD0g
MHg1YSkKKyAgICAgICAgICAgICAgICAgICAgbmFtZS5hcHBlbmQoKnAgKyAweDIwKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5hbWUuYXBwZW5kKCpwKTsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgq
cCA9PSAnOicpIHsKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3IgKDsgcCA8IGVuZCAmJiAq
cCA9PSAweDIwOyBwKyspIHsgfQorCisgICAgICAgIGZvciAoOyBwIDwgZW5kOyBwKyspIHsKKyAg
ICAgICAgICAgIHN3aXRjaCAoKnApIHsKKyAgICAgICAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ1xuJzoKKyAgICAgICAgICAgICAgICBM
T0coTmV0d29yaywgIlVuZXhwZWN0ZWQgTEYgaW4gdmFsdWUiKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdmFsdWUuYXBw
ZW5kKCpwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgqcCA9PSAnXHInKSB7Cisg
ICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGlmIChwID49IGVuZCB8fCAqcCAhPSAnXG4nKSB7CisgICAg
ICAgICAgICBMT0coTmV0d29yaywgIkNSIGRvZXNuJ3QgZm9sbG93IExGIGFmdGVyIHZhbHVlIHA9
JXAgZW5kPSVwIiwgcCwgZW5kKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9Cisg
ICAgICAgIEF0b21pY1N0cmluZyBuYW1lU3RyKFN0cmluZzo6ZnJvbVVURjgobmFtZS5kYXRhKCks
IG5hbWUuc2l6ZSgpKSk7CisgICAgICAgIFN0cmluZyB2YWx1ZVN0ciA9IFN0cmluZzo6ZnJvbVVU
RjgodmFsdWUuZGF0YSgpLCB2YWx1ZS5zaXplKCkpOworICAgICAgICBMT0coTmV0d29yaywgIm5h
bWU9JXMgdmFsdWU9JXMiLCBuYW1lU3RyLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHZhbHVlU3Ry
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBoZWFkZXJzLT5hZGQobmFtZVN0ciwgdmFsdWVTdHIp
OworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKwor
Ym9vbCBXZWJTb2NrZXRIYW5kc2hha2U6OnByb2Nlc3NIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJN
YXAmIGhlYWRlcnMpCit7CisgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IGhlYWRlcnMuYmVnaW4oKTsgaXQgIT0gaGVhZGVycy5lbmQoKTsgKytpdCkgeworICAgICAg
ICBzd2l0Y2ggKG1fbW9kZSkgeworICAgICAgICBjYXNlIE5vcm1hbDoKKyAgICAgICAgICAgIGlm
IChpdC0+Zmlyc3QgPT0gIndlYnNvY2tldC1vcmlnaW4iKQorICAgICAgICAgICAgICAgIG1fd3NP
cmlnaW4gPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJ3
ZWJzb2NrZXQtbG9jYXRpb24iKQorICAgICAgICAgICAgICAgIG1fd3NMb2NhdGlvbiA9IGl0LT5z
ZWNvbmQ7CisgICAgICAgICAgICBlbHNlIGlmIChpdC0+Zmlyc3QgPT0gIndlYnNvY2tldC1wcm90
b2NvbCIpCisgICAgICAgICAgICAgICAgbV93c1Byb3RvY29sID0gaXQtPnNlY29uZDsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGl0LT5maXJzdCA9PSAic2V0LWNvb2tpZSIpCisgICAgICAgICAgICAg
ICAgbV9zZXRDb29raWUgPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgZWxzZSBpZiAoaXQtPmZp
cnN0ID09ICJzZXQtY29va2llMiIpCisgICAgICAgICAgICAgICAgbV9zZXRDb29raWUyID0gaXQt
PnNlY29uZDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjYXNlIEluY29tcGxldGU6
CisgICAgICAgIGNhc2UgRmFpbGVkOgorICAgICAgICBjYXNlIENvbm5lY3RlZDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJTb2NrZXRI
YW5kc2hha2U6OmNoZWNrUmVzcG9uc2VIZWFkZXJzKCkKK3sKKyAgICBBU1NFUlQobV9tb2RlID09
IE5vcm1hbCk7CisgICAgbV9tb2RlID0gRmFpbGVkOworICAgIGlmIChtX3dzT3JpZ2luLmlzTnVs
bCgpIHx8IG1fd3NMb2NhdGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KGNsaWVudE9yaWdpbigpICE9IG1fd3NPcmlnaW4pIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJN
aXNtYXRjaCBvcmlnaW46ICVzICE9ICVzIiwgY2xpZW50T3JpZ2luKCkudXRmOCgpLmRhdGEoKSwg
bV93c09yaWdpbi51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
ZiAoY2xpZW50TG9jYXRpb24oKSAhPSBtX3dzTG9jYXRpb24pIHsKKyAgICAgICAgTE9HKE5ldHdv
cmssICJNaXNtYXRjaCBsb2NhdGlvbjogJXMgIT0gJXMiLCBjbGllbnRMb2NhdGlvbigpLnV0Zjgo
KS5kYXRhKCksIG1fd3NMb2NhdGlvbi51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpZiAoIW1fY2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpICYmIG1fY2xpZW50UHJv
dG9jb2wgIT0gbV93c1Byb3RvY29sKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiTWlzbWF0Y2gg
cHJvdG9jb2w6ICVzICE9ICVzIiwgbV9jbGllbnRQcm90b2NvbC51dGY4KCkuZGF0YSgpLCBtX3dz
UHJvdG9jb2wudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9t
b2RlID0gQ29ubmVjdGVkOworICAgIHJldHVybjsKK30KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVl
MDdiZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuaApAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldEhhbmRzaGFrZV9oCisj
ZGVmaW5lIFdlYlNvY2tldEhhbmRzaGFrZV9oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisK
KyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBjbGFzcyBIVFRQSGVhZGVyTWFwOworCisgICAg
Y2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIGVudW0gTW9kZSB7CisgICAgICAgICAgICBJbmNvbXBsZXRlLCBOb3JtYWws
IEZhaWxlZCwgQ29ubmVjdGVkCisgICAgICAgIH07CisgICAgICAgIFdlYlNvY2tldEhhbmRzaGFr
ZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOworICAgICAgICB+V2ViU29ja2V0SGFuZHNoYWtlKCk7CisKKyAgICAgICAgY29uc3Qg
S1VSTCYgdXJsKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0VVJMKGNvbnN0IEtVUkwmKTsKKyAg
ICAgICAgY29uc3QgU3RyaW5nIGhvc3QoKSBjb25zdDsKKworICAgICAgICBjb25zdCBTdHJpbmcm
IGNsaWVudFByb3RvY29sKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0Q2xpZW50UHJvdG9jb2wo
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CisKKyAgICAgICAgYm9vbCBzZWN1cmUoKSBjb25zdDsK
KyAgICAgICAgdm9pZCBzZXRTZWN1cmUoYm9vbCBzZWN1cmUpOworCisgICAgICAgIFN0cmluZyBj
bGllbnRPcmlnaW4oKSBjb25zdDsKKyAgICAgICAgU3RyaW5nIGNsaWVudExvY2F0aW9uKCkgY29u
c3Q7CisKKyAgICAgICAgQ1N0cmluZyBjbGllbnRIYW5kc2hha2VNZXNzYWdlKCkgY29uc3Q7CisK
KyAgICAgICAgdm9pZCByZXNldCgpOworCisgICAgICAgIGludCByZWFkU2VydmVySGFuZHNoYWtl
KGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbik7CisgICAgICAgIE1vZGUgbW9kZSgpIGNv
bnN0OworCisgICAgICAgIGNvbnN0IFN0cmluZyYgc2VydmVyV2ViU29ja2V0T3JpZ2luKCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0U2VydmVyV2ViU29ja2V0T3JpZ2luKGNvbnN0IFN0cmluZyYg
d2ViU29ja2V0T3JpZ2luKTsKKworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZlcldlYlNvY2tl
dExvY2F0aW9uKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2VydmVyV2ViU29ja2V0TG9jYXRp
b24oY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRMb2NhdGlvbik7CisKKyAgICAgICAgY29uc3QgU3Ry
aW5nJiBzZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNl
cnZlcldlYlNvY2tldFByb3RvY29sKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0UHJvdG9jb2wpOwor
CisgICAgICAgIGNvbnN0IFN0cmluZyYgc2VydmVyU2V0Q29va2llKCkgY29uc3Q7CisgICAgICAg
IHZvaWQgc2V0U2VydmVyU2V0Q29va2llKGNvbnN0IFN0cmluZyYgc2V0Q29va2llKTsKKyAgICAg
ICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJTZXRDb29raWUyKCkgY29uc3Q7CisgICAgICAgIHZvaWQg
c2V0U2VydmVyU2V0Q29va2llMihjb25zdCBTdHJpbmcmIHNldENvb2tpZTIpOworCisgICAgICAg
IGNvbnN0IFN0cmluZyYgd3d3QXV0aGVudGljYXRlKCkgY29uc3Q7CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBLVVJMIGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdDsK
KworICAgICAgICAvLyBSZWFkcyBhbGwgaGVhZGVycyBleGNlcHQgZm9yIHRoZSB0d28gcHJlZGVm
aW5lZCBvbmVzLgorICAgICAgICBjb25zdCBjaGFyKiByZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hh
ciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCwgSFRUUEhlYWRlck1hcCogaGVhZGVycyk7CisgICAg
ICAgIGJvb2wgcHJvY2Vzc0hlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycyk7Cisg
ICAgICAgIHZvaWQgY2hlY2tSZXNwb25zZUhlYWRlcnMoKTsKKworICAgICAgICBLVVJMIG1fdXJs
OworICAgICAgICBTdHJpbmcgbV9jbGllbnRQcm90b2NvbDsKKyAgICAgICAgYm9vbCBtX3NlY3Vy
ZTsKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OworCisgICAgICAg
IE1vZGUgbV9tb2RlOworCisgICAgICAgIFN0cmluZyBtX3dzT3JpZ2luOworICAgICAgICBTdHJp
bmcgbV93c0xvY2F0aW9uOworICAgICAgICBTdHJpbmcgbV93c1Byb3RvY29sOworICAgICAgICBT
dHJpbmcgbV9zZXRDb29raWU7CisgICAgICAgIFN0cmluZyBtX3NldENvb2tpZTI7CisgICAgfTsK
KworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tF
VFMpCisKKyNlbmRpZiAgLy8gV2ViU29ja2V0SGFuZHNoYWtlX2g=
</data>
<flag name="review"
          id="19966"
          type_id="1"
          status="-"
          setter="ukai"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38963</attachid>
            <date>2009-09-02 19:25:32 -0700</date>
            <delta_ts>2009-09-04 08:04:58 -0700</delta_ts>
            <desc>WebSocket API implementation</desc>
            <filename>bug-28038-20090903112530.patch</filename>
            <type>text/plain</type>
            <size>65129</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAwMzY4OGJlLi5hYjZlZWJlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMDktMDktMDIgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IFdURjo6
dHJ5RmFzdE1hbGxvYygpIHVzZWQgaW4gV2ViU29ja2V0Q2hhbm5lbC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MDM4CisKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS5leHA6CisKIDIwMDktMDktMDIgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFj
bG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFNob3VsZCBjcmFzaCBpZiBKSVQgY29kZSBidWZm
ZXIgYWxsb2NhdGlvbiBmYWlscy4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cCBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCBkNDVh
MjJkLi5hMTY1NjIxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5l
eHAKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0yOTUsNiArMjk1
LDcgQEAgX19aTjNXVEYxMmRldGFjaFRocmVhZEVqCiBfX1pOM1dURjEyaXNNYWluVGhyZWFkRXYK
IF9fWk4zV1RGMTJyYW5kb21OdW1iZXJFdgogX19aTjNXVEYxM2N1cnJlbnRUaHJlYWRFdgorX19a
TjNXVEYxM3RyeUZhc3RNYWxsb2NFbQogX19aTjNXVEYxM3RyeUZhc3RDYWxsb2NFbW0KIF9fWk4z
V1RGMTN0cnlGYXN0TWFsbG9jRW0KIF9fWk4zV1RGMTVUaHJlYWRDb25kaXRpb240d2FpdEVSTlNf
NU11dGV4RQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA3YjlhY2U2Li42MmQ1NzM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDA5LTA5LTAyICBGdW1p
dG9zaGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYlNvY2tldCBBUEkgaW1wbGVtZW50YXRpb24uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODAzOAorICAg
ICAgICAKKyAgICAgICAgQWRkIGJ1aWxkIHN5c3RlbXMgb25seSBmb3IgR05VbWFrZWZpbGUuYW0g
YW5kIFdlYkNvcmUueGNvZGVwcm9qIG5vdy4KKyAgICAgICAgT3RoZXIgYnVpbGQgc3lzdGVtcyB3
aWxsIGJlIHVwZGF0ZWQgb25jZSB0aGUgY29kZSBpcyBmdW5jdGlvbmFsLgorICAgICAgICBUZXN0
cyB3aWxsIGJlIGxhbmRlZCBvbmNlIHRoZSBjb2RlIGlzIGNvbXBsZXRlZCBhbmQgZnVuY3Rpb25h
bC4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01XaW5kb3c6OndlYlNvY2tldCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVu
dFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6
OnRvRXZlbnRUYXJnZXQpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudFRhcmdldDo6dG9XZWJTb2NrZXQpOgorICAgICAgICAqIGRvbS9FdmVu
dFRhcmdldC5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiB3ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2ViU29ja2V0
RXZlbnRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dlYlNvY2tldEV2
ZW50VGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dlYlNvY2tl
dEV2ZW50VGFzazo6UHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzayk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1ZhbGlkUHJvdG9jb2xTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojpj
b25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXQ6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjphZGRFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6cmVtb3ZlRXZlbnRMaXN0ZW5l
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNoRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
OjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNoT3BlbkV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaXNwYXRjaENsb3NlRXZlbnQpOgorICAg
ICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Oik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXQ6OnNldE9ub3Blbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6Om9ub3Blbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNldE9ubWVzc2FnZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Om9ubWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXQ6OnNldE9uY2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
OjpvbmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6dG9XZWJTb2NrZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpldmVudExpc3RlbmVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXQ6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldDo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcDogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmg6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVu
dC5oOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6
IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmg6IEFkZGVk
LgorCiAyMDA5LTA5LTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMuY3BwIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggNzViZThhMy4u
ZGRhMWNiZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTM0Miw2ICszNDIsNyBAQAogI2luY2x1ZGUgIkpT
V2ViS2l0Q1NTTWF0cml4LmNwcCIKICNpbmNsdWRlICJKU1dlYktpdFBvaW50LmNwcCIKICNpbmNs
dWRlICJKU1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAiCisjaW5jbHVkZSAiSlNXZWJTb2NrZXQu
Y3BwIgogI2luY2x1ZGUgIkpTV2hlZWxFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNXb3JrZXIuY3Bw
IgogI2luY2x1ZGUgIkpTV29ya2VyQ29udGV4dC5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBmMjc5M2M1Li4wZWUy
OTRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KQEAgLTMyMzIsNyArMzIzMiwxMiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggXAogCVdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBcCiAJV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgXAotCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBcCisJV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5oIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVu
dC5oIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBcCisJV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCiAKIHdlYmNvcmVndGtfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtRXJyb3Iu
aCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI0MWI2
OGIuLmNkNDM4YTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC04ODYsNiArODg2LDkgQEAKIAkJNTEwRDRBMzYxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tl
dFN0cmVhbUhhbmRsZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRs
ZUJhc2UuY3BwICovOyB9OwogCQk1MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3Ry
ZWFtSGFuZGxlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2Uu
aCAqLzsgfTsKIAkJNTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEwRDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICov
OyB9OworCQk1MTBENEE0RTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEE0NzEw
MzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi87IH07CisJCTUxMEQ0QTRG
MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyog
V2ViU29ja2V0Q2hhbm5lbC5oICovOyB9OworCQk1MTBENEE1MDEwMzE3N0EyMDA0OUVBNTQgLyog
V2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5u
ZWxDbGllbnQuaCAqLzsgfTsKIAkJNTExNkQ5NzcwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNl
RGV0YWlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTExNkQ5NzUwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMUYyMzE3MERDMTYwREEw
MDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYyMzEzMERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0
b3JhZ2VUYXNrLmNwcCAqLzsgfTsKIAkJNTExRjIzMTgwREMxNjBEQTAwNEYwMDMyIC8qIExvY2Fs
U3RvcmFnZVRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMUYyMzE0MERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmggKi87IH07
CkBAIC05NzIsNiArOTc1LDEwIEBACiAJCTUxQUJBRTFCMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2Nr
ZXRTdHJlYW1FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFBQkFFMUExMDNDMThGRjAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUVycm9yLmggKi87
IH07CiAJCTUxQUJBRTFFMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFDMTAz
QzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLzsgfTsKIAkJNTFBQkFFMUYx
MDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFEMTAzQzE5MTMwMDhD
NTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAgKi87IH07CisJCTUxQUJBRTJFMTAz
RDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTJDMTAzRDRGNzUwMDhDNTI2MCAv
KiBXZWJTb2NrZXRIYW5kc2hha2VyLmNwcCAqLzsgfTsKKwkJNTFBQkFFMkYxMDNENEY3NTAwOEM1
MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTJEMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRI
YW5kc2hha2VyLmggKi87IH07CisJCTUxQUJBRTQ0MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFBQkFFNDIxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAg
Ki87IH07CisJCTUxQUJBRTQ1MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTQz
MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCAqLzsgfTsKIAkJNTFCMjQx
N0IwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIyNDE3QTBEOTMxRjNGMDBFODNG
NUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSAqLzsgfTsKIAkJNTFCRTM3RTAwREFFRTAwRTAw
MTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUJFMzdERTBEQUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCAq
LzsgfTsKIAkJNTFDMEFBMzkwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQUEzODBGMkFBMTBB
MDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtNjAzMCw2ICs2MDM3LDkgQEAKIAkJNTEwRDRBMzAxMDMxNjVF
RTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRT
dHJlYW1IYW5kbGVCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tl
dFN0cmVhbUhhbmRsZUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRB
MzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdl
YlNvY2tldENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViU29ja2V0Q2hhbm5lbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0
QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0Q2hhbm5l
bENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTE2RDk3NTBDRjE3N0JE
MDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERhdGFiYXNlRGV0YWlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTFGMjMxMzBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbFN0b3JhZ2VUYXNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjIzMTQwREMxNjBEQTAwNEYwMDMyIC8qIExvY2Fs
U3RvcmFnZVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxTdG9y
YWdlVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjEyMyw2ICs2MTMzLDEw
IEBACiAJCTUxQUJBRTFBMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTb2NrZXRTdHJlYW1FcnJvci5oOyBwYXRo
ID0gY2YvU29ja2V0U3RyZWFtRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFBQkFFMUMxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTb2NrZXRTdHJlYW1IYW5kbGUuaDsgcGF0aCA9IGNm
L1NvY2tldFN0cmVhbUhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUFC
QUUxRDEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQu
Y3BwOyBwYXRoID0gY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MUFCQUUyQzEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFu
ZHNoYWtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2Nr
ZXRIYW5kc2hha2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFMkQx
MDNENEY3NTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MUFCQUU0MjEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNo
YWtlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldEhh
bmRzaGFrZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUJBRTQzMTA0M0FC
NEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxQjI0MTdBMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5V2ViQXJjaGl2
ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCRTM3REUwREFFRTAwRTAw
MTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0b3JhZ2VBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQzBBQTM4MEYy
QUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWNoZWRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1
ODIsNiArMTA1OTYsMTEgQEAKIAkJNTE4QTM0QkQxMDI2QzgzMTAwMUI2ODk2IC8qIHdlYnNvY2tl
dHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxQUJB
RTQyMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwICovLAorCQkJCTUx
QUJBRTQzMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCAqLywKKwkJCQk1
MTBENEE0NzEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8sCisJCQkJ
NTEwRDRBNDgxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCAqLywKKwkJCQk1
MTBENEE0OTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oICovLAog
CQkJCTUxOEEzNEJFMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJTb2NrZXQuY3BwICovLAogCQkJCTUx
OEEzNEJGMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJTb2NrZXQuaCAqLywKIAkJCQk1MThBMzRDMDEw
MjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmlkbCAqLywKQEAgLTE3NTc5LDYgKzE3NTk4LDkg
QEAKIAkJCQk1MTBENEEzODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUFCQUUxQjEwM0MxOEZGMDA4QzUyNjAgLyogU29j
a2V0U3RyZWFtRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQUJBRTFFMTAzQzE5MTMwMDhD
NTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMEQ0QTRG
MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTBENEE1MDEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTFBQkFFNDUxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhh
bmRzaGFrZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xOTY3Nyw2ICsxOTY5OSw4IEBACiAJCQkJNTEw
RDRBMzMxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MTBENEEzNjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAg
LyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwRDRB
NEUxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTFBQkFFNDQxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAK
aW5kZXggOTQyYjlmZC4uMDAyYzQ3ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAKQEAgLTUzLDYgKzUzLDkgQEAKIAogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTTWF0
cml4Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1dlYktpdFBvaW50Q29uc3RydWN0b3IuaCIK
KyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisjaW5jbHVkZSAiSlNXZWJTb2NrZXRDb25zdHJ1Y3Rv
ci5oIgorI2VuZGlmCiAjaW5jbHVkZSAiSlNXb3JrZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
IkpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTWFNMVFByb2Nlc3Nv
ckNvbnN0cnVjdG9yLmgiCkBAIC02NDUsNiArNjQ4LDEzIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6
OnNoYXJlZFdvcmtlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShXRUJfU09DS0VUUykKK0pTVmFsdWUgSlNET01XaW5kb3c6OndlYlNvY2tldChFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTV2ViU29j
a2V0Q29uc3RydWN0b3I+KGV4ZWMsIHRoaXMpOworfQorI2VuZGlmCisKIC8vIEN1c3RvbSBmdW5j
dGlvbnMKIAogLy8gSGVscGVyIGZvciB3aW5kb3cub3BlbigpIGFuZCB3aW5kb3cuc2hvd01vZGFs
RGlhbG9nKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCmluZGV4IGVkODBkODAu
LjA0MjFkMTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5j
cHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcApAQCAtNzgsNiAr
NzgsMTEgQEAKICNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKICNlbmRpZgogCisjaWYgRU5BQkxF
KFdFQl9TT0NLRVRTKQorI2luY2x1ZGUgIkpTV2ViU29ja2V0LmgiCisjaW5jbHVkZSAiV2ViU29j
a2V0LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMTM5LDYgKzE0NCwxMSBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFdmVudFRhcmdldCogdGFyZwogICAgICAg
ICByZXR1cm4gdG9KUyhleGVjLCBub3RpZmljYXRpb24pOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
V0VCX1NPQ0tFVFMpCisgICAgaWYgKFdlYlNvY2tldCogd2ViU29ja2V0ID0gdGFyZ2V0LT50b1dl
YlNvY2tldCgpKQorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCB3ZWJTb2NrZXQpOworI2VuZGlm
CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4ganNOdWxsKCk7CiB9CkBA
IC0xODMsNiArMTkzLDEwIEBAIEV2ZW50VGFyZ2V0KiB0b0V2ZW50VGFyZ2V0KEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKICAgICBDT05WRVJUX1RPX0VWRU5UX1RBUkdFVChOb3RpZmljYXRpb24pCiAjZW5k
aWYKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBDT05WRVJUX1RPX0VWRU5UX1RBUkdF
VChXZWJTb2NrZXQpCisjZW5kaWYKKwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAK
aW5kZXggMmYxM2RhOC4uNjUyNjQ0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtODMsNiArODMsMTMg
QEAgU1ZHRWxlbWVudEluc3RhbmNlKiBFdmVudFRhcmdldDo6dG9TVkdFbGVtZW50SW5zdGFuY2Uo
KQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCitXZWJTb2NrZXQqIEV2ZW50
VGFyZ2V0Ojp0b1dlYlNvY2tldCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogTWVz
c2FnZVBvcnQqIEV2ZW50VGFyZ2V0Ojp0b01lc3NhZ2VQb3J0KCkKIHsKICAgICByZXR1cm4gMDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5oCmluZGV4IDZkM2NiN2MuLjZiY2MzZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0LmgKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtNTEsNiAr
NTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXI7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyQ29u
dGV4dDsKKyAgICBjbGFzcyBXZWJTb2NrZXQ7CiAgICAgY2xhc3MgV29ya2VyOwogICAgIGNsYXNz
IFhNTEh0dHBSZXF1ZXN0OwogICAgIGNsYXNzIFhNTEh0dHBSZXF1ZXN0VXBsb2FkOwpAQCAtNzUs
MTEgKzc2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBXb3JrZXIq
IHRvV29ya2VyKCk7CiAgICAgICAgIHZpcnR1YWwgRGVkaWNhdGVkV29ya2VyQ29udGV4dCogdG9E
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCk7CiAjZW5kaWYKLQogI2lmIEVOQUJMRShTSEFSRURfV09S
S0VSUykKICAgICAgICAgdmlydHVhbCBTaGFyZWRXb3JrZXIqIHRvU2hhcmVkV29ya2VyKCk7CiAg
ICAgICAgIHZpcnR1YWwgU2hhcmVkV29ya2VyQ29udGV4dCogdG9TaGFyZWRXb3JrZXJDb250ZXh0
KCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIHZpcnR1YWwgV2Vi
U29ja2V0KiB0b1dlYlNvY2tldCgpOworI2VuZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKICAgICAgICAgdmlydHVhbCBOb3RpZmljYXRpb24qIHRvTm90aWZpY2F0aW9uKCk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCmluZGV4IDljOWU0ODEuLjAwMmQ5YjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCisrKyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC00ODEsNiAr
NDgxLDEwIEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0pTQ0N1c3RvbUdl
dHRlcl0gU2hhcmVkV29ya2VyQ29uc3RydWN0b3IgU2hhcmVkV29ya2VyOyAvLyBVc2FibGUgd2l0
aCB0aGUgbmV3IG9wZXJhdG9yCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoRU5BQkxFX1dFQl9TT0NL
RVRTKSAmJiBFTkFCTEVfV0VCX1NPQ0tFVFMKKyAgICAgICAgYXR0cmlidXRlIFtKU0NDdXN0b21H
ZXR0ZXJdIFdlYlNvY2tldENvbnN0cnVjdG9yIFdlYlNvY2tldDsgLy8gVXNhYmxlIHdpdGggdGhl
IG5ldyBvcGVyYXRvcgorI2VuZGlmCisKICAgICAgICAgYXR0cmlidXRlIFBsdWdpbkNvbnN0cnVj
dG9yIFBsdWdpbjsKICAgICAgICAgYXR0cmlidXRlIFBsdWdpbkFycmF5Q29uc3RydWN0b3IgUGx1
Z2luQXJyYXk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
IGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggOTk5YzFmZi4uOGY5MGIx
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTM0LDEzICszNCw1OCBAQAogCiAjaW5j
bHVkZSAiV2ViU29ja2V0LmgiCiAKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5o
IgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisj
aW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgor
I2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUHJvY2Vzc1dlYlNvY2tldEV2ZW50
VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIHZvaWQgKFdlYlNvY2tldDo6Kk1ldGhvZCkoRXZlbnQqKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxX
ZWJTb2NrZXQ+IHdlYlNvY2tldCwgTWV0aG9kIG1ldGhvZCwgUGFzc1JlZlB0cjxFdmVudD4gZXZl
bnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFByb2Nlc3NXZWJTb2NrZXRF
dmVudFRhc2sod2ViU29ja2V0LCBtZXRob2QsIGV2ZW50KSk7CisgICAgfQorICAgIHZpcnR1YWwg
dm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAgICB7CisgICAgICAg
IChtX3dlYlNvY2tldC5nZXQoKS0+Km1fbWV0aG9kKShtX2V2ZW50LmdldCgpKTsKKyAgICB9CisK
KyAgcHJpdmF0ZToKKyAgICBQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrKFBhc3NSZWZQdHI8V2Vi
U29ja2V0PiB3ZWJTb2NrZXQsIE1ldGhvZCBtZXRob2QsIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50
KQorICAgICAgICA6IG1fd2ViU29ja2V0KHdlYlNvY2tldCkKKyAgICAgICAgLCBtX21ldGhvZCht
ZXRob2QpCisgICAgICAgICwgbV9ldmVudChldmVudCkgeyB9CisKKyAgICBSZWZQdHI8V2ViU29j
a2V0PiBtX3dlYlNvY2tldDsKKyAgICBNZXRob2QgbV9tZXRob2Q7CisgICAgUmVmUHRyPEV2ZW50
PiBtX2V2ZW50OworfTsKKworc3RhdGljIGJvb2wgaXNWYWxpZFByb3RvY29sU3RyaW5nKGNvbnN0
IFdlYkNvcmU6OlN0cmluZyYgcHJvdG9jb2wpCit7CisgICAgaWYgKHByb3RvY29sLmlzTnVsbCgp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAocHJvdG9jb2wuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBwcm90b2Nv
bC5jaGFyYWN0ZXJzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm90b2NvbC5sZW5n
dGgoKTsgaSsrKSB7CisgICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldIDwgMHgyMSB8fCBjaGFyYWN0
ZXJzW2ldID4gMHg3RSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKIFdlYlNvY2tldDo6V2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAs
IG1fc3RhdGUoQ09OTkVDVElORykKQEAgLTU5LDM5ICsxMDQsNDkgQEAgdm9pZCBXZWJTb2NrZXQ6
OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBXZWJT
b2NrZXQ6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBjb25u
ZWN0IHRvICVzIHByb3RvY29sPSVzIiwgdGhpcywgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCks
IHByb3RvY29sLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fdXJsID0gdXJsOwogICAgIG1fcHJvdG9j
b2wgPSBwcm90b2NvbDsKIAogICAgIGlmICghbV91cmwucHJvdG9jb2xJcygid3MiKSAmJiAhbV91
cmwucHJvdG9jb2xJcygid3NzIikpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJFcnJvcjogd3Jvbmcg
dXJsIGZvciBXZWJTb2NrZXQgJXMiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIG1fc3RhdGUgPSBDTE9TRUQ7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fcHJvdG9jb2wuaXNOdWxsKCkgJiYgbV9wcm90b2Nv
bC5pc0VtcHR5KCkpIHsKKyAgICBpZiAoIWlzVmFsaWRQcm90b2NvbFN0cmluZyhtX3Byb3RvY29s
KSkgeworICAgICAgICBMT0dfRVJST1IoIkVycm9yOiB3cm9uZyBwcm90b2NvbCBmb3IgV2ViU29j
a2V0ICVzIiwgbV9wcm90b2NvbC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbV9zdGF0ZSA9IENM
T1NFRDsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIC8vIEZJWE1FOiBDaGVjayBwcm90b2NvbCBpcyB2YWxpZCBmb3JtLgotICAgIC8vIEZJWE1F
OiBDb25uZWN0IFdlYlNvY2tldENoYW5uZWwuCisgICAgLy8gRklYTUU6IGlmIG1fdXJsLnBvcnQo
KSBpcyBibG9ja2luZyBwb3J0LCByYWlzZSBTRUNVUklUWV9FUlIuCisKKyAgICBtX2NoYW5uZWwg
PSBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlz
LCBtX3VybCwgbV9wcm90b2NvbCk7CisgICAgbV9jaGFubmVsLT5jb25uZWN0KCk7CiB9CiAKLWJv
b2wgV2ViU29ja2V0OjpzZW5kKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmIGVjKQorYm9v
bCBXZWJTb2NrZXQ6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKLSAgICBpZiAobV9zdGF0ZSAhPSBPUEVOKSB7CisgICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXQgJXAgc2VuZCAlcyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgaWYg
KG1fc3RhdGUgPT0gQ09OTkVDVElORykgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJS
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIC8vIEZJWE1FOiBzZW5kIG1lc3Nh
Z2Ugb24gV2ViU29ja2V0Q2hhbm5lbC4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gTm8gZXhj
ZXB0aW9uIGlzIHJhaXNlZCBpZiB0aGUgY29ubmVjdGlvbiB3YXMgb25jZSBlc3RhYmxpc2hlZCBi
dXQgaGFzIHN1YnNlcXVlbnRseSBiZWVuIGNsb3NlZC4KKyAgICBpZiAobV9zdGF0ZSA9PSBDTE9T
RUQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBGSVhNRTogY2hlY2sgbWVzc2FnZSBp
cyB2YWxpZCB1dGY4LgorICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQobWVzc2FnZSk7CiB9CiAK
IHZvaWQgV2ViU29ja2V0OjpjbG9zZSgpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQg
JXAgY2xvc2UiLCB0aGlzKTsKICAgICBpZiAobV9zdGF0ZSA9PSBDTE9TRUQpCiAgICAgICAgIHJl
dHVybjsKICAgICBtX3N0YXRlID0gQ0xPU0VEOwotICAgIC8vIEZJWE1FOiBjbG9zZSBXZWJTb2Nr
ZXRDaGFubmVsLgorICAgIG1fY2hhbm5lbC0+Y2xvc2UoKTsKIH0KIAogY29uc3QgS1VSTCYgV2Vi
U29ja2V0Ojp1cmwoKSBjb25zdApAQCAtMTA2LDcgKzE2MSw4IEBAIFdlYlNvY2tldDo6U3RhdGUg
V2ViU29ja2V0OjpyZWFkeVN0YXRlKCkgY29uc3QKIAogdW5zaWduZWQgbG9uZyBXZWJTb2NrZXQ6
OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogYXNrIHBsYXRmb3JtIGNv
ZGUgdG8gZ2V0IGJ1ZmZlcmVkIGFtb3VudCB0byBiZSBzZW50LgorICAgIGlmIChtX3N0YXRlID09
IE9QRU4pCisgICAgICAgIHJldHVybiBtX2NoYW5uZWwtPmJ1ZmZlcmVkQW1vdW50KCk7CiAgICAg
cmV0dXJuIDA7CiB9CiAKQEAgLTExNSw1OCArMTcxLDEyMCBAQCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBXZWJTb2NrZXQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgIHJldHVy
biBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIH0KIAotdm9pZCBX
ZWJTb2NrZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiwgUGFzc1JlZlB0
cjxFdmVudExpc3RlbmVyPiwgYm9vbCkKK3ZvaWQgV2ViU29ja2V0OjphZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGV2ZW50TGlzdGVuZXIsIGJvb2wpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgor
ICAgIEV2ZW50TGlzdGVuZXJzTWFwOjppdGVyYXRvciBpdGVyID0gbV9ldmVudExpc3RlbmVycy5m
aW5kKGV2ZW50VHlwZSk7CisgICAgaWYgKGl0ZXIgPT0gbV9ldmVudExpc3RlbmVycy5lbmQoKSkg
eworICAgICAgICBMaXN0ZW5lclZlY3RvciBsaXN0ZW5lcnM7CisgICAgICAgIGxpc3RlbmVycy5h
cHBlbmQoZXZlbnRMaXN0ZW5lcik7CisgICAgICAgIG1fZXZlbnRMaXN0ZW5lcnMuYWRkKGV2ZW50
VHlwZSwgbGlzdGVuZXJzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBMaXN0ZW5lclZlY3RvciYg
bGlzdGVuZXJzID0gaXRlci0+c2Vjb25kOworICAgICAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjpp
dGVyYXRvciBsaXN0ZW5lckl0ZXIgPSBsaXN0ZW5lcnMuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9
IGxpc3RlbmVycy5lbmQoKTsgKytsaXN0ZW5lckl0ZXIpCisgICAgICAgICAgICBpZiAoKmxpc3Rl
bmVySXRlciA9PSBldmVudExpc3RlbmVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBsaXN0ZW5lcnMuYXBwZW5kKGV2ZW50TGlzdGVuZXIpOworICAgICAgICBtX2V2ZW50TGlz
dGVuZXJzLmFkZChldmVudFR5cGUsIGxpc3RlbmVycyk7CisgICAgfQogfQogCi12b2lkIFdlYlNv
Y2tldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmLCBFdmVudExpc3Rl
bmVyKiwgYm9vbCkKK3ZvaWQgV2ViU29ja2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyLCBib29s
KQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBFdmVudExpc3RlbmVyc01h
cDo6aXRlcmF0b3IgaXRlciA9IG1fZXZlbnRMaXN0ZW5lcnMuZmluZChldmVudFR5cGUpOworICAg
IGlmIChpdGVyID09IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMgPSBpdGVyLT5zZWNvbmQ7CisgICAgZm9yIChM
aXN0ZW5lclZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVuZXJzLmJl
Z2luKCk7IGxpc3RlbmVySXRlciAhPSBsaXN0ZW5lcnMuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKQor
ICAgICAgICBpZiAoKmxpc3RlbmVySXRlciA9PSBldmVudExpc3RlbmVyKSB7CisgICAgICAgICAg
ICBsaXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVySXRlciAtIGxpc3RlbmVycy5iZWdpbigpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogfQogCi1ib29sIFdlYlNvY2tldDo6ZGlzcGF0
Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpCitib29sIFdlYlNvY2tl
dDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldnQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFldnQgfHwgZXZ0LT50eXBlKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGVjID0gRXZl
bnRFeGNlcHRpb246OlVOU1BFQ0lGSUVEX0VWRU5UX1RZUEVfRVJSOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICBMaXN0ZW5lclZlY3RvciBsaXN0ZW5lcnNDb3B5ID0gbV9ldmVu
dExpc3RlbmVycy5nZXQoZXZ0LT50eXBlKCkpOworICAgIGZvciAoTGlzdGVuZXJWZWN0b3I6OmNv
bnN0X2l0ZXJhdG9yIGxpc3RlbmVySXRlciA9IGxpc3RlbmVyc0NvcHkuYmVnaW4oKTsgbGlzdGVu
ZXJJdGVyICE9IGxpc3RlbmVyc0NvcHkuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKSB7CisgICAgICAg
IGV2dC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhp
cyk7CisgICAgICAgIGxpc3RlbmVySXRlci0+Z2V0KCktPmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwg
ZmFsc2UpOworICAgIH0KKyAgICByZXR1cm4gIWV2dC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogfQog
CiB2b2lkIFdlYlNvY2tldDo6ZGlkQ29ubmVjdCgpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXQgJXAgZGlkQ29ubmVjdCIsIHRoaXMpOwogICAgIGlmIChtX3N0YXRlICE9IENPTk5FQ1RJ
TkcpIHsKICAgICAgICAgZGlkQ2xvc2UoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBt
X3N0YXRlID0gT1BFTjsKLSAgICBkaXNwYXRjaE9wZW5FdmVudCgpOworICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soUHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzazo6Y3JlYXRl
KHRoaXMsICZXZWJTb2NrZXQ6OmRpc3BhdGNoT3BlbkV2ZW50LCBFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5vcGVuRXZlbnQsIGZhbHNlLCBmYWxzZSkpKTsKIH0KIAogdm9pZCBXZWJTb2NrZXQ6
OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKQogeworICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0ICVwIGRpZFJlY2VpdmVNZXNzYWdlICVzIiwgdGhpcywgbXNnLnV0ZjgoKS5k
YXRhKCkpOwogICAgIGlmIChtX3N0YXRlICE9IE9QRU4pCiAgICAgICAgIHJldHVybjsKLSAgICBk
aXNwYXRjaE1lc3NhZ2VFdmVudChtc2cpOworICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2dCA9
IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKCk7CisgICAgLy8gRklYTUU6IG9yaWdpbiwgbGFzdEV2ZW50
SWQsIHNvdXJjZSwgbWVzc2FnZVBvcnQuCisgICAgZXZ0LT5pbml0TWVzc2FnZUV2ZW50KGV2ZW50
TmFtZXMoKS5tZXNzYWdlRXZlbnQsIGZhbHNlLCBmYWxzZSwgbXNnLCAiIiwgIiIsIDAsIDApOwor
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soUHJvY2Vzc1dlYlNvY2tldEV2
ZW50VGFzazo6Y3JlYXRlKHRoaXMsICZXZWJTb2NrZXQ6OmRpc3BhdGNoTWVzc2FnZUV2ZW50LCBl
dnQpKTsKIH0KIAogdm9pZCBXZWJTb2NrZXQ6OmRpZENsb3NlKCkKIHsKKyAgICBMT0coTmV0d29y
aywgIldlYlNvY2tldCAlcCBkaWRDbG9zZSIsIHRoaXMpOwogICAgIG1fc3RhdGUgPSBDTE9TRUQ7
Ci0gICAgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5wb3N0VGFzayhQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrOjpjcmVhdGUodGhpcywgJldlYlNv
Y2tldDo6ZGlzcGF0Y2hDbG9zZUV2ZW50LCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbG9z
ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaE9w
ZW5FdmVudCgpCit2b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hPcGVuRXZlbnQoRXZlbnQqIGV2dCkK
IHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisgICAgaWYgKG1fb25vcGVuKSB7Cisg
ICAgICAgIGV2dC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJn
ZXQodGhpcyk7CisgICAgICAgIG1fb25vcGVuLT5oYW5kbGVFdmVudChldnQsIGZhbHNlKTsKKyAg
ICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2dCwg
ZWMpOworICAgIEFTU0VSVCghZWMpOwogfQogCi12b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hNZXNz
YWdlRXZlbnQoY29uc3QgU3RyaW5nJikKK3ZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaE1lc3NhZ2VF
dmVudChFdmVudCogZXZ0KQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBp
ZiAobV9vbm1lc3NhZ2UpIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAg
IGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbm1lc3NhZ2UtPmhhbmRs
ZUV2ZW50KGV2dCwgZmFsc2UpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIGRpc3BhdGNoRXZlbnQoZXZ0LCBlYyk7CisgICAgQVNTRVJUKCFlYyk7CiB9CiAKLXZvaWQg
V2ViU29ja2V0OjpkaXNwYXRjaENsb3NlRXZlbnQoKQordm9pZCBXZWJTb2NrZXQ6OmRpc3BhdGNo
Q2xvc2VFdmVudChFdmVudCogZXZ0KQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4K
KyAgICBpZiAobV9vbmNsb3NlKSB7CisgICAgICAgIGV2dC0+c2V0VGFyZ2V0KHRoaXMpOworICAg
ICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fb25jbG9zZS0+aGFu
ZGxlRXZlbnQoZXZ0LCBmYWxzZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgZGlzcGF0Y2hFdmVudChldnQsIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKIH0KIAogfSAg
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCA0ODVlMmNjLi4y
YmUzNDQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC0zMSw5MyArMzEsMTA0IEBACiAjaWZu
ZGVmIFdlYlNvY2tldF9oCiAjZGVmaW5lIFdlYlNvY2tldF9oCiAKKyNpZiBFTkFCTEUoV0VCX1NP
Q0tFVFMpCisKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJBdG9taWNT
dHJpbmdIYXNoLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxD
bGllbnQuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTdHJpbmc7CisgICAgY2xhc3Mg
U3RyaW5nOworICAgIGNsYXNzIFdlYlNvY2tldENoYW5uZWw7CiAKLWNsYXNzIFdlYlNvY2tldCA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYlNvY2tldD4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGlj
IEFjdGl2ZURPTU9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29j
a2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYlNvY2tldChjb250ZXh0KSk7IH0KLSAgICB2aXJ0dWFsIH5XZWJTb2NrZXQo
KTsKKyAgICBjbGFzcyBXZWJTb2NrZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTb2NrZXQ+LCBw
dWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpOyB9CisgICAgICAgIHZpcnR1YWwg
fldlYlNvY2tldCgpOwogCi0gICAgZW51bSBTdGF0ZSB7Ci0gICAgICAgIENPTk5FQ1RJTkcgPSAw
LAotICAgICAgICBPUEVOID0gMSwKLSAgICAgICAgQ0xPU0VEID0gMgotICAgIH07CisgICAgICAg
IGVudW0gU3RhdGUgeworICAgICAgICAgICAgQ09OTkVDVElORyA9IDAsCisgICAgICAgICAgICBP
UEVOID0gMSwKKyAgICAgICAgICAgIENMT1NFRCA9IDIKKyAgICAgICAgfTsKIAotICAgIHZvaWQg
Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGNvbm5l
Y3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2ws
IEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdm9pZCBjbG9zZSgpOworICAgICAgICB2b2lkIGNs
b3NlKCk7CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKLSAgICBTdGF0ZSByZWFkeVN0
YXRlKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0Owor
ICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKKyAgICAgICAgU3RhdGUgcmVhZHlTdGF0
ZSgpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7
CiAKLSAgICB2b2lkIHNldE9ub3BlbihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlz
dGVuZXIpIHsgbV9vbm9wZW4gPSBldmVudExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciog
b25vcGVuKCkgY29uc3QgeyByZXR1cm4gbV9vbm9wZW4uZ2V0KCk7IH0KLSAgICB2b2lkIHNldE9u
bWVzc2FnZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbm1l
c3NhZ2UgPSBldmVudExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25tZXNzYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9vbm1lc3NhZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIHNldE9uY2xvc2Uo
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25jbG9zZSA9IGV2
ZW50TGlzdGVuZXI7IH0KLSAgICBFdmVudExpc3RlbmVyKiBvbmNsb3NlKCkgY29uc3QgeyByZXR1
cm4gbV9vbmNsb3NlLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0T25vcGVuKFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29ub3BlbiA9IGV2ZW50TGlzdGVuZXI7
IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25vcGVuKCkgY29uc3QgeyByZXR1cm4gbV9vbm9w
ZW4uZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRPbm1lc3NhZ2UoUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25tZXNzYWdlID0gZXZlbnRMaXN0ZW5lcjsgfQor
ICAgICAgICBFdmVudExpc3RlbmVyKiBvbm1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX29ubWVz
c2FnZS5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldE9uY2xvc2UoUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25jbG9zZSA9IGV2ZW50TGlzdGVuZXI7IH0KKyAg
ICAgICAgRXZlbnRMaXN0ZW5lciogb25jbG9zZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25jbG9zZS5n
ZXQoKTsgfQogCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIFdlYlNvY2tldCogdG9X
ZWJTb2NrZXQoKSB7IHJldHVybiB0aGlzOyB9CisgICAgICAgIC8vIEV2ZW50VGFyZ2V0CisgICAg
ICAgIHZpcnR1YWwgV2ViU29ja2V0KiB0b1dlYlNvY2tldCgpIHsgcmV0dXJuIHRoaXM7IH0KIAot
ICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+LCBib29sIHVzZUNhcHR1cmUpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9v
bCB1c2VDYXB0dXJlKTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRy
PEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gPiBMaXN0ZW5lclZlY3RvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFw
PEF0b21pY1N0cmluZywgTGlzdGVuZXJWZWN0b3I+IEV2ZW50TGlzdGVuZXJzTWFwOwogCi0gICAg
Ly8gQWN0aXZlRE9NT2JqZWN0Ci0gICAgLy8gdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0OwotICAgIC8vIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7Ci0gICAg
Ly8gdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKLSAgICAvLyB2aXJ0dWFsIHZvaWQg
c3VzcGVuZCgpOwotICAgIC8vIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKLSAgICAvLyB2aXJ0dWFs
IHZvaWQgc3RvcCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9v
bCB1c2VDYXB0dXJlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNh
cHR1cmUpOworICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2
ZW50PiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICBFdmVudExpc3RlbmVyc01hcCYgZXZlbnRM
aXN0ZW5lcnMoKSB7IHJldHVybiBtX2V2ZW50TGlzdGVuZXJzOyB9CiAKLSAgICB1c2luZyBSZWZD
b3VudGVkPFdlYlNvY2tldD46OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldD46
OmRlcmVmOworICAgICAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICAgICAgLy8gIHZpcnR1YWwg
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lk
IGNvbnRleHREZXN0cm95ZWQoKTsKKyAgICAgICAgLy8gdmlydHVhbCBib29sIGNhblN1c3BlbmQo
KSBjb25zdDsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lkIHN1c3BlbmQoKTsKKyAgICAgICAgLy8g
dmlydHVhbCB2b2lkIHJlc3VtZSgpOworICAgICAgICAvLyB2aXJ0dWFsIHZvaWQgc3RvcCgpOwog
Ci1wcml2YXRlOgotICAgIFdlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAg
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Pjo6cmVmOworICAgICAgICB1c2luZyBSZWZD
b3VudGVkPFdlYlNvY2tldD46OmRlcmVmOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFy
Z2V0KCkgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBk
ZXJlZigpOyB9CisgICAgICAgIC8vIFdlYlNvY2tldENoYW5uZWxDbGllbnQKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZENvbm5lY3QoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3Nl
KCk7CiAKLSAgICAvLyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50Ci0gICAgdm9pZCBkaWRDb25uZWN0
KCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZyk7Ci0gICAg
dm9pZCBkaWRDbG9zZSgpOworICAgIHByaXZhdGU6CisgICAgICAgIFdlYlNvY2tldChTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CiAKLSAgICB2b2lkIGRpc3BhdGNoT3BlbkV2ZW50KCk7Ci0gICAg
dm9pZCBkaXNwYXRjaE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIG1zZyk7Ci0gICAgdm9pZCBk
aXNwYXRjaENsb3NlRXZlbnQoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0
KCkgeyByZWYoKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsg
ZGVyZWYoKTsgfQogCi0gICAgLy8gRklYTUU6IGFkZCBXZWJTb2NrZXRDaGFubmVsLgorICAgICAg
ICB2b2lkIGRpc3BhdGNoT3BlbkV2ZW50KEV2ZW50Kik7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hN
ZXNzYWdlRXZlbnQoRXZlbnQqKTsKKyAgICAgICAgdm9pZCBkaXNwYXRjaENsb3NlRXZlbnQoRXZl
bnQqKTsKIAotICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ub3BlbjsKLSAgICBSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gbV9vbm1lc3NhZ2U7Ci0gICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1f
b25jbG9zZTsKKyAgICAgICAgUmVmUHRyPFdlYlNvY2tldENoYW5uZWw+IG1fY2hhbm5lbDsKIAot
ICAgIFN0YXRlIG1fc3RhdGU7Ci0gICAgS1VSTCBtX3VybDsKLSAgICBTdHJpbmcgbV9wcm90b2Nv
bDsKLX07CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ub3BlbjsKKyAgICAgICAg
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25tZXNzYWdlOworICAgICAgICBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gbV9vbmNsb3NlOworICAgICAgICBFdmVudExpc3RlbmVyc01hcCBtX2V2ZW50TGlz
dGVuZXJzOworCisgICAgICAgIFN0YXRlIG1fc3RhdGU7CisgICAgICAgIEtVUkwgbV91cmw7Cisg
ICAgICAgIFN0cmluZyBtX3Byb3RvY29sOworICAgIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCiAjZW5kaWYgIC8vIFdlYlNv
Y2tldF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg1MmUxMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMCwwICsxLDI0MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRlICJX
ZWJTb2NrZXRDaGFubmVsLmgiCisKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiQ29v
a2llSmFyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKKyNpbmNsdWRlICJTb2NrZXRT
dHJlYW1IYW5kbGUuaCIKKyNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCisjaW5jbHVkZSAiV2ViU29j
a2V0Q2hhbm5lbENsaWVudC5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1dlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCisgICAgOiBtX2NvbnRleHQo
Y29udGV4dCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1faGFuZHNoYWtlKHVybCwg
cHJvdG9jb2wsIGNvbnRleHQpCisgICAgLCBtX2J1ZmZlcigwKQorICAgICwgbV9idWZmZXJTaXpl
KDApCisgICAgLCBtX3VuaGFuZGxlZEJ1ZmZlclNpemUoMCkKK3sKK30KKworV2ViU29ja2V0Q2hh
bm5lbDo6fldlYlNvY2tldENoYW5uZWwoKQoreworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmNvbm5lY3QoKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjb25u
ZWN0IiwgdGhpcyk7CisgICAgQVNTRVJUKCFtX2hhbmRsZS5nZXQoKSk7CisgICAgbV9oYW5kc2hh
a2UucmVzZXQoKTsKKyAgICBtX2hhbmRsZSA9IFNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlKG1f
aGFuZHNoYWtlLnVybCgpLCB0aGlzKTsKK30KKworYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5k
KGNvbnN0IFN0cmluZyYgbXNnKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5l
bCAlcCBzZW5kICVzIiwgdGhpcywgbXNnLnV0ZjgoKS5kYXRhKCkpOworICAgIFZlY3RvcjxjaGFy
PiBidWY7CisgICAgYnVmLmFwcGVuZCgnXDAnKTsgIC8vIGZyYW1lIHR5cGUKKyAgICBidWYuYXBw
ZW5kKG1zZy51dGY4KCkuZGF0YSgpLCBtc2cudXRmOCgpLmxlbmd0aCgpKTsKKyAgICBidWYuYXBw
ZW5kKCdceGZmJyk7ICAvLyBmcmFtZSBlbmQKKyAgICBpZiAoIW1faGFuZGxlLmdldCgpKSB7Cisg
ICAgICAgIG1fdW5oYW5kbGVkQnVmZmVyU2l6ZSArPSBidWYuc2l6ZSgpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBtX2hhbmRsZS0+c2VuZChidWYuZGF0YSgpLCBi
dWYuc2l6ZSgpKTsKK30KKwordW5zaWduZWQgbG9uZyBXZWJTb2NrZXRDaGFubmVsOjpidWZmZXJl
ZEFtb3VudCgpIGNvbnN0Cit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVw
IGJ1ZmZlcmVkQW1vdW50IiwgdGhpcyk7CisgICAgaWYgKCFtX2hhbmRsZS5nZXQoKSkKKyAgICAg
ICAgcmV0dXJuIG1fdW5oYW5kbGVkQnVmZmVyU2l6ZTsKKyAgICByZXR1cm4gbV9oYW5kbGUtPmJ1
ZmZlcmVkQW1vdW50KCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoKQorewor
ICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjbG9zZSIsIHRoaXMpOworICAg
IGlmIChtX2hhbmRsZS5nZXQoKSkKKyAgICAgICAgbV9oYW5kbGUtPmNsb3NlKCk7ICAvLyB3aWxs
IGNhbGwgZGlkQ2xvc2UoKQorfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OndpbGxPcGVuU3Ry
ZWFtKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEtVUkwmKQoreworfQorCit2b2lkIFdlYlNv
Y2tldENoYW5uZWw6OndpbGxTZW5kRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBjaGFy
KiwgaW50KQoreworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZE9wZW4oU29ja2V0U3Ry
ZWFtSGFuZGxlKiBoYW5kbGUpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVs
ICVwIGRpZE9wZW4iLCB0aGlzKTsKKyAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdldCgp
KTsKKyAgICBjb25zdCBDU3RyaW5nJiBoYW5kc2hha2VNZXNzYWdlID0gbV9oYW5kc2hha2UuY2xp
ZW50SGFuZHNoYWtlTWVzc2FnZSgpOworICAgIGlmICghaGFuZGxlLT5zZW5kKGhhbmRzaGFrZU1l
c3NhZ2UuZGF0YSgpLCBoYW5kc2hha2VNZXNzYWdlLmxlbmd0aCgpKSkgeworICAgICAgICBMT0co
TmV0d29yaywgIkVycm9yIGluIHNlbmRpbmcgaGFuZHNoYWtlIG1lc3NhZ2UuIik7CisgICAgICAg
IGhhbmRsZS0+Y2xvc2UoKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlk
Q2xvc2UoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCit7CisgICAgTE9HKE5ldHdvcmssICJX
ZWJTb2NrZXRDaGFubmVsICVwIGRpZENsb3NlIiwgdGhpcyk7CisgICAgQVNTRVJUKGhhbmRsZSA9
PSBtX2hhbmRsZS5nZXQoKSB8fCAhbV9oYW5kbGUuZ2V0KCkpOworICAgIGlmICghbV9oYW5kbGUu
Z2V0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3VuaGFuZGxlZEJ1ZmZlclNpemUgPSBoYW5k
bGUtPmJ1ZmZlcmVkQW1vdW50KCk7CisgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50
ID0gbV9jbGllbnQ7CisgICAgbV9jbGllbnQgPSAwOworICAgIG1faGFuZGxlID0gMDsKKyAgICBj
bGllbnQtPmRpZENsb3NlKCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2
ZURhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBs
ZW4pCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZFJlY2VpdmVE
YXRhICVkIiwgdGhpcywgbGVuKTsKKyAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdldCgp
KTsKKyAgICBpZiAoIWFwcGVuZFRvQnVmZmVyKGRhdGEsIGxlbikpIHsKKyAgICAgICAgaGFuZGxl
LT5jbG9zZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX2hhbmRzaGFrZS5t
b2RlKCkgIT0gV2ViU29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQpIHsKKyAgICAgICAgaW50IGhl
YWRlckxlbmd0aCA9IG1faGFuZHNoYWtlLnJlYWRTZXJ2ZXJIYW5kc2hha2UobV9idWZmZXIuZ2V0
KCksIG1fYnVmZmVyU2l6ZSk7CisgICAgICAgIGlmIChoZWFkZXJMZW5ndGggPD0gMCkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgc3dpdGNoIChtX2hhbmRzaGFrZS5tb2RlKCkpIHsKKyAg
ICAgICAgY2FzZSBXZWJTb2NrZXRIYW5kc2hha2U6OkNvbm5lY3RlZDoKKyAgICAgICAgICAgIGlm
ICghbV9oYW5kc2hha2Uuc2VydmVyU2V0Q29va2llKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKG1fY29udGV4dC0+aXNEb2N1bWVudCgpKSB7CisgICAgICAgICAgICAgICAgICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9jb250ZXh0KTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZXNFbmFibGVkKGRvY3VtZW50KSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5zZXRDb29raWUobV9oYW5kc2hha2Uuc2VydmVy
U2V0Q29va2llKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBoYW5kbGUgc2V0LWNvb2tpZTIuCisgICAgICAgICAgICBMT0coTmV0d29y
aywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVjdGVkIiwgdGhpcyk7CisgICAgICAgICAgICBt
X2NsaWVudC0+ZGlkQ29ubmVjdCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVj
dGlvbiBmYWlsZWQiLCB0aGlzKTsKKyAgICAgICAgICAgIGhhbmRsZS0+Y2xvc2UoKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBza2lwQnVmZmVyKGhlYWRlckxlbmd0
aCk7CisgICAgICAgIGlmICghbV9idWZmZXIuZ2V0KCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIExPRyhOZXR3b3JrLCAicmVtYWluaW5nIGluIHJlYWQgYnVmICV1bCIsIG1fYnVmZmVy
U2l6ZSk7CisgICAgfQorCisgICAgY29uc3QgY2hhciogbmV4dEZyYW1lID0gbV9idWZmZXIuZ2V0
KCk7CisgICAgY29uc3QgY2hhciogcCA9IG1fYnVmZmVyLmdldCgpOworICAgIGNvbnN0IGNoYXIq
IGVuZCA9IHAgKyBtX2J1ZmZlclNpemU7CisgICAgd2hpbGUgKHAgPCBlbmQpIHsKKyAgICAgICAg
dW5zaWduZWQgY2hhciBmcmFtZUJ5dGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqcCsr
KTsKKyAgICAgICAgaWYgKChmcmFtZUJ5dGUgJiAweDgwKSA9PSAweDgwKSB7CisgICAgICAgICAg
ICBpbnQgbGVuZ3RoID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChwIDwgZW5kICYmICgqcCAmIDB4
ODApID09IDB4ODApIHsKKyAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID4gc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ+OjptYXgoKSAvIDEyOCkgeworICAgICAgICAgICAgICAgICAgICBMT0coTmV0
d29yaywgImZyYW1lIGxlbmd0aCBvdmVyZmxvdyAlZCIsIGxlbmd0aCk7CisgICAgICAgICAgICAg
ICAgICAgIGhhbmRsZS0+Y2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGggKiAxMjggKyAq
cCAmIDB4N2Y7CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKHAgKyBsZW5ndGggPCBlbmQpIHsKKyAgICAgICAgICAgICAgICBwICs9IGxlbmd0aDsK
KyAgICAgICAgICAgICAgICBuZXh0RnJhbWUgPSBwOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgY29uc3QgY2hhciogbXNnU3RhcnQgPSBwOworICAgICAgICAg
ICAgd2hpbGUgKHAgPCBlbmQgJiYgKnAgIT0gJ1x4ZmYnKQorICAgICAgICAgICAgICAgICsrcDsK
KyAgICAgICAgICAgIGlmIChwIDwgZW5kICYmICpwID09ICdceGZmJykgeworICAgICAgICAgICAg
ICAgIGlmIChmcmFtZUJ5dGUgPT0gMHgwMCkKKyAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVNZXNzYWdlKFN0cmluZzo6ZnJvbVVURjgobXNnU3RhcnQsIHAgLSBtc2dTdGFy
dCkpOworICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICBuZXh0RnJhbWUgPSBw
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHNraXBCdWZmZXIobmV4dEZy
YW1lIC0gbV9idWZmZXIuZ2V0KCkpOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZEZh
aWwoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJikK
K3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkRmFpbCIsIHRoaXMp
OworICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5kbGUuZ2V0KCkgfHwgIW1faGFuZGxlLmdldCgp
KTsKKyAgICBoYW5kbGUtPmNsb3NlKCk7Cit9CisKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6YXBw
ZW5kVG9CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKK3sKKyAgICBjaGFyKiBuZXdC
dWZmZXIgPSAwOworICAgIGlmICh0cnlGYXN0TWFsbG9jKG1fYnVmZmVyU2l6ZSArIGxlbikuZ2V0
VmFsdWUobmV3QnVmZmVyKSkgeworICAgICAgICBpZiAobV9idWZmZXIuZ2V0KCkpCisgICAgICAg
ICAgICBtZW1jcHkobmV3QnVmZmVyLCBtX2J1ZmZlci5nZXQoKSwgbV9idWZmZXJTaXplKTsKKyAg
ICAgICAgbWVtY3B5KG5ld0J1ZmZlciArIG1fYnVmZmVyU2l6ZSwgZGF0YSwgbGVuKTsKKyAgICAg
ICAgbV9idWZmZXIuc2V0KG5ld0J1ZmZlcik7CisgICAgICAgIG1fYnVmZmVyU2l6ZSArPSBsZW47
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBMT0coTmV0d29yaywgIlRvbyBsb25n
IFdlYlNvY2tldCBmcmFtZSAlZCIsIG1fYnVmZmVyU2l6ZSArIGxlbik7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNraXBCdWZmZXIoaW50IGxlbikKK3sK
KyAgICBBU1NFUlQobGVuIDw9IG1fYnVmZmVyU2l6ZSk7CisgICAgbV9idWZmZXJTaXplIC09IGxl
bjsKKyAgICBpZiAoIW1fYnVmZmVyU2l6ZSkgeworICAgICAgICBtX2J1ZmZlci5zZXQoMCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbWVtbW92ZShtX2J1ZmZlci5nZXQoKSwgbV9idWZm
ZXIuZ2V0KCkgKyBsZW4sIG1fYnVmZmVyU2l6ZSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE4YzE3
OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldENoYW5uZWxfaAorI2RlZmluZSBX
ZWJTb2NrZXRDaGFubmVsX2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUg
IlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFr
ZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OworICAgIGNsYXNzIFN0cmluZzsKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGU7Cisg
ICAgY2xhc3MgU29ja2V0U3RyZWFtRXJyb3I7CisgICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENs
aWVudDsKKworICAgIGNsYXNzIFdlYlNvY2tldENoYW5uZWwgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJTb2NrZXRDaGFubmVsPiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCB7CisgICAg
cHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVu
dCogY2xpZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIHsgcmV0
dXJuIG5ldyBXZWJTb2NrZXRDaGFubmVsKGNvbnRleHQsIGNsaWVudCwgdXJsLCBwcm90b2NvbCk7
IH0KKyAgICAgICAgdmlydHVhbCB+V2ViU29ja2V0Q2hhbm5lbCgpOworCisgICAgICAgIHZpcnR1
YWwgdm9pZCBjb25uZWN0KCk7CisKKyAgICAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3Ry
aW5nJiBtc2cpOworICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQo
KSBjb25zdDsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKKworICAgICAgICB2aXJ0
dWFsIHZvaWQgd2lsbE9wZW5TdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgS1VSTCYp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmREYXRhKFNvY2tldFN0cmVhbUhhbmRsZSos
IGNvbnN0IGNoYXIqLCBpbnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbihTb2NrZXRT
dHJlYW1IYW5kbGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKFNvY2tldFN0cmVh
bUhhbmRsZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoU29ja2V0U3Ry
ZWFtSGFuZGxlKiwgY29uc3QgY2hhciosIGludCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJik7CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYp
OworCisgICAgICAgIGJvb2wgYXBwZW5kVG9CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxl
bik7CisgICAgICAgIHZvaWQgc2tpcEJ1ZmZlcihpbnQgbGVuKTsKKworICAgICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CisgICAgICAgIFdlYlNvY2tldENoYW5uZWxDbGll
bnQqIG1fY2xpZW50OworICAgICAgICBXZWJTb2NrZXRIYW5kc2hha2UgbV9oYW5kc2hha2U7Cisg
ICAgICAgIFJlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IG1faGFuZGxlOworICAgICAgICBPd25Q
dHI8Y2hhcj4gbV9idWZmZXI7CisgICAgICAgIGludCBtX2J1ZmZlclNpemU7CisgICAgICAgIHVu
c2lnbmVkIGxvbmcgbV91bmhhbmRsZWRCdWZmZXJTaXplOworICAgIH07CisKK30gIC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYg
IC8vIFdlYlNvY2tldENoYW5uZWxfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWxDbGllbnQuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzY2FkYQot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xp
ZW50LmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldENoYW5uZWxDbGllbnRfaAor
I2RlZmluZSBXZWJTb2NrZXRDaGFubmVsQ2xpZW50X2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENs
aWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDaGFubmVsQ2xp
ZW50KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDb25uZWN0KCkgeyB9CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKCkgeyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAg
IFdlYlNvY2tldENoYW5uZWxDbGllbnQoKSB7IH0KKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlmICAvLyBX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkxZmExYwotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3Bw
CkBAIC0wLDAgKzEsNDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKKworI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZS5oIgorCisjaW5jbHVkZSAi
QXRvbWljU3RyaW5nLmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkNvb2tpZUph
ci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgor
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVk
ZSAiU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgY2hhciB3
ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hha2VIZWFkZXJbXSA9ICJIVFRQLzEuMSAxMDEgV2ViIFNvY2tl
dCBQcm90b2NvbCBIYW5kc2hha2VcclxuIjsKK2NvbnN0IGNoYXIgd2ViU29ja2V0VXBncmFkZUhl
YWRlcltdID0gIlVwZ3JhZGU6IFdlYlNvY2tldFxyXG4iOworY29uc3QgY2hhciB3ZWJTb2NrZXRD
b25uZWN0aW9uSGVhZGVyW10gPSAiQ29ubmVjdGlvbjogVXBncmFkZVxyXG4iOworCitzdGF0aWMg
U3RyaW5nIGV4dHJhY3RSZXNwb25zZUNvZGUoY29uc3QgY2hhciogaGVhZGVyLCBpbnQgbGVuKQor
eworICAgIGNvbnN0IGNoYXIqIHNwYWNlMSA9IDA7CisgICAgY29uc3QgY2hhciogc3BhY2UyID0g
MDsKKyAgICBjb25zdCBjaGFyKiBwOworICAgIGZvciAocCA9IGhlYWRlcjsgcCAtIGhlYWRlciA8
IGxlbjsgcCsrKSB7CisgICAgICAgIGlmICgqcCA9PSAnICcpIHsKKyAgICAgICAgICAgIGlmICgh
c3BhY2UxKQorICAgICAgICAgICAgICAgIHNwYWNlMSA9IHA7CisgICAgICAgICAgICBlbHNlIGlm
ICghc3BhY2UyKQorICAgICAgICAgICAgICAgIHNwYWNlMiA9IHA7CisgICAgICAgIH0gZWxzZSBp
ZiAoKnAgPT0gJ1xuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAocCAtIGhl
YWRlciA9PSBsZW4pCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBpZiAoIXNwYWNlMSB8
fCAhc3BhY2UyKQorICAgICAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIFN0cmluZyhzcGFjZTEg
KyAxLCBzcGFjZTIgLSBzcGFjZTEgLSAxKTsKK30KKworV2ViU29ja2V0SGFuZHNoYWtlOjpXZWJT
b2NrZXRIYW5kc2hha2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogbV91cmwodXJsKQorICAgICwg
bV9jbGllbnRQcm90b2NvbChwcm90b2NvbCkKKyAgICAsIG1fc2VjdXJlKG1fdXJsLnByb3RvY29s
SXMoIndzcyIpKQorICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX21vZGUoSW5jb21w
bGV0ZSkKK3sKK30KKworV2ViU29ja2V0SGFuZHNoYWtlOjp+V2ViU29ja2V0SGFuZHNoYWtlKCkK
K3sKK30KKworY29uc3QgS1VSTCYgV2ViU29ja2V0SGFuZHNoYWtlOjp1cmwoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3VybDsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFVSTChj
b25zdCBLVVJMJiB1cmwpCit7CisgICAgbV91cmwgPSB1cmwuY29weSgpOworfQorCitjb25zdCBT
dHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpob3N0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91
cmwuaG9zdCgpLmxvd2VyKCk7Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0SGFuZHNoYWtl
OjpjbGllbnRQcm90b2NvbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50UHJvdG9jb2w7
Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRDbGllbnRQcm90b2NvbChjb25zdCBT
dHJpbmcmIHByb3RvY29sKQoreworICAgIG1fY2xpZW50UHJvdG9jb2wgPSBwcm90b2NvbDsKK30K
KworYm9vbCBXZWJTb2NrZXRIYW5kc2hha2U6OnNlY3VyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fc2VjdXJlOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VjdXJlKGJvb2wg
c2VjdXJlKQoreworICAgIG1fc2VjdXJlID0gc2VjdXJlOworfQorCitTdHJpbmcgV2ViU29ja2V0
SGFuZHNoYWtlOjpjbGllbnRPcmlnaW4oKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJTb2NrZXRIYW5k
c2hha2U6OmNsaWVudExvY2F0aW9uKCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgYnVpbGRlci5hcHBlbmQobV9zZWN1cmUgPyAid3NzIiA6ICJ3cyIpOworICAgIGJ1
aWxkZXIuYXBwZW5kKCI6Ly8iKTsKKyAgICBidWlsZGVyLmFwcGVuZChtX3VybC5ob3N0KCkubG93
ZXIoKSk7CisgICAgaWYgKG1fdXJsLnBvcnQoKSkgeworICAgICAgICBpZiAoKCFtX3NlY3VyZSAm
JiBtX3VybC5wb3J0KCkgIT0gODApIHx8IChtX3NlY3VyZSAmJiBtX3VybC5wb3J0KCkgIT0gNDQz
KSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjoiKTsKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG1fdXJsLnBvcnQoKSkpOworICAgICAgICB9CisgICAg
fQorICAgIGJ1aWxkZXIuYXBwZW5kKG1fdXJsLnBhdGgoKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKK30KKworQ1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRz
aGFrZU1lc3NhZ2UoKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAg
IGJ1aWxkZXIuYXBwZW5kKCJHRVQgIik7CisgICAgYnVpbGRlci5hcHBlbmQobV91cmwucGF0aCgp
KTsKKyAgICBpZiAoIW1fdXJsLnF1ZXJ5KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCI/Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fdXJsLnF1ZXJ5KCkpOworICAg
IH0KKyAgICBidWlsZGVyLmFwcGVuZCgiIEhUVFAvMS4xXHJcbiIpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKCJVcGdyYWRlOiBXZWJTb2NrZXRcclxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIkNvbm5l
Y3Rpb246IFVwZ3JhZGVcclxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIkhvc3Q6ICIpOworICAg
IGJ1aWxkZXIuYXBwZW5kKG1fdXJsLmhvc3QoKS5sb3dlcigpKTsKKyAgICBpZiAobV91cmwucG9y
dCgpKSB7CisgICAgICAgIGlmICgoIW1fc2VjdXJlICYmIG1fdXJsLnBvcnQoKSAhPSA4MCkgfHwg
KG1fc2VjdXJlICYmIG1fdXJsLnBvcnQoKSAhPSA0NDMpKSB7CisgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiOiIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIo
bV91cmwucG9ydCgpKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoIlxy
XG4iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiT3JpZ2luOiAiKTsKKyAgICBidWlsZGVyLmFwcGVu
ZChjbGllbnRPcmlnaW4oKSk7CisgICAgYnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKKyAgICBpZiAo
IW1fY2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJX
ZWJTb2NrZXQtUHJvdG9jb2w6ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChtX2NsaWVudFBy
b3RvY29sKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKKyAgICB9CisgICAgS1VS
TCB1cmwgPSBodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCk7CisgICAgLy8gRklY
TUU6IHNldCBhdXRoZW50aWNhdGlvbiBpbmZvcm1hdGlvbiBvciBjb29raWVzIGZvciB1cmwuCisg
ICAgLy8gU2V0ICJBdXRob3JpemF0aW9uOiA8Y3JlZGVudGlhbHM+IiBpZiBhdXRoZW50aWNhdGlv
biBpbmZvcm1hdGlvbiBleGlzdHMgZm9yIHVybC4KKyAgICBpZiAobV9jb250ZXh0LT5pc0RvY3Vt
ZW50KCkpIHsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihtX2NvbnRleHQpOworICAgICAgICBTdHJpbmcgY29va2llID0gY29va2llcyhkb2N1bWVu
dCwgdXJsKTsKKyAgICAgICAgaWYgKCFjb29raWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiQ29va2llOiAiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNv
b2tpZSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXHJcbiIpOworICAgICAgICB9Cisg
ICAgICAgIC8vIFNldCAiQ29va2llMjogPGNvb2tpZT4iIGlmIGNvb2tpZXMgMiBleGlzdHMgZm9y
IHVybD8KKyAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKKyAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpLnV0ZjgoKTsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnJl
c2V0KCkKK3sKKyAgICBtX21vZGUgPSBJbmNvbXBsZXRlOworCisgICAgbV93c09yaWdpbiA9IFN0
cmluZygpOworICAgIG1fd3NMb2NhdGlvbiA9IFN0cmluZygpOworICAgIG1fd3NQcm90b2NvbCA9
IFN0cmluZygpOworICAgIG1fc2V0Q29va2llID0gU3RyaW5nKCk7CisgICAgbV9zZXRDb29raWUy
ID0gU3RyaW5nKCk7Cit9CisKK2ludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5k
c2hha2UoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgbGVuKQoreworICAgIG1fbW9kZSA9IElu
Y29tcGxldGU7CisgICAgaWYgKGxlbiA8IHNpemVvZih3ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hha2VI
ZWFkZXIpIC0gMSkgeworICAgICAgICAvLyBKdXN0IGhhc24ndCBiZWVuIHJlY2VpdmVkIGZ1bGx5
IHlldC4KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoIW1lbWNtcChoZWFkZXIs
IHdlYlNvY2tldFNlcnZlckhhbmRzaGFrZUhlYWRlciwgc2l6ZW9mKHdlYlNvY2tldFNlcnZlckhh
bmRzaGFrZUhlYWRlcikgLSAxKSkKKyAgICAgICAgbV9tb2RlID0gTm9ybWFsOworICAgIGVsc2Ug
eworICAgICAgICBjb25zdCBTdHJpbmcmIGNvZGUgPSBleHRyYWN0UmVzcG9uc2VDb2RlKGhlYWRl
ciwgbGVuKTsKKyAgICAgICAgaWYgKGNvZGUuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIExPRyhO
ZXR3b3JrLCAic2hvcnQgc2VydmVyIGhhbmRzaGFrZTogJXMiLCBoZWFkZXIpOworICAgICAgICAg
ICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGlmIChjb2RlLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgTE9HKE5ldHdvcmssICJubyByZXNwb25zZSBjb2RlIGZvdW5kOiAlcyIsIGhl
YWRlcik7CisgICAgICAgICAgICByZXR1cm4gbGVuOworICAgICAgICB9CisgICAgICAgIExPRyhO
ZXR3b3JrLCAicmVzcG9uc2UgY29kZTogJXMiLCBjb2RlLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICBpZiAoY29kZSA9PSAiNDAxIikgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJBdXRoZW50
aWNhdGlvbiByZXF1aXJlZCIpOworICAgICAgICAgICAgcmV0dXJuIGxlbjsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiTWlzbWF0Y2ggc2VydmVyIGhhbmRzaGFr
ZTogJXMiLCBoZWFkZXIpOworICAgICAgICAgICAgcmV0dXJuIGxlbjsKKyAgICAgICAgfQorICAg
IH0KKyAgICBjb25zdCBjaGFyKiBwID0gaGVhZGVyICsgc2l6ZW9mKHdlYlNvY2tldFNlcnZlckhh
bmRzaGFrZUhlYWRlcikgLSAxOworICAgIGNvbnN0IGNoYXIqIGVuZCA9IGhlYWRlciArIGxlbiAr
IDE7CisKKyAgICBpZiAobV9tb2RlID09IE5vcm1hbCkgeworICAgICAgICBzaXplX3QgaGVhZGVy
U2l6ZSA9IGVuZCAtIHA7CisgICAgICAgIGlmIChoZWFkZXJTaXplIDwgc2l6ZW9mKHdlYlNvY2tl
dFVwZ3JhZGVIZWFkZXIpIC0gMSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAo
bWVtY21wKHAsIHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIsIHNpemVvZih3ZWJTb2NrZXRVcGdyYWRl
SGVhZGVyKSAtIDEpKSB7CisgICAgICAgICAgICBMT0coTmV0d29yaywgIkJhZCB1cGdyYWRlIGhl
YWRlcjogJXMiLCBwKTsKKyAgICAgICAgICAgIHJldHVybiBwIC0gaGVhZGVyICsgc2l6ZW9mKHdl
YlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMTsKKyAgICAgICAgfQorICAgICAgICBwICs9IHNpemVv
Zih3ZWJTb2NrZXRVcGdyYWRlSGVhZGVyKSAtIDE7CisKKyAgICAgICAgaGVhZGVyU2l6ZSA9IGVu
ZCAtIHA7CisgICAgICAgIGlmIChoZWFkZXJTaXplIDwgc2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rp
b25IZWFkZXIpIC0gMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKG1lbWNt
cChwLCB3ZWJTb2NrZXRDb25uZWN0aW9uSGVhZGVyLCBzaXplb2Yod2ViU29ja2V0Q29ubmVjdGlv
bkhlYWRlcikgLSAxKSkgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJCYWQgY29ubmVjdGlv
biBoZWFkZXI6ICVzIiwgcCk7CisgICAgICAgICAgICByZXR1cm4gcCAtIGhlYWRlciArIHNpemVv
Zih3ZWJTb2NrZXRDb25uZWN0aW9uSGVhZGVyKSAtIDE7CisgICAgICAgIH0KKyAgICAgICAgcCAr
PSBzaXplb2Yod2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlcikgLSAxOworICAgIH0KKworICAgIGlm
ICghc3RybnN0cihwLCAiXHJcblxyXG4iLCBlbmQgLSBwKSkgeworICAgICAgICAvLyBKdXN0IGhh
c24ndCBiZWVuIHJlY2VpdmVkIGZ1bGx5IHlldC4KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0K
KyAgICBIVFRQSGVhZGVyTWFwIGhlYWRlcnM7CisgICAgcCA9IHJlYWRIVFRQSGVhZGVycyhwLCBl
bmQsICZoZWFkZXJzKTsKKyAgICBpZiAoIXApIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJyZWFk
SFRUUEhlYWRlcnMgZmFpbGVkIik7CisgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAgICAgICAg
cmV0dXJuIGxlbjsKKyAgICB9CisgICAgaWYgKCFwcm9jZXNzSGVhZGVycyhoZWFkZXJzKSkgewor
ICAgICAgICBMT0coTmV0d29yaywgImhlYWRlciBwcm9jZXNzIGZhaWxlZCIpOworICAgICAgICBt
X21vZGUgPSBGYWlsZWQ7CisgICAgICAgIHJldHVybiBwIC0gaGVhZGVyOworICAgIH0KKyAgICBz
d2l0Y2ggKG1fbW9kZSkgeworICAgIGNhc2UgTm9ybWFsOgorICAgICAgICBjaGVja1Jlc3BvbnNl
SGVhZGVycygpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBtX21vZGUg
PSBGYWlsZWQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gcCAtIGhlYWRlcjsK
K30KKworV2ViU29ja2V0SGFuZHNoYWtlOjpNb2RlIFdlYlNvY2tldEhhbmRzaGFrZTo6bW9kZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbW9kZTsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2Nr
ZXRIYW5kc2hha2U6OnNlcnZlcldlYlNvY2tldE9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fd3NPcmlnaW47Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJXZWJT
b2NrZXRPcmlnaW4oY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRPcmlnaW4pCit7CisgICAgbV93c09y
aWdpbiA9IHdlYlNvY2tldE9yaWdpbjsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5k
c2hha2U6OnNlcnZlcldlYlNvY2tldExvY2F0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93
c0xvY2F0aW9uOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyV2ViU29j
a2V0TG9jYXRpb24oY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRMb2NhdGlvbikKK3sKKyAgICBtX3dz
TG9jYXRpb24gPSB3ZWJTb2NrZXRMb2NhdGlvbjsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2Nr
ZXRIYW5kc2hha2U6OnNlcnZlcldlYlNvY2tldFByb3RvY29sKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV93c1Byb3RvY29sOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVy
V2ViU29ja2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRQcm90b2NvbCkKK3sKKyAg
ICBtX3dzUHJvdG9jb2wgPSB3ZWJTb2NrZXRQcm90b2NvbDsKK30KKworY29uc3QgU3RyaW5nJiBX
ZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlclNldENvb2tpZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fc2V0Q29va2llOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyU2V0
Q29va2llKGNvbnN0IFN0cmluZyYgc2V0Q29va2llKQoreworICAgIG1fc2V0Q29va2llID0gc2V0
Q29va2llOworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyU2V0
Q29va2llMigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2V0Q29va2llMjsKK30KKwordm9pZCBX
ZWJTb2NrZXRIYW5kc2hha2U6OnNldFNlcnZlclNldENvb2tpZTIoY29uc3QgU3RyaW5nJiBzZXRD
b29raWUyKQoreworICAgIG1fc2V0Q29va2llMiA9IHNldENvb2tpZTI7Cit9CisKK0tVUkwgV2Vi
U29ja2V0SGFuZHNoYWtlOjpodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkgY29u
c3QKK3sKKyAgICBLVVJMIHVybCA9IG1fdXJsLmNvcHkoKTsKKyAgICB1cmwuc2V0UHJvdG9jb2wo
bV9zZWN1cmUgPyAiaHR0cHMiIDogImh0dHAiKTsKKyAgICByZXR1cm4gdXJsOworfQorCitjb25z
dCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBz
dGFydCwgY29uc3QgY2hhciogZW5kLCBIVFRQSGVhZGVyTWFwKiBoZWFkZXJzKQoreworICAgIFZl
Y3RvcjxjaGFyPiBuYW1lOworICAgIFZlY3RvcjxjaGFyPiB2YWx1ZTsKKyAgICBmb3IgKGNvbnN0
IGNoYXIqIHAgPSBzdGFydDsgcCA8IGVuZDsgcCsrKSB7CisgICAgICAgIG5hbWUuY2xlYXIoKTsK
KyAgICAgICAgdmFsdWUuY2xlYXIoKTsKKworICAgICAgICBmb3IgKDsgcCA8IGVuZDsgcCsrKSB7
CisgICAgICAgICAgICBzd2l0Y2ggKCpwKSB7CisgICAgICAgICAgICBjYXNlICdccic6CisgICAg
ICAgICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChwICsgMSA8IGVuZCAmJiAqKHAgKyAxKSA9PSAnXG4nKQorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHAgKyAyOworICAgICAgICAgICAgICAgICAgICBMT0coTmV0d29yaywgIkNSIGRv
ZXNuJ3QgZm9sbG93IExGIHA9JXAgZW5kPSVwIiwgcCwgZW5kKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIExPRyhOZXR3
b3JrLCAiVW5leHBlY3RlZCBDUiBpbiBuYW1lIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgICAgICBjYXNlICdcbic6CisgICAgICAgICAgICAgICAgTE9HKE5ldHdvcmssICJV
bmV4cGVjdGVkIExGIGluIG5hbWUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgIGNhc2UgJzonOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBpZiAoKnAgPj0gMHg0MSAmJiAqcCA8PSAweDVhKQorICAg
ICAgICAgICAgICAgICAgICBuYW1lLmFwcGVuZCgqcCArIDB4MjApOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbmFtZS5hcHBlbmQoKnApOworICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCpwID09ICc6Jykg
eworICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAoOyBwIDwgZW5kICYmICpwID09IDB4MjA7
IHArKykgeyB9CisKKyAgICAgICAgZm9yICg7IHAgPCBlbmQ7IHArKykgeworICAgICAgICAgICAg
c3dpdGNoICgqcCkgeworICAgICAgICAgICAgY2FzZSAnXHInOgorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAnXG4nOgorICAgICAgICAgICAgICAgIExPRyhOZXR3b3Jr
LCAiVW5leHBlY3RlZCBMRiBpbiB2YWx1ZSIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB2YWx1ZS5hcHBlbmQoKnApOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCpwID09ICdccicpIHsKKyAgICAgICAgICAg
ICAgICArK3A7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHAgPj0gZW5kIHx8ICpwICE9ICdcbicpIHsKKyAgICAgICAgICAgIExP
RyhOZXR3b3JrLCAiQ1IgZG9lc24ndCBmb2xsb3cgTEYgYWZ0ZXIgdmFsdWUgcD0lcCBlbmQ9JXAi
LCBwLCBlbmQpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgQXRv
bWljU3RyaW5nIG5hbWVTdHIoU3RyaW5nOjpmcm9tVVRGOChuYW1lLmRhdGEoKSwgbmFtZS5zaXpl
KCkpKTsKKyAgICAgICAgU3RyaW5nIHZhbHVlU3RyID0gU3RyaW5nOjpmcm9tVVRGOCh2YWx1ZS5k
YXRhKCksIHZhbHVlLnNpemUoKSk7CisgICAgICAgIExPRyhOZXR3b3JrLCAibmFtZT0lcyB2YWx1
ZT0lcyIsIG5hbWVTdHIuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdmFsdWVTdHIudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIGhlYWRlcnMtPmFkZChuYW1lU3RyLCB2YWx1ZVN0cik7CisgICAgfQor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitib29sIFdlYlNv
Y2tldEhhbmRzaGFrZTo6cHJvY2Vzc0hlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVy
cykKK3sKKyAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVy
cy5iZWdpbigpOyBpdCAhPSBoZWFkZXJzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIHN3aXRjaCAo
bV9tb2RlKSB7CisgICAgICAgIGNhc2UgTm9ybWFsOgorICAgICAgICAgICAgaWYgKGl0LT5maXJz
dCA9PSAid2Vic29ja2V0LW9yaWdpbiIpCisgICAgICAgICAgICAgICAgbV93c09yaWdpbiA9IGl0
LT5zZWNvbmQ7CisgICAgICAgICAgICBlbHNlIGlmIChpdC0+Zmlyc3QgPT0gIndlYnNvY2tldC1s
b2NhdGlvbiIpCisgICAgICAgICAgICAgICAgbV93c0xvY2F0aW9uID0gaXQtPnNlY29uZDsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKGl0LT5maXJzdCA9PSAid2Vic29ja2V0LXByb3RvY29sIikKKyAg
ICAgICAgICAgICAgICBtX3dzUHJvdG9jb2wgPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgZWxz
ZSBpZiAoaXQtPmZpcnN0ID09ICJzZXQtY29va2llIikKKyAgICAgICAgICAgICAgICBtX3NldENv
b2tpZSA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBlbHNlIGlmIChpdC0+Zmlyc3QgPT0gInNl
dC1jb29raWUyIikKKyAgICAgICAgICAgICAgICBtX3NldENvb2tpZTIgPSBpdC0+c2Vjb25kOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNhc2UgSW5jb21wbGV0ZToKKyAgICAgICAg
Y2FzZSBGYWlsZWQ6CisgICAgICAgIGNhc2UgQ29ubmVjdGVkOgorICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6
Y2hlY2tSZXNwb25zZUhlYWRlcnMoKQoreworICAgIEFTU0VSVChtX21vZGUgPT0gTm9ybWFsKTsK
KyAgICBtX21vZGUgPSBGYWlsZWQ7CisgICAgaWYgKG1fd3NPcmlnaW4uaXNOdWxsKCkgfHwgbV93
c0xvY2F0aW9uLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoY2xpZW50T3Jp
Z2luKCkgIT0gbV93c09yaWdpbikgeworICAgICAgICBMT0coTmV0d29yaywgIk1pc21hdGNoIG9y
aWdpbjogJXMgIT0gJXMiLCBjbGllbnRPcmlnaW4oKS51dGY4KCkuZGF0YSgpLCBtX3dzT3JpZ2lu
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChjbGllbnRM
b2NhdGlvbigpICE9IG1fd3NMb2NhdGlvbikgeworICAgICAgICBMT0coTmV0d29yaywgIk1pc21h
dGNoIGxvY2F0aW9uOiAlcyAhPSAlcyIsIGNsaWVudExvY2F0aW9uKCkudXRmOCgpLmRhdGEoKSwg
bV93c0xvY2F0aW9uLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmICghbV9jbGllbnRQcm90b2NvbC5pc0VtcHR5KCkgJiYgbV9jbGllbnRQcm90b2NvbCAhPSBt
X3dzUHJvdG9jb2wpIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJNaXNtYXRjaCBwcm90b2NvbDog
JXMgIT0gJXMiLCBtX2NsaWVudFByb3RvY29sLnV0ZjgoKS5kYXRhKCksIG1fd3NQcm90b2NvbC51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX21vZGUgPSBDb25u
ZWN0ZWQ7CisgICAgcmV0dXJuOworfQorCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWRiZTY4Ci0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCkBA
IC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0SGFuZHNoYWtlX2gKKyNkZWZpbmUgV2Vi
U29ja2V0SGFuZHNoYWtlX2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OworICAgIGNsYXNzIEhUVFBIZWFkZXJNYXA7CisKKyAgICBjbGFzcyBXZWJT
b2NrZXRIYW5kc2hha2UgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgZW51bSBNb2RlIHsKKyAgICAgICAgICAgIEluY29tcGxldGUsIE5vcm1hbCwgRmFpbGVkLCBD
b25uZWN0ZWQKKyAgICAgICAgfTsKKyAgICAgICAgV2ViU29ja2V0SGFuZHNoYWtlKGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cisg
ICAgICAgIH5XZWJTb2NrZXRIYW5kc2hha2UoKTsKKworICAgICAgICBjb25zdCBLVVJMJiB1cmwo
KSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRVUkwoY29uc3QgS1VSTCYpOworICAgICAgICBjb25z
dCBTdHJpbmcgaG9zdCgpIGNvbnN0OworCisgICAgICAgIGNvbnN0IFN0cmluZyYgY2xpZW50UHJv
dG9jb2woKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRDbGllbnRQcm90b2NvbChjb25zdCBTdHJp
bmcmIHByb3RvY29sKTsKKworICAgICAgICBib29sIHNlY3VyZSgpIGNvbnN0OworICAgICAgICB2
b2lkIHNldFNlY3VyZShib29sIHNlY3VyZSk7CisKKyAgICAgICAgU3RyaW5nIGNsaWVudE9yaWdp
bigpIGNvbnN0OworICAgICAgICBTdHJpbmcgY2xpZW50TG9jYXRpb24oKSBjb25zdDsKKworICAg
ICAgICBDU3RyaW5nIGNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKSBjb25zdDsKKworICAgICAgICB2
b2lkIHJlc2V0KCk7CisKKyAgICAgICAgaW50IHJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hh
ciogaGVhZGVyLCBzaXplX3QgbGVuKTsKKyAgICAgICAgTW9kZSBtb2RlKCkgY29uc3Q7CisKKyAg
ICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oKSBjb25zdDsKKyAgICAg
ICAgdm9pZCBzZXRTZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRP
cmlnaW4pOworCisgICAgICAgIGNvbnN0IFN0cmluZyYgc2VydmVyV2ViU29ja2V0TG9jYXRpb24o
KSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTZXJ2ZXJXZWJTb2NrZXRMb2NhdGlvbihjb25zdCBT
dHJpbmcmIHdlYlNvY2tldExvY2F0aW9uKTsKKworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZl
cldlYlNvY2tldFByb3RvY29sKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2VydmVyV2ViU29j
a2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRQcm90b2NvbCk7CisKKyAgICAgICAg
Y29uc3QgU3RyaW5nJiBzZXJ2ZXJTZXRDb29raWUoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRT
ZXJ2ZXJTZXRDb29raWUoY29uc3QgU3RyaW5nJiBzZXRDb29raWUpOworICAgICAgICBjb25zdCBT
dHJpbmcmIHNlcnZlclNldENvb2tpZTIoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTZXJ2ZXJT
ZXRDb29raWUyKGNvbnN0IFN0cmluZyYgc2V0Q29va2llMik7CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBLVVJMIGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdDsKKwor
ICAgICAgICAvLyBSZWFkcyBhbGwgaGVhZGVycyBleGNlcHQgZm9yIHRoZSB0d28gcHJlZGVmaW5l
ZCBvbmVzLgorICAgICAgICBjb25zdCBjaGFyKiByZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciog
c3RhcnQsIGNvbnN0IGNoYXIqIGVuZCwgSFRUUEhlYWRlck1hcCogaGVhZGVycyk7CisgICAgICAg
IGJvb2wgcHJvY2Vzc0hlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycyk7CisgICAg
ICAgIHZvaWQgY2hlY2tSZXNwb25zZUhlYWRlcnMoKTsKKworICAgICAgICBLVVJMIG1fdXJsOwor
ICAgICAgICBTdHJpbmcgbV9jbGllbnRQcm90b2NvbDsKKyAgICAgICAgYm9vbCBtX3NlY3VyZTsK
KyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OworCisgICAgICAgIE1v
ZGUgbV9tb2RlOworCisgICAgICAgIFN0cmluZyBtX3dzT3JpZ2luOworICAgICAgICBTdHJpbmcg
bV93c0xvY2F0aW9uOworICAgICAgICBTdHJpbmcgbV93c1Byb3RvY29sOworICAgICAgICBTdHJp
bmcgbV9zZXRDb29raWU7CisgICAgICAgIFN0cmluZyBtX3NldENvb2tpZTI7CisgICAgfTsKKwor
fSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMp
CisKKyNlbmRpZiAgLy8gV2ViU29ja2V0SGFuZHNoYWtlX2g=
</data>
<flag name="review"
          id="19969"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39039</attachid>
            <date>2009-09-03 22:27:17 -0700</date>
            <delta_ts>2009-09-04 08:04:22 -0700</delta_ts>
            <desc>WebSocket API implementation</desc>
            <filename>bug-28038-20090904142716.patch</filename>
            <type>text/plain</type>
            <size>65174</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAzMjE2M2Q5Li4wMmIxMmE2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTQg
QEAKIDIwMDktMDktMDMgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CiAKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IFdURjo6
dHJ5RmFzdE1hbGxvYyB1c2VkIGluIFdlYlNvY2tldENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODAzOAorCisgICAgICAgICogSmF2YVNj
cmlwdENvcmUuZXhwOgorCisyMDA5LTA5LTAzICBGdW1pdG9zaGkgVWthaSAgPHVrYWlAY2hyb21p
dW0ub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgogCiAgICAgICAgIEFk
ZCBzdHJuc3RyIGZvciBMaW51eCBhbmQgV2luZG93cyBpbiBTdHJpbmdFeHRyYXMuaApkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IGQ0NWEyMmQuLmExNjU2MjEgMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5leHAKQEAgLTI5NSw2ICsyOTUsNyBAQCBfX1pOM1dURjEyZGV0YWNoVGhyZWFk
RWoKIF9fWk4zV1RGMTJpc01haW5UaHJlYWRFdgogX19aTjNXVEYxMnJhbmRvbU51bWJlckV2CiBf
X1pOM1dURjEzY3VycmVudFRocmVhZEV2CitfX1pOM1dURjEzdHJ5RmFzdE1hbGxvY0VtCiBfX1pO
M1dURjEzdHJ5RmFzdENhbGxvY0VtbQogX19aTjNXVEYxM3RyeUZhc3RNYWxsb2NFbQogX19aTjNX
VEYxNVRocmVhZENvbmRpdGlvbjR3YWl0RVJOU181TXV0ZXhFCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhlN2U5ZTkuLmRlMzExMGUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjMgQEAKKzIwMDktMDktMDMgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Vi
U29ja2V0IEFQSSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI4MDM4CisgICAgICAgIAorICAgICAgICBBZGQgYnVpbGQgc3lz
dGVtcyBvbmx5IGZvciBHTlVtYWtlZmlsZS5hbSBhbmQgV2ViQ29yZS54Y29kZXByb2ogbm93Lgor
ICAgICAgICBPdGhlciBidWlsZCBzeXN0ZW1zIHdpbGwgYmUgdXBkYXRlZCBvbmNlIHRoZSBjb2Rl
IGlzIGZ1bmN0aW9uYWwuCisgICAgICAgIFRlc3RzIHdpbGwgYmUgbGFuZGVkIG9uY2UgdGhlIGNv
ZGUgaXMgY29tcGxldGVkIGFuZCBmdW5jdGlvbmFsLgorCisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMuY3BwOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6d2ViU29ja2V0KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9FdmVudFRhcmdldCk6CisgICAgICAgICog
ZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojp0b1dl
YlNvY2tldCk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6CisgICAgICAgICogcGFnZS9E
T01XaW5kb3cuaWRsOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlByb2Nlc3NXZWJTb2NrZXRFdmVudFRhc2s6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrOjpwZXJmb3JtVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrOjpQcm9jZXNzV2ViU29ja2V0
RXZlbnRUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRQcm90b2NvbFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0OjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y2xvc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpidWZmZXJlZEFtb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXQ6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldDo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENv
bm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6ZGlzcGF0Y2hPcGVuRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0OjpkaXNwYXRjaE1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OmRpc3BhdGNoQ2xvc2VFdmVudCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2V0T25vcGVu
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6b25vcGVuKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6c2V0T25tZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dDo6b25tZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2V0T25jbG9zZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Om9uY2xvc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0Ojp0b1dlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6
OmV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6cmVmRXZlbnRU
YXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkZXJlZkV2ZW50VGFyZ2V0KToK
KyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDogQWRkZWQuCisgICAgICAgICogd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIHdlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuaDogQWRkZWQuCisKIDIwMDktMDktMDMgIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMuY3BwCmluZGV4IDc1YmU4YTMuLmRkYTFjYmYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBA
IC0zNDIsNiArMzQyLDcgQEAKICNpbmNsdWRlICJKU1dlYktpdENTU01hdHJpeC5jcHAiCiAjaW5j
bHVkZSAiSlNXZWJLaXRQb2ludC5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRUcmFuc2l0aW9uRXZl
bnQuY3BwIgorI2luY2x1ZGUgIkpTV2ViU29ja2V0LmNwcCIKICNpbmNsdWRlICJKU1doZWVsRXZl
bnQuY3BwIgogI2luY2x1ZGUgIkpTV29ya2VyLmNwcCIKICNpbmNsdWRlICJKU1dvcmtlckNvbnRl
eHQuY3BwIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KaW5kZXggOGJiOGQzYi4uOTc2NGU3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zMjM0LDcgKzMy
MzQsMTIgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
U29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggXAogCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwIFwKLQlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKwlXZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmggXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBcCisJV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaCBcCisJV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2UuaAogCiB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUVycm9yLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NjBmMjVkLi4xN2IxZTZiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODg4LDYgKzg4OCw5IEBACiAJCTUx
MEQ0QTM2MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMwMTAzMTY1
RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCAqLzsgfTsKIAkJNTEwRDRB
MzcxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMxMTAzMTY1RUUwMDQ5
RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggKi87IH07CiAJCTUxMEQ0QTM4MTAzMTY1
RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAv
KiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLzsgfTsKKwkJNTEwRDRBNEUxMDMxNzdBMjAw
NDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tl
dENoYW5uZWwuY3BwICovOyB9OworCQk1MTBENEE0RjEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29j
a2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEwRDRBNDgxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCAqLzsgfTsK
KwkJNTEwRDRBNTAxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTQ5MTAz
MTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggKi87IH07CiAJCTUxMTZE
OTc3MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAv
KiBEYXRhYmFzZURldGFpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MTFGMjMxNzBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFz
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFG
MjMxMzBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAgKi87IH07CiAJCTUx
MUYyMzE4MERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGMjMxNDBEQzE2MERBMDA0RjAw
MzIgLyogTG9jYWxTdG9yYWdlVGFzay5oICovOyB9OwpAQCAtOTc0LDYgKzk3NywxMCBAQAogCQk1
MUFCQUUxQjEwM0MxOEZGMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtRXJyb3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFBMTAzQzE4RkYwMDhD
NTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oICovOyB9OwogCQk1MUFCQUUxRTEwM0MxOTEzMDA4
QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUxQzEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3Ry
ZWFtSGFuZGxlLmggKi87IH07CiAJCTUxQUJBRTFGMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRT
dHJlYW1IYW5kbGVDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUFCQUUxRDEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxl
Q0ZOZXQuY3BwICovOyB9OworCQk1MUFCQUUyRTEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0
SGFuZHNoYWtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUFCQUUyQzEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5jcHAg
Ki87IH07CisJCTUxQUJBRTJGMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUy
RDEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5oICovOyB9OworCQk1MUFC
QUU0NDEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTQyMTA0M0FCNEEwMDhD
NTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwICovOyB9OworCQk1MUFCQUU0NTEwNDNBQjRB
MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUU0MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29j
a2V0SGFuZHNoYWtlLmggKi87IH07CiAJCTUxQjI0MTdCMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdh
Y3lXZWJBcmNoaXZlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFCMjQxN0EwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMu
bW0gKi87IH07CiAJCTUxQkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTM3REUwREFF
RTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi87IH07CiAJCTUxQzBBQTM5MEYyQUExMEEw
MDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTYwMzQs
NiArNjA0MSw5IEBACiAJCTUxMEQ0QTMwMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1I
YW5kbGVCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tl
dFN0cmVhbUhhbmRsZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBE
NEEzMTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxMEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldENoYW5uZWwuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2Vi
U29ja2V0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2Nr
ZXRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0QTQ5MTAzMTc3
QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldENoYW5uZWxDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTExNkQ5NzUwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWls
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZURldGFpbHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjIzMTMwREMxNjBEQTAwNEYwMDMyIC8q
IExvY2FsU3RvcmFnZVRhc2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTG9jYWxTdG9yYWdlVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
MUYyMzE0MERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsU3RvcmFnZVRhc2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTYxMjcsNiArNjEzNywxMCBAQAogCQk1MUFCQUUxQTEwM0MxOEZGMDA4
QzUyNjAgLyogU29ja2V0U3RyZWFtRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gU29ja2V0U3RyZWFtRXJyb3IuaDsgcGF0aCA9IGNmL1NvY2tldFN0cmVhbUVycm9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQUJBRTFDMTAzQzE5MTMwMDhDNTI2MCAv
KiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
U29ja2V0U3RyZWFtSGFuZGxlLmg7IHBhdGggPSBjZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBQkFFMUQxMDNDMTkxMzAwOEM1MjYwIC8qIFNv
Y2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDsgcGF0aCA9IGNmL1NvY2tldFN0cmVh
bUhhbmRsZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFMkMx
MDNENEY3NTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUJBRTJEMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2Nr
ZXRIYW5kc2hha2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tl
dEhhbmRzaGFrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFNDIxMDQz
QUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MUFCQUU0MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFu
ZHNoYWtlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhhbmRz
aGFrZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIyNDE3QTBEOTMxRjNGMDBF
ODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IExlZ2FjeVdlYkFyY2hpdmVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJh
bWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkRnJhbWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNTg2LDYgKzEwNjAwLDExIEBACiAJCTUxOEEz
NEJEMTAyNkM4MzEwMDFCNjg5NiAvKiB3ZWJzb2NrZXRzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MUFCQUU0MjEwNDNBQjRBMDA4QzUyNjAgLyogV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcCAqLywKKwkJCQk1MUFCQUU0MzEwNDNBQjRBMDA4QzUyNjAgLyog
V2ViU29ja2V0SGFuZHNoYWtlLmggKi8sCisJCQkJNTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8q
IFdlYlNvY2tldENoYW5uZWwuY3BwICovLAorCQkJCTUxMEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAv
KiBXZWJTb2NrZXRDaGFubmVsLmggKi8sCisJCQkJNTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8q
IFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCAqLywKIAkJCQk1MThBMzRCRTEwMjZDODMxMDAxQjY4
OTYgLyogV2ViU29ja2V0LmNwcCAqLywKIAkJCQk1MThBMzRCRjEwMjZDODMxMDAxQjY4OTYgLyog
V2ViU29ja2V0LmggKi8sCiAJCQkJNTE4QTM0QzAxMDI2QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tl
dC5pZGwgKi8sCkBAIC0xNzU4Niw2ICsxNzYwNSw5IEBACiAJCQkJNTEwRDRBMzgxMDMxNjVFRTAw
NDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTFBQkFFMUIxMDNDMThGRjAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUVycm9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTBENEE0RjEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29j
a2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRBNTAxMDMxNzdBMjAwNDlFQTU0
IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQUJBRTQ1
MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMTk2ODUsNiArMTk3MDcsOCBAQAogCQkJCTUxMEQ0QTMzMTAzMTY1RUUwMDQ5RUE1NCAvKiBT
b2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwRDRBMzYxMDMx
NjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTFBQkFFMUYxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMEQ0QTRFMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJT
b2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxQUJBRTQ0MTA0M0FCNEEwMDhD
NTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDAwNWE5MmYuLjRjYTNmNjggMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC01NCw2ICs1NCw5
IEBACiAKICNpbmNsdWRlICJKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiSlNXZWJLaXRQb2ludENvbnN0cnVjdG9yLmgiCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQor
I2luY2x1ZGUgIkpTV2ViU29ja2V0Q29uc3RydWN0b3IuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkpT
V29ya2VyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJKU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5oIgpAQCAtNjQ2LDYg
KzY0OSwxMyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzaGFyZWRXb3JrZXIoRXhlY1N0YXRlKiBl
eGVjKSBjb25zdAogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCitKU1ZhbHVl
IEpTRE9NV2luZG93Ojp3ZWJTb2NrZXQoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1dlYlNvY2tldENvbnN0cnVjdG9yPihleGVjLCB0aGlz
KTsKK30KKyNlbmRpZgorCiAvLyBDdXN0b20gZnVuY3Rpb25zCiAKIC8vIEhlbHBlciBmb3Igd2lu
ZG93Lm9wZW4oKSBhbmQgd2luZG93LnNob3dNb2RhbERpYWxvZygpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0LmNwcAppbmRleCBlZDgwZDgwLi4wNDIxZDEwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudFRhcmdldC5jcHAKQEAgLTc4LDYgKzc4LDExIEBACiAjaW5jbHVkZSAiTm90aWZp
Y2F0aW9uLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyNpbmNsdWRlICJK
U1dlYlNvY2tldC5oIgorI2luY2x1ZGUgIldlYlNvY2tldC5oIgorI2VuZGlmCisKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzOSw2ICsxNDQsMTEgQEAg
SlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRXZlbnRUYXJnZXQqIHRhcmcKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgbm90aWZp
Y2F0aW9uKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGlmIChXZWJT
b2NrZXQqIHdlYlNvY2tldCA9IHRhcmdldC0+dG9XZWJTb2NrZXQoKSkKKyAgICAgICAgcmV0dXJu
IHRvSlMoZXhlYywgd2ViU29ja2V0KTsKKyNlbmRpZgorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwogfQpAQCAtMTgzLDYgKzE5MywxMCBAQCBFdmVudFRh
cmdldCogdG9FdmVudFRhcmdldChKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgQ09OVkVSVF9UT19F
VkVOVF9UQVJHRVQoTm90aWZpY2F0aW9uKQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tF
VFMpCisgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJHRVQoV2ViU29ja2V0KQorI2VuZGlmCisKICAg
ICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3Bw
IGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDJmMTNkYTguLjY1MjY0NGYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5jcHAKQEAgLTgzLDYgKzgzLDEzIEBAIFNWR0VsZW1lbnRJbnN0YW5jZSogRXZl
bnRUYXJnZXQ6OnRvU1ZHRWxlbWVudEluc3RhbmNlKCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxF
KFdFQl9TT0NLRVRTKQorV2ViU29ja2V0KiBFdmVudFRhcmdldDo6dG9XZWJTb2NrZXQoKQorewor
ICAgIHJldHVybiAwOworfQorI2VuZGlmCisKIE1lc3NhZ2VQb3J0KiBFdmVudFRhcmdldDo6dG9N
ZXNzYWdlUG9ydCgpCiB7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5oIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCA2ZDNjYjdjLi42
YmNjM2ZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgY2xhc3MgU2hhcmVkV29y
a2VyOwogICAgIGNsYXNzIFNoYXJlZFdvcmtlckNvbnRleHQ7CisgICAgY2xhc3MgV2ViU29ja2V0
OwogICAgIGNsYXNzIFdvcmtlcjsKICAgICBjbGFzcyBYTUxIdHRwUmVxdWVzdDsKICAgICBjbGFz
cyBYTUxIdHRwUmVxdWVzdFVwbG9hZDsKQEAgLTc1LDExICs3NiwxMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgV29ya2VyKiB0b1dvcmtlcigpOwogICAgICAgICB2aXJ0
dWFsIERlZGljYXRlZFdvcmtlckNvbnRleHQqIHRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpOwog
I2VuZGlmCi0KICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCiAgICAgICAgIHZpcnR1YWwgU2hh
cmVkV29ya2VyKiB0b1NoYXJlZFdvcmtlcigpOwogICAgICAgICB2aXJ0dWFsIFNoYXJlZFdvcmtl
ckNvbnRleHQqIHRvU2hhcmVkV29ya2VyQ29udGV4dCgpOwogI2VuZGlmCisjaWYgRU5BQkxFKFdF
Ql9TT0NLRVRTKQorICAgICAgICB2aXJ0dWFsIFdlYlNvY2tldCogdG9XZWJTb2NrZXQoKTsKKyNl
bmRpZgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgICAgIHZpcnR1YWwgTm90aWZp
Y2F0aW9uKiB0b05vdGlmaWNhdGlvbigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5pZGwgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCA2Y2EyOGNlLi41Yzlk
ZGJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmlkbApAQCAtNDg3LDYgKzQ4NywxMCBAQCBtb2R1bGUgd2luZG93IHsK
ICAgICAgICAgYXR0cmlidXRlIFtKU0NDdXN0b21HZXR0ZXJdIFNoYXJlZFdvcmtlckNvbnN0cnVj
dG9yIFNoYXJlZFdvcmtlcjsgLy8gVXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRvcgogI2VuZGlm
CiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9XRUJfU09DS0VUUykgJiYgRU5BQkxFX1dFQl9TT0NLRVRT
CisgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyXSBXZWJTb2NrZXRDb25zdHJ1Y3Rv
ciBXZWJTb2NrZXQ7IC8vIFVzYWJsZSB3aXRoIHRoZSBuZXcgb3BlcmF0b3IKKyNlbmRpZgorCiAg
ICAgICAgIGF0dHJpYnV0ZSBQbHVnaW5Db25zdHJ1Y3RvciBQbHVnaW47CiAgICAgICAgIGF0dHJp
YnV0ZSBQbHVnaW5BcnJheUNvbnN0cnVjdG9yIFBsdWdpbkFycmF5OwogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwCmluZGV4IDk5OWMxZmYuLjhmOTBiMWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwCkBAIC0zNCwxMyArMzQsNTggQEAKIAogI2luY2x1ZGUgIldlYlNvY2tldC5oIgogCisjaW5j
bHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50
LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVy
LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVs
LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIFByb2Nlc3NXZWJTb2NrZXRFdmVudFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB2b2lkIChXZWJTb2NrZXQ6
OipNZXRob2QpKEV2ZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvY2Vzc1dlYlNvY2tl
dEV2ZW50VGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8V2ViU29ja2V0PiB3ZWJTb2NrZXQsIE1ldGhv
ZCBtZXRob2QsIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrKHdlYlNvY2tldCwgbWV0aG9k
LCBldmVudCkpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopCisgICAgeworICAgICAgICAobV93ZWJTb2NrZXQuZ2V0KCktPiptX21l
dGhvZCkobV9ldmVudC5nZXQoKSk7CisgICAgfQorCisgIHByaXZhdGU6CisgICAgUHJvY2Vzc1dl
YlNvY2tldEV2ZW50VGFzayhQYXNzUmVmUHRyPFdlYlNvY2tldD4gd2ViU29ja2V0LCBNZXRob2Qg
bWV0aG9kLCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKKyAgICAgICAgOiBtX3dlYlNvY2tldCh3
ZWJTb2NrZXQpCisgICAgICAgICwgbV9tZXRob2QobWV0aG9kKQorICAgICAgICAsIG1fZXZlbnQo
ZXZlbnQpIHsgfQorCisgICAgUmVmUHRyPFdlYlNvY2tldD4gbV93ZWJTb2NrZXQ7CisgICAgTWV0
aG9kIG1fbWV0aG9kOworICAgIFJlZlB0cjxFdmVudD4gbV9ldmVudDsKK307CisKK3N0YXRpYyBi
b29sIGlzVmFsaWRQcm90b2NvbFN0cmluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHByb3RvY29s
KQoreworICAgIGlmIChwcm90b2NvbC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgaWYgKHByb3RvY29sLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gcHJvdG9jb2wuY2hhcmFjdGVycygpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcHJvdG9jb2wubGVuZ3RoKCk7IGkrKykgeworICAgICAgICBpZiAo
Y2hhcmFjdGVyc1tpXSA8IDB4MjEgfHwgY2hhcmFjdGVyc1tpXSA+IDB4N0UpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiBXZWJTb2NrZXQ6
OldlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogQWN0aXZl
RE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX3N0YXRlKENPTk5FQ1RJTkcpCkBAIC01
OSwzOSArMTA0LDQ5IEBAIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwg
RXhjZXB0aW9uQ29kZSYgZWMpCiAKIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY29ubmVjdCB0byAlcyBwcm90b2NvbD0lcyIsIHRo
aXMsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBwcm90b2NvbC51dGY4KCkuZGF0YSgpKTsK
ICAgICBtX3VybCA9IHVybDsKICAgICBtX3Byb3RvY29sID0gcHJvdG9jb2w7CiAKICAgICBpZiAo
IW1fdXJsLnByb3RvY29sSXMoIndzIikgJiYgIW1fdXJsLnByb3RvY29sSXMoIndzcyIpKSB7Cisg
ICAgICAgIExPR19FUlJPUigiRXJyb3I6IHdyb25nIHVybCBmb3IgV2ViU29ja2V0ICVzIiwgdXJs
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOwogICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFt
X3Byb3RvY29sLmlzTnVsbCgpICYmIG1fcHJvdG9jb2wuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFp
c1ZhbGlkUHJvdG9jb2xTdHJpbmcobV9wcm90b2NvbCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJF
cnJvcjogd3JvbmcgcHJvdG9jb2wgZm9yIFdlYlNvY2tldCAlcyIsIG1fcHJvdG9jb2wudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBDTE9TRUQ7CiAgICAgICAgIGVjID0gU1lOVEFY
X0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAvLyBGSVhNRTogQ2hlY2sgcHJvdG9j
b2wgaXMgdmFsaWQgZm9ybS4KLSAgICAvLyBGSVhNRTogQ29ubmVjdCBXZWJTb2NrZXRDaGFubmVs
LgorICAgIC8vIEZJWE1FOiBpZiBtX3VybC5wb3J0KCkgaXMgYmxvY2tpbmcgcG9ydCwgcmFpc2Ug
U0VDVVJJVFlfRVJSLgorCisgICAgbV9jaGFubmVsID0gV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRl
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcywgbV91cmwsIG1fcHJvdG9jb2wpOworICAg
IG1fY2hhbm5lbC0+Y29ubmVjdCgpOwogfQogCi1ib29sIFdlYlNvY2tldDo6c2VuZChjb25zdCBT
dHJpbmcmLCBFeGNlcHRpb25Db2RlJiBlYykKK2Jvb2wgV2ViU29ja2V0OjpzZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKG1fc3RhdGUgIT0g
T1BFTikgeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIHNlbmQgJXMiLCB0aGlzLCBt
ZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChtX3N0YXRlID09IENPTk5FQ1RJTkcpIHsK
ICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KLSAgICAvLyBGSVhNRTogc2VuZCBtZXNzYWdlIG9uIFdlYlNvY2tldENoYW5uZWwuCi0g
ICAgcmV0dXJuIGZhbHNlOworICAgIC8vIE5vIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYgdGhlIGNv
bm5lY3Rpb24gd2FzIG9uY2UgZXN0YWJsaXNoZWQgYnV0IGhhcyBzdWJzZXF1ZW50bHkgYmVlbiBj
bG9zZWQuCisgICAgaWYgKG1fc3RhdGUgPT0gQ0xPU0VEKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgLy8gRklYTUU6IGNoZWNrIG1lc3NhZ2UgaXMgdmFsaWQgdXRmOC4KKyAgICByZXR1cm4g
bV9jaGFubmVsLT5zZW5kKG1lc3NhZ2UpOwogfQogCiB2b2lkIFdlYlNvY2tldDo6Y2xvc2UoKQog
eworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlIiwgdGhpcyk7CiAgICAgaWYg
KG1fc3RhdGUgPT0gQ0xPU0VEKQogICAgICAgICByZXR1cm47CiAgICAgbV9zdGF0ZSA9IENMT1NF
RDsKLSAgICAvLyBGSVhNRTogY2xvc2UgV2ViU29ja2V0Q2hhbm5lbC4KKyAgICBtX2NoYW5uZWwt
PmNsb3NlKCk7CiB9CiAKIGNvbnN0IEtVUkwmIFdlYlNvY2tldDo6dXJsKCkgY29uc3QKQEAgLTEw
Niw3ICsxNjEsOCBAQCBXZWJTb2NrZXQ6OlN0YXRlIFdlYlNvY2tldDo6cmVhZHlTdGF0ZSgpIGNv
bnN0CiAKIHVuc2lnbmVkIGxvbmcgV2ViU29ja2V0OjpidWZmZXJlZEFtb3VudCgpIGNvbnN0CiB7
Ci0gICAgLy8gRklYTUU6IGFzayBwbGF0Zm9ybSBjb2RlIHRvIGdldCBidWZmZXJlZCBhbW91bnQg
dG8gYmUgc2VudC4KKyAgICBpZiAobV9zdGF0ZSA9PSBPUEVOKQorICAgICAgICByZXR1cm4gbV9j
aGFubmVsLT5idWZmZXJlZEFtb3VudCgpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMTUsNTgg
KzE3MSwxMjAgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogV2ViU29ja2V0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CiB9CiAKLXZvaWQgV2ViU29ja2V0OjphZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wpCit2
b2lkIFdlYlNvY2tldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyLCBib29sKQogewot
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBFdmVudExpc3RlbmVyc01hcDo6aXRl
cmF0b3IgaXRlciA9IG1fZXZlbnRMaXN0ZW5lcnMuZmluZChldmVudFR5cGUpOworICAgIGlmIChp
dGVyID09IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCkpIHsKKyAgICAgICAgTGlzdGVuZXJWZWN0b3Ig
bGlzdGVuZXJzOworICAgICAgICBsaXN0ZW5lcnMuYXBwZW5kKGV2ZW50TGlzdGVuZXIpOworICAg
ICAgICBtX2V2ZW50TGlzdGVuZXJzLmFkZChldmVudFR5cGUsIGxpc3RlbmVycyk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgTGlzdGVuZXJWZWN0b3ImIGxpc3RlbmVycyA9IGl0ZXItPnNlY29uZDsK
KyAgICAgICAgZm9yIChMaXN0ZW5lclZlY3Rvcjo6aXRlcmF0b3IgbGlzdGVuZXJJdGVyID0gbGlz
dGVuZXJzLmJlZ2luKCk7IGxpc3RlbmVySXRlciAhPSBsaXN0ZW5lcnMuZW5kKCk7ICsrbGlzdGVu
ZXJJdGVyKQorICAgICAgICAgICAgaWYgKCpsaXN0ZW5lckl0ZXIgPT0gZXZlbnRMaXN0ZW5lcikK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGlzdGVuZXJzLmFwcGVuZChldmVu
dExpc3RlbmVyKTsKKyAgICAgICAgbV9ldmVudExpc3RlbmVycy5hZGQoZXZlbnRUeXBlLCBsaXN0
ZW5lcnMpOworICAgIH0KIH0KIAotdm9pZCBXZWJTb2NrZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiwgRXZlbnRMaXN0ZW5lciosIGJvb2wpCit2b2lkIFdlYlNvY2tl
dDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5lciwgYm9vbCkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHRoaXMuCisgICAgRXZlbnRMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2V2ZW50
TGlzdGVuZXJzLmZpbmQoZXZlbnRUeXBlKTsKKyAgICBpZiAoaXRlciA9PSBtX2V2ZW50TGlzdGVu
ZXJzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBMaXN0ZW5lclZlY3RvciYgbGlzdGVu
ZXJzID0gaXRlci0+c2Vjb25kOworICAgIGZvciAoTGlzdGVuZXJWZWN0b3I6OmNvbnN0X2l0ZXJh
dG9yIGxpc3RlbmVySXRlciA9IGxpc3RlbmVycy5iZWdpbigpOyBsaXN0ZW5lckl0ZXIgIT0gbGlz
dGVuZXJzLmVuZCgpOyArK2xpc3RlbmVySXRlcikKKyAgICAgICAgaWYgKCpsaXN0ZW5lckl0ZXIg
PT0gZXZlbnRMaXN0ZW5lcikgeworICAgICAgICAgICAgbGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5l
ckl0ZXIgLSBsaXN0ZW5lcnMuYmVnaW4oKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KIH0KIAotYm9vbCBXZWJTb2NrZXQ6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4s
IEV4Y2VwdGlvbkNvZGUmKQorYm9vbCBXZWJTb2NrZXQ6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0
cjxFdmVudD4gZXZ0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHRoaXMuCi0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZXZ0IHx8IGV2dC0+dHlwZSgp
LmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9IEV2ZW50RXhjZXB0aW9uOjpVTlNQRUNJRklFRF9F
VkVOVF9UWVBFX0VSUjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgTGlzdGVu
ZXJWZWN0b3IgbGlzdGVuZXJzQ29weSA9IG1fZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2dC0+dHlwZSgp
KTsKKyAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjpjb25zdF9pdGVyYXRvciBsaXN0ZW5lckl0ZXIg
PSBsaXN0ZW5lcnNDb3B5LmJlZ2luKCk7IGxpc3RlbmVySXRlciAhPSBsaXN0ZW5lcnNDb3B5LmVu
ZCgpOyArK2xpc3RlbmVySXRlcikgeworICAgICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAg
ICAgICAgZXZ0LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBsaXN0ZW5lckl0ZXIt
PmdldCgpLT5oYW5kbGVFdmVudChldnQuZ2V0KCksIGZhbHNlKTsKKyAgICB9CisgICAgcmV0dXJu
ICFldnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KIAogdm9pZCBXZWJTb2NrZXQ6OmRpZENvbm5l
Y3QoKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZENvbm5lY3QiLCB0aGlz
KTsKICAgICBpZiAobV9zdGF0ZSAhPSBDT05ORUNUSU5HKSB7CiAgICAgICAgIGRpZENsb3NlKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9zdGF0ZSA9IE9QRU47Ci0gICAgZGlzcGF0
Y2hPcGVuRXZlbnQoKTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFBy
b2Nlc3NXZWJTb2NrZXRFdmVudFRhc2s6OmNyZWF0ZSh0aGlzLCAmV2ViU29ja2V0OjpkaXNwYXRj
aE9wZW5FdmVudCwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkub3BlbkV2ZW50LCBmYWxzZSwg
ZmFsc2UpKSk7CiB9CiAKIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBT
dHJpbmcmIG1zZykKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRSZWNlaXZl
TWVzc2FnZSAlcyIsIHRoaXMsIG1zZy51dGY4KCkuZGF0YSgpKTsKICAgICBpZiAobV9zdGF0ZSAh
PSBPUEVOKQogICAgICAgICByZXR1cm47Ci0gICAgZGlzcGF0Y2hNZXNzYWdlRXZlbnQobXNnKTsK
KyAgICBSZWZQdHI8TWVzc2FnZUV2ZW50PiBldnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZSgpOwor
ICAgIC8vIEZJWE1FOiBvcmlnaW4sIGxhc3RFdmVudElkLCBzb3VyY2UsIG1lc3NhZ2VQb3J0Lgor
ICAgIGV2dC0+aW5pdE1lc3NhZ2VFdmVudChldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50LCBmYWxz
ZSwgZmFsc2UsIG1zZywgIiIsICIiLCAwLCAwKTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPnBvc3RUYXNrKFByb2Nlc3NXZWJTb2NrZXRFdmVudFRhc2s6OmNyZWF0ZSh0aGlzLCAmV2Vi
U29ja2V0OjpkaXNwYXRjaE1lc3NhZ2VFdmVudCwgZXZ0KSk7CiB9CiAKIHZvaWQgV2ViU29ja2V0
OjpkaWRDbG9zZSgpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkQ2xvc2Ui
LCB0aGlzKTsKICAgICBtX3N0YXRlID0gQ0xPU0VEOwotICAgIGRpc3BhdGNoQ2xvc2VFdmVudCgp
OworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soUHJvY2Vzc1dlYlNvY2tl
dEV2ZW50VGFzazo6Y3JlYXRlKHRoaXMsICZXZWJTb2NrZXQ6OmRpc3BhdGNoQ2xvc2VFdmVudCwg
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgZmFsc2UsIGZhbHNlKSkpOwog
fQogCi12b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hPcGVuRXZlbnQoKQordm9pZCBXZWJTb2NrZXQ6
OmRpc3BhdGNoT3BlbkV2ZW50KEV2ZW50KiBldnQpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVu
dCB0aGlzLgorICAgIGlmIChtX29ub3BlbikgeworICAgICAgICBldnQtPnNldFRhcmdldCh0aGlz
KTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29ub3Bl
bi0+aGFuZGxlRXZlbnQoZXZ0LCBmYWxzZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgZGlzcGF0Y2hFdmVudChldnQsIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKIH0K
IAotdm9pZCBXZWJTb2NrZXQ6OmRpc3BhdGNoTWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYpCit2
b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQoRXZlbnQqIGV2dCkKIHsKLSAgICAv
LyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisgICAgaWYgKG1fb25tZXNzYWdlKSB7CisgICAgICAg
IGV2dC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhp
cyk7CisgICAgICAgIG1fb25tZXNzYWdlLT5oYW5kbGVFdmVudChldnQsIGZhbHNlKTsKKyAgICB9
CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2dCwgZWMp
OworICAgIEFTU0VSVCghZWMpOwogfQogCi12b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hDbG9zZUV2
ZW50KCkKK3ZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaENsb3NlRXZlbnQoRXZlbnQqIGV2dCkKIHsK
LSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisgICAgaWYgKG1fb25jbG9zZSkgeworICAg
ICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50VGFyZ2V0
KHRoaXMpOworICAgICAgICBtX29uY2xvc2UtPmhhbmRsZUV2ZW50KGV2dCwgZmFsc2UpOworICAg
IH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZ0LCBl
Yyk7CisgICAgQVNTRVJUKCFlYyk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmgKaW5kZXggNDg1ZTJjYy4uMmJlMzQ0NSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaApAQCAtMzEsOTMgKzMxLDEwNCBAQAogI2lmbmRlZiBXZWJTb2NrZXRfaAogI2RlZmluZSBX
ZWJTb2NrZXRfaAogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCiAjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgIkV2
ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIktVUkwu
aCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgU3RyaW5nOworICAgIGNsYXNzIFN0cmluZzsKKyAgICBjbGFzcyBXZWJTb2Nr
ZXRDaGFubmVsOwogCi1jbGFzcyBXZWJTb2NrZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTb2Nr
ZXQ+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewotcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4
dCkpOyB9Ci0gICAgdmlydHVhbCB+V2ViU29ja2V0KCk7CisgICAgY2xhc3MgV2ViU29ja2V0IDog
cHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgV2ViU29ja2V0Q2hhbm5lbENsaWVudCB7CisgICAgcHVi
bGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2ViU29ja2V0
KGNvbnRleHQpKTsgfQorICAgICAgICB2aXJ0dWFsIH5XZWJTb2NrZXQoKTsKIAotICAgIGVudW0g
U3RhdGUgewotICAgICAgICBDT05ORUNUSU5HID0gMCwKLSAgICAgICAgT1BFTiA9IDEsCi0gICAg
ICAgIENMT1NFRCA9IDIKLSAgICB9OworICAgICAgICBlbnVtIFN0YXRlIHsKKyAgICAgICAgICAg
IENPTk5FQ1RJTkcgPSAwLAorICAgICAgICAgICAgT1BFTiA9IDEsCisgICAgICAgICAgICBDTE9T
RUQgPSAyCisgICAgICAgIH07CiAKLSAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIGNvbm5lY3Qo
Y29uc3QgS1VSTCYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBi
b29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAg
IGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAg
IHZvaWQgY2xvc2UoKTsKKyAgICAgICAgdm9pZCBjbG9zZSgpOwogCi0gICAgY29uc3QgS1VSTCYg
dXJsKCkgY29uc3Q7Ci0gICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwotICAgIHVuc2lnbmVk
IGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKKyAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkg
Y29uc3Q7CisgICAgICAgIFN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKKyAgICAgICAgdW5zaWdu
ZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRPbm9wZW4oUGFz
c1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25vcGVuID0gZXZlbnRM
aXN0ZW5lcjsgfQotICAgIEV2ZW50TGlzdGVuZXIqIG9ub3BlbigpIGNvbnN0IHsgcmV0dXJuIG1f
b25vcGVuLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRPbm1lc3NhZ2UoUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25tZXNzYWdlID0gZXZlbnRMaXN0ZW5lcjsgfQot
ICAgIEV2ZW50TGlzdGVuZXIqIG9ubWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25tZXNzYWdl
LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRPbmNsb3NlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
ZXZlbnRMaXN0ZW5lcikgeyBtX29uY2xvc2UgPSBldmVudExpc3RlbmVyOyB9Ci0gICAgRXZlbnRM
aXN0ZW5lciogb25jbG9zZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25jbG9zZS5nZXQoKTsgfQorICAg
ICAgICB2b2lkIHNldE9ub3BlbihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVu
ZXIpIHsgbV9vbm9wZW4gPSBldmVudExpc3RlbmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIq
IG9ub3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fb25vcGVuLmdldCgpOyB9CisgICAgICAgIHZvaWQg
c2V0T25tZXNzYWdlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBt
X29ubWVzc2FnZSA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25t
ZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9vbm1lc3NhZ2UuZ2V0KCk7IH0KKyAgICAgICAgdm9p
ZCBzZXRPbmNsb3NlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBt
X29uY2xvc2UgPSBldmVudExpc3RlbmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uY2xv
c2UoKSBjb25zdCB7IHJldHVybiBtX29uY2xvc2UuZ2V0KCk7IH0KIAotICAgIC8vIEV2ZW50VGFy
Z2V0Ci0gICAgdmlydHVhbCBXZWJTb2NrZXQqIHRvV2ViU29ja2V0KCkgeyByZXR1cm4gdGhpczsg
fQorICAgICAgICAvLyBFdmVudFRhcmdldAorICAgICAgICB2aXJ0dWFsIFdlYlNvY2tldCogdG9X
ZWJTb2NrZXQoKSB7IHJldHVybiB0aGlzOyB9CiAKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICAgICAgdmlydHVh
bCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7Ci0gICAgdmlydHVh
bCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEV2ZW50TGlzdGVuZXI+ID4gTGlzdGVuZXJW
ZWN0b3I7CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIExpc3RlbmVyVmVj
dG9yPiBFdmVudExpc3RlbmVyc01hcDsKIAotICAgIC8vIEFjdGl2ZURPTU9iamVjdAotICAgIC8v
IHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKLSAgICAvLyB2aXJ0dWFs
IHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwotICAgIC8vIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5k
KCkgY29uc3Q7Ci0gICAgLy8gdmlydHVhbCB2b2lkIHN1c3BlbmQoKTsKLSAgICAvLyB2aXJ0dWFs
IHZvaWQgcmVzdW1lKCk7Ci0gICAgLy8gdmlydHVhbCB2b2lkIHN0b3AoKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAgICAgICAgdmlydHVhbCBi
b29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAmIGV2ZW50TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9ldmVu
dExpc3RlbmVyczsgfQogCi0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJTb2NrZXQ+OjpyZWY7Ci0g
ICAgdXNpbmcgUmVmQ291bnRlZDxXZWJTb2NrZXQ+OjpkZXJlZjsKKyAgICAgICAgLy8gQWN0aXZl
RE9NT2JqZWN0CisgICAgICAgIC8vICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3Q7CisgICAgICAgIC8vIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CisgICAg
ICAgIC8vIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Q7CisgICAgICAgIC8vIHZpcnR1
YWwgdm9pZCBzdXNwZW5kKCk7CisgICAgICAgIC8vIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKKyAg
ICAgICAgLy8gdmlydHVhbCB2b2lkIHN0b3AoKTsKIAotcHJpdmF0ZToKLSAgICBXZWJTb2NrZXQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNv
Y2tldD46OnJlZjsKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJTb2NrZXQ+OjpkZXJlZjsK
IAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgICAgICAvLyBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDb25uZWN0KCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZyk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZSgpOwogCi0gICAgLy8gV2ViU29ja2V0Q2hh
bm5lbENsaWVudAotICAgIHZvaWQgZGlkQ29ubmVjdCgpOwotICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoY29uc3QgU3RyaW5nJiBtc2cpOwotICAgIHZvaWQgZGlkQ2xvc2UoKTsKKyAgICBwcml2
YXRlOgorICAgICAgICBXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCi0gICAg
dm9pZCBkaXNwYXRjaE9wZW5FdmVudCgpOwotICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRXZlbnQo
Y29uc3QgU3RyaW5nJiBtc2cpOwotICAgIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICAgICAgdmly
dHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KIAotICAgIC8vIEZJWE1F
OiBhZGQgV2ViU29ja2V0Q2hhbm5lbC4KKyAgICAgICAgdm9pZCBkaXNwYXRjaE9wZW5FdmVudChF
dmVudCopOworICAgICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUV2ZW50KEV2ZW50Kik7CisgICAg
ICAgIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KEV2ZW50Kik7CiAKLSAgICBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gbV9vbm9wZW47Ci0gICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25tZXNzYWdl
OwotICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29uY2xvc2U7CisgICAgICAgIFJlZlB0cjxX
ZWJTb2NrZXRDaGFubmVsPiBtX2NoYW5uZWw7CiAKLSAgICBTdGF0ZSBtX3N0YXRlOwotICAgIEtV
UkwgbV91cmw7Ci0gICAgU3RyaW5nIG1fcHJvdG9jb2w7Ci19OworICAgICAgICBSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gbV9vbm9wZW47CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29u
bWVzc2FnZTsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25jbG9zZTsKKyAgICAg
ICAgRXZlbnRMaXN0ZW5lcnNNYXAgbV9ldmVudExpc3RlbmVyczsKKworICAgICAgICBTdGF0ZSBt
X3N0YXRlOworICAgICAgICBLVVJMIG1fdXJsOworICAgICAgICBTdHJpbmcgbV9wcm90b2NvbDsK
KyAgICB9OwogCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZW5kaWYgIC8vIEVOQUJMRShX
RUJfU09DS0VUUykKKwogI2VuZGlmICAvLyBXZWJTb2NrZXRfaApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5
NDhjNGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5jcHAKQEAgLTAsMCArMSwyNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgorCisjaW5j
bHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkNvb2tpZUphci5oIgorI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNvY2tldFN0
cmVhbUVycm9yLmgiCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCisjaW5jbHVkZSAi
U3RyaW5nSGFzaC5oIgorI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXZWJTb2NrZXRDaGFu
bmVsOjpXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdl
YlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHByb3RvY29sKQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX2NsaWVudChj
bGllbnQpCisgICAgLCBtX2hhbmRzaGFrZSh1cmwsIHByb3RvY29sLCBjb250ZXh0KQorICAgICwg
bV9idWZmZXIoMCkKKyAgICAsIG1fYnVmZmVyU2l6ZSgwKQorICAgICwgbV91bmhhbmRsZWRCdWZm
ZXJTaXplKDApCit7Cit9CisKK1dlYlNvY2tldENoYW5uZWw6On5XZWJTb2NrZXRDaGFubmVsKCkK
K3sKKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIGZhc3RGcmVlKG1fYnVmZmVyKTsKK30KKwor
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KCkKK3sKKyAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldENoYW5uZWwgJXAgY29ubmVjdCIsIHRoaXMpOworICAgIEFTU0VSVCghbV9oYW5kbGUu
Z2V0KCkpOworICAgIG1faGFuZHNoYWtlLnJlc2V0KCk7CisgICAgbV9oYW5kbGUgPSBTb2NrZXRT
dHJlYW1IYW5kbGU6OmNyZWF0ZShtX2hhbmRzaGFrZS51cmwoKSwgdGhpcyk7Cit9CisKK2Jvb2wg
V2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1zZykKK3sKKyAgICBMT0coTmV0
d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCAlcyIsIHRoaXMsIG1zZy51dGY4KCkuZGF0
YSgpKTsKKyAgICBWZWN0b3I8Y2hhcj4gYnVmOworICAgIGJ1Zi5hcHBlbmQoJ1wwJyk7ICAvLyBm
cmFtZSB0eXBlCisgICAgYnVmLmFwcGVuZChtc2cudXRmOCgpLmRhdGEoKSwgbXNnLnV0ZjgoKS5s
ZW5ndGgoKSk7CisgICAgYnVmLmFwcGVuZCgnXHhmZicpOyAgLy8gZnJhbWUgZW5kCisgICAgaWYg
KCFtX2hhbmRsZS5nZXQoKSkgeworICAgICAgICBtX3VuaGFuZGxlZEJ1ZmZlclNpemUgKz0gYnVm
LnNpemUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gbV9oYW5k
bGUtPnNlbmQoYnVmLmRhdGEoKSwgYnVmLnNpemUoKSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2Vi
U29ja2V0Q2hhbm5lbDo6YnVmZmVyZWRBbW91bnQoKSBjb25zdAoreworICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBidWZmZXJlZEFtb3VudCIsIHRoaXMpOworICAgIGlmICgh
bV9oYW5kbGUuZ2V0KCkpCisgICAgICAgIHJldHVybiBtX3VuaGFuZGxlZEJ1ZmZlclNpemU7Cisg
ICAgcmV0dXJuIG1faGFuZGxlLT5idWZmZXJlZEFtb3VudCgpOworfQorCit2b2lkIFdlYlNvY2tl
dENoYW5uZWw6OmNsb3NlKCkKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwg
JXAgY2xvc2UiLCB0aGlzKTsKKyAgICBpZiAobV9oYW5kbGUuZ2V0KCkpCisgICAgICAgIG1faGFu
ZGxlLT5jbG9zZSgpOyAgLy8gd2lsbCBjYWxsIGRpZENsb3NlKCkKK30KKwordm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjp3aWxsT3BlblN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBLVVJM
JikKK3sKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjp3aWxsU2VuZERhdGEoU29ja2V0U3Ry
ZWFtSGFuZGxlKiwgY29uc3QgY2hhciosIGludCkKK3sKK30KKwordm9pZCBXZWJTb2NrZXRDaGFu
bmVsOjpkaWRPcGVuKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQoreworICAgIExPRyhOZXR3
b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRPcGVuIiwgdGhpcyk7CisgICAgQVNTRVJUKGhh
bmRsZSA9PSBtX2hhbmRsZS5nZXQoKSk7CisgICAgY29uc3QgQ1N0cmluZyYgaGFuZHNoYWtlTWVz
c2FnZSA9IG1faGFuZHNoYWtlLmNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKTsKKyAgICBpZiAoIWhh
bmRsZS0+c2VuZChoYW5kc2hha2VNZXNzYWdlLmRhdGEoKSwgaGFuZHNoYWtlTWVzc2FnZS5sZW5n
dGgoKSkpIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJFcnJvciBpbiBzZW5kaW5nIGhhbmRzaGFr
ZSBtZXNzYWdlLiIpOworICAgICAgICBoYW5kbGUtPmNsb3NlKCk7CisgICAgfQorfQorCit2b2lk
IFdlYlNvY2tldENoYW5uZWw6OmRpZENsb3NlKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQor
eworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRDbG9zZSIsIHRoaXMp
OworICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5kbGUuZ2V0KCkgfHwgIW1faGFuZGxlLmdldCgp
KTsKKyAgICBpZiAoIW1faGFuZGxlLmdldCgpKQorICAgICAgICByZXR1cm47CisgICAgbV91bmhh
bmRsZWRCdWZmZXJTaXplID0gaGFuZGxlLT5idWZmZXJlZEFtb3VudCgpOworICAgIFdlYlNvY2tl
dENoYW5uZWxDbGllbnQqIGNsaWVudCA9IG1fY2xpZW50OworICAgIG1fY2xpZW50ID0gMDsKKyAg
ICBtX2hhbmRsZSA9IDA7CisgICAgY2xpZW50LT5kaWRDbG9zZSgpOworfQorCit2b2lkIFdlYlNv
Y2tldENoYW5uZWw6OmRpZFJlY2VpdmVEYXRhKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
Q2hhbm5lbCAlcCBkaWRSZWNlaXZlRGF0YSAlZCIsIHRoaXMsIGxlbik7CisgICAgQVNTRVJUKGhh
bmRsZSA9PSBtX2hhbmRsZS5nZXQoKSk7CisgICAgaWYgKCFhcHBlbmRUb0J1ZmZlcihkYXRhLCBs
ZW4pKSB7CisgICAgICAgIGhhbmRsZS0+Y2xvc2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAobV9oYW5kc2hha2UubW9kZSgpICE9IFdlYlNvY2tldEhhbmRzaGFrZTo6Q29ubmVj
dGVkKSB7CisgICAgICAgIGludCBoZWFkZXJMZW5ndGggPSBtX2hhbmRzaGFrZS5yZWFkU2VydmVy
SGFuZHNoYWtlKG1fYnVmZmVyLCBtX2J1ZmZlclNpemUpOworICAgICAgICBpZiAoaGVhZGVyTGVu
Z3RoIDw9IDApCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN3aXRjaCAobV9oYW5kc2hh
a2UubW9kZSgpKSB7CisgICAgICAgIGNhc2UgV2ViU29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQ6
CisgICAgICAgICAgICBpZiAoIW1faGFuZHNoYWtlLnNlcnZlclNldENvb2tpZSgpLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgICAgIGlmIChtX2NvbnRleHQtPmlzRG9jdW1lbnQoKSkgeworICAg
ICAgICAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KG1fY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb29raWVzRW5hYmxlZChk
b2N1bWVudCkpCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC0+c2V0Q29va2llKG1f
aGFuZHNoYWtlLnNlcnZlclNldENvb2tpZSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAvLyBGSVhNRTogaGFuZGxlIHNldC1jb29raWUyLgorICAgICAg
ICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNvbm5lY3RlZCIsIHRoaXMp
OworICAgICAgICAgICAgbV9jbGllbnQtPmRpZENvbm5lY3QoKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIGNvbm5lY3Rpb24gZmFpbGVkIiwgdGhpcyk7CisgICAgICAgICAgICBoYW5kbGUt
PmNsb3NlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc2tpcEJ1
ZmZlcihoZWFkZXJMZW5ndGgpOworICAgICAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBMT0coTmV0d29yaywgInJlbWFpbmluZyBpbiByZWFkIGJ1ZiAldWwi
LCBtX2J1ZmZlclNpemUpOworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIG5leHRGcmFtZSA9IG1f
YnVmZmVyOworICAgIGNvbnN0IGNoYXIqIHAgPSBtX2J1ZmZlcjsKKyAgICBjb25zdCBjaGFyKiBl
bmQgPSBwICsgbV9idWZmZXJTaXplOworICAgIHdoaWxlIChwIDwgZW5kKSB7CisgICAgICAgIHVu
c2lnbmVkIGNoYXIgZnJhbWVCeXRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKnArKyk7
CisgICAgICAgIGlmICgoZnJhbWVCeXRlICYgMHg4MCkgPT0gMHg4MCkgeworICAgICAgICAgICAg
aW50IGxlbmd0aCA9IDA7CisgICAgICAgICAgICB3aGlsZSAocCA8IGVuZCAmJiAoKnAgJiAweDgw
KSA9PSAweDgwKSB7CisgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA+IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50Pjo6bWF4KCkgLyAxMjgpIHsKKyAgICAgICAgICAgICAgICAgICAgTE9HKE5ldHdv
cmssICJmcmFtZSBsZW5ndGggb3ZlcmZsb3cgJWQiLCBsZW5ndGgpOworICAgICAgICAgICAgICAg
ICAgICBoYW5kbGUtPmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoICogMTI4ICsgKnAg
JiAweDdmOworICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChwICsgbGVuZ3RoIDwgZW5kKSB7CisgICAgICAgICAgICAgICAgcCArPSBsZW5ndGg7Cisg
ICAgICAgICAgICAgICAgbmV4dEZyYW1lID0gcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1zZ1N0YXJ0ID0gcDsKKyAgICAgICAgICAg
IHdoaWxlIChwIDwgZW5kICYmICpwICE9ICdceGZmJykKKyAgICAgICAgICAgICAgICArK3A7Cisg
ICAgICAgICAgICBpZiAocCA8IGVuZCAmJiAqcCA9PSAnXHhmZicpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoZnJhbWVCeXRlID09IDB4MDApCisgICAgICAgICAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlTWVzc2FnZShTdHJpbmc6OmZyb21VVEY4KG1zZ1N0YXJ0LCBwIC0gbXNnU3RhcnQp
KTsKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgbmV4dEZyYW1lID0gcDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBza2lwQnVmZmVyKG5leHRGcmFt
ZSAtIG1fYnVmZmVyKTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRGYWlsKFNvY2tl
dFN0cmVhbUhhbmRsZSogaGFuZGxlLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYpCit7CisgICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZEZhaWwiLCB0aGlzKTsKKyAgICBB
U1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdldCgpIHx8ICFtX2hhbmRsZS5nZXQoKSk7CisgICAg
aGFuZGxlLT5jbG9zZSgpOworfQorCitib29sIFdlYlNvY2tldENoYW5uZWw6OmFwcGVuZFRvQnVm
ZmVyKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pCit7CisgICAgY2hhciogbmV3QnVmZmVyID0g
MDsKKyAgICBpZiAodHJ5RmFzdE1hbGxvYyhtX2J1ZmZlclNpemUgKyBsZW4pLmdldFZhbHVlKG5l
d0J1ZmZlcikpIHsKKyAgICAgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICAgICAgbWVtY3B5KG5l
d0J1ZmZlciwgbV9idWZmZXIsIG1fYnVmZmVyU2l6ZSk7CisgICAgICAgIG1lbWNweShuZXdCdWZm
ZXIgKyBtX2J1ZmZlclNpemUsIGRhdGEsIGxlbik7CisgICAgICAgIGZhc3RGcmVlKG1fYnVmZmVy
KTsKKyAgICAgICAgbV9idWZmZXIgPSBuZXdCdWZmZXI7CisgICAgICAgIG1fYnVmZmVyU2l6ZSAr
PSBsZW47CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBMT0coTmV0d29yaywgIlRv
byBsb25nIFdlYlNvY2tldCBmcmFtZSAlZCIsIG1fYnVmZmVyU2l6ZSArIGxlbik7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNraXBCdWZmZXIoaW50IGxl
bikKK3sKKyAgICBBU1NFUlQobGVuIDw9IG1fYnVmZmVyU2l6ZSk7CisgICAgbV9idWZmZXJTaXpl
IC09IGxlbjsKKyAgICBpZiAoIW1fYnVmZmVyU2l6ZSkgeworICAgICAgICBmYXN0RnJlZShtX2J1
ZmZlcik7CisgICAgICAgIG1fYnVmZmVyID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBtZW1tb3ZlKG1fYnVmZmVyLCBtX2J1ZmZlciArIGxlbiwgbV9idWZmZXJTaXplKTsKK30KKwor
fSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi43NWY0MWY2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0
Q2hhbm5lbF9oCisjZGVmaW5lIFdlYlNvY2tldENoYW5uZWxfaAorCisjaWYgRU5BQkxFKFdFQl9T
T0NLRVRTKQorCisjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCisjaW5jbHVk
ZSAiV2ViU29ja2V0SGFuZHNoYWtlLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
KyAgICBjbGFzcyBTdHJpbmc7CisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlOworICAgIGNs
YXNzIFNvY2tldFN0cmVhbUVycm9yOworICAgIGNsYXNzIFdlYlNvY2tldENoYW5uZWxDbGllbnQ7
CisKKyAgICBjbGFzcyBXZWJTb2NrZXRDaGFubmVsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29j
a2V0Q2hhbm5lbD4sIHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0Q2hhbm5lbD4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNs
aWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSB7IHJldHVybiBu
ZXcgV2ViU29ja2V0Q2hhbm5lbChjb250ZXh0LCBjbGllbnQsIHVybCwgcHJvdG9jb2wpOyB9Cisg
ICAgICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWwoKTsKKworICAgICAgICB2aXJ0dWFsIHZv
aWQgY29ubmVjdCgpOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYg
bXNnKTsKKyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29u
c3Q7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCk7CisKKyAgICAgICAgdmlydHVhbCB2
b2lkIHdpbGxPcGVuU3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEtVUkwmKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25z
dCBjaGFyKiwgaW50KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZE9wZW4oU29ja2V0U3RyZWFt
SGFuZGxlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShTb2NrZXRTdHJlYW1IYW5k
bGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFNvY2tldFN0cmVhbUhh
bmRsZSosIGNvbnN0IGNoYXIqLCBpbnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChT
b2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYpOworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
V2ViU29ja2V0Q2hhbm5lbENsaWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKTsKKwor
ICAgICAgICBib29sIGFwcGVuZFRvQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pOwor
ICAgICAgICB2b2lkIHNraXBCdWZmZXIoaW50IGxlbik7CisKKyAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogbV9jb250ZXh0OworICAgICAgICBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBt
X2NsaWVudDsKKyAgICAgICAgV2ViU29ja2V0SGFuZHNoYWtlIG1faGFuZHNoYWtlOworICAgICAg
ICBSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBtX2hhbmRsZTsKKyAgICAgICAgY2hhciogbV9i
dWZmZXI7CisgICAgICAgIGludCBtX2J1ZmZlclNpemU7CisgICAgICAgIHVuc2lnbmVkIGxvbmcg
bV91bmhhbmRsZWRCdWZmZXJTaXplOworICAgIH07CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYgIC8vIFdlYlNvY2tl
dENoYW5uZWxfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWxDbGllbnQuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzY2FkYQotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgKQEAgLTAs
MCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldENoYW5uZWxDbGllbnRfaAorI2RlZmluZSBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50X2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENsaWVudCB7CisgICAg
cHVibGljOgorICAgICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDaGFubmVsQ2xpZW50KCkgeyB9Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDb25uZWN0KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpZENsb3NlKCkgeyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIFdlYlNvY2tldENo
YW5uZWxDbGllbnQoKSB7IH0KKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlmICAvLyBXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkxZmExYwotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC0wLDAgKzEs
NDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKwor
I2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZS5oIgorCisjaW5jbHVkZSAiQXRvbWljU3RyaW5n
LmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkNvb2tpZUphci5oIgorI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgorI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU3RyaW5nQnVp
bGRlci5oIgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgY2hhciB3ZWJTb2NrZXRTZXJ2
ZXJIYW5kc2hha2VIZWFkZXJbXSA9ICJIVFRQLzEuMSAxMDEgV2ViIFNvY2tldCBQcm90b2NvbCBI
YW5kc2hha2VcclxuIjsKK2NvbnN0IGNoYXIgd2ViU29ja2V0VXBncmFkZUhlYWRlcltdID0gIlVw
Z3JhZGU6IFdlYlNvY2tldFxyXG4iOworY29uc3QgY2hhciB3ZWJTb2NrZXRDb25uZWN0aW9uSGVh
ZGVyW10gPSAiQ29ubmVjdGlvbjogVXBncmFkZVxyXG4iOworCitzdGF0aWMgU3RyaW5nIGV4dHJh
Y3RSZXNwb25zZUNvZGUoY29uc3QgY2hhciogaGVhZGVyLCBpbnQgbGVuKQoreworICAgIGNvbnN0
IGNoYXIqIHNwYWNlMSA9IDA7CisgICAgY29uc3QgY2hhciogc3BhY2UyID0gMDsKKyAgICBjb25z
dCBjaGFyKiBwOworICAgIGZvciAocCA9IGhlYWRlcjsgcCAtIGhlYWRlciA8IGxlbjsgcCsrKSB7
CisgICAgICAgIGlmICgqcCA9PSAnICcpIHsKKyAgICAgICAgICAgIGlmICghc3BhY2UxKQorICAg
ICAgICAgICAgICAgIHNwYWNlMSA9IHA7CisgICAgICAgICAgICBlbHNlIGlmICghc3BhY2UyKQor
ICAgICAgICAgICAgICAgIHNwYWNlMiA9IHA7CisgICAgICAgIH0gZWxzZSBpZiAoKnAgPT0gJ1xu
JykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAocCAtIGhlYWRlciA9PSBsZW4p
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBpZiAoIXNwYWNlMSB8fCAhc3BhY2UyKQor
ICAgICAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIFN0cmluZyhzcGFjZTEgKyAxLCBzcGFjZTIg
LSBzcGFjZTEgLSAxKTsKK30KKworV2ViU29ja2V0SGFuZHNoYWtlOjpXZWJTb2NrZXRIYW5kc2hh
a2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQorICAgIDogbV91cmwodXJsKQorICAgICwgbV9jbGllbnRQcm90
b2NvbChwcm90b2NvbCkKKyAgICAsIG1fc2VjdXJlKG1fdXJsLnByb3RvY29sSXMoIndzcyIpKQor
ICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX21vZGUoSW5jb21wbGV0ZSkKK3sKK30K
KworV2ViU29ja2V0SGFuZHNoYWtlOjp+V2ViU29ja2V0SGFuZHNoYWtlKCkKK3sKK30KKworY29u
c3QgS1VSTCYgV2ViU29ja2V0SGFuZHNoYWtlOjp1cmwoKSBjb25zdAoreworICAgIHJldHVybiBt
X3VybDsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFVSTChjb25zdCBLVVJMJiB1
cmwpCit7CisgICAgbV91cmwgPSB1cmwuY29weSgpOworfQorCitjb25zdCBTdHJpbmcgV2ViU29j
a2V0SGFuZHNoYWtlOjpob3N0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91cmwuaG9zdCgpLmxv
d2VyKCk7Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRQcm90
b2NvbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2xpZW50UHJvdG9jb2w7Cit9CisKK3ZvaWQg
V2ViU29ja2V0SGFuZHNoYWtlOjpzZXRDbGllbnRQcm90b2NvbChjb25zdCBTdHJpbmcmIHByb3Rv
Y29sKQoreworICAgIG1fY2xpZW50UHJvdG9jb2wgPSBwcm90b2NvbDsKK30KKworYm9vbCBXZWJT
b2NrZXRIYW5kc2hha2U6OnNlY3VyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VjdXJlOwor
fQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VjdXJlKGJvb2wgc2VjdXJlKQorewor
ICAgIG1fc2VjdXJlID0gc2VjdXJlOworfQorCitTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpj
bGllbnRPcmlnaW4oKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRleHQtPnNlY3VyaXR5T3Jp
Z2luKCktPnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVu
dExvY2F0aW9uKCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVp
bGRlci5hcHBlbmQobV9zZWN1cmUgPyAid3NzIiA6ICJ3cyIpOworICAgIGJ1aWxkZXIuYXBwZW5k
KCI6Ly8iKTsKKyAgICBidWlsZGVyLmFwcGVuZChtX3VybC5ob3N0KCkubG93ZXIoKSk7CisgICAg
aWYgKG1fdXJsLnBvcnQoKSkgeworICAgICAgICBpZiAoKCFtX3NlY3VyZSAmJiBtX3VybC5wb3J0
KCkgIT0gODApIHx8IChtX3NlY3VyZSAmJiBtX3VybC5wb3J0KCkgIT0gNDQzKSkgeworICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIjoiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0
cmluZzo6bnVtYmVyKG1fdXJsLnBvcnQoKSkpOworICAgICAgICB9CisgICAgfQorICAgIGJ1aWxk
ZXIuYXBwZW5kKG1fdXJsLnBhdGgoKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsK
K30KKworQ1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZU1lc3NhZ2Uo
KSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgIGJ1aWxkZXIuYXBw
ZW5kKCJHRVQgIik7CisgICAgYnVpbGRlci5hcHBlbmQobV91cmwucGF0aCgpKTsKKyAgICBpZiAo
IW1fdXJsLnF1ZXJ5KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI/Iik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fdXJsLnF1ZXJ5KCkpOworICAgIH0KKyAgICBidWls
ZGVyLmFwcGVuZCgiIEhUVFAvMS4xXHJcbiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJVcGdyYWRl
OiBXZWJTb2NrZXRcclxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIkNvbm5lY3Rpb246IFVwZ3Jh
ZGVcclxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIkhvc3Q6ICIpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKG1fdXJsLmhvc3QoKS5sb3dlcigpKTsKKyAgICBpZiAobV91cmwucG9ydCgpKSB7CisgICAg
ICAgIGlmICgoIW1fc2VjdXJlICYmIG1fdXJsLnBvcnQoKSAhPSA4MCkgfHwgKG1fc2VjdXJlICYm
IG1fdXJsLnBvcnQoKSAhPSA0NDMpKSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOiIp
OworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIobV91cmwucG9ydCgp
KSk7CisgICAgICAgIH0KKyAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKKyAgICBi
dWlsZGVyLmFwcGVuZCgiT3JpZ2luOiAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChjbGllbnRPcmln
aW4oKSk7CisgICAgYnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKKyAgICBpZiAoIW1fY2xpZW50UHJv
dG9jb2wuaXNFbXB0eSgpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJXZWJTb2NrZXQtUHJv
dG9jb2w6ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChtX2NsaWVudFByb3RvY29sKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKKyAgICB9CisgICAgS1VSTCB1cmwgPSBodHRw
VVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCk7CisgICAgLy8gRklYTUU6IHNldCBhdXRo
ZW50aWNhdGlvbiBpbmZvcm1hdGlvbiBvciBjb29raWVzIGZvciB1cmwuCisgICAgLy8gU2V0ICJB
dXRob3JpemF0aW9uOiA8Y3JlZGVudGlhbHM+IiBpZiBhdXRoZW50aWNhdGlvbiBpbmZvcm1hdGlv
biBleGlzdHMgZm9yIHVybC4KKyAgICBpZiAobV9jb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKKyAg
ICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX2NvbnRl
eHQpOworICAgICAgICBTdHJpbmcgY29va2llID0gY29va2llcyhkb2N1bWVudCwgdXJsKTsKKyAg
ICAgICAgaWYgKCFjb29raWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiQ29va2llOiAiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNvb2tpZSk7CisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiXHJcbiIpOworICAgICAgICB9CisgICAgICAgIC8vIFNl
dCAiQ29va2llMjogPGNvb2tpZT4iIGlmIGNvb2tpZXMgMiBleGlzdHMgZm9yIHVybD8KKyAgICB9
CisgICAgYnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpLnV0ZjgoKTsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlc2V0KCkKK3sKKyAg
ICBtX21vZGUgPSBJbmNvbXBsZXRlOworCisgICAgbV93c09yaWdpbiA9IFN0cmluZygpOworICAg
IG1fd3NMb2NhdGlvbiA9IFN0cmluZygpOworICAgIG1fd3NQcm90b2NvbCA9IFN0cmluZygpOwor
ICAgIG1fc2V0Q29va2llID0gU3RyaW5nKCk7CisgICAgbV9zZXRDb29raWUyID0gU3RyaW5nKCk7
Cit9CisKK2ludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3Qg
Y2hhciogaGVhZGVyLCBzaXplX3QgbGVuKQoreworICAgIG1fbW9kZSA9IEluY29tcGxldGU7Cisg
ICAgaWYgKGxlbiA8IHNpemVvZih3ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hha2VIZWFkZXIpIC0gMSkg
eworICAgICAgICAvLyBKdXN0IGhhc24ndCBiZWVuIHJlY2VpdmVkIGZ1bGx5IHlldC4KKyAgICAg
ICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoIW1lbWNtcChoZWFkZXIsIHdlYlNvY2tldFNl
cnZlckhhbmRzaGFrZUhlYWRlciwgc2l6ZW9mKHdlYlNvY2tldFNlcnZlckhhbmRzaGFrZUhlYWRl
cikgLSAxKSkKKyAgICAgICAgbV9tb2RlID0gTm9ybWFsOworICAgIGVsc2UgeworICAgICAgICBj
b25zdCBTdHJpbmcmIGNvZGUgPSBleHRyYWN0UmVzcG9uc2VDb2RlKGhlYWRlciwgbGVuKTsKKyAg
ICAgICAgaWYgKGNvZGUuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAic2hv
cnQgc2VydmVyIGhhbmRzaGFrZTogJXMiLCBoZWFkZXIpOworICAgICAgICAgICAgcmV0dXJuIC0x
OworICAgICAgICB9CisgICAgICAgIGlmIChjb2RlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
TE9HKE5ldHdvcmssICJubyByZXNwb25zZSBjb2RlIGZvdW5kOiAlcyIsIGhlYWRlcik7CisgICAg
ICAgICAgICByZXR1cm4gbGVuOworICAgICAgICB9CisgICAgICAgIExPRyhOZXR3b3JrLCAicmVz
cG9uc2UgY29kZTogJXMiLCBjb2RlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBpZiAoY29kZSA9
PSAiNDAxIikgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJBdXRoZW50aWNhdGlvbiByZXF1
aXJlZCIpOworICAgICAgICAgICAgcmV0dXJuIGxlbjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIExPRyhOZXR3b3JrLCAiTWlzbWF0Y2ggc2VydmVyIGhhbmRzaGFrZTogJXMiLCBoZWFk
ZXIpOworICAgICAgICAgICAgcmV0dXJuIGxlbjsKKyAgICAgICAgfQorICAgIH0KKyAgICBjb25z
dCBjaGFyKiBwID0gaGVhZGVyICsgc2l6ZW9mKHdlYlNvY2tldFNlcnZlckhhbmRzaGFrZUhlYWRl
cikgLSAxOworICAgIGNvbnN0IGNoYXIqIGVuZCA9IGhlYWRlciArIGxlbiArIDE7CisKKyAgICBp
ZiAobV9tb2RlID09IE5vcm1hbCkgeworICAgICAgICBzaXplX3QgaGVhZGVyU2l6ZSA9IGVuZCAt
IHA7CisgICAgICAgIGlmIChoZWFkZXJTaXplIDwgc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFk
ZXIpIC0gMSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAobWVtY21wKHAsIHdl
YlNvY2tldFVwZ3JhZGVIZWFkZXIsIHNpemVvZih3ZWJTb2NrZXRVcGdyYWRlSGVhZGVyKSAtIDEp
KSB7CisgICAgICAgICAgICBMT0coTmV0d29yaywgIkJhZCB1cGdyYWRlIGhlYWRlcjogJXMiLCBw
KTsKKyAgICAgICAgICAgIHJldHVybiBwIC0gaGVhZGVyICsgc2l6ZW9mKHdlYlNvY2tldFVwZ3Jh
ZGVIZWFkZXIpIC0gMTsKKyAgICAgICAgfQorICAgICAgICBwICs9IHNpemVvZih3ZWJTb2NrZXRV
cGdyYWRlSGVhZGVyKSAtIDE7CisKKyAgICAgICAgaGVhZGVyU2l6ZSA9IGVuZCAtIHA7CisgICAg
ICAgIGlmIChoZWFkZXJTaXplIDwgc2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXIpIC0g
MSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKG1lbWNtcChwLCB3ZWJTb2Nr
ZXRDb25uZWN0aW9uSGVhZGVyLCBzaXplb2Yod2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlcikgLSAx
KSkgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJCYWQgY29ubmVjdGlvbiBoZWFkZXI6ICVz
IiwgcCk7CisgICAgICAgICAgICByZXR1cm4gcCAtIGhlYWRlciArIHNpemVvZih3ZWJTb2NrZXRD
b25uZWN0aW9uSGVhZGVyKSAtIDE7CisgICAgICAgIH0KKyAgICAgICAgcCArPSBzaXplb2Yod2Vi
U29ja2V0Q29ubmVjdGlvbkhlYWRlcikgLSAxOworICAgIH0KKworICAgIGlmICghc3RybnN0cihw
LCAiXHJcblxyXG4iLCBlbmQgLSBwKSkgeworICAgICAgICAvLyBKdXN0IGhhc24ndCBiZWVuIHJl
Y2VpdmVkIGZ1bGx5IHlldC4KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBIVFRQSGVh
ZGVyTWFwIGhlYWRlcnM7CisgICAgcCA9IHJlYWRIVFRQSGVhZGVycyhwLCBlbmQsICZoZWFkZXJz
KTsKKyAgICBpZiAoIXApIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJyZWFkSFRUUEhlYWRlcnMg
ZmFpbGVkIik7CisgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAgICAgICAgcmV0dXJuIGxlbjsK
KyAgICB9CisgICAgaWYgKCFwcm9jZXNzSGVhZGVycyhoZWFkZXJzKSkgeworICAgICAgICBMT0co
TmV0d29yaywgImhlYWRlciBwcm9jZXNzIGZhaWxlZCIpOworICAgICAgICBtX21vZGUgPSBGYWls
ZWQ7CisgICAgICAgIHJldHVybiBwIC0gaGVhZGVyOworICAgIH0KKyAgICBzd2l0Y2ggKG1fbW9k
ZSkgeworICAgIGNhc2UgTm9ybWFsOgorICAgICAgICBjaGVja1Jlc3BvbnNlSGVhZGVycygpOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBtX21vZGUgPSBGYWlsZWQ7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gcCAtIGhlYWRlcjsKK30KKworV2ViU29j
a2V0SGFuZHNoYWtlOjpNb2RlIFdlYlNvY2tldEhhbmRzaGFrZTo6bW9kZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fbW9kZTsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6
OnNlcnZlcldlYlNvY2tldE9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3NPcmlnaW47
Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJXZWJTb2NrZXRPcmlnaW4o
Y29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRPcmlnaW4pCit7CisgICAgbV93c09yaWdpbiA9IHdlYlNv
Y2tldE9yaWdpbjsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZl
cldlYlNvY2tldExvY2F0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93c0xvY2F0aW9uOwor
fQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyV2ViU29ja2V0TG9jYXRpb24o
Y29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRMb2NhdGlvbikKK3sKKyAgICBtX3dzTG9jYXRpb24gPSB3
ZWJTb2NrZXRMb2NhdGlvbjsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6
OnNlcnZlcldlYlNvY2tldFByb3RvY29sKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93c1Byb3Rv
Y29sOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyV2ViU29ja2V0UHJv
dG9jb2woY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRQcm90b2NvbCkKK3sKKyAgICBtX3dzUHJvdG9j
b2wgPSB3ZWJTb2NrZXRQcm90b2NvbDsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5k
c2hha2U6OnNlcnZlclNldENvb2tpZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2V0Q29va2ll
OworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyU2V0Q29va2llKGNvbnN0
IFN0cmluZyYgc2V0Q29va2llKQoreworICAgIG1fc2V0Q29va2llID0gc2V0Q29va2llOworfQor
Citjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyU2V0Q29va2llMigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fc2V0Q29va2llMjsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5k
c2hha2U6OnNldFNlcnZlclNldENvb2tpZTIoY29uc3QgU3RyaW5nJiBzZXRDb29raWUyKQorewor
ICAgIG1fc2V0Q29va2llMiA9IHNldENvb2tpZTI7Cit9CisKK0tVUkwgV2ViU29ja2V0SGFuZHNo
YWtlOjpodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3QKK3sKKyAgICBL
VVJMIHVybCA9IG1fdXJsLmNvcHkoKTsKKyAgICB1cmwuc2V0UHJvdG9jb2wobV9zZWN1cmUgPyAi
aHR0cHMiIDogImh0dHAiKTsKKyAgICByZXR1cm4gdXJsOworfQorCitjb25zdCBjaGFyKiBXZWJT
b2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3Qg
Y2hhciogZW5kLCBIVFRQSGVhZGVyTWFwKiBoZWFkZXJzKQoreworICAgIFZlY3RvcjxjaGFyPiBu
YW1lOworICAgIFZlY3RvcjxjaGFyPiB2YWx1ZTsKKyAgICBmb3IgKGNvbnN0IGNoYXIqIHAgPSBz
dGFydDsgcCA8IGVuZDsgcCsrKSB7CisgICAgICAgIG5hbWUuY2xlYXIoKTsKKyAgICAgICAgdmFs
dWUuY2xlYXIoKTsKKworICAgICAgICBmb3IgKDsgcCA8IGVuZDsgcCsrKSB7CisgICAgICAgICAg
ICBzd2l0Y2ggKCpwKSB7CisgICAgICAgICAgICBjYXNlICdccic6CisgICAgICAgICAgICAgICAg
aWYgKG5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwICsgMSA8IGVu
ZCAmJiAqKHAgKyAxKSA9PSAnXG4nKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAg
KyAyOworICAgICAgICAgICAgICAgICAgICBMT0coTmV0d29yaywgIkNSIGRvZXNuJ3QgZm9sbG93
IExGIHA9JXAgZW5kPSVwIiwgcCwgZW5kKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiVW5leHBl
Y3RlZCBDUiBpbiBuYW1lIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAg
ICBjYXNlICdcbic6CisgICAgICAgICAgICAgICAgTE9HKE5ldHdvcmssICJVbmV4cGVjdGVkIExG
IGluIG5hbWUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGNhc2Ug
JzonOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBpZiAoKnAgPj0gMHg0MSAmJiAqcCA8PSAweDVhKQorICAgICAgICAgICAgICAg
ICAgICBuYW1lLmFwcGVuZCgqcCArIDB4MjApOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgbmFtZS5hcHBlbmQoKnApOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCpwID09ICc6JykgeworICAgICAgICAg
ICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGZvciAoOyBwIDwgZW5kICYmICpwID09IDB4MjA7IHArKykgeyB9CisK
KyAgICAgICAgZm9yICg7IHAgPCBlbmQ7IHArKykgeworICAgICAgICAgICAgc3dpdGNoICgqcCkg
eworICAgICAgICAgICAgY2FzZSAnXHInOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSAnXG4nOgorICAgICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiVW5leHBlY3Rl
ZCBMRiBpbiB2YWx1ZSIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB2YWx1ZS5hcHBlbmQoKnApOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKCpwID09ICdccicpIHsKKyAgICAgICAgICAgICAgICArK3A7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHAgPj0gZW5kIHx8ICpwICE9ICdcbicpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAi
Q1IgZG9lc24ndCBmb2xsb3cgTEYgYWZ0ZXIgdmFsdWUgcD0lcCBlbmQ9JXAiLCBwLCBlbmQpOwor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgQXRvbWljU3RyaW5nIG5h
bWVTdHIoU3RyaW5nOjpmcm9tVVRGOChuYW1lLmRhdGEoKSwgbmFtZS5zaXplKCkpKTsKKyAgICAg
ICAgU3RyaW5nIHZhbHVlU3RyID0gU3RyaW5nOjpmcm9tVVRGOCh2YWx1ZS5kYXRhKCksIHZhbHVl
LnNpemUoKSk7CisgICAgICAgIExPRyhOZXR3b3JrLCAibmFtZT0lcyB2YWx1ZT0lcyIsIG5hbWVT
dHIuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdmFsdWVTdHIudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIGhlYWRlcnMtPmFkZChuYW1lU3RyLCB2YWx1ZVN0cik7CisgICAgfQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitib29sIFdlYlNvY2tldEhhbmRzaGFr
ZTo6cHJvY2Vzc0hlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKK3sKKyAgICBm
b3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVycy5iZWdpbigpOyBp
dCAhPSBoZWFkZXJzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7Cisg
ICAgICAgIGNhc2UgTm9ybWFsOgorICAgICAgICAgICAgaWYgKGl0LT5maXJzdCA9PSAid2Vic29j
a2V0LW9yaWdpbiIpCisgICAgICAgICAgICAgICAgbV93c09yaWdpbiA9IGl0LT5zZWNvbmQ7Cisg
ICAgICAgICAgICBlbHNlIGlmIChpdC0+Zmlyc3QgPT0gIndlYnNvY2tldC1sb2NhdGlvbiIpCisg
ICAgICAgICAgICAgICAgbV93c0xvY2F0aW9uID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGl0LT5maXJzdCA9PSAid2Vic29ja2V0LXByb3RvY29sIikKKyAgICAgICAgICAgICAg
ICBtX3dzUHJvdG9jb2wgPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgZWxzZSBpZiAoaXQtPmZp
cnN0ID09ICJzZXQtY29va2llIikKKyAgICAgICAgICAgICAgICBtX3NldENvb2tpZSA9IGl0LT5z
ZWNvbmQ7CisgICAgICAgICAgICBlbHNlIGlmIChpdC0+Zmlyc3QgPT0gInNldC1jb29raWUyIikK
KyAgICAgICAgICAgICAgICBtX3NldENvb2tpZTIgPSBpdC0+c2Vjb25kOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGNhc2UgSW5jb21wbGV0ZToKKyAgICAgICAgY2FzZSBGYWlsZWQ6
CisgICAgICAgIGNhc2UgQ29ubmVjdGVkOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2hlY2tSZXNwb25z
ZUhlYWRlcnMoKQoreworICAgIEFTU0VSVChtX21vZGUgPT0gTm9ybWFsKTsKKyAgICBtX21vZGUg
PSBGYWlsZWQ7CisgICAgaWYgKG1fd3NPcmlnaW4uaXNOdWxsKCkgfHwgbV93c0xvY2F0aW9uLmlz
TnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoY2xpZW50T3JpZ2luKCkgIT0gbV93
c09yaWdpbikgeworICAgICAgICBMT0coTmV0d29yaywgIk1pc21hdGNoIG9yaWdpbjogJXMgIT0g
JXMiLCBjbGllbnRPcmlnaW4oKS51dGY4KCkuZGF0YSgpLCBtX3dzT3JpZ2luLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChjbGllbnRMb2NhdGlvbigpICE9
IG1fd3NMb2NhdGlvbikgeworICAgICAgICBMT0coTmV0d29yaywgIk1pc21hdGNoIGxvY2F0aW9u
OiAlcyAhPSAlcyIsIGNsaWVudExvY2F0aW9uKCkudXRmOCgpLmRhdGEoKSwgbV93c0xvY2F0aW9u
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghbV9jbGll
bnRQcm90b2NvbC5pc0VtcHR5KCkgJiYgbV9jbGllbnRQcm90b2NvbCAhPSBtX3dzUHJvdG9jb2wp
IHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJNaXNtYXRjaCBwcm90b2NvbDogJXMgIT0gJXMiLCBt
X2NsaWVudFByb3RvY29sLnV0ZjgoKS5kYXRhKCksIG1fd3NQcm90b2NvbC51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX21vZGUgPSBDb25uZWN0ZWQ7CisgICAg
cmV0dXJuOworfQorCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIEVOQUJM
RShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2UuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWRiZTY4Ci0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC0wLDAgKzEsMTEz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViU29ja2V0SGFuZHNoYWtlX2gKKyNkZWZpbmUgV2ViU29ja2V0SGFuZHNo
YWtlX2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OworICAgIGNsYXNzIEhUVFBIZWFkZXJNYXA7CisKKyAgICBjbGFzcyBXZWJTb2NrZXRIYW5kc2hh
a2UgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgZW51bSBNb2Rl
IHsKKyAgICAgICAgICAgIEluY29tcGxldGUsIE5vcm1hbCwgRmFpbGVkLCBDb25uZWN0ZWQKKyAg
ICAgICAgfTsKKyAgICAgICAgV2ViU29ja2V0SGFuZHNoYWtlKGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgICAgIH5XZWJT
b2NrZXRIYW5kc2hha2UoKTsKKworICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKKyAg
ICAgICAgdm9pZCBzZXRVUkwoY29uc3QgS1VSTCYpOworICAgICAgICBjb25zdCBTdHJpbmcgaG9z
dCgpIGNvbnN0OworCisgICAgICAgIGNvbnN0IFN0cmluZyYgY2xpZW50UHJvdG9jb2woKSBjb25z
dDsKKyAgICAgICAgdm9pZCBzZXRDbGllbnRQcm90b2NvbChjb25zdCBTdHJpbmcmIHByb3RvY29s
KTsKKworICAgICAgICBib29sIHNlY3VyZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNlY3Vy
ZShib29sIHNlY3VyZSk7CisKKyAgICAgICAgU3RyaW5nIGNsaWVudE9yaWdpbigpIGNvbnN0Owor
ICAgICAgICBTdHJpbmcgY2xpZW50TG9jYXRpb24oKSBjb25zdDsKKworICAgICAgICBDU3RyaW5n
IGNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKSBjb25zdDsKKworICAgICAgICB2b2lkIHJlc2V0KCk7
CisKKyAgICAgICAgaW50IHJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciogaGVhZGVyLCBz
aXplX3QgbGVuKTsKKyAgICAgICAgTW9kZSBtb2RlKCkgY29uc3Q7CisKKyAgICAgICAgY29uc3Qg
U3RyaW5nJiBzZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRT
ZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRPcmlnaW4pOworCisg
ICAgICAgIGNvbnN0IFN0cmluZyYgc2VydmVyV2ViU29ja2V0TG9jYXRpb24oKSBjb25zdDsKKyAg
ICAgICAgdm9pZCBzZXRTZXJ2ZXJXZWJTb2NrZXRMb2NhdGlvbihjb25zdCBTdHJpbmcmIHdlYlNv
Y2tldExvY2F0aW9uKTsKKworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZlcldlYlNvY2tldFBy
b3RvY29sKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2VydmVyV2ViU29ja2V0UHJvdG9jb2wo
Y29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRQcm90b2NvbCk7CisKKyAgICAgICAgY29uc3QgU3RyaW5n
JiBzZXJ2ZXJTZXRDb29raWUoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTZXJ2ZXJTZXRDb29r
aWUoY29uc3QgU3RyaW5nJiBzZXRDb29raWUpOworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZl
clNldENvb2tpZTIoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTZXJ2ZXJTZXRDb29raWUyKGNv
bnN0IFN0cmluZyYgc2V0Q29va2llMik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBLVVJMIGh0
dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdDsKKworICAgICAgICAvLyBS
ZWFkcyBhbGwgaGVhZGVycyBleGNlcHQgZm9yIHRoZSB0d28gcHJlZGVmaW5lZCBvbmVzLgorICAg
ICAgICBjb25zdCBjaGFyKiByZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0
IGNoYXIqIGVuZCwgSFRUUEhlYWRlck1hcCogaGVhZGVycyk7CisgICAgICAgIGJvb2wgcHJvY2Vz
c0hlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycyk7CisgICAgICAgIHZvaWQgY2hl
Y2tSZXNwb25zZUhlYWRlcnMoKTsKKworICAgICAgICBLVVJMIG1fdXJsOworICAgICAgICBTdHJp
bmcgbV9jbGllbnRQcm90b2NvbDsKKyAgICAgICAgYm9vbCBtX3NlY3VyZTsKKyAgICAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OworCisgICAgICAgIE1vZGUgbV9tb2RlOwor
CisgICAgICAgIFN0cmluZyBtX3dzT3JpZ2luOworICAgICAgICBTdHJpbmcgbV93c0xvY2F0aW9u
OworICAgICAgICBTdHJpbmcgbV93c1Byb3RvY29sOworICAgICAgICBTdHJpbmcgbV9zZXRDb29r
aWU7CisgICAgICAgIFN0cmluZyBtX3NldENvb2tpZTI7CisgICAgfTsKKworfSAgLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAg
Ly8gV2ViU29ja2V0SGFuZHNoYWtlX2g=
</data>
<flag name="review"
          id="20064"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39045</attachid>
            <date>2009-09-04 02:10:46 -0700</date>
            <delta_ts>2009-09-10 13:10:54 -0700</delta_ts>
            <desc>WebSocket API implementation</desc>
            <filename>bug-28038-20090904181044.patch</filename>
            <type>text/plain</type>
            <size>65095</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAzMjE2M2Q5Li40NmQwMWFjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMDktMDktMDQgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IFdURjo6
dHJ5RmFzdE1hbGxvYyB1c2VkIGluIFdlYlNvY2tldENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODAzOAorCisgICAgICAgICogSmF2YVNj
cmlwdENvcmUuZXhwOgorCiAyMDA5LTA5LTAzICBGdW1pdG9zaGkgVWthaSAgPHVrYWlAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZXhwCmluZGV4IGQ0NWEyMmQuLmExNjU2MjEgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5leHAKQEAgLTI5NSw2ICsyOTUsNyBAQCBfX1pOM1dURjEyZGV0YWNoVGhyZWFkRWoKIF9f
Wk4zV1RGMTJpc01haW5UaHJlYWRFdgogX19aTjNXVEYxMnJhbmRvbU51bWJlckV2CiBfX1pOM1dU
RjEzY3VycmVudFRocmVhZEV2CitfX1pOM1dURjEzdHJ5RmFzdE1hbGxvY0VtCiBfX1pOM1dURjEz
dHJ5RmFzdENhbGxvY0VtbQogX19aTjNXVEYxM3RyeUZhc3RNYWxsb2NFbQogX19aTjNXVEYxNVRo
cmVhZENvbmRpdGlvbjR3YWl0RVJOU181TXV0ZXhFCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIzMDMyZjEuLmZlYTA3YTYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjMgQEAKKzIwMDktMDktMDQgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0
IEFQSSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI4MDM4CisgICAgICAgIAorICAgICAgICBBZGQgYnVpbGQgc3lzdGVtcyBv
bmx5IGZvciBHTlVtYWtlZmlsZS5hbSBhbmQgV2ViQ29yZS54Y29kZXByb2ogbm93LgorICAgICAg
ICBPdGhlciBidWlsZCBzeXN0ZW1zIHdpbGwgYmUgdXBkYXRlZCBvbmNlIHRoZSBjb2RlIGlzIGZ1
bmN0aW9uYWwuCisgICAgICAgIFRlc3RzIHdpbGwgYmUgbGFuZGVkIG9uY2UgdGhlIGNvZGUgaXMg
Y29tcGxldGVkIGFuZCBmdW5jdGlvbmFsLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3Bw
OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6d2ViU29ja2V0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRv
SlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9FdmVudFRhcmdldCk6CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojp0b1dlYlNvY2tl
dCk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6CisgICAgICAgICogcGFnZS9ET01XaW5k
b3cuaWRsOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlByb2Nlc3NXZWJTb2NrZXRFdmVudFRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrOjpQcm9jZXNzV2ViU29ja2V0RXZlbnRU
YXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRQcm90b2NvbFN0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0OjpidWZmZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXQ6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENvbm5lY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldDo6ZGlzcGF0Y2hPcGVuRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
OjpkaXNwYXRjaE1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRp
c3BhdGNoQ2xvc2VFdmVudCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldDo6KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2V0T25vcGVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6b25vcGVuKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldDo6c2V0T25tZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6b25t
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2V0T25jbG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Om9uY2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0Ojp0b1dlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmV2ZW50
TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6cmVmRXZlbnRUYXJnZXQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAg
ICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiB3
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcDogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2UuaDogQWRkZWQuCisKIDIwMDktMDktMDMgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRj
aGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAgYi9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLmNwcAppbmRleCA3NWJlOGEzLi5kZGExY2JmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAorKysgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApA
QCAtMzQyLDYgKzM0Miw3IEBACiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NNYXRyaXguY3BwIgogI2lu
Y2x1ZGUgIkpTV2ViS2l0UG9pbnQuY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0VHJhbnNpdGlvbkV2
ZW50LmNwcCIKKyNpbmNsdWRlICJKU1dlYlNvY2tldC5jcHAiCiAjaW5jbHVkZSAiSlNXaGVlbEV2
ZW50LmNwcCIKICNpbmNsdWRlICJKU1dvcmtlci5jcHAiCiAjaW5jbHVkZSAiSlNXb3JrZXJDb250
ZXh0LmNwcCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCmluZGV4IDhiYjhkM2IuLjk3NjRlN2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzIzNCw3ICsz
MjM0LDEyIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Nv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIFwKIAlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcCBcCi0JV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisJV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAgXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggXAorCVdlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggXAorCVdlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmgKIAogd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1FcnJvci5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTYwZjI1ZC4uMTdiMWU2YiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg4OCw2ICs4ODgsOSBAQAogCQk1
MTBENEEzNjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMDEwMzE2
NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgKi87IH07CiAJCTUxMEQ0
QTM3MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMTEwMzE2NUVFMDA0
OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oICovOyB9OwogCQk1MTBENEEzODEwMzE2
NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQg
LyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggKi87IH07CisJCTUxMEQ0QTRFMTAzMTc3QTIw
MDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2Nr
ZXRDaGFubmVsLmNwcCAqLzsgfTsKKwkJNTEwRDRBNEYxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNv
Y2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggKi87IH07
CisJCTUxMEQ0QTUwMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEE0OTEw
MzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oICovOyB9OwogCQk1MTE2
RDk3NzBDRjE3N0JEMDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTE2RDk3NTBDRjE3N0JEMDBDMkI4NEQg
LyogRGF0YWJhc2VEZXRhaWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTExRjIzMTcwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRh
c2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEx
RjIzMTMwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suY3BwICovOyB9OwogCQk1
MTFGMjMxODBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjIzMTQwREMxNjBEQTAwNEYw
MDMyIC8qIExvY2FsU3RvcmFnZVRhc2suaCAqLzsgfTsKQEAgLTk3NCw2ICs5NzcsMTAgQEAKIAkJ
NTFBQkFFMUIxMDNDMThGRjAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUVycm9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUxQTEwM0MxOEZGMDA4
QzUyNjAgLyogU29ja2V0U3RyZWFtRXJyb3IuaCAqLzsgfTsKIAkJNTFBQkFFMUUxMDNDMTkxMzAw
OEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFMUMxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0
cmVhbUhhbmRsZS5oICovOyB9OwogCQk1MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0
U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFBQkFFMUQxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRs
ZUNGTmV0LmNwcCAqLzsgfTsKKwkJNTFBQkFFMkUxMDNENEY3NTAwOEM1MjYwIC8qIFdlYlNvY2tl
dEhhbmRzaGFrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFBQkFFMkMxMDNENEY3NTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuY3Bw
ICovOyB9OworCQk1MUFCQUUyRjEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFF
MkQxMDNENEY3NTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuaCAqLzsgfTsKKwkJNTFB
QkFFNDQxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUU0MjEwNDNBQjRBMDA4
QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCAqLzsgfTsKKwkJNTFBQkFFNDUxMDQzQUI0
QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFNDMxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNv
Y2tldEhhbmRzaGFrZS5oICovOyB9OwogCQk1MUIyNDE3QjBEOTMxRjNGMDBFODNGNUMgLyogTGVn
YWN5V2ViQXJjaGl2ZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQjI0MTdBMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFj
Lm1tICovOyB9OwogCQk1MUJFMzdFMDBEQUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkUzN0RFMERB
RUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oICovOyB9OwogCQk1MUMwQUEzOTBGMkFBMTBB
MDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQzBBQTM4MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02MDM0
LDYgKzYwNDEsOSBAQAogCQk1MTBENEEzMDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFt
SGFuZGxlQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2Nr
ZXRTdHJlYW1IYW5kbGVCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEw
RDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MTBENEE0NzEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRDaGFubmVsLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRBNDgxMDMxNzdBMjAwNDlFQTU0IC8qIFdl
YlNvY2tldENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29j
a2V0Q2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEE0OTEwMzE3
N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFp
bHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VEZXRhaWxzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYyMzEzMERDMTYwREEwMDRGMDAzMiAv
KiBMb2NhbFN0b3JhZ2VUYXNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IExvY2FsU3RvcmFnZVRhc2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTFGMjMxNDBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbFN0b3JhZ2VUYXNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02MTI3LDYgKzYxMzcsMTAgQEAKIAkJNTFBQkFFMUExMDNDMThGRjAw
OEM1MjYwIC8qIFNvY2tldFN0cmVhbUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFNvY2tldFN0cmVhbUVycm9yLmg7IHBhdGggPSBjZi9Tb2NrZXRTdHJlYW1FcnJvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUFCQUUxQzEwM0MxOTEzMDA4QzUyNjAg
LyogU29ja2V0U3RyZWFtSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFNvY2tldFN0cmVhbUhhbmRsZS5oOyBwYXRoID0gY2YvU29ja2V0U3RyZWFtSGFuZGxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAvKiBT
b2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBTb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHA7IHBhdGggPSBjZi9Tb2NrZXRTdHJl
YW1IYW5kbGVDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUJBRTJD
MTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUFCQUUyRDEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29j
a2V0SGFuZHNoYWtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2Nr
ZXRIYW5kc2hha2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUJBRTQyMTA0
M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFNDMxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhh
bmRzaGFrZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRIYW5k
c2hha2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMjQxN0EwRDkzMUYzRjAw
RTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUJFMzdERTBEQUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUFyZWEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZy
YW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEZyYW1lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDU4Niw2ICsxMDYwMCwxMSBAQAogCQk1MThB
MzRCRDEwMjZDODMxMDAxQjY4OTYgLyogd2Vic29ja2V0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTFBQkFFNDIxMDQzQUI0QTAwOEM1MjYwIC8qIFdl
YlNvY2tldEhhbmRzaGFrZS5jcHAgKi8sCisJCQkJNTFBQkFFNDMxMDQzQUI0QTAwOEM1MjYwIC8q
IFdlYlNvY2tldEhhbmRzaGFrZS5oICovLAorCQkJCTUxMEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAv
KiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLywKKwkJCQk1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQg
LyogV2ViU29ja2V0Q2hhbm5lbC5oICovLAorCQkJCTUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAv
KiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggKi8sCiAJCQkJNTE4QTM0QkUxMDI2QzgzMTAwMUI2
ODk2IC8qIFdlYlNvY2tldC5jcHAgKi8sCiAJCQkJNTE4QTM0QkYxMDI2QzgzMTAwMUI2ODk2IC8q
IFdlYlNvY2tldC5oICovLAogCQkJCTUxOEEzNEMwMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJTb2Nr
ZXQuaWRsICovLApAQCAtMTc1ODYsNiArMTc2MDUsOSBAQAogCQkJCTUxMEQ0QTM4MTAzMTY1RUUw
MDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxQUJBRTFCMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTFBQkFFMUUxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRs
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRBNEYxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNv
Y2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMEQ0QTUwMTAzMTc3QTIwMDQ5RUE1
NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUFCQUU0
NTEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTE5Njg1LDYgKzE5NzA3LDggQEAKIAkJCQk1MTBENEEzMzEwMzE2NUVFMDA0OUVBNTQgLyog
U29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMEQ0QTM2MTAz
MTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxQUJBRTFGMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDRk5l
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTBENEE0RTEwMzE3N0EyMDA0OUVBNTQgLyogV2Vi
U29ja2V0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUFCQUU0NDEwNDNBQjRBMDA4
QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAwMDVhOTJmLi40Y2EzZjY4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNTQsNiArNTQs
OSBAQAogCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIkpTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5oIgorI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
KyNpbmNsdWRlICJKU1dlYlNvY2tldENvbnN0cnVjdG9yLmgiCisjZW5kaWYKICNpbmNsdWRlICJK
U1dvcmtlckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuaCIKQEAgLTY0Niw2
ICs2NDksMTMgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2hhcmVkV29ya2VyKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorSlNWYWx1
ZSBKU0RPTVdpbmRvdzo6d2ViU29ja2V0KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNXZWJTb2NrZXRDb25zdHJ1Y3Rvcj4oZXhlYywgdGhp
cyk7Cit9CisjZW5kaWYKKwogLy8gQ3VzdG9tIGZ1bmN0aW9ucwogCiAvLyBIZWxwZXIgZm9yIHdp
bmRvdy5vcGVuKCkgYW5kIHdpbmRvdy5zaG93TW9kYWxEaWFsb2coKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudFRhcmdldC5jcHAKaW5kZXggZWQ4MGQ4MC4uMDQyMWQxMCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRUYXJnZXQuY3BwCkBAIC03OCw2ICs3OCwxMSBAQAogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvbi5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisjaW5jbHVkZSAi
SlNXZWJTb2NrZXQuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXQuaCIKKyNlbmRpZgorCiB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzksNiArMTQ0LDExIEBA
IEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEV2ZW50VGFyZ2V0KiB0YXJnCiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIG5vdGlm
aWNhdGlvbik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICBpZiAoV2Vi
U29ja2V0KiB3ZWJTb2NrZXQgPSB0YXJnZXQtPnRvV2ViU29ja2V0KCkpCisgICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIHdlYlNvY2tldCk7CisjZW5kaWYKKwogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBqc051bGwoKTsKIH0KQEAgLTE4Myw2ICsxOTMsMTAgQEAgRXZlbnRU
YXJnZXQqIHRvRXZlbnRUYXJnZXQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgIENPTlZFUlRfVE9f
RVZFTlRfVEFSR0VUKE5vdGlmaWNhdGlvbikKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NL
RVRTKQorICAgIENPTlZFUlRfVE9fRVZFTlRfVEFSR0VUKFdlYlNvY2tldCkKKyNlbmRpZgorCiAg
ICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNw
cCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCAyZjEzZGE4Li42NTI2NDRmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuY3BwCkBAIC04Myw2ICs4MywxMyBAQCBTVkdFbGVtZW50SW5zdGFuY2UqIEV2
ZW50VGFyZ2V0Ojp0b1NWR0VsZW1lbnRJbnN0YW5jZSgpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShXRUJfU09DS0VUUykKK1dlYlNvY2tldCogRXZlbnRUYXJnZXQ6OnRvV2ViU29ja2V0KCkKK3sK
KyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiBNZXNzYWdlUG9ydCogRXZlbnRUYXJnZXQ6OnRv
TWVzc2FnZVBvcnQoKQogewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggNmQzY2I3Yy4u
NmJjYzNmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC01MSw2ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIGNsYXNzIFNoYXJlZFdv
cmtlcjsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXJDb250ZXh0OworICAgIGNsYXNzIFdlYlNvY2tl
dDsKICAgICBjbGFzcyBXb3JrZXI7CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CiAgICAgY2xh
c3MgWE1MSHR0cFJlcXVlc3RVcGxvYWQ7CkBAIC03NSwxMSArNzYsMTMgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIFdvcmtlciogdG9Xb3JrZXIoKTsKICAgICAgICAgdmly
dHVhbCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB0b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKTsK
ICNlbmRpZgotCiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogICAgICAgICB2aXJ0dWFsIFNo
YXJlZFdvcmtlciogdG9TaGFyZWRXb3JrZXIoKTsKICAgICAgICAgdmlydHVhbCBTaGFyZWRXb3Jr
ZXJDb250ZXh0KiB0b1NoYXJlZFdvcmtlckNvbnRleHQoKTsKICNlbmRpZgorI2lmIEVOQUJMRShX
RUJfU09DS0VUUykKKyAgICAgICAgdmlydHVhbCBXZWJTb2NrZXQqIHRvV2ViU29ja2V0KCk7Cisj
ZW5kaWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICB2aXJ0dWFsIE5vdGlm
aWNhdGlvbiogdG9Ob3RpZmljYXRpb24oKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggNmNhMjhjZS4uNWM5
ZGRiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTQ4Nyw2ICs0ODcsMTAgQEAgbW9kdWxlIHdpbmRvdyB7
CiAgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyXSBTaGFyZWRXb3JrZXJDb25zdHJ1
Y3RvciBTaGFyZWRXb3JrZXI7IC8vIFVzYWJsZSB3aXRoIHRoZSBuZXcgb3BlcmF0b3IKICNlbmRp
ZgogCisjaWYgZGVmaW5lZChFTkFCTEVfV0VCX1NPQ0tFVFMpICYmIEVOQUJMRV9XRUJfU09DS0VU
UworICAgICAgICBhdHRyaWJ1dGUgW0pTQ0N1c3RvbUdldHRlcl0gV2ViU29ja2V0Q29uc3RydWN0
b3IgV2ViU29ja2V0OyAvLyBVc2FibGUgd2l0aCB0aGUgbmV3IG9wZXJhdG9yCisjZW5kaWYKKwog
ICAgICAgICBhdHRyaWJ1dGUgUGx1Z2luQ29uc3RydWN0b3IgUGx1Z2luOwogICAgICAgICBhdHRy
aWJ1dGUgUGx1Z2luQXJyYXlDb25zdHJ1Y3RvciBQbHVnaW5BcnJheTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcAppbmRleCA5OTljMWZmLi44ZjkwYjFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcApAQCAtMzQsMTMgKzM0LDU4IEBACiAKICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKIAorI2lu
Y2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5l
ci5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5j
bHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5l
bC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2sgeworcHVibGljOgorICAgIHR5cGVkZWYgdm9pZCAoV2ViU29ja2V0
OjoqTWV0aG9kKShFdmVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2Nlc3NXZWJTb2Nr
ZXRFdmVudFRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYlNvY2tldD4gd2ViU29ja2V0LCBNZXRo
b2QgbWV0aG9kLCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzayh3ZWJTb2NrZXQsIG1ldGhv
ZCwgZXZlbnQpKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKQorICAgIHsKKyAgICAgICAgKG1fd2ViU29ja2V0LmdldCgpLT4qbV9t
ZXRob2QpKG1fZXZlbnQuZ2V0KCkpOworICAgIH0KKworICBwcml2YXRlOgorICAgIFByb2Nlc3NX
ZWJTb2NrZXRFdmVudFRhc2soUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IHdlYlNvY2tldCwgTWV0aG9k
IG1ldGhvZCwgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCisgICAgICAgIDogbV93ZWJTb2NrZXQo
d2ViU29ja2V0KQorICAgICAgICAsIG1fbWV0aG9kKG1ldGhvZCkKKyAgICAgICAgLCBtX2V2ZW50
KGV2ZW50KSB7IH0KKworICAgIFJlZlB0cjxXZWJTb2NrZXQ+IG1fd2ViU29ja2V0OworICAgIE1l
dGhvZCBtX21ldGhvZDsKKyAgICBSZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7Cit9OworCitzdGF0aWMg
Ym9vbCBpc1ZhbGlkUHJvdG9jb2xTdHJpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBwcm90b2Nv
bCkKK3sKKyAgICBpZiAocHJvdG9jb2wuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmIChwcm90b2NvbC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBj
b25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHByb3RvY29sLmNoYXJhY3RlcnMoKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHByb3RvY29sLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgaWYg
KGNoYXJhY3RlcnNbaV0gPCAweDIxIHx8IGNoYXJhY3RlcnNbaV0gPiAweDdFKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogV2ViU29ja2V0
OjpXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2
ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9zdGF0ZShDT05ORUNUSU5HKQpAQCAt
NTksMzkgKzEwNCw0OSBAQCB2b2lkIFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmws
IEV4Y2VwdGlvbkNvZGUmIGVjKQogCiB2b2lkIFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAg
IExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNvbm5lY3QgdG8gJXMgcHJvdG9jb2w9JXMiLCB0
aGlzLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcHJvdG9jb2wudXRmOCgpLmRhdGEoKSk7
CiAgICAgbV91cmwgPSB1cmw7CiAgICAgbV9wcm90b2NvbCA9IHByb3RvY29sOwogCiAgICAgaWYg
KCFtX3VybC5wcm90b2NvbElzKCJ3cyIpICYmICFtX3VybC5wcm90b2NvbElzKCJ3c3MiKSkgewor
ICAgICAgICBMT0dfRVJST1IoIkVycm9yOiB3cm9uZyB1cmwgZm9yIFdlYlNvY2tldCAlcyIsIHVy
bC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICgh
bV9wcm90b2NvbC5pc051bGwoKSAmJiBtX3Byb3RvY29sLmlzRW1wdHkoKSkgeworICAgIGlmICgh
aXNWYWxpZFByb3RvY29sU3RyaW5nKG1fcHJvdG9jb2wpKSB7CisgICAgICAgIExPR19FUlJPUigi
RXJyb3I6IHdyb25nIHByb3RvY29sIGZvciBXZWJTb2NrZXQgJXMiLCBtX3Byb3RvY29sLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOwogICAgICAgICBlYyA9IFNZTlRB
WF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgLy8gRklYTUU6IENoZWNrIHByb3Rv
Y29sIGlzIHZhbGlkIGZvcm0uCi0gICAgLy8gRklYTUU6IENvbm5lY3QgV2ViU29ja2V0Q2hhbm5l
bC4KKyAgICAvLyBGSVhNRTogaWYgbV91cmwucG9ydCgpIGlzIGJsb2NraW5nIHBvcnQsIHJhaXNl
IFNFQ1VSSVRZX0VSUi4KKworICAgIG1fY2hhbm5lbCA9IFdlYlNvY2tldENoYW5uZWw6OmNyZWF0
ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIG1fdXJsLCBtX3Byb3RvY29sKTsKKyAg
ICBtX2NoYW5uZWwtPmNvbm5lY3QoKTsKIH0KIAotYm9vbCBXZWJTb2NrZXQ6OnNlbmQoY29uc3Qg
U3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgZWMpCitib29sIFdlYlNvY2tldDo6c2VuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmIChtX3N0YXRlICE9
IE9QRU4pIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBzZW5kICVzIiwgdGhpcywg
bWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAobV9zdGF0ZSA9PSBDT05ORUNUSU5HKSB7
CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9Ci0gICAgLy8gRklYTUU6IHNlbmQgbWVzc2FnZSBvbiBXZWJTb2NrZXRDaGFubmVsLgot
ICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBObyBleGNlcHRpb24gaXMgcmFpc2VkIGlmIHRoZSBj
b25uZWN0aW9uIHdhcyBvbmNlIGVzdGFibGlzaGVkIGJ1dCBoYXMgc3Vic2VxdWVudGx5IGJlZW4g
Y2xvc2VkLgorICAgIGlmIChtX3N0YXRlID09IENMT1NFRCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIC8vIEZJWE1FOiBjaGVjayBtZXNzYWdlIGlzIHZhbGlkIHV0ZjguCisgICAgcmV0dXJu
IG1fY2hhbm5lbC0+c2VuZChtZXNzYWdlKTsKIH0KIAogdm9pZCBXZWJTb2NrZXQ6OmNsb3NlKCkK
IHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBjbG9zZSIsIHRoaXMpOwogICAgIGlm
IChtX3N0YXRlID09IENMT1NFRCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fc3RhdGUgPSBDTE9T
RUQ7Ci0gICAgLy8gRklYTUU6IGNsb3NlIFdlYlNvY2tldENoYW5uZWwuCisgICAgbV9jaGFubmVs
LT5jbG9zZSgpOwogfQogCiBjb25zdCBLVVJMJiBXZWJTb2NrZXQ6OnVybCgpIGNvbnN0CkBAIC0x
MDYsNyArMTYxLDggQEAgV2ViU29ja2V0OjpTdGF0ZSBXZWJTb2NrZXQ6OnJlYWR5U3RhdGUoKSBj
b25zdAogCiB1bnNpZ25lZCBsb25nIFdlYlNvY2tldDo6YnVmZmVyZWRBbW91bnQoKSBjb25zdAog
ewotICAgIC8vIEZJWE1FOiBhc2sgcGxhdGZvcm0gY29kZSB0byBnZXQgYnVmZmVyZWQgYW1vdW50
IHRvIGJlIHNlbnQuCisgICAgaWYgKG1fc3RhdGUgPT0gT1BFTikKKyAgICAgICAgcmV0dXJuIG1f
Y2hhbm5lbC0+YnVmZmVyZWRBbW91bnQoKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTE1LDU4
ICsxNzEsMTIwIEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFdlYlNvY2tldDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwogfQogCi12b2lkIFdlYlNvY2tldDo6YWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sKQor
dm9pZCBXZWJTb2NrZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lciwgYm9vbCkKIHsK
LSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisgICAgRXZlbnRMaXN0ZW5lcnNNYXA6Oml0
ZXJhdG9yIGl0ZXIgPSBtX2V2ZW50TGlzdGVuZXJzLmZpbmQoZXZlbnRUeXBlKTsKKyAgICBpZiAo
aXRlciA9PSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpKSB7CisgICAgICAgIExpc3RlbmVyVmVjdG9y
IGxpc3RlbmVyczsKKyAgICAgICAgbGlzdGVuZXJzLmFwcGVuZChldmVudExpc3RlbmVyKTsKKyAg
ICAgICAgbV9ldmVudExpc3RlbmVycy5hZGQoZXZlbnRUeXBlLCBsaXN0ZW5lcnMpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMgPSBpdGVyLT5zZWNvbmQ7
CisgICAgICAgIGZvciAoTGlzdGVuZXJWZWN0b3I6Oml0ZXJhdG9yIGxpc3RlbmVySXRlciA9IGxp
c3RlbmVycy5iZWdpbigpOyBsaXN0ZW5lckl0ZXIgIT0gbGlzdGVuZXJzLmVuZCgpOyArK2xpc3Rl
bmVySXRlcikKKyAgICAgICAgICAgIGlmICgqbGlzdGVuZXJJdGVyID09IGV2ZW50TGlzdGVuZXIp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxpc3RlbmVycy5hcHBlbmQoZXZl
bnRMaXN0ZW5lcik7CisgICAgICAgIG1fZXZlbnRMaXN0ZW5lcnMuYWRkKGV2ZW50VHlwZSwgbGlz
dGVuZXJzKTsKKyAgICB9CiB9CiAKLXZvaWQgV2ViU29ja2V0OjpyZW1vdmVFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYsIEV2ZW50TGlzdGVuZXIqLCBib29sKQordm9pZCBXZWJTb2Nr
ZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2
ZW50TGlzdGVuZXIqIGV2ZW50TGlzdGVuZXIsIGJvb2wpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxl
bWVudCB0aGlzLgorICAgIEV2ZW50TGlzdGVuZXJzTWFwOjppdGVyYXRvciBpdGVyID0gbV9ldmVu
dExpc3RlbmVycy5maW5kKGV2ZW50VHlwZSk7CisgICAgaWYgKGl0ZXIgPT0gbV9ldmVudExpc3Rl
bmVycy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTGlzdGVuZXJWZWN0b3ImIGxpc3Rl
bmVycyA9IGl0ZXItPnNlY29uZDsKKyAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjpjb25zdF9pdGVy
YXRvciBsaXN0ZW5lckl0ZXIgPSBsaXN0ZW5lcnMuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9IGxp
c3RlbmVycy5lbmQoKTsgKytsaXN0ZW5lckl0ZXIpCisgICAgICAgIGlmICgqbGlzdGVuZXJJdGVy
ID09IGV2ZW50TGlzdGVuZXIpIHsKKyAgICAgICAgICAgIGxpc3RlbmVycy5yZW1vdmUobGlzdGVu
ZXJJdGVyIC0gbGlzdGVuZXJzLmJlZ2luKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CiB9CiAKLWJvb2wgV2ViU29ja2V0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+
LCBFeGNlcHRpb25Db2RlJikKK2Jvb2wgV2ViU29ja2V0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxl
bWVudCB0aGlzLgotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWV2dCB8fCBldnQtPnR5cGUo
KS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBFdmVudEV4Y2VwdGlvbjo6VU5TUEVDSUZJRURf
RVZFTlRfVFlQRV9FUlI7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIExpc3Rl
bmVyVmVjdG9yIGxpc3RlbmVyc0NvcHkgPSBtX2V2ZW50TGlzdGVuZXJzLmdldChldnQtPnR5cGUo
KSk7CisgICAgZm9yIChMaXN0ZW5lclZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbGlzdGVuZXJJdGVy
ID0gbGlzdGVuZXJzQ29weS5iZWdpbigpOyBsaXN0ZW5lckl0ZXIgIT0gbGlzdGVuZXJzQ29weS5l
bmQoKTsgKytsaXN0ZW5lckl0ZXIpIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7Cisg
ICAgICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbGlzdGVuZXJJdGVy
LT5nZXQoKS0+aGFuZGxlRXZlbnQoZXZ0LmdldCgpLCBmYWxzZSk7CisgICAgfQorICAgIHJldHVy
biAhZXZ0LT5kZWZhdWx0UHJldmVudGVkKCk7CiB9CiAKIHZvaWQgV2ViU29ja2V0OjpkaWRDb25u
ZWN0KCkKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRDb25uZWN0IiwgdGhp
cyk7CiAgICAgaWYgKG1fc3RhdGUgIT0gQ09OTkVDVElORykgewogICAgICAgICBkaWRDbG9zZSgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fc3RhdGUgPSBPUEVOOwotICAgIGRpc3Bh
dGNoT3BlbkV2ZW50KCk7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhQ
cm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrOjpjcmVhdGUodGhpcywgJldlYlNvY2tldDo6ZGlzcGF0
Y2hPcGVuRXZlbnQsIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm9wZW5FdmVudCwgZmFsc2Us
IGZhbHNlKSkpOwogfQogCiB2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtc2cpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkUmVjZWl2
ZU1lc3NhZ2UgJXMiLCB0aGlzLCBtc2cudXRmOCgpLmRhdGEoKSk7CiAgICAgaWYgKG1fc3RhdGUg
IT0gT1BFTikKICAgICAgICAgcmV0dXJuOwotICAgIGRpc3BhdGNoTWVzc2FnZUV2ZW50KG1zZyk7
CisgICAgUmVmUHRyPE1lc3NhZ2VFdmVudD4gZXZ0ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoKTsK
KyAgICAvLyBGSVhNRTogb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNlLCBtZXNzYWdlUG9ydC4K
KyAgICBldnQtPmluaXRNZXNzYWdlRXZlbnQoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCwgZmFs
c2UsIGZhbHNlLCBtc2csICIiLCAiIiwgMCwgMCk7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5wb3N0VGFzayhQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrOjpjcmVhdGUodGhpcywgJldl
YlNvY2tldDo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQsIGV2dCkpOwogfQogCiB2b2lkIFdlYlNvY2tl
dDo6ZGlkQ2xvc2UoKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZENsb3Nl
IiwgdGhpcyk7CiAgICAgbV9zdGF0ZSA9IENMT1NFRDsKLSAgICBkaXNwYXRjaENsb3NlRXZlbnQo
KTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFByb2Nlc3NXZWJTb2Nr
ZXRFdmVudFRhc2s6OmNyZWF0ZSh0aGlzLCAmV2ViU29ja2V0OjpkaXNwYXRjaENsb3NlRXZlbnQs
IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCBmYWxzZSkpKTsK
IH0KIAotdm9pZCBXZWJTb2NrZXQ6OmRpc3BhdGNoT3BlbkV2ZW50KCkKK3ZvaWQgV2ViU29ja2V0
OjpkaXNwYXRjaE9wZW5FdmVudChFdmVudCogZXZ0KQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQgdGhpcy4KKyAgICBpZiAobV9vbm9wZW4pIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhp
cyk7CisgICAgICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbm9w
ZW4tPmhhbmRsZUV2ZW50KGV2dCwgZmFsc2UpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZ0LCBlYyk7CisgICAgQVNTRVJUKCFlYyk7CiB9
CiAKLXZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmKQor
dm9pZCBXZWJTb2NrZXQ6OmRpc3BhdGNoTWVzc2FnZUV2ZW50KEV2ZW50KiBldnQpCiB7Ci0gICAg
Ly8gRklYTUU6IGltcGxlbWVudCB0aGlzLgorICAgIGlmIChtX29ubWVzc2FnZSkgeworICAgICAg
ICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50VGFyZ2V0KHRo
aXMpOworICAgICAgICBtX29ubWVzc2FnZS0+aGFuZGxlRXZlbnQoZXZ0LCBmYWxzZSk7CisgICAg
fQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hFdmVudChldnQsIGVj
KTsKKyAgICBBU1NFUlQoIWVjKTsKIH0KIAotdm9pZCBXZWJTb2NrZXQ6OmRpc3BhdGNoQ2xvc2VF
dmVudCgpCit2b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hDbG9zZUV2ZW50KEV2ZW50KiBldnQpCiB7
Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgorICAgIGlmIChtX29uY2xvc2UpIHsKKyAg
ICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2dC0+c2V0Q3VycmVudFRhcmdl
dCh0aGlzKTsKKyAgICAgICAgbV9vbmNsb3NlLT5oYW5kbGVFdmVudChldnQsIGZhbHNlKTsKKyAg
ICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2dCwg
ZWMpOworICAgIEFTU0VSVCghZWMpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oCmluZGV4IDQ4NWUyY2MuLjJiZTM0NDUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0LmgKQEAgLTMxLDkzICszMSwxMDQgQEAKICNpZm5kZWYgV2ViU29ja2V0X2gKICNkZWZpbmUg
V2ViU29ja2V0X2gKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKwogI2luY2x1ZGUgIkFjdGl2
ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkF0b21pY1N0cmluZ0hhc2guaCIKICNpbmNsdWRlICJF
dmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFN0cmluZzsKKyAgICBjbGFzcyBTdHJpbmc7CisgICAgY2xhc3MgV2ViU29j
a2V0Q2hhbm5lbDsKIAotY2xhc3MgV2ViU29ja2V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29j
a2V0PiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2ViU29ja2V0KGNvbnRl
eHQpKTsgfQotICAgIHZpcnR1YWwgfldlYlNvY2tldCgpOworICAgIGNsYXNzIFdlYlNvY2tldCA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYlNvY2tldD4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGlj
IEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFdlYlNvY2tldENoYW5uZWxDbGllbnQgeworICAgIHB1
YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlNvY2tl
dChjb250ZXh0KSk7IH0KKyAgICAgICAgdmlydHVhbCB+V2ViU29ja2V0KCk7CiAKLSAgICBlbnVt
IFN0YXRlIHsKLSAgICAgICAgQ09OTkVDVElORyA9IDAsCi0gICAgICAgIE9QRU4gPSAxLAotICAg
ICAgICBDTE9TRUQgPSAyCi0gICAgfTsKKyAgICAgICAgZW51bSBTdGF0ZSB7CisgICAgICAgICAg
ICBDT05ORUNUSU5HID0gMCwKKyAgICAgICAgICAgIE9QRU4gPSAxLAorICAgICAgICAgICAgQ0xP
U0VEID0gMgorICAgICAgICB9OwogCi0gICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdm9pZCBjb25uZWN0
KGNvbnN0IEtVUkwmLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQgY29ubmVjdChjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAg
Ym9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAg
ICBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJik7CiAKLSAg
ICB2b2lkIGNsb3NlKCk7CisgICAgICAgIHZvaWQgY2xvc2UoKTsKIAotICAgIGNvbnN0IEtVUkwm
IHVybCgpIGNvbnN0OwotICAgIFN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKLSAgICB1bnNpZ25l
ZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CisgICAgICAgIGNvbnN0IEtVUkwmIHVybCgp
IGNvbnN0OworICAgICAgICBTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CisgICAgICAgIHVuc2ln
bmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0T25vcGVuKFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29ub3BlbiA9IGV2ZW50
TGlzdGVuZXI7IH0KLSAgICBFdmVudExpc3RlbmVyKiBvbm9wZW4oKSBjb25zdCB7IHJldHVybiBt
X29ub3Blbi5nZXQoKTsgfQotICAgIHZvaWQgc2V0T25tZXNzYWdlKFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29ubWVzc2FnZSA9IGV2ZW50TGlzdGVuZXI7IH0K
LSAgICBFdmVudExpc3RlbmVyKiBvbm1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX29ubWVzc2Fn
ZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0T25jbG9zZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGV2ZW50TGlzdGVuZXIpIHsgbV9vbmNsb3NlID0gZXZlbnRMaXN0ZW5lcjsgfQotICAgIEV2ZW50
TGlzdGVuZXIqIG9uY2xvc2UoKSBjb25zdCB7IHJldHVybiBtX29uY2xvc2UuZ2V0KCk7IH0KKyAg
ICAgICAgdm9pZCBzZXRPbm9wZW4oUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3Rl
bmVyKSB7IG1fb25vcGVuID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgICAgICBFdmVudExpc3RlbmVy
KiBvbm9wZW4oKSBjb25zdCB7IHJldHVybiBtX29ub3Blbi5nZXQoKTsgfQorICAgICAgICB2b2lk
IHNldE9ubWVzc2FnZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsg
bV9vbm1lc3NhZ2UgPSBldmVudExpc3RlbmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9u
bWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25tZXNzYWdlLmdldCgpOyB9CisgICAgICAgIHZv
aWQgc2V0T25jbG9zZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsg
bV9vbmNsb3NlID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgICAgICBFdmVudExpc3RlbmVyKiBvbmNs
b3NlKCkgY29uc3QgeyByZXR1cm4gbV9vbmNsb3NlLmdldCgpOyB9CiAKLSAgICAvLyBFdmVudFRh
cmdldAotICAgIHZpcnR1YWwgV2ViU29ja2V0KiB0b1dlYlNvY2tldCgpIHsgcmV0dXJuIHRoaXM7
IH0KKyAgICAgICAgLy8gRXZlbnRUYXJnZXQKKyAgICAgICAgdmlydHVhbCBXZWJTb2NrZXQqIHRv
V2ViU29ja2V0KCkgeyByZXR1cm4gdGhpczsgfQogCi0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisgICAgICAgIHZpcnR1
YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
OwogCi0gICAgdmlydHVhbCB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOwotICAgIHZpcnR1
YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBFeGNlcHRpb25Db2RlJik7
CisgICAgICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxFdmVudExpc3RlbmVyPiA+IExpc3RlbmVy
VmVjdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBMaXN0ZW5lclZl
Y3Rvcj4gRXZlbnRMaXN0ZW5lcnNNYXA7CiAKLSAgICAvLyBBY3RpdmVET01PYmplY3QKLSAgICAv
LyB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7Ci0gICAgLy8gdmlydHVh
bCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKLSAgICAvLyB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVu
ZCgpIGNvbnN0OwotICAgIC8vIHZpcnR1YWwgdm9pZCBzdXNwZW5kKCk7Ci0gICAgLy8gdmlydHVh
bCB2b2lkIHJlc3VtZSgpOwotICAgIC8vIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgICAgIEV2ZW50TGlzdGVuZXJzTWFwJiBldmVudExpc3RlbmVycygpIHsgcmV0dXJuIG1fZXZl
bnRMaXN0ZW5lcnM7IH0KIAotICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Pjo6cmVmOwot
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Pjo6ZGVyZWY7CisgICAgICAgIC8vIEFjdGl2
ZURPTU9iamVjdAorICAgICAgICAvLyAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0OworICAgICAgICAvLyB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOworICAg
ICAgICAvLyB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0OworICAgICAgICAvLyB2aXJ0
dWFsIHZvaWQgc3VzcGVuZCgpOworICAgICAgICAvLyB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7Cisg
ICAgICAgIC8vIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAKLXByaXZhdGU6Ci0gICAgV2ViU29ja2V0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJT
b2NrZXQ+OjpyZWY7CisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Pjo6ZGVyZWY7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KKyAgICAgICAgLy8gV2Vi
U29ja2V0Q2hhbm5lbENsaWVudAorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29ubmVjdCgpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtc2cp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoKTsKIAotICAgIC8vIFdlYlNvY2tldENo
YW5uZWxDbGllbnQKLSAgICB2b2lkIGRpZENvbm5lY3QoKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKTsKLSAgICB2b2lkIGRpZENsb3NlKCk7CisgICAgcHJp
dmF0ZToKKyAgICAgICAgV2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAotICAg
IHZvaWQgZGlzcGF0Y2hPcGVuRXZlbnQoKTsKLSAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUV2ZW50
KGNvbnN0IFN0cmluZyYgbXNnKTsKLSAgICB2b2lkIGRpc3BhdGNoQ2xvc2VFdmVudCgpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CiAKLSAgICAvLyBGSVhN
RTogYWRkIFdlYlNvY2tldENoYW5uZWwuCisgICAgICAgIHZvaWQgZGlzcGF0Y2hPcGVuRXZlbnQo
RXZlbnQqKTsKKyAgICAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VFdmVudChFdmVudCopOworICAg
ICAgICB2b2lkIGRpc3BhdGNoQ2xvc2VFdmVudChFdmVudCopOwogCi0gICAgUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IG1fb25vcGVuOwotICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ubWVzc2Fn
ZTsKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbmNsb3NlOworICAgICAgICBSZWZQdHI8
V2ViU29ja2V0Q2hhbm5lbD4gbV9jaGFubmVsOwogCi0gICAgU3RhdGUgbV9zdGF0ZTsKLSAgICBL
VVJMIG1fdXJsOwotICAgIFN0cmluZyBtX3Byb3RvY29sOwotfTsKKyAgICAgICAgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IG1fb25vcGVuOworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9v
bm1lc3NhZ2U7CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29uY2xvc2U7CisgICAg
ICAgIEV2ZW50TGlzdGVuZXJzTWFwIG1fZXZlbnRMaXN0ZW5lcnM7CisKKyAgICAgICAgU3RhdGUg
bV9zdGF0ZTsKKyAgICAgICAgS1VSTCBtX3VybDsKKyAgICAgICAgU3RyaW5nIG1fcHJvdG9jb2w7
CisgICAgfTsKIAogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmICAvLyBFTkFCTEUo
V0VCX1NPQ0tFVFMpCisKICNlbmRpZiAgLy8gV2ViU29ja2V0X2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x
NDVjZDM0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwCkBAIC0wLDAgKzEsMjQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKKworI2lu
Y2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJDb29raWVKYXIuaCIKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTb2NrZXRT
dHJlYW1FcnJvci5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZS5oIgorI2luY2x1ZGUg
IlN0cmluZ0hhc2guaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCisKKyNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViU29ja2V0Q2hh
bm5lbDo6V2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9jbGllbnQo
Y2xpZW50KQorICAgICwgbV9oYW5kc2hha2UodXJsLCBwcm90b2NvbCwgY29udGV4dCkKKyAgICAs
IG1fYnVmZmVyKDApCisgICAgLCBtX2J1ZmZlclNpemUoMCkKKyAgICAsIG1fdW5oYW5kbGVkQnVm
ZmVyU2l6ZSgwKQoreworfQorCitXZWJTb2NrZXRDaGFubmVsOjp+V2ViU29ja2V0Q2hhbm5lbCgp
Cit7CisgICAgZmFzdEZyZWUobV9idWZmZXIpOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmNvbm5lY3QoKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjb25u
ZWN0IiwgdGhpcyk7CisgICAgQVNTRVJUKCFtX2hhbmRsZS5nZXQoKSk7CisgICAgbV9oYW5kc2hh
a2UucmVzZXQoKTsKKyAgICBtX2hhbmRsZSA9IFNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlKG1f
aGFuZHNoYWtlLnVybCgpLCB0aGlzKTsKK30KKworYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5k
KGNvbnN0IFN0cmluZyYgbXNnKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5l
bCAlcCBzZW5kICVzIiwgdGhpcywgbXNnLnV0ZjgoKS5kYXRhKCkpOworICAgIFZlY3RvcjxjaGFy
PiBidWY7CisgICAgYnVmLmFwcGVuZCgnXDAnKTsgIC8vIGZyYW1lIHR5cGUKKyAgICBidWYuYXBw
ZW5kKG1zZy51dGY4KCkuZGF0YSgpLCBtc2cudXRmOCgpLmxlbmd0aCgpKTsKKyAgICBidWYuYXBw
ZW5kKCdceGZmJyk7ICAvLyBmcmFtZSBlbmQKKyAgICBpZiAoIW1faGFuZGxlLmdldCgpKSB7Cisg
ICAgICAgIG1fdW5oYW5kbGVkQnVmZmVyU2l6ZSArPSBidWYuc2l6ZSgpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBtX2hhbmRsZS0+c2VuZChidWYuZGF0YSgpLCBi
dWYuc2l6ZSgpKTsKK30KKwordW5zaWduZWQgbG9uZyBXZWJTb2NrZXRDaGFubmVsOjpidWZmZXJl
ZEFtb3VudCgpIGNvbnN0Cit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVw
IGJ1ZmZlcmVkQW1vdW50IiwgdGhpcyk7CisgICAgaWYgKCFtX2hhbmRsZS5nZXQoKSkKKyAgICAg
ICAgcmV0dXJuIG1fdW5oYW5kbGVkQnVmZmVyU2l6ZTsKKyAgICByZXR1cm4gbV9oYW5kbGUtPmJ1
ZmZlcmVkQW1vdW50KCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoKQorewor
ICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjbG9zZSIsIHRoaXMpOworICAg
IGlmIChtX2hhbmRsZS5nZXQoKSkKKyAgICAgICAgbV9oYW5kbGUtPmNsb3NlKCk7ICAvLyB3aWxs
IGNhbGwgZGlkQ2xvc2UoKQorfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OndpbGxPcGVuU3Ry
ZWFtKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEtVUkwmKQoreworfQorCit2b2lkIFdlYlNv
Y2tldENoYW5uZWw6OndpbGxTZW5kRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBjaGFy
KiwgaW50KQoreworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZE9wZW4oU29ja2V0U3Ry
ZWFtSGFuZGxlKiBoYW5kbGUpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVs
ICVwIGRpZE9wZW4iLCB0aGlzKTsKKyAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdldCgp
KTsKKyAgICBjb25zdCBDU3RyaW5nJiBoYW5kc2hha2VNZXNzYWdlID0gbV9oYW5kc2hha2UuY2xp
ZW50SGFuZHNoYWtlTWVzc2FnZSgpOworICAgIGlmICghaGFuZGxlLT5zZW5kKGhhbmRzaGFrZU1l
c3NhZ2UuZGF0YSgpLCBoYW5kc2hha2VNZXNzYWdlLmxlbmd0aCgpKSkgeworICAgICAgICBMT0co
TmV0d29yaywgIkVycm9yIGluIHNlbmRpbmcgaGFuZHNoYWtlIG1lc3NhZ2UuIik7CisgICAgICAg
IGhhbmRsZS0+Y2xvc2UoKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlk
Q2xvc2UoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCit7CisgICAgTE9HKE5ldHdvcmssICJX
ZWJTb2NrZXRDaGFubmVsICVwIGRpZENsb3NlIiwgdGhpcyk7CisgICAgQVNTRVJUKGhhbmRsZSA9
PSBtX2hhbmRsZS5nZXQoKSB8fCAhbV9oYW5kbGUuZ2V0KCkpOworICAgIGlmICghbV9oYW5kbGUu
Z2V0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3VuaGFuZGxlZEJ1ZmZlclNpemUgPSBoYW5k
bGUtPmJ1ZmZlcmVkQW1vdW50KCk7CisgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50
ID0gbV9jbGllbnQ7CisgICAgbV9jbGllbnQgPSAwOworICAgIG1faGFuZGxlID0gMDsKKyAgICBj
bGllbnQtPmRpZENsb3NlKCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2
ZURhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBs
ZW4pCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZFJlY2VpdmVE
YXRhICVkIiwgdGhpcywgbGVuKTsKKyAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdldCgp
KTsKKyAgICBpZiAoIWFwcGVuZFRvQnVmZmVyKGRhdGEsIGxlbikpIHsKKyAgICAgICAgaGFuZGxl
LT5jbG9zZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX2hhbmRzaGFrZS5t
b2RlKCkgIT0gV2ViU29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQpIHsKKyAgICAgICAgaW50IGhl
YWRlckxlbmd0aCA9IG1faGFuZHNoYWtlLnJlYWRTZXJ2ZXJIYW5kc2hha2UobV9idWZmZXIsIG1f
YnVmZmVyU2l6ZSk7CisgICAgICAgIGlmIChoZWFkZXJMZW5ndGggPD0gMCkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgc3dpdGNoIChtX2hhbmRzaGFrZS5tb2RlKCkpIHsKKyAgICAgICAg
Y2FzZSBXZWJTb2NrZXRIYW5kc2hha2U6OkNvbm5lY3RlZDoKKyAgICAgICAgICAgIGlmICghbV9o
YW5kc2hha2Uuc2VydmVyU2V0Q29va2llKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAg
aWYgKG1fY29udGV4dC0+aXNEb2N1bWVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9jb250ZXh0KTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvb2tpZXNFbmFibGVkKGRvY3VtZW50KSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LT5zZXRDb29raWUobV9oYW5kc2hha2Uuc2VydmVyU2V0Q29v
a2llKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8v
IEZJWE1FOiBoYW5kbGUgc2V0LWNvb2tpZTIuCisgICAgICAgICAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldENoYW5uZWwgJXAgY29ubmVjdGVkIiwgdGhpcyk7CisgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkQ29ubmVjdCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVjdGlvbiBm
YWlsZWQiLCB0aGlzKTsKKyAgICAgICAgICAgIGhhbmRsZS0+Y2xvc2UoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBza2lwQnVmZmVyKGhlYWRlckxlbmd0aCk7Cisg
ICAgICAgIGlmICghbV9idWZmZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIExPRyhO
ZXR3b3JrLCAicmVtYWluaW5nIGluIHJlYWQgYnVmICV1bCIsIG1fYnVmZmVyU2l6ZSk7CisgICAg
fQorCisgICAgY29uc3QgY2hhciogbmV4dEZyYW1lID0gbV9idWZmZXI7CisgICAgY29uc3QgY2hh
ciogcCA9IG1fYnVmZmVyOworICAgIGNvbnN0IGNoYXIqIGVuZCA9IHAgKyBtX2J1ZmZlclNpemU7
CisgICAgd2hpbGUgKHAgPCBlbmQpIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBmcmFtZUJ5dGUg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqcCsrKTsKKyAgICAgICAgaWYgKChmcmFtZUJ5
dGUgJiAweDgwKSA9PSAweDgwKSB7CisgICAgICAgICAgICBpbnQgbGVuZ3RoID0gMDsKKyAgICAg
ICAgICAgIHdoaWxlIChwIDwgZW5kICYmICgqcCAmIDB4ODApID09IDB4ODApIHsKKyAgICAgICAg
ICAgICAgICBpZiAobGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSAvIDEy
OCkgeworICAgICAgICAgICAgICAgICAgICBMT0coTmV0d29yaywgImZyYW1lIGxlbmd0aCBvdmVy
ZmxvdyAlZCIsIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZS0+Y2xvc2UoKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBsZW5ndGggPSBsZW5ndGggKiAxMjggKyAqcCAmIDB4N2Y7CisgICAgICAgICAgICAg
ICAgKytwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHAgKyBsZW5ndGggPCBlbmQp
IHsKKyAgICAgICAgICAgICAgICBwICs9IGxlbmd0aDsKKyAgICAgICAgICAgICAgICBuZXh0RnJh
bWUgPSBwOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29u
c3QgY2hhciogbXNnU3RhcnQgPSBwOworICAgICAgICAgICAgd2hpbGUgKHAgPCBlbmQgJiYgKnAg
IT0gJ1x4ZmYnKQorICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgIGlmIChwIDwgZW5k
ICYmICpwID09ICdceGZmJykgeworICAgICAgICAgICAgICAgIGlmIChmcmFtZUJ5dGUgPT0gMHgw
MCkKKyAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKFN0cmlu
Zzo6ZnJvbVVURjgobXNnU3RhcnQsIHAgLSBtc2dTdGFydCkpOworICAgICAgICAgICAgICAgICsr
cDsKKyAgICAgICAgICAgICAgICBuZXh0RnJhbWUgPSBwOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorICAgIHNraXBCdWZmZXIobmV4dEZyYW1lIC0gbV9idWZmZXIpOworfQorCit2
b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZEZhaWwoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUs
IGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJikKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tl
dENoYW5uZWwgJXAgZGlkRmFpbCIsIHRoaXMpOworICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5k
bGUuZ2V0KCkgfHwgIW1faGFuZGxlLmdldCgpKTsKKyAgICBoYW5kbGUtPmNsb3NlKCk7Cit9CisK
K2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIoY29uc3QgY2hhciogZGF0YSwg
aW50IGxlbikKK3sKKyAgICBjaGFyKiBuZXdCdWZmZXIgPSAwOworICAgIGlmICh0cnlGYXN0TWFs
bG9jKG1fYnVmZmVyU2l6ZSArIGxlbikuZ2V0VmFsdWUobmV3QnVmZmVyKSkgeworICAgICAgICBp
ZiAobV9idWZmZXIpCisgICAgICAgICAgICBtZW1jcHkobmV3QnVmZmVyLCBtX2J1ZmZlciwgbV9i
dWZmZXJTaXplKTsKKyAgICAgICAgbWVtY3B5KG5ld0J1ZmZlciArIG1fYnVmZmVyU2l6ZSwgZGF0
YSwgbGVuKTsKKyAgICAgICAgZmFzdEZyZWUobV9idWZmZXIpOworICAgICAgICBtX2J1ZmZlciA9
IG5ld0J1ZmZlcjsKKyAgICAgICAgbV9idWZmZXJTaXplICs9IGxlbjsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIExPRyhOZXR3b3JrLCAiVG9vIGxvbmcgV2ViU29ja2V0IGZyYW1l
ICVkIiwgbV9idWZmZXJTaXplICsgbGVuKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQg
V2ViU29ja2V0Q2hhbm5lbDo6c2tpcEJ1ZmZlcihpbnQgbGVuKQoreworICAgIEFTU0VSVChsZW4g
PD0gbV9idWZmZXJTaXplKTsKKyAgICBtX2J1ZmZlclNpemUgLT0gbGVuOworICAgIGlmICghbV9i
dWZmZXJTaXplKSB7CisgICAgICAgIGZhc3RGcmVlKG1fYnVmZmVyKTsKKyAgICAgICAgbV9idWZm
ZXIgPSAwOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1lbW1vdmUobV9idWZmZXIsIG1f
YnVmZmVyICsgbGVuLCBtX2J1ZmZlclNpemUpOworfQorCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZjQxZjYK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5o
CkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTb2NrZXRDaGFubmVsX2gKKyNkZWZpbmUgV2Vi
U29ja2V0Q2hhbm5lbF9oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRlICJT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2Uu
aCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
KyAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIGNsYXNzIFN0cmluZzsKKyAg
ICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGU7CisgICAgY2xhc3MgU29ja2V0U3RyZWFtRXJyb3I7
CisgICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENsaWVudDsKKworICAgIGNsYXNzIFdlYlNvY2tl
dENoYW5uZWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTb2NrZXRDaGFubmVsPiwgcHVibGljIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIHsgcmV0dXJuIG5ldyBXZWJTb2NrZXRDaGFubmVsKGNv
bnRleHQsIGNsaWVudCwgdXJsLCBwcm90b2NvbCk7IH0KKyAgICAgICAgdmlydHVhbCB+V2ViU29j
a2V0Q2hhbm5lbCgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KCk7CisKKyAgICAg
ICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtc2cpOworICAgICAgICB2aXJ0dWFs
IHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKKworICAgICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2UoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbE9wZW5TdHJlYW0oU29j
a2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgS1VSTCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFNlbmREYXRhKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkT3BlbihTb2NrZXRTdHJlYW1IYW5kbGUqKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZENsb3NlKFNvY2tldFN0cmVhbUhhbmRsZSopOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgY2hhciosIGlu
dCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFNvY2tldFN0cmVhbUhhbmRsZSosIGNv
bnN0IFNvY2tldFN0cmVhbUVycm9yJik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBXZWJTb2Nr
ZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50
KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOworCisgICAgICAgIGJvb2wgYXBwZW5kVG9C
dWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbik7CisgICAgICAgIHZvaWQgc2tpcEJ1ZmZl
cihpbnQgbGVuKTsKKworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7
CisgICAgICAgIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIG1fY2xpZW50OworICAgICAgICBXZWJT
b2NrZXRIYW5kc2hha2UgbV9oYW5kc2hha2U7CisgICAgICAgIFJlZlB0cjxTb2NrZXRTdHJlYW1I
YW5kbGU+IG1faGFuZGxlOworICAgICAgICBjaGFyKiBtX2J1ZmZlcjsKKyAgICAgICAgaW50IG1f
YnVmZmVyU2l6ZTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtX3VuaGFuZGxlZEJ1ZmZlclNpemU7
CisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBFTkFCTEUo
V0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAgLy8gV2ViU29ja2V0Q2hhbm5lbF9oCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIGIvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40NjNjYWRhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
U29ja2V0Q2hhbm5lbENsaWVudF9oCisjZGVmaW5lIFdlYlNvY2tldENoYW5uZWxDbGllbnRfaAor
CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBj
bGFzcyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1
YWwgfldlYlNvY2tldENoYW5uZWxDbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZENvbm5lY3QoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNv
bnN0IFN0cmluZyYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoKSB7IH0KKwor
ICAgIHByb3RlY3RlZDoKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCgpIHsgfQorICAg
IH07CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9T
T0NLRVRTKQorCisjZW5kaWYgIC8vIFdlYlNvY2tldENoYW5uZWxDbGllbnRfaApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42OTFmYTFjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTAsMCArMSw0NjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2ViU29ja2V0SGFu
ZHNoYWtlLmgiCisKKyNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKKyNpbmNsdWRlICJDU3RyaW5n
LmgiCisjaW5jbHVkZSAiQ29va2llSmFyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJIVFRQSGVhZGVyTWFwLmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSA8d3Rm
L1N0cmluZ0V4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjb25zdCBjaGFyIHdlYlNvY2tldFNlcnZlckhhbmRzaGFrZUhlYWRlcltdID0g
IkhUVFAvMS4xIDEwMSBXZWIgU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4iOworY29uc3Qg
Y2hhciB3ZWJTb2NrZXRVcGdyYWRlSGVhZGVyW10gPSAiVXBncmFkZTogV2ViU29ja2V0XHJcbiI7
Citjb25zdCBjaGFyIHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXJbXSA9ICJDb25uZWN0aW9uOiBV
cGdyYWRlXHJcbiI7CisKK3N0YXRpYyBTdHJpbmcgZXh0cmFjdFJlc3BvbnNlQ29kZShjb25zdCBj
aGFyKiBoZWFkZXIsIGludCBsZW4pCit7CisgICAgY29uc3QgY2hhciogc3BhY2UxID0gMDsKKyAg
ICBjb25zdCBjaGFyKiBzcGFjZTIgPSAwOworICAgIGNvbnN0IGNoYXIqIHA7CisgICAgZm9yIChw
ID0gaGVhZGVyOyBwIC0gaGVhZGVyIDwgbGVuOyBwKyspIHsKKyAgICAgICAgaWYgKCpwID09ICcg
JykgeworICAgICAgICAgICAgaWYgKCFzcGFjZTEpCisgICAgICAgICAgICAgICAgc3BhY2UxID0g
cDsKKyAgICAgICAgICAgIGVsc2UgaWYgKCFzcGFjZTIpCisgICAgICAgICAgICAgICAgc3BhY2Uy
ID0gcDsKKyAgICAgICAgfSBlbHNlIGlmICgqcCA9PSAnXG4nKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGlmIChwIC0gaGVhZGVyID09IGxlbikKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOworICAgIGlmICghc3BhY2UxIHx8ICFzcGFjZTIpCisgICAgICAgIHJldHVybiAiIjsKKyAg
ICByZXR1cm4gU3RyaW5nKHNwYWNlMSArIDEsIHNwYWNlMiAtIHNwYWNlMSAtIDEpOworfQorCitX
ZWJTb2NrZXRIYW5kc2hha2U6OldlYlNvY2tldEhhbmRzaGFrZShjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgcHJvdG9jb2wsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisg
ICAgOiBtX3VybCh1cmwpCisgICAgLCBtX2NsaWVudFByb3RvY29sKHByb3RvY29sKQorICAgICwg
bV9zZWN1cmUobV91cmwucHJvdG9jb2xJcygid3NzIikpCisgICAgLCBtX2NvbnRleHQoY29udGV4
dCkKKyAgICAsIG1fbW9kZShJbmNvbXBsZXRlKQoreworfQorCitXZWJTb2NrZXRIYW5kc2hha2U6
On5XZWJTb2NrZXRIYW5kc2hha2UoKQoreworfQorCitjb25zdCBLVVJMJiBXZWJTb2NrZXRIYW5k
c2hha2U6OnVybCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXJsOworfQorCit2b2lkIFdlYlNv
Y2tldEhhbmRzaGFrZTo6c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICBtX3VybCA9IHVy
bC5jb3B5KCk7Cit9CisKK2NvbnN0IFN0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6Omhvc3QoKSBj
b25zdAoreworICAgIHJldHVybiBtX3VybC5ob3N0KCkubG93ZXIoKTsKK30KKworY29uc3QgU3Ry
aW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudFByb3RvY29sKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jbGllbnRQcm90b2NvbDsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNl
dENsaWVudFByb3RvY29sKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCit7CisgICAgbV9jbGllbnRQ
cm90b2NvbCA9IHByb3RvY29sOworfQorCitib29sIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VjdXJl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZWN1cmU7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFu
ZHNoYWtlOjpzZXRTZWN1cmUoYm9vbCBzZWN1cmUpCit7CisgICAgbV9zZWN1cmUgPSBzZWN1cmU7
Cit9CisKK1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudE9yaWdpbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKTsKK30K
KworU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50TG9jYXRpb24oKSBjb25zdAorewor
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChtX3NlY3VyZSA/
ICJ3c3MiIDogIndzIik7CisgICAgYnVpbGRlci5hcHBlbmQoIjovLyIpOworICAgIGJ1aWxkZXIu
YXBwZW5kKG1fdXJsLmhvc3QoKS5sb3dlcigpKTsKKyAgICBpZiAobV91cmwucG9ydCgpKSB7Cisg
ICAgICAgIGlmICgoIW1fc2VjdXJlICYmIG1fdXJsLnBvcnQoKSAhPSA4MCkgfHwgKG1fc2VjdXJl
ICYmIG1fdXJsLnBvcnQoKSAhPSA0NDMpKSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
OiIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIobV91cmwucG9y
dCgpKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgYnVpbGRlci5hcHBlbmQobV91cmwucGF0aCgp
KTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitDU3RyaW5nIFdlYlNvY2tl
dEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlTWVzc2FnZSgpIGNvbnN0Cit7CisgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOworCisgICAgYnVpbGRlci5hcHBlbmQoIkdFVCAiKTsKKyAgICBidWls
ZGVyLmFwcGVuZChtX3VybC5wYXRoKCkpOworICAgIGlmICghbV91cmwucXVlcnkoKS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIj8iKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQobV91cmwucXVlcnkoKSk7CisgICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKCIgSFRUUC8xLjFc
clxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIlVwZ3JhZGU6IFdlYlNvY2tldFxyXG4iKTsKKyAg
ICBidWlsZGVyLmFwcGVuZCgiQ29ubmVjdGlvbjogVXBncmFkZVxyXG4iKTsKKyAgICBidWlsZGVy
LmFwcGVuZCgiSG9zdDogIik7CisgICAgYnVpbGRlci5hcHBlbmQobV91cmwuaG9zdCgpLmxvd2Vy
KCkpOworICAgIGlmIChtX3VybC5wb3J0KCkpIHsKKyAgICAgICAgaWYgKCghbV9zZWN1cmUgJiYg
bV91cmwucG9ydCgpICE9IDgwKSB8fCAobV9zZWN1cmUgJiYgbV91cmwucG9ydCgpICE9IDQ0Mykp
IHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6Iik7CisgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZChTdHJpbmc6Om51bWJlcihtX3VybC5wb3J0KCkpKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBidWlsZGVyLmFwcGVuZCgiXHJcbiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJPcmlnaW46
ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKGNsaWVudE9yaWdpbigpKTsKKyAgICBidWlsZGVyLmFw
cGVuZCgiXHJcbiIpOworICAgIGlmICghbV9jbGllbnRQcm90b2NvbC5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIldlYlNvY2tldC1Qcm90b2NvbDogIik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKG1fY2xpZW50UHJvdG9jb2wpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgi
XHJcbiIpOworICAgIH0KKyAgICBLVVJMIHVybCA9IGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFu
ZENvb2tpZXMoKTsKKyAgICAvLyBGSVhNRTogc2V0IGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9u
IG9yIGNvb2tpZXMgZm9yIHVybC4KKyAgICAvLyBTZXQgIkF1dGhvcml6YXRpb246IDxjcmVkZW50
aWFscz4iIGlmIGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uIGV4aXN0cyBmb3IgdXJsLgorICAg
IGlmIChtX2NvbnRleHQtPmlzRG9jdW1lbnQoKSkgeworICAgICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fY29udGV4dCk7CisgICAgICAgIFN0cmluZyBj
b29raWUgPSBjb29raWVzKGRvY3VtZW50LCB1cmwpOworICAgICAgICBpZiAoIWNvb2tpZS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJDb29raWU6ICIpOworICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoY29va2llKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCJcclxuIik7CisgICAgICAgIH0KKyAgICAgICAgLy8gU2V0ICJDb29raWUyOiA8Y29va2llPiIg
aWYgY29va2llcyAyIGV4aXN0cyBmb3IgdXJsPworICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZCgi
XHJcbiIpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOworfQorCit2b2lk
IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVzZXQoKQoreworICAgIG1fbW9kZSA9IEluY29tcGxldGU7
CisKKyAgICBtX3dzT3JpZ2luID0gU3RyaW5nKCk7CisgICAgbV93c0xvY2F0aW9uID0gU3RyaW5n
KCk7CisgICAgbV93c1Byb3RvY29sID0gU3RyaW5nKCk7CisgICAgbV9zZXRDb29raWUgPSBTdHJp
bmcoKTsKKyAgICBtX3NldENvb2tpZTIgPSBTdHJpbmcoKTsKK30KKworaW50IFdlYlNvY2tldEhh
bmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBs
ZW4pCit7CisgICAgbV9tb2RlID0gSW5jb21wbGV0ZTsKKyAgICBpZiAobGVuIDwgc2l6ZW9mKHdl
YlNvY2tldFNlcnZlckhhbmRzaGFrZUhlYWRlcikgLSAxKSB7CisgICAgICAgIC8vIEp1c3QgaGFz
bid0IGJlZW4gcmVjZWl2ZWQgZnVsbHkgeWV0LgorICAgICAgICByZXR1cm4gLTE7CisgICAgfQor
ICAgIGlmICghbWVtY21wKGhlYWRlciwgd2ViU29ja2V0U2VydmVySGFuZHNoYWtlSGVhZGVyLCBz
aXplb2Yod2ViU29ja2V0U2VydmVySGFuZHNoYWtlSGVhZGVyKSAtIDEpKQorICAgICAgICBtX21v
ZGUgPSBOb3JtYWw7CisgICAgZWxzZSB7CisgICAgICAgIGNvbnN0IFN0cmluZyYgY29kZSA9IGV4
dHJhY3RSZXNwb25zZUNvZGUoaGVhZGVyLCBsZW4pOworICAgICAgICBpZiAoY29kZS5pc051bGwo
KSkgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJzaG9ydCBzZXJ2ZXIgaGFuZHNoYWtlOiAl
cyIsIGhlYWRlcik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGNvZGUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBMT0coTmV0d29yaywgIm5vIHJlc3Bv
bnNlIGNvZGUgZm91bmQ6ICVzIiwgaGVhZGVyKTsKKyAgICAgICAgICAgIHJldHVybiBsZW47Cisg
ICAgICAgIH0KKyAgICAgICAgTE9HKE5ldHdvcmssICJyZXNwb25zZSBjb2RlOiAlcyIsIGNvZGUu
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGlmIChjb2RlID09ICI0MDEiKSB7CisgICAgICAgICAg
ICBMT0coTmV0d29yaywgIkF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkIik7CisgICAgICAgICAgICBy
ZXR1cm4gbGVuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJN
aXNtYXRjaCBzZXJ2ZXIgaGFuZHNoYWtlOiAlcyIsIGhlYWRlcik7CisgICAgICAgICAgICByZXR1
cm4gbGVuOworICAgICAgICB9CisgICAgfQorICAgIGNvbnN0IGNoYXIqIHAgPSBoZWFkZXIgKyBz
aXplb2Yod2ViU29ja2V0U2VydmVySGFuZHNoYWtlSGVhZGVyKSAtIDE7CisgICAgY29uc3QgY2hh
ciogZW5kID0gaGVhZGVyICsgbGVuICsgMTsKKworICAgIGlmIChtX21vZGUgPT0gTm9ybWFsKSB7
CisgICAgICAgIHNpemVfdCBoZWFkZXJTaXplID0gZW5kIC0gcDsKKyAgICAgICAgaWYgKGhlYWRl
clNpemUgPCBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRlcikgLSAxKQorICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIGlmIChtZW1jbXAocCwgd2ViU29ja2V0VXBncmFkZUhlYWRlciwg
c2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMSkpIHsKKyAgICAgICAgICAgIExPRyhO
ZXR3b3JrLCAiQmFkIHVwZ3JhZGUgaGVhZGVyOiAlcyIsIHApOworICAgICAgICAgICAgcmV0dXJu
IHAgLSBoZWFkZXIgKyBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRlcikgLSAxOworICAgICAg
ICB9CisgICAgICAgIHAgKz0gc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMTsKKwor
ICAgICAgICBoZWFkZXJTaXplID0gZW5kIC0gcDsKKyAgICAgICAgaWYgKGhlYWRlclNpemUgPCBz
aXplb2Yod2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlcikgLSAxKQorICAgICAgICAgICAgcmV0dXJu
IC0xOworICAgICAgICBpZiAobWVtY21wKHAsIHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXIsIHNp
emVvZih3ZWJTb2NrZXRDb25uZWN0aW9uSGVhZGVyKSAtIDEpKSB7CisgICAgICAgICAgICBMT0co
TmV0d29yaywgIkJhZCBjb25uZWN0aW9uIGhlYWRlcjogJXMiLCBwKTsKKyAgICAgICAgICAgIHJl
dHVybiBwIC0gaGVhZGVyICsgc2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXIpIC0gMTsK
KyAgICAgICAgfQorICAgICAgICBwICs9IHNpemVvZih3ZWJTb2NrZXRDb25uZWN0aW9uSGVhZGVy
KSAtIDE7CisgICAgfQorCisgICAgaWYgKCFzdHJuc3RyKHAsICJcclxuXHJcbiIsIGVuZCAtIHAp
KSB7CisgICAgICAgIC8vIEp1c3QgaGFzbid0IGJlZW4gcmVjZWl2ZWQgZnVsbHkgeWV0LgorICAg
ICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIEhUVFBIZWFkZXJNYXAgaGVhZGVyczsKKyAgICBw
ID0gcmVhZEhUVFBIZWFkZXJzKHAsIGVuZCwgJmhlYWRlcnMpOworICAgIGlmICghcCkgeworICAg
ICAgICBMT0coTmV0d29yaywgInJlYWRIVFRQSGVhZGVycyBmYWlsZWQiKTsKKyAgICAgICAgbV9t
b2RlID0gRmFpbGVkOworICAgICAgICByZXR1cm4gbGVuOworICAgIH0KKyAgICBpZiAoIXByb2Nl
c3NIZWFkZXJzKGhlYWRlcnMpKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiaGVhZGVyIHByb2Nl
c3MgZmFpbGVkIik7CisgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAgICAgICAgcmV0dXJuIHAg
LSBoZWFkZXI7CisgICAgfQorICAgIHN3aXRjaCAobV9tb2RlKSB7CisgICAgY2FzZSBOb3JtYWw6
CisgICAgICAgIGNoZWNrUmVzcG9uc2VIZWFkZXJzKCk7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIHJldHVybiBwIC0gaGVhZGVyOworfQorCitXZWJTb2NrZXRIYW5kc2hha2U6Ok1vZGUgV2Vi
U29ja2V0SGFuZHNoYWtlOjptb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tb2RlOworfQor
Citjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyV2ViU29ja2V0T3JpZ2lu
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93c09yaWdpbjsKK30KKwordm9pZCBXZWJTb2NrZXRI
YW5kc2hha2U6OnNldFNlcnZlcldlYlNvY2tldE9yaWdpbihjb25zdCBTdHJpbmcmIHdlYlNvY2tl
dE9yaWdpbikKK3sKKyAgICBtX3dzT3JpZ2luID0gd2ViU29ja2V0T3JpZ2luOworfQorCitjb25z
dCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyV2ViU29ja2V0TG9jYXRpb24oKSBj
b25zdAoreworICAgIHJldHVybiBtX3dzTG9jYXRpb247Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFu
ZHNoYWtlOjpzZXRTZXJ2ZXJXZWJTb2NrZXRMb2NhdGlvbihjb25zdCBTdHJpbmcmIHdlYlNvY2tl
dExvY2F0aW9uKQoreworICAgIG1fd3NMb2NhdGlvbiA9IHdlYlNvY2tldExvY2F0aW9uOworfQor
Citjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyV2ViU29ja2V0UHJvdG9j
b2woKSBjb25zdAoreworICAgIHJldHVybiBtX3dzUHJvdG9jb2w7Cit9CisKK3ZvaWQgV2ViU29j
a2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHdl
YlNvY2tldFByb3RvY29sKQoreworICAgIG1fd3NQcm90b2NvbCA9IHdlYlNvY2tldFByb3RvY29s
OworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyU2V0Q29va2ll
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZXRDb29raWU7Cit9CisKK3ZvaWQgV2ViU29ja2V0
SGFuZHNoYWtlOjpzZXRTZXJ2ZXJTZXRDb29raWUoY29uc3QgU3RyaW5nJiBzZXRDb29raWUpCit7
CisgICAgbV9zZXRDb29raWUgPSBzZXRDb29raWU7Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29j
a2V0SGFuZHNoYWtlOjpzZXJ2ZXJTZXRDb29raWUyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9z
ZXRDb29raWUyOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyU2V0Q29v
a2llMihjb25zdCBTdHJpbmcmIHNldENvb2tpZTIpCit7CisgICAgbV9zZXRDb29raWUyID0gc2V0
Q29va2llMjsKK30KKworS1VSTCBXZWJTb2NrZXRIYW5kc2hha2U6Omh0dHBVUkxGb3JBdXRoZW50
aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAoreworICAgIEtVUkwgdXJsID0gbV91cmwuY29weSgp
OworICAgIHVybC5zZXRQcm90b2NvbChtX3NlY3VyZSA/ICJodHRwcyIgOiAiaHR0cCIpOworICAg
IHJldHVybiB1cmw7Cit9CisKK2NvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhU
VFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQsIEhUVFBIZWFkZXJN
YXAqIGhlYWRlcnMpCit7CisgICAgVmVjdG9yPGNoYXI+IG5hbWU7CisgICAgVmVjdG9yPGNoYXI+
IHZhbHVlOworICAgIGZvciAoY29uc3QgY2hhciogcCA9IHN0YXJ0OyBwIDwgZW5kOyBwKyspIHsK
KyAgICAgICAgbmFtZS5jbGVhcigpOworICAgICAgICB2YWx1ZS5jbGVhcigpOworCisgICAgICAg
IGZvciAoOyBwIDwgZW5kOyBwKyspIHsKKyAgICAgICAgICAgIHN3aXRjaCAoKnApIHsKKyAgICAg
ICAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHAgKyAxIDwgZW5kICYmICoocCArIDEpID09ICdcbicp
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcCArIDI7CisgICAgICAgICAgICAgICAg
ICAgIExPRyhOZXR3b3JrLCAiQ1IgZG9lc24ndCBmb2xsb3cgTEYgcD0lcCBlbmQ9JXAiLCBwLCBl
bmQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgTE9HKE5ldHdvcmssICJVbmV4cGVjdGVkIENSIGluIG5hbWUiKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGNhc2UgJ1xuJzoKKyAgICAgICAg
ICAgICAgICBMT0coTmV0d29yaywgIlVuZXhwZWN0ZWQgTEYgaW4gbmFtZSIpOworICAgICAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgY2FzZSAnOic6CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGlmICgqcCA+PSAw
eDQxICYmICpwIDw9IDB4NWEpCisgICAgICAgICAgICAgICAgICAgIG5hbWUuYXBwZW5kKCpwICsg
MHgyMCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBuYW1lLmFw
cGVuZCgqcCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoKnAgPT0gJzonKSB7CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZm9yICg7
IHAgPCBlbmQgJiYgKnAgPT0gMHgyMDsgcCsrKSB7IH0KKworICAgICAgICBmb3IgKDsgcCA8IGVu
ZDsgcCsrKSB7CisgICAgICAgICAgICBzd2l0Y2ggKCpwKSB7CisgICAgICAgICAgICBjYXNlICdc
cic6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdcbic6CisgICAg
ICAgICAgICAgICAgTE9HKE5ldHdvcmssICJVbmV4cGVjdGVkIExGIGluIHZhbHVlIik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIHZhbHVlLmFwcGVuZCgqcCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKnAg
PT0gJ1xyJykgeworICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAocCA+PSBlbmQgfHwgKnAgIT0g
J1xuJykgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDUiBkb2Vzbid0IGZvbGxvdyBMRiBh
ZnRlciB2YWx1ZSBwPSVwIGVuZD0lcCIsIHAsIGVuZCk7CisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgfQorICAgICAgICBBdG9taWNTdHJpbmcgbmFtZVN0cihTdHJpbmc6OmZyb21VVEY4
KG5hbWUuZGF0YSgpLCBuYW1lLnNpemUoKSkpOworICAgICAgICBTdHJpbmcgdmFsdWVTdHIgPSBT
dHJpbmc6OmZyb21VVEY4KHZhbHVlLmRhdGEoKSwgdmFsdWUuc2l6ZSgpKTsKKyAgICAgICAgTE9H
KE5ldHdvcmssICJuYW1lPSVzIHZhbHVlPSVzIiwgbmFtZVN0ci5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCB2YWx1ZVN0ci51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaGVhZGVycy0+YWRkKG5hbWVT
dHIsIHZhbHVlU3RyKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK2Jvb2wgV2ViU29ja2V0SGFuZHNoYWtlOjpwcm9jZXNzSGVhZGVycyhjb25z
dCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQoreworICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJzLmJlZ2luKCk7IGl0ICE9IGhlYWRlcnMuZW5kKCk7ICsr
aXQpIHsKKyAgICAgICAgc3dpdGNoIChtX21vZGUpIHsKKyAgICAgICAgY2FzZSBOb3JtYWw6Cisg
ICAgICAgICAgICBpZiAoaXQtPmZpcnN0ID09ICJ3ZWJzb2NrZXQtb3JpZ2luIikKKyAgICAgICAg
ICAgICAgICBtX3dzT3JpZ2luID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGl0
LT5maXJzdCA9PSAid2Vic29ja2V0LWxvY2F0aW9uIikKKyAgICAgICAgICAgICAgICBtX3dzTG9j
YXRpb24gPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJ3
ZWJzb2NrZXQtcHJvdG9jb2wiKQorICAgICAgICAgICAgICAgIG1fd3NQcm90b2NvbCA9IGl0LT5z
ZWNvbmQ7CisgICAgICAgICAgICBlbHNlIGlmIChpdC0+Zmlyc3QgPT0gInNldC1jb29raWUiKQor
ICAgICAgICAgICAgICAgIG1fc2V0Q29va2llID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGl0LT5maXJzdCA9PSAic2V0LWNvb2tpZTIiKQorICAgICAgICAgICAgICAgIG1fc2V0
Q29va2llMiA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgY2Fz
ZSBJbmNvbXBsZXRlOgorICAgICAgICBjYXNlIEZhaWxlZDoKKyAgICAgICAgY2FzZSBDb25uZWN0
ZWQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgV2ViU29ja2V0SGFuZHNoYWtlOjpjaGVja1Jlc3BvbnNlSGVhZGVycygpCit7CisgICAgQVNT
RVJUKG1fbW9kZSA9PSBOb3JtYWwpOworICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAgICBpZiAobV93
c09yaWdpbi5pc051bGwoKSB8fCBtX3dzTG9jYXRpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChjbGllbnRPcmlnaW4oKSAhPSBtX3dzT3JpZ2luKSB7CisgICAgICAgIExP
RyhOZXR3b3JrLCAiTWlzbWF0Y2ggb3JpZ2luOiAlcyAhPSAlcyIsIGNsaWVudE9yaWdpbigpLnV0
ZjgoKS5kYXRhKCksIG1fd3NPcmlnaW4udXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgaWYgKGNsaWVudExvY2F0aW9uKCkgIT0gbV93c0xvY2F0aW9uKSB7CisgICAg
ICAgIExPRyhOZXR3b3JrLCAiTWlzbWF0Y2ggbG9jYXRpb246ICVzICE9ICVzIiwgY2xpZW50TG9j
YXRpb24oKS51dGY4KCkuZGF0YSgpLCBtX3dzTG9jYXRpb24udXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFtX2NsaWVudFByb3RvY29sLmlzRW1wdHkoKSAm
JiBtX2NsaWVudFByb3RvY29sICE9IG1fd3NQcm90b2NvbCkgeworICAgICAgICBMT0coTmV0d29y
aywgIk1pc21hdGNoIHByb3RvY29sOiAlcyAhPSAlcyIsIG1fY2xpZW50UHJvdG9jb2wudXRmOCgp
LmRhdGEoKSwgbV93c1Byb3RvY29sLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIG1fbW9kZSA9IENvbm5lY3RlZDsKKyAgICByZXR1cm47Cit9CisKK30gIC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIGIvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmQ1ZGJlNjgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmgKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTb2NrZXRI
YW5kc2hha2VfaAorI2RlZmluZSBXZWJTb2NrZXRIYW5kc2hha2VfaAorCisjaWYgRU5BQkxFKFdF
Ql9TT0NLRVRTKQorCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgY2xhc3MgSFRUUEhlYWRl
ck1hcDsKKworICAgIGNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZSA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7CisgICAgcHVibGljOgorICAgICAgICBlbnVtIE1vZGUgeworICAgICAgICAgICAgSW5jb21w
bGV0ZSwgTm9ybWFsLCBGYWlsZWQsIENvbm5lY3RlZAorICAgICAgICB9OworICAgICAgICBXZWJT
b2NrZXRIYW5kc2hha2UoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICAgICAgfldlYlNvY2tldEhhbmRzaGFrZSgpOworCisg
ICAgICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFVSTChjb25z
dCBLVVJMJik7CisgICAgICAgIGNvbnN0IFN0cmluZyBob3N0KCkgY29uc3Q7CisKKyAgICAgICAg
Y29uc3QgU3RyaW5nJiBjbGllbnRQcm90b2NvbCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldENs
aWVudFByb3RvY29sKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOworCisgICAgICAgIGJvb2wgc2Vj
dXJlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2VjdXJlKGJvb2wgc2VjdXJlKTsKKworICAg
ICAgICBTdHJpbmcgY2xpZW50T3JpZ2luKCkgY29uc3Q7CisgICAgICAgIFN0cmluZyBjbGllbnRM
b2NhdGlvbigpIGNvbnN0OworCisgICAgICAgIENTdHJpbmcgY2xpZW50SGFuZHNoYWtlTWVzc2Fn
ZSgpIGNvbnN0OworCisgICAgICAgIHZvaWQgcmVzZXQoKTsKKworICAgICAgICBpbnQgcmVhZFNl
cnZlckhhbmRzaGFrZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBsZW4pOworICAgICAgICBN
b2RlIG1vZGUoKSBjb25zdDsKKworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZlcldlYlNvY2tl
dE9yaWdpbigpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNlcnZlcldlYlNvY2tldE9yaWdpbihj
b25zdCBTdHJpbmcmIHdlYlNvY2tldE9yaWdpbik7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiBz
ZXJ2ZXJXZWJTb2NrZXRMb2NhdGlvbigpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNlcnZlcldl
YlNvY2tldExvY2F0aW9uKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0TG9jYXRpb24pOworCisgICAg
ICAgIGNvbnN0IFN0cmluZyYgc2VydmVyV2ViU29ja2V0UHJvdG9jb2woKSBjb25zdDsKKyAgICAg
ICAgdm9pZCBzZXRTZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHdlYlNvY2tl
dFByb3RvY29sKTsKKworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZlclNldENvb2tpZSgpIGNv
bnN0OworICAgICAgICB2b2lkIHNldFNlcnZlclNldENvb2tpZShjb25zdCBTdHJpbmcmIHNldENv
b2tpZSk7CisgICAgICAgIGNvbnN0IFN0cmluZyYgc2VydmVyU2V0Q29va2llMigpIGNvbnN0Owor
ICAgICAgICB2b2lkIHNldFNlcnZlclNldENvb2tpZTIoY29uc3QgU3RyaW5nJiBzZXRDb29raWUy
KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIEtVUkwgaHR0cFVSTEZvckF1dGhlbnRpY2F0aW9u
QW5kQ29va2llcygpIGNvbnN0OworCisgICAgICAgIC8vIFJlYWRzIGFsbCBoZWFkZXJzIGV4Y2Vw
dCBmb3IgdGhlIHR3byBwcmVkZWZpbmVkIG9uZXMuCisgICAgICAgIGNvbnN0IGNoYXIqIHJlYWRI
VFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kLCBIVFRQSGVhZGVy
TWFwKiBoZWFkZXJzKTsKKyAgICAgICAgYm9vbCBwcm9jZXNzSGVhZGVycyhjb25zdCBIVFRQSGVh
ZGVyTWFwJiBoZWFkZXJzKTsKKyAgICAgICAgdm9pZCBjaGVja1Jlc3BvbnNlSGVhZGVycygpOwor
CisgICAgICAgIEtVUkwgbV91cmw7CisgICAgICAgIFN0cmluZyBtX2NsaWVudFByb3RvY29sOwor
ICAgICAgICBib29sIG1fc2VjdXJlOworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBt
X2NvbnRleHQ7CisKKyAgICAgICAgTW9kZSBtX21vZGU7CisKKyAgICAgICAgU3RyaW5nIG1fd3NP
cmlnaW47CisgICAgICAgIFN0cmluZyBtX3dzTG9jYXRpb247CisgICAgICAgIFN0cmluZyBtX3dz
UHJvdG9jb2w7CisgICAgICAgIFN0cmluZyBtX3NldENvb2tpZTsKKyAgICAgICAgU3RyaW5nIG1f
c2V0Q29va2llMjsKKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
IC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlmICAvLyBXZWJTb2NrZXRIYW5kc2hha2Vf
aA==
</data>
<flag name="review"
          id="20077"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="20179"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39134</attachid>
            <date>2009-09-07 01:18:35 -0700</date>
            <delta_ts>2009-09-10 03:24:26 -0700</delta_ts>
            <desc>WebSocket API implementation</desc>
            <filename>bug-28038-20090907171833.patch</filename>
            <type>text/plain</type>
            <size>68981</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAyMjRhY2E3Li44NTI4ZGUzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMDktMDktMDcgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IFdURjo6
dHJ5RmFzdE1hbGxvYyB1c2VkIGluIFdlYlNvY2tldENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODAzOAorCisgICAgICAgICogSmF2YVNj
cmlwdENvcmUuZXhwOgorCiAyMDA5LTA5LTA0ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChCdWlsZCBmaXgpLgpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZXhwCmluZGV4IGEwMjk3MjQuLmNkODBkNzQgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5leHAKQEAgLTI5NCw2ICsyOTQsNyBAQCBfX1pOM1dURjEyZGV0YWNoVGhyZWFkRWoK
IF9fWk4zV1RGMTJpc01haW5UaHJlYWRFdgogX19aTjNXVEYxMnJhbmRvbU51bWJlckV2CiBfX1pO
M1dURjEzY3VycmVudFRocmVhZEV2CitfX1pOM1dURjEzdHJ5RmFzdE1hbGxvY0VtCiBfX1pOM1dU
RjEzdHJ5RmFzdENhbGxvY0VtbQogX19aTjNXVEYxM3RyeUZhc3RNYWxsb2NFbQogX19aTjNXVEYx
NVRocmVhZENvbmRpdGlvbjR3YWl0RVJOU181TXV0ZXhFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjViNTBmNS4uZGUyYzQ2
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDA5LTA5LTA3ICBGdW1pdG9zaGkgVWthaSAgPHVr
YWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBXZWJTb2NrZXQgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgwMzgKKyAgICAgICAgCisgICAgICAgIFdlYlNvY2tldCBj
b25zdHJ1Y3RvciBpcyBhdmFpbGFibGUgaW4gd2luZG93IG9iamVjdC4KKworICAgICAgICAqIGZh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLTItZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dDoKKwogMjAwOS0wOS0wNiAg
WWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cv
d2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCAyM2IwOGI3Li4zN2YzYWQw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRp
ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTE1MDksNiArMTUwOSwxMyBAQCB3aW5kb3cuV2Vi
S2l0UG9pbnQgW29iamVjdCBXZWJLaXRQb2ludENvbnN0cnVjdG9yXQogd2luZG93LldlYktpdFBv
aW50LnByb3RvdHlwZSBbb2JqZWN0IFdlYktpdFBvaW50UHJvdG90eXBlXQogd2luZG93LldlYktp
dFRyYW5zaXRpb25FdmVudCBbb2JqZWN0IFdlYktpdFRyYW5zaXRpb25FdmVudENvbnN0cnVjdG9y
XQogd2luZG93LldlYktpdFRyYW5zaXRpb25FdmVudC5wcm90b3R5cGUgW3ByaW50ZWQgYWJvdmUg
YXMgd2luZG93LkV2ZW50LnByb3RvdHlwZV0KK3dpbmRvdy5XZWJTb2NrZXQgW29iamVjdCBXZWJT
b2NrZXRDb25zdHJ1Y3Rvcl0KK3dpbmRvdy5XZWJTb2NrZXQucHJvdG90eXBlIFtvYmplY3QgV2Vi
U29ja2V0UHJvdG90eXBlXQord2luZG93LldlYlNvY2tldC5wcm90b3R5cGUuQ0xPU0VEIFtudW1i
ZXJdCit3aW5kb3cuV2ViU29ja2V0LnByb3RvdHlwZS5DT05ORUNUSU5HIFtudW1iZXJdCit3aW5k
b3cuV2ViU29ja2V0LnByb3RvdHlwZS5PUEVOIFtudW1iZXJdCit3aW5kb3cuV2ViU29ja2V0LnBy
b3RvdHlwZS5jbG9zZSBbZnVuY3Rpb25dCit3aW5kb3cuV2ViU29ja2V0LnByb3RvdHlwZS5zZW5k
IFtmdW5jdGlvbl0KIHdpbmRvdy5XaGVlbEV2ZW50IFtvYmplY3QgV2hlZWxFdmVudENvbnN0cnVj
dG9yXQogd2luZG93LldoZWVsRXZlbnQucHJvdG90eXBlIFtwcmludGVkIGFib3ZlIGFzIHdpbmRv
dy5FdmVudC5wcm90b3R5cGVdCiB3aW5kb3cuV29ya2VyIFtvYmplY3QgV29ya2VyQ29uc3RydWN0
b3JdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFu
Y2UtMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJp
dGFuY2UtMi1leHBlY3RlZC50eHQKaW5kZXggZTFmZWNhZC4uMWU5OWViZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLTItZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS0yLWV4cGVj
dGVkLnR4dApAQCAtMzYyLDYgKzM2Miw3IEBAIE5ldmVyIGZvdW5kIFRleHRNZXRyaWNzCiBOZXZl
ciBmb3VuZCBXZWJLaXRDU1NNYXRyaXgKIE5ldmVyIGZvdW5kIFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlCiBOZXZlciBmb3VuZCBXZWJLaXRQb2ludAorTmV2ZXIgZm91bmQgV2ViU29ja2V0CiBOZXZl
ciBmb3VuZCBXb3JrZXIKIE5ldmVyIGZvdW5kIFhNTEh0dHBSZXF1ZXN0CiBOZXZlciBmb3VuZCBY
TUxIdHRwUmVxdWVzdFVwbG9hZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJv
dG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3By
b3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQKaW5kZXggMjY1MGM1OS4uMzk1YzJjNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFu
Y2UtZXhwZWN0ZWQudHh0CkBAIC0zMzUsNiArMzM1LDggQEAgUEFTUyBpbm5lci5XZWJLaXRQb2lu
dC5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIuV2ViS2l0UG9pbnQuY29uc3RydWN0b3IuaXNJ
bm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLldlYktpdFRyYW5zaXRpb25FdmVudC5pc0lubmVyIGlz
IHRydWUKIFBBU1MgaW5uZXIuV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNvbnN0cnVjdG9yLmlzSW5u
ZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5XZWJTb2NrZXQuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlu
bmVyLldlYlNvY2tldC5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIuV2hl
ZWxFdmVudC5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIuV2hlZWxFdmVudC5jb25zdHJ1Y3Rv
ci5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIuV29ya2VyLmlzSW5uZXIgaXMgdHJ1ZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50
eHQKaW5kZXggYjJjMWM2ZS4uZTdiNWViNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9q
cy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CkBAIC0xNjIsNiArMTYyLDcgQEAg
UEFTUyBXZWJLaXRDU1NNYXRyaXgudG9TdHJpbmcoKSBpcyAnW29iamVjdCBXZWJLaXRDU1NNYXRy
aXhDb25zdHJ1Y3Rvcl0nCiBQQVNTIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLnRvU3RyaW5nKCkg
aXMgJ1tvYmplY3QgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWVDb25zdHJ1Y3Rvcl0nCiBQQVNTIFdl
YktpdFBvaW50LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvcl0n
CiBQQVNTIFdlYktpdFRyYW5zaXRpb25FdmVudC50b1N0cmluZygpIGlzICdbb2JqZWN0IFdlYktp
dFRyYW5zaXRpb25FdmVudENvbnN0cnVjdG9yXScKK1BBU1MgV2ViU29ja2V0LnRvU3RyaW5nKCkg
aXMgJ1tvYmplY3QgV2ViU29ja2V0Q29uc3RydWN0b3JdJwogUEFTUyBXaGVlbEV2ZW50LnRvU3Ry
aW5nKCkgaXMgJ1tvYmplY3QgV2hlZWxFdmVudENvbnN0cnVjdG9yXScKIFBBU1MgV29ya2VyLnRv
U3RyaW5nKCkgaXMgJ1tvYmplY3QgV29ya2VyQ29uc3RydWN0b3JdJwogUEFTUyBYTUxEb2N1bWVu
dC50b1N0cmluZygpIGlzICdbb2JqZWN0IERvY3VtZW50Q29uc3RydWN0b3JdJwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMmRmMmRhLi5k
OTE2ZTE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDA5LTA5LTA3ICBGdW1pdG9zaGkgVWthaSAgPHVrYWlA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlYlNvY2tldCBBUEkgaW1wbGVtZW50YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODAzOAorICAgICAgICAKKyAgICAgICAgQWRk
IGJ1aWxkIHN5c3RlbXMgb25seSBmb3IgR05VbWFrZWZpbGUuYW0gYW5kIFdlYkNvcmUueGNvZGVw
cm9qIG5vdy4KKyAgICAgICAgT3RoZXIgYnVpbGQgc3lzdGVtcyB3aWxsIGJlIHVwZGF0ZWQgb25j
ZSB0aGUgY29kZSBpcyBmdW5jdGlvbmFsLgorICAgICAgICBUZXN0cyB3aWxsIGJlIGxhbmRlZCBv
bmNlIHRoZSBjb2RlIGlzIGNvbXBsZXRlZCBhbmQgZnVuY3Rpb25hbC4KKworICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6Ondl
YlNvY2tldCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvRXZlbnRUYXJnZXQpOgor
ICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRh
cmdldDo6dG9XZWJTb2NrZXQpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5oOgorICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzazo6cGVyZm9ybVRh
c2spOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzazo6UHJvY2Vz
c1dlYlNvY2tldEV2ZW50VGFzayk6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkUHJvdG9jb2xT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojpjb25uZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6
OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6YnVmZmVyZWRBbW91bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkUmVjZWl2
ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRDbG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNoT3BlbkV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldDo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0OjpkaXNwYXRjaENsb3NlRXZlbnQpOgorICAgICAgICAqIHdlYnNvY2tldHMv
V2ViU29ja2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Oik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6
OnNldE9ub3Blbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Om9ub3Blbik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNldE9ubWVzc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXQ6Om9ubWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNl
dE9uY2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpvbmNsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldDo6dG9XZWJTb2NrZXQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0OjpldmVudExpc3RlbmVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6
OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGVyZWZFdmVu
dFRhcmdldCk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDogQWRk
ZWQuCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6IEFkZGVkLgorICAg
ICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6IEFkZGVkLgorICAgICAgICAq
IHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmg6IEFkZGVkLgorCiAyMDA5LTA5LTA2ICBZ
YWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwIGIv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggOWJjNjNiYS4uNDA4ZGFiYSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5jcHAKQEAgLTM0MSw2ICszNDEsNyBAQAogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTTWF0cml4
LmNwcCIKICNpbmNsdWRlICJKU1dlYktpdFBvaW50LmNwcCIKICNpbmNsdWRlICJKU1dlYktpdFRy
YW5zaXRpb25FdmVudC5jcHAiCisjaW5jbHVkZSAiSlNXZWJTb2NrZXQuY3BwIgogI2luY2x1ZGUg
IkpTV2hlZWxFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNXb3JrZXIuY3BwIgogI2luY2x1ZGUgIkpT
V29ya2VyQ29udGV4dC5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA2YWJkODA3Li4xY2U5OTdiIDEwMDY0NAotLS0g
YS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAg
LTMyMzMsNyArMzIzMywxMiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggXAogCVdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBcCiAJV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAgXAotCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorCVdlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuY3BwIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIFwK
KwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIFwKKwlXZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBcCisJV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5oCiAKIHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtRXJyb3IuaCBcCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVhYzQ0NDguLjk3NmJlODkgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04ODgsNiArODg4
LDkgQEAKIAkJNTEwRDRBMzYxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJh
c2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
RDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwICovOyB9
OwogCQk1MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMzEx
MDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCAqLzsgfTsKIAkJNTEw
RDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMzIxMDMxNjVF
RTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovOyB9OworCQk1MTBENEE0
RTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEE0NzEwMzE3N0EyMDA0OUVBNTQg
LyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi87IH07CisJCTUxMEQ0QTRGMTAzMTc3QTIwMDQ5RUE1
NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5l
bC5oICovOyB9OworCQk1MTBENEE1MDEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5l
bENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCAqLzsg
fTsKIAkJNTExNkQ5NzcwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExNkQ5NzUwQ0YxNzdC
RDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMUYyMzE3MERDMTYwREEwMDRGMDAzMiAvKiBMb2Nh
bFN0b3JhZ2VUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMUYyMzEzMERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmNwcCAq
LzsgfTsKIAkJNTExRjIzMTgwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYyMzE0MERD
MTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmggKi87IH07CkBAIC05NzQsNiArOTc3
LDEwIEBACiAJCTUxQUJBRTFCMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFMUEx
MDNDMThGRjAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUVycm9yLmggKi87IH07CiAJCTUxQUJBRTFF
MTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFDMTAzQzE5MTMwMDhDNTI2MCAv
KiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLzsgfTsKIAkJNTFBQkFFMUYxMDNDMTkxMzAwOEM1MjYw
IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRT
dHJlYW1IYW5kbGVDRk5ldC5jcHAgKi87IH07CisJCTUxQUJBRTJFMTAzRDRGNzUwMDhDNTI2MCAv
KiBXZWJTb2NrZXRIYW5kc2hha2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQUJBRTJDMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5k
c2hha2VyLmNwcCAqLzsgfTsKKwkJNTFBQkFFMkYxMDNENEY3NTAwOEM1MjYwIC8qIFdlYlNvY2tl
dEhhbmRzaGFrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQUJBRTJEMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2VyLmggKi87
IH07CisJCTUxQUJBRTQ0MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFNDIx
MDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgKi87IH07CisJCTUxQUJB
RTQ1MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTQzMTA0M0FCNEEwMDhDNTI2
MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCAqLzsgfTsKIAkJNTFCMjQxN0IwRDkzMUYzRjAwRTgz
RjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUIyNDE3QTBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2Vi
QXJjaGl2ZU1hYy5tbSAqLzsgfTsKIAkJNTFCRTM3RTAwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3Jh
Z2VBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUJFMzdERTBEQUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCAqLzsgfTsKIAkJNTFDMEFB
MzkwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2Fj
aGVkRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNjAyNSw2ICs2MDMyLDkgQEAKIAkJNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNv
Y2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUJh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMzIxMDMxNjVFRTAwNDlF
QTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0Q2hhbm5l
bC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0QTQ4MTAzMTc3QTIwMDQ5
RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlNvY2tldENoYW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEw
RDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTE2RDk3NTBDRjE3N0JEMDBDMkI4NEQgLyogRGF0
YWJhc2VEZXRhaWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNl
RGV0YWlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFGMjMxMzBEQzE2MERB
MDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBMb2NhbFN0b3JhZ2VUYXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTExRjIzMTQwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxTdG9yYWdlVGFzay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjExOCw2ICs2MTI4LDEwIEBACiAJCTUxQUJBRTFB
MTAzQzE4RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBTb2NrZXRTdHJlYW1FcnJvci5oOyBwYXRoID0gY2YvU29ja2V0U3Ry
ZWFtRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBQkFFMUMxMDNDMTkx
MzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBTb2NrZXRTdHJlYW1IYW5kbGUuaDsgcGF0aCA9IGNmL1NvY2tldFN0cmVhbUhh
bmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUFCQUUxRDEwM0MxOTEzMDA4
QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOyBwYXRoID0gY2Yv
U29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MUFCQUUyQzEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFMkQxMDNENEY3NTAwOEM1MjYw
IC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViU29ja2V0SGFuZHNoYWtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MUFCQUU0MjEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUJBRTQzMTA0M0FCNEEwMDhDNTI2MCAvKiBX
ZWJTb2NrZXRIYW5kc2hha2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
U29ja2V0SGFuZHNoYWtlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjI0MTdB
MEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCRTM3REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3Jh
Z2VBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VBcmVhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQzBBQTM4MEYyQUExMEEwMDE2NDhDMiAv
KiBDYWNoZWRGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRG
cmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1NjksNiArMTA1ODMsMTEg
QEAKIAkJNTE4QTM0QkQxMDI2QzgzMTAwMUI2ODk2IC8qIHdlYnNvY2tldHMgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxQUJBRTQyMTA0M0FCNEEwMDhD
NTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwICovLAorCQkJCTUxQUJBRTQzMTA0M0FCNEEw
MDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCAqLywKKwkJCQk1MTBENEE0NzEwMzE3N0Ey
MDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8sCisJCQkJNTEwRDRBNDgxMDMxNzdB
MjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCAqLywKKwkJCQk1MTBENEE0OTEwMzE3N0Ey
MDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oICovLAogCQkJCTUxOEEzNEJFMTAy
NkM4MzEwMDFCNjg5NiAvKiBXZWJTb2NrZXQuY3BwICovLAogCQkJCTUxOEEzNEJGMTAyNkM4MzEw
MDFCNjg5NiAvKiBXZWJTb2NrZXQuaCAqLywKIAkJCQk1MThBMzRDMDEwMjZDODMxMDAxQjY4OTYg
LyogV2ViU29ja2V0LmlkbCAqLywKQEAgLTE3NTU4LDYgKzE3NTc3LDkgQEAKIAkJCQk1MTBENEEz
ODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUFCQUUxQjEwM0MxOEZGMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtRXJyb3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxQUJBRTFFMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRT
dHJlYW1IYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMEQ0QTRGMTAzMTc3QTIwMDQ5RUE1
NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTBENEE1MDEwMzE3
N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTFBQkFFNDUxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkBAIC0xOTY1Myw2ICsxOTY3NSw4IEBACiAJCQkJNTEwRDRBMzMxMDMxNjVFRTAw
NDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MTBENEEzNjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFt
SGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwRDRBNEUxMDMxNzdBMjAwNDlF
QTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFBQkFFNDQx
MDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMDA1YTkyZi4u
NGNhM2Y2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAg
LTU0LDYgKzU0LDkgQEAKIAogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJKU1dlYktpdFBvaW50Q29uc3RydWN0b3IuaCIKKyNpZiBFTkFCTEUoV0VC
X1NPQ0tFVFMpCisjaW5jbHVkZSAiSlNXZWJTb2NrZXRDb25zdHJ1Y3Rvci5oIgorI2VuZGlmCiAj
aW5jbHVkZSAiSlNXb3JrZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTWE1MSHR0cFJlcXVl
c3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yLmgi
CkBAIC02NDYsNiArNjQ5LDEzIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnNoYXJlZFdvcmtlcihF
eGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKK0pTVmFsdWUgSlNET01XaW5kb3c6OndlYlNvY2tldChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTV2ViU29ja2V0Q29uc3RydWN0b3I+
KGV4ZWMsIHRoaXMpOworfQorI2VuZGlmCisKIC8vIEN1c3RvbSBmdW5jdGlvbnMKIAogLy8gSGVs
cGVyIGZvciB3aW5kb3cub3BlbigpIGFuZCB3aW5kb3cuc2hvd01vZGFsRGlhbG9nKCkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCmluZGV4IGVkODBkODAuLjA0MjFkMTAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcApAQCAtNzgsNiArNzgsMTEgQEAKICNpbmNs
dWRlICJOb3RpZmljYXRpb24uaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQor
I2luY2x1ZGUgIkpTV2ViU29ja2V0LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0LmgiCisjZW5kaWYK
KwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTM5LDYg
KzE0NCwxMSBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFdmVudFRhcmdldCogdGFyZwogICAgICAgICByZXR1cm4gdG9KUyhl
eGVjLCBub3RpZmljYXRpb24pOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisg
ICAgaWYgKFdlYlNvY2tldCogd2ViU29ja2V0ID0gdGFyZ2V0LT50b1dlYlNvY2tldCgpKQorICAg
ICAgICByZXR1cm4gdG9KUyhleGVjLCB3ZWJTb2NrZXQpOworI2VuZGlmCisKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4ganNOdWxsKCk7CiB9CkBAIC0xODMsNiArMTkzLDEw
IEBAIEV2ZW50VGFyZ2V0KiB0b0V2ZW50VGFyZ2V0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICBD
T05WRVJUX1RPX0VWRU5UX1RBUkdFVChOb3RpZmljYXRpb24pCiAjZW5kaWYKIAorI2lmIEVOQUJM
RShXRUJfU09DS0VUUykKKyAgICBDT05WRVJUX1RPX0VWRU5UX1RBUkdFVChXZWJTb2NrZXQpCisj
ZW5kaWYKKwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5jcHAgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggMmYxM2RhOC4u
NjUyNjQ0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtODMsNiArODMsMTMgQEAgU1ZHRWxlbWVudElu
c3RhbmNlKiBFdmVudFRhcmdldDo6dG9TVkdFbGVtZW50SW5zdGFuY2UoKQogfQogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCitXZWJTb2NrZXQqIEV2ZW50VGFyZ2V0Ojp0b1dlYlNv
Y2tldCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogTWVzc2FnZVBvcnQqIEV2ZW50
VGFyZ2V0Ojp0b01lc3NhZ2VQb3J0KCkKIHsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4
IDZkM2NiN2MuLjZiY2MzZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgK
KysrIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtNTEsNiArNTEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFz
cyBTaGFyZWRXb3JrZXI7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyQ29udGV4dDsKKyAgICBjbGFz
cyBXZWJTb2NrZXQ7CiAgICAgY2xhc3MgV29ya2VyOwogICAgIGNsYXNzIFhNTEh0dHBSZXF1ZXN0
OwogICAgIGNsYXNzIFhNTEh0dHBSZXF1ZXN0VXBsb2FkOwpAQCAtNzUsMTEgKzc2LDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBXb3JrZXIqIHRvV29ya2VyKCk7CiAg
ICAgICAgIHZpcnR1YWwgRGVkaWNhdGVkV29ya2VyQ29udGV4dCogdG9EZWRpY2F0ZWRXb3JrZXJD
b250ZXh0KCk7CiAjZW5kaWYKLQogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKICAgICAgICAg
dmlydHVhbCBTaGFyZWRXb3JrZXIqIHRvU2hhcmVkV29ya2VyKCk7CiAgICAgICAgIHZpcnR1YWwg
U2hhcmVkV29ya2VyQ29udGV4dCogdG9TaGFyZWRXb3JrZXJDb250ZXh0KCk7CiAjZW5kaWYKKyNp
ZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgICAgIHZpcnR1YWwgV2ViU29ja2V0KiB0b1dlYlNv
Y2tldCgpOworI2VuZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICAgICAgdmly
dHVhbCBOb3RpZmljYXRpb24qIHRvTm90aWZpY2F0aW9uKCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDZj
YTI4Y2UuLjVjOWRkYmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisr
KyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC00ODcsNiArNDg3LDEwIEBAIG1vZHVs
ZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0pTQ0N1c3RvbUdldHRlcl0gU2hhcmVkV29y
a2VyQ29uc3RydWN0b3IgU2hhcmVkV29ya2VyOyAvLyBVc2FibGUgd2l0aCB0aGUgbmV3IG9wZXJh
dG9yCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoRU5BQkxFX1dFQl9TT0NLRVRTKSAmJiBFTkFCTEVf
V0VCX1NPQ0tFVFMKKyAgICAgICAgYXR0cmlidXRlIFtKU0NDdXN0b21HZXR0ZXJdIFdlYlNvY2tl
dENvbnN0cnVjdG9yIFdlYlNvY2tldDsgLy8gVXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRvcgor
I2VuZGlmCisKICAgICAgICAgYXR0cmlidXRlIFBsdWdpbkNvbnN0cnVjdG9yIFBsdWdpbjsKICAg
ICAgICAgYXR0cmlidXRlIFBsdWdpbkFycmF5Q29uc3RydWN0b3IgUGx1Z2luQXJyYXk7CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggOTk5YzFmZi4uOGY5MGIxYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAKQEAgLTM0LDEzICszNCw1OCBAQAogCiAjaW5jbHVkZSAiV2ViU29ja2V0
LmgiCiAKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5j
bHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV2
ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIldlYlNv
Y2tldENoYW5uZWwuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgUHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzayA6IHB1YmxpYyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQg
KFdlYlNvY2tldDo6Kk1ldGhvZCkoRXZlbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9j
ZXNzV2ViU29ja2V0RXZlbnRUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IHdlYlNv
Y2tldCwgTWV0aG9kIG1ldGhvZCwgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFByb2Nlc3NXZWJTb2NrZXRFdmVudFRhc2sod2ViU29j
a2V0LCBtZXRob2QsIGV2ZW50KSk7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFz
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAgICB7CisgICAgICAgIChtX3dlYlNvY2tldC5n
ZXQoKS0+Km1fbWV0aG9kKShtX2V2ZW50LmdldCgpKTsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAg
ICBQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrKFBhc3NSZWZQdHI8V2ViU29ja2V0PiB3ZWJTb2Nr
ZXQsIE1ldGhvZCBtZXRob2QsIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQorICAgICAgICA6IG1f
d2ViU29ja2V0KHdlYlNvY2tldCkKKyAgICAgICAgLCBtX21ldGhvZChtZXRob2QpCisgICAgICAg
ICwgbV9ldmVudChldmVudCkgeyB9CisKKyAgICBSZWZQdHI8V2ViU29ja2V0PiBtX3dlYlNvY2tl
dDsKKyAgICBNZXRob2QgbV9tZXRob2Q7CisgICAgUmVmUHRyPEV2ZW50PiBtX2V2ZW50OworfTsK
Kworc3RhdGljIGJvb2wgaXNWYWxpZFByb3RvY29sU3RyaW5nKGNvbnN0IFdlYkNvcmU6OlN0cmlu
ZyYgcHJvdG9jb2wpCit7CisgICAgaWYgKHByb3RvY29sLmlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAocHJvdG9jb2wuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBwcm90b2NvbC5jaGFyYWN0ZXJzKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm90b2NvbC5sZW5ndGgoKTsgaSsrKSB7Cisg
ICAgICAgIGlmIChjaGFyYWN0ZXJzW2ldIDwgMHgyMSB8fCBjaGFyYWN0ZXJzW2ldID4gMHg3RSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IFdlYlNvY2tldDo6V2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAg
ICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fc3RhdGUoQ09OTkVD
VElORykKQEAgLTU5LDM5ICsxMDQsNDkgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3Qg
S1VSTCYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3Qo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBjb25uZWN0IHRvICVzIHByb3Rv
Y29sPSVzIiwgdGhpcywgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHByb3RvY29sLnV0Zjgo
KS5kYXRhKCkpOwogICAgIG1fdXJsID0gdXJsOwogICAgIG1fcHJvdG9jb2wgPSBwcm90b2NvbDsK
IAogICAgIGlmICghbV91cmwucHJvdG9jb2xJcygid3MiKSAmJiAhbV91cmwucHJvdG9jb2xJcygi
d3NzIikpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJFcnJvcjogd3JvbmcgdXJsIGZvciBXZWJTb2Nr
ZXQgJXMiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBD
TE9TRUQ7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBpZiAoIW1fcHJvdG9jb2wuaXNOdWxsKCkgJiYgbV9wcm90b2NvbC5pc0VtcHR5KCkpIHsK
KyAgICBpZiAoIWlzVmFsaWRQcm90b2NvbFN0cmluZyhtX3Byb3RvY29sKSkgeworICAgICAgICBM
T0dfRVJST1IoIkVycm9yOiB3cm9uZyBwcm90b2NvbCBmb3IgV2ViU29ja2V0ICVzIiwgbV9wcm90
b2NvbC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAgICAgICAg
ZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIC8vIEZJWE1FOiBD
aGVjayBwcm90b2NvbCBpcyB2YWxpZCBmb3JtLgotICAgIC8vIEZJWE1FOiBDb25uZWN0IFdlYlNv
Y2tldENoYW5uZWwuCisgICAgLy8gRklYTUU6IGlmIG1fdXJsLnBvcnQoKSBpcyBibG9ja2luZyBw
b3J0LCByYWlzZSBTRUNVUklUWV9FUlIuCisKKyAgICBtX2NoYW5uZWwgPSBXZWJTb2NrZXRDaGFu
bmVsOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCBtX3VybCwgbV9wcm90
b2NvbCk7CisgICAgbV9jaGFubmVsLT5jb25uZWN0KCk7CiB9CiAKLWJvb2wgV2ViU29ja2V0Ojpz
ZW5kKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmIGVjKQorYm9vbCBXZWJTb2NrZXQ6OnNl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAo
bV9zdGF0ZSAhPSBPUEVOKSB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgc2VuZCAl
cyIsIHRoaXMsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKG1fc3RhdGUgPT0gQ09O
TkVDVElORykgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQotICAgIC8vIEZJWE1FOiBzZW5kIG1lc3NhZ2Ugb24gV2ViU29ja2V0
Q2hhbm5lbC4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gTm8gZXhjZXB0aW9uIGlzIHJhaXNl
ZCBpZiB0aGUgY29ubmVjdGlvbiB3YXMgb25jZSBlc3RhYmxpc2hlZCBidXQgaGFzIHN1YnNlcXVl
bnRseSBiZWVuIGNsb3NlZC4KKyAgICBpZiAobV9zdGF0ZSA9PSBDTE9TRUQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAvLyBGSVhNRTogY2hlY2sgbWVzc2FnZSBpcyB2YWxpZCB1dGY4Lgor
ICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQobWVzc2FnZSk7CiB9CiAKIHZvaWQgV2ViU29ja2V0
OjpjbG9zZSgpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY2xvc2UiLCB0aGlz
KTsKICAgICBpZiAobV9zdGF0ZSA9PSBDTE9TRUQpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0
YXRlID0gQ0xPU0VEOwotICAgIC8vIEZJWE1FOiBjbG9zZSBXZWJTb2NrZXRDaGFubmVsLgorICAg
IG1fY2hhbm5lbC0+Y2xvc2UoKTsKIH0KIAogY29uc3QgS1VSTCYgV2ViU29ja2V0Ojp1cmwoKSBj
b25zdApAQCAtMTA2LDcgKzE2MSw4IEBAIFdlYlNvY2tldDo6U3RhdGUgV2ViU29ja2V0OjpyZWFk
eVN0YXRlKCkgY29uc3QKIAogdW5zaWduZWQgbG9uZyBXZWJTb2NrZXQ6OmJ1ZmZlcmVkQW1vdW50
KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogYXNrIHBsYXRmb3JtIGNvZGUgdG8gZ2V0IGJ1ZmZl
cmVkIGFtb3VudCB0byBiZSBzZW50LgorICAgIGlmIChtX3N0YXRlID09IE9QRU4pCisgICAgICAg
IHJldHVybiBtX2NoYW5uZWwtPmJ1ZmZlcmVkQW1vdW50KCk7CiAgICAgcmV0dXJuIDA7CiB9CiAK
QEAgLTExNSw1OCArMTcxLDEyMCBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBXZWJTb2NrZXQ6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiBBY3RpdmVET01PYmpl
Y3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIH0KIAotdm9pZCBXZWJTb2NrZXQ6OmFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiwgYm9vbCkKK3ZvaWQgV2ViU29ja2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIs
IGJvb2wpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgorICAgIEV2ZW50TGlzdGVu
ZXJzTWFwOjppdGVyYXRvciBpdGVyID0gbV9ldmVudExpc3RlbmVycy5maW5kKGV2ZW50VHlwZSk7
CisgICAgaWYgKGl0ZXIgPT0gbV9ldmVudExpc3RlbmVycy5lbmQoKSkgeworICAgICAgICBMaXN0
ZW5lclZlY3RvciBsaXN0ZW5lcnM7CisgICAgICAgIGxpc3RlbmVycy5hcHBlbmQoZXZlbnRMaXN0
ZW5lcik7CisgICAgICAgIG1fZXZlbnRMaXN0ZW5lcnMuYWRkKGV2ZW50VHlwZSwgbGlzdGVuZXJz
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBMaXN0ZW5lclZlY3RvciYgbGlzdGVuZXJzID0gaXRl
ci0+c2Vjb25kOworICAgICAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjppdGVyYXRvciBsaXN0ZW5l
ckl0ZXIgPSBsaXN0ZW5lcnMuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9IGxpc3RlbmVycy5lbmQo
KTsgKytsaXN0ZW5lckl0ZXIpCisgICAgICAgICAgICBpZiAoKmxpc3RlbmVySXRlciA9PSBldmVu
dExpc3RlbmVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsaXN0ZW5lcnMu
YXBwZW5kKGV2ZW50TGlzdGVuZXIpOworICAgICAgICBtX2V2ZW50TGlzdGVuZXJzLmFkZChldmVu
dFR5cGUsIGxpc3RlbmVycyk7CisgICAgfQogfQogCi12b2lkIFdlYlNvY2tldDo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmLCBFdmVudExpc3RlbmVyKiwgYm9vbCkKK3Zv
aWQgV2ViU29ja2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyLCBib29sKQogewotICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBFdmVudExpc3RlbmVyc01hcDo6aXRlcmF0b3IgaXRl
ciA9IG1fZXZlbnRMaXN0ZW5lcnMuZmluZChldmVudFR5cGUpOworICAgIGlmIChpdGVyID09IG1f
ZXZlbnRMaXN0ZW5lcnMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIExpc3RlbmVyVmVj
dG9yJiBsaXN0ZW5lcnMgPSBpdGVyLT5zZWNvbmQ7CisgICAgZm9yIChMaXN0ZW5lclZlY3Rvcjo6
Y29uc3RfaXRlcmF0b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVuZXJzLmJlZ2luKCk7IGxpc3RlbmVy
SXRlciAhPSBsaXN0ZW5lcnMuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKQorICAgICAgICBpZiAoKmxp
c3RlbmVySXRlciA9PSBldmVudExpc3RlbmVyKSB7CisgICAgICAgICAgICBsaXN0ZW5lcnMucmVt
b3ZlKGxpc3RlbmVySXRlciAtIGxpc3RlbmVycy5iZWdpbigpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogfQogCi1ib29sIFdlYlNvY2tldDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpCitib29sIFdlYlNvY2tldDo6ZGlzcGF0Y2hFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiBldnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgdGhpcy4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFldnQgfHwg
ZXZ0LT50eXBlKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGVjID0gRXZlbnRFeGNlcHRpb246OlVO
U1BFQ0lGSUVEX0VWRU5UX1RZUEVfRVJSOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICBMaXN0ZW5lclZlY3RvciBsaXN0ZW5lcnNDb3B5ID0gbV9ldmVudExpc3RlbmVycy5nZXQo
ZXZ0LT50eXBlKCkpOworICAgIGZvciAoTGlzdGVuZXJWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGxp
c3RlbmVySXRlciA9IGxpc3RlbmVyc0NvcHkuYmVnaW4oKTsgbGlzdGVuZXJJdGVyICE9IGxpc3Rl
bmVyc0NvcHkuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKSB7CisgICAgICAgIGV2dC0+c2V0VGFyZ2V0
KHRoaXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIGxp
c3RlbmVySXRlci0+Z2V0KCktPmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwgZmFsc2UpOworICAgIH0K
KyAgICByZXR1cm4gIWV2dC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogfQogCiB2b2lkIFdlYlNvY2tl
dDo6ZGlkQ29ubmVjdCgpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkQ29u
bmVjdCIsIHRoaXMpOwogICAgIGlmIChtX3N0YXRlICE9IENPTk5FQ1RJTkcpIHsKICAgICAgICAg
ZGlkQ2xvc2UoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX3N0YXRlID0gT1BFTjsK
LSAgICBkaXNwYXRjaE9wZW5FdmVudCgpOworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
cG9zdFRhc2soUHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzazo6Y3JlYXRlKHRoaXMsICZXZWJTb2Nr
ZXQ6OmRpc3BhdGNoT3BlbkV2ZW50LCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5vcGVuRXZl
bnQsIGZhbHNlLCBmYWxzZSkpKTsKIH0KIAogdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNz
YWdlKGNvbnN0IFN0cmluZyYgbXNnKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVw
IGRpZFJlY2VpdmVNZXNzYWdlICVzIiwgdGhpcywgbXNnLnV0ZjgoKS5kYXRhKCkpOwogICAgIGlm
IChtX3N0YXRlICE9IE9QRU4pCiAgICAgICAgIHJldHVybjsKLSAgICBkaXNwYXRjaE1lc3NhZ2VF
dmVudChtc2cpOworICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2dCA9IE1lc3NhZ2VFdmVudDo6
Y3JlYXRlKCk7CisgICAgLy8gRklYTUU6IG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgbWVz
c2FnZVBvcnQuCisgICAgZXZ0LT5pbml0TWVzc2FnZUV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdl
RXZlbnQsIGZhbHNlLCBmYWxzZSwgbXNnLCAiIiwgIiIsIDAsIDApOworICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soUHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzazo6Y3JlYXRl
KHRoaXMsICZXZWJTb2NrZXQ6OmRpc3BhdGNoTWVzc2FnZUV2ZW50LCBldnQpKTsKIH0KIAogdm9p
ZCBXZWJTb2NrZXQ6OmRpZENsb3NlKCkKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAl
cCBkaWRDbG9zZSIsIHRoaXMpOwogICAgIG1fc3RhdGUgPSBDTE9TRUQ7Ci0gICAgZGlzcGF0Y2hD
bG9zZUV2ZW50KCk7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhQcm9j
ZXNzV2ViU29ja2V0RXZlbnRUYXNrOjpjcmVhdGUodGhpcywgJldlYlNvY2tldDo6ZGlzcGF0Y2hD
bG9zZUV2ZW50LCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50LCBmYWxzZSwg
ZmFsc2UpKSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaE9wZW5FdmVudCgpCit2b2lk
IFdlYlNvY2tldDo6ZGlzcGF0Y2hPcGVuRXZlbnQoRXZlbnQqIGV2dCkKIHsKLSAgICAvLyBGSVhN
RTogaW1wbGVtZW50IHRoaXMuCisgICAgaWYgKG1fb25vcGVuKSB7CisgICAgICAgIGV2dC0+c2V0
VGFyZ2V0KHRoaXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAg
ICAgIG1fb25vcGVuLT5oYW5kbGVFdmVudChldnQsIGZhbHNlKTsKKyAgICB9CisKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2dCwgZWMpOworICAgIEFTU0VS
VCghZWMpOwogfQogCi12b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQoY29uc3Qg
U3RyaW5nJikKK3ZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaE1lc3NhZ2VFdmVudChFdmVudCogZXZ0
KQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBpZiAobV9vbm1lc3NhZ2Up
IHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2dC0+c2V0Q3VycmVu
dFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbm1lc3NhZ2UtPmhhbmRsZUV2ZW50KGV2dCwgZmFs
c2UpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZl
bnQoZXZ0LCBlYyk7CisgICAgQVNTRVJUKCFlYyk7CiB9CiAKLXZvaWQgV2ViU29ja2V0OjpkaXNw
YXRjaENsb3NlRXZlbnQoKQordm9pZCBXZWJTb2NrZXQ6OmRpc3BhdGNoQ2xvc2VFdmVudChFdmVu
dCogZXZ0KQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBpZiAobV9vbmNs
b3NlKSB7CisgICAgICAgIGV2dC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldnQtPnNldEN1
cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fb25jbG9zZS0+aGFuZGxlRXZlbnQoZXZ0LCBm
YWxzZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hF
dmVudChldnQsIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCA0ODVlMmNjLi4yYmUzNDQ1IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oCkBAIC0zMSw5MyArMzEsMTA0IEBACiAjaWZuZGVmIFdlYlNvY2tldF9o
CiAjZGVmaW5lIFdlYlNvY2tldF9oCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKICNpbmNs
dWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJBdG9taWNTdHJpbmdIYXNoLmgiCiAj
aW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTdHJpbmc7CisgICAgY2xhc3MgU3RyaW5nOworICAgIGNs
YXNzIFdlYlNvY2tldENoYW5uZWw7CiAKLWNsYXNzIFdlYlNvY2tldCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYlNvY2tldD4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVj
dCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlNv
Y2tldChjb250ZXh0KSk7IH0KLSAgICB2aXJ0dWFsIH5XZWJTb2NrZXQoKTsKKyAgICBjbGFzcyBX
ZWJTb2NrZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTb2NrZXQ+LCBwdWJsaWMgRXZlbnRUYXJn
ZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldD4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJTb2NrZXQoY29udGV4dCkpOyB9CisgICAgICAgIHZpcnR1YWwgfldlYlNvY2tldCgpOwog
Ci0gICAgZW51bSBTdGF0ZSB7Ci0gICAgICAgIENPTk5FQ1RJTkcgPSAwLAotICAgICAgICBPUEVO
ID0gMSwKLSAgICAgICAgQ0xPU0VEID0gMgotICAgIH07CisgICAgICAgIGVudW0gU3RhdGUgewor
ICAgICAgICAgICAgQ09OTkVDVElORyA9IDAsCisgICAgICAgICAgICBPUEVOID0gMSwKKyAgICAg
ICAgICAgIENMT1NFRCA9IDIKKyAgICAgICAgfTsKIAotICAgIHZvaWQgY29ubmVjdChjb25zdCBL
VVJMJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZv
aWQgY29ubmVjdChjb25zdCBLVVJMJiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIGNv
bm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUm
KTsKIAotICAgIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICAgICAgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29k
ZSYpOwogCi0gICAgdm9pZCBjbG9zZSgpOworICAgICAgICB2b2lkIGNsb3NlKCk7CiAKLSAgICBj
b25zdCBLVVJMJiB1cmwoKSBjb25zdDsKLSAgICBTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7Ci0g
ICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0OworICAgICAgICBjb25zdCBL
VVJMJiB1cmwoKSBjb25zdDsKKyAgICAgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OworICAg
ICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CiAKLSAgICB2b2lkIHNl
dE9ub3BlbihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbm9w
ZW4gPSBldmVudExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25vcGVuKCkgY29uc3Qg
eyByZXR1cm4gbV9vbm9wZW4uZ2V0KCk7IH0KLSAgICB2b2lkIHNldE9ubWVzc2FnZShQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbm1lc3NhZ2UgPSBldmVudExp
c3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25tZXNzYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9vbm1lc3NhZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIHNldE9uY2xvc2UoUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25jbG9zZSA9IGV2ZW50TGlzdGVuZXI7IH0K
LSAgICBFdmVudExpc3RlbmVyKiBvbmNsb3NlKCkgY29uc3QgeyByZXR1cm4gbV9vbmNsb3NlLmdl
dCgpOyB9CisgICAgICAgIHZvaWQgc2V0T25vcGVuKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
ZXZlbnRMaXN0ZW5lcikgeyBtX29ub3BlbiA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZl
bnRMaXN0ZW5lciogb25vcGVuKCkgY29uc3QgeyByZXR1cm4gbV9vbm9wZW4uZ2V0KCk7IH0KKyAg
ICAgICAgdm9pZCBzZXRPbm1lc3NhZ2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExp
c3RlbmVyKSB7IG1fb25tZXNzYWdlID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgICAgICBFdmVudExp
c3RlbmVyKiBvbm1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX29ubWVzc2FnZS5nZXQoKTsgfQor
ICAgICAgICB2b2lkIHNldE9uY2xvc2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExp
c3RlbmVyKSB7IG1fb25jbG9zZSA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0
ZW5lciogb25jbG9zZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25jbG9zZS5nZXQoKTsgfQogCi0gICAg
Ly8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIFdlYlNvY2tldCogdG9XZWJTb2NrZXQoKSB7IHJl
dHVybiB0aGlzOyB9CisgICAgICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgICAgIHZpcnR1YWwgV2Vi
U29ja2V0KiB0b1dlYlNvY2tldCgpIHsgcmV0dXJuIHRoaXM7IH0KIAotICAgIHZpcnR1YWwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAg
ICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVz
ZUNhcHR1cmUpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsK
LSAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0
aW9uQ29kZSYpOworICAgICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
PiBMaXN0ZW5lclZlY3RvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywg
TGlzdGVuZXJWZWN0b3I+IEV2ZW50TGlzdGVuZXJzTWFwOwogCi0gICAgLy8gQWN0aXZlRE9NT2Jq
ZWN0Ci0gICAgLy8gdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwotICAg
IC8vIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7Ci0gICAgLy8gdmlydHVhbCBib29s
IGNhblN1c3BlbmQoKSBjb25zdDsKLSAgICAvLyB2aXJ0dWFsIHZvaWQgc3VzcGVuZCgpOwotICAg
IC8vIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKLSAgICAvLyB2aXJ0dWFsIHZvaWQgc3RvcCgpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpOworICAgICAg
ICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9u
Q29kZSYpOworICAgICAgICBFdmVudExpc3RlbmVyc01hcCYgZXZlbnRMaXN0ZW5lcnMoKSB7IHJl
dHVybiBtX2V2ZW50TGlzdGVuZXJzOyB9CiAKLSAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tl
dD46OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldD46OmRlcmVmOworICAgICAg
ICAvLyBBY3RpdmVET01PYmplY3QKKyAgICAgICAgLy8gIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdDsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95
ZWQoKTsKKyAgICAgICAgLy8gdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKKyAgICAg
ICAgLy8gdmlydHVhbCB2b2lkIHN1c3BlbmQoKTsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lkIHJl
c3VtZSgpOworICAgICAgICAvLyB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogCi1wcml2YXRlOgotICAg
IFdlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgICAgIHVzaW5nIFJlZkNv
dW50ZWQ8V2ViU29ja2V0Pjo6cmVmOworICAgICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tl
dD46OmRlcmVmOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsg
fQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAg
ICAgIC8vIFdlYlNvY2tldENoYW5uZWxDbGllbnQKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENv
bm5lY3QoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0
cmluZyYgbXNnKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKCk7CiAKLSAgICAvLyBX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50Ci0gICAgdm9pZCBkaWRDb25uZWN0KCk7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZyk7Ci0gICAgdm9pZCBkaWRDbG9zZSgp
OworICAgIHByaXZhdGU6CisgICAgICAgIFdlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CiAKLSAgICB2b2lkIGRpc3BhdGNoT3BlbkV2ZW50KCk7Ci0gICAgdm9pZCBkaXNwYXRjaE1l
c3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIG1zZyk7Ci0gICAgdm9pZCBkaXNwYXRjaENsb3NlRXZl
bnQoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQogCi0g
ICAgLy8gRklYTUU6IGFkZCBXZWJTb2NrZXRDaGFubmVsLgorICAgICAgICB2b2lkIGRpc3BhdGNo
T3BlbkV2ZW50KEV2ZW50Kik7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRXZlbnQoRXZl
bnQqKTsKKyAgICAgICAgdm9pZCBkaXNwYXRjaENsb3NlRXZlbnQoRXZlbnQqKTsKIAotICAgIFJl
ZlB0cjxFdmVudExpc3RlbmVyPiBtX29ub3BlbjsKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
bV9vbm1lc3NhZ2U7Ci0gICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25jbG9zZTsKKyAgICAg
ICAgUmVmUHRyPFdlYlNvY2tldENoYW5uZWw+IG1fY2hhbm5lbDsKIAotICAgIFN0YXRlIG1fc3Rh
dGU7Ci0gICAgS1VSTCBtX3VybDsKLSAgICBTdHJpbmcgbV9wcm90b2NvbDsKLX07CisgICAgICAg
IFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ub3BlbjsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IG1fb25tZXNzYWdlOworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbmNs
b3NlOworICAgICAgICBFdmVudExpc3RlbmVyc01hcCBtX2V2ZW50TGlzdGVuZXJzOworCisgICAg
ICAgIFN0YXRlIG1fc3RhdGU7CisgICAgICAgIEtVUkwgbV91cmw7CisgICAgICAgIFN0cmluZyBt
X3Byb3RvY29sOworICAgIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAg
Ly8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCiAjZW5kaWYgIC8vIFdlYlNvY2tldF9oCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMTQ1Y2QzNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMCwwICsxLDI0NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVs
LmgiCisKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiQ29va2llSmFyLmgiCisjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIK
KyNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVu
dC5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dl
YlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAs
IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1faGFuZHNoYWtlKHVybCwgcHJvdG9jb2wsIGNvbnRl
eHQpCisgICAgLCBtX2J1ZmZlcigwKQorICAgICwgbV9idWZmZXJTaXplKDApCisgICAgLCBtX3Vu
aGFuZGxlZEJ1ZmZlclNpemUoMCkKK3sKK30KKworV2ViU29ja2V0Q2hhbm5lbDo6fldlYlNvY2tl
dENoYW5uZWwoKQoreworICAgIGZhc3RGcmVlKG1fYnVmZmVyKTsKK30KKwordm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpjb25uZWN0KCkKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5u
ZWwgJXAgY29ubmVjdCIsIHRoaXMpOworICAgIEFTU0VSVCghbV9oYW5kbGUuZ2V0KCkpOworICAg
IG1faGFuZHNoYWtlLnJlc2V0KCk7CisgICAgbV9oYW5kbGUgPSBTb2NrZXRTdHJlYW1IYW5kbGU6
OmNyZWF0ZShtX2hhbmRzaGFrZS51cmwoKSwgdGhpcyk7Cit9CisKK2Jvb2wgV2ViU29ja2V0Q2hh
bm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1zZykKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNv
Y2tldENoYW5uZWwgJXAgc2VuZCAlcyIsIHRoaXMsIG1zZy51dGY4KCkuZGF0YSgpKTsKKyAgICBW
ZWN0b3I8Y2hhcj4gYnVmOworICAgIGJ1Zi5hcHBlbmQoJ1wwJyk7ICAvLyBmcmFtZSB0eXBlCisg
ICAgYnVmLmFwcGVuZChtc2cudXRmOCgpLmRhdGEoKSwgbXNnLnV0ZjgoKS5sZW5ndGgoKSk7Cisg
ICAgYnVmLmFwcGVuZCgnXHhmZicpOyAgLy8gZnJhbWUgZW5kCisgICAgaWYgKCFtX2hhbmRsZS5n
ZXQoKSkgeworICAgICAgICBtX3VuaGFuZGxlZEJ1ZmZlclNpemUgKz0gYnVmLnNpemUoKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gbV9oYW5kbGUtPnNlbmQoYnVm
LmRhdGEoKSwgYnVmLnNpemUoKSk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViU29ja2V0Q2hhbm5l
bDo6YnVmZmVyZWRBbW91bnQoKSBjb25zdAoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
Q2hhbm5lbCAlcCBidWZmZXJlZEFtb3VudCIsIHRoaXMpOworICAgIGlmICghbV9oYW5kbGUuZ2V0
KCkpCisgICAgICAgIHJldHVybiBtX3VuaGFuZGxlZEJ1ZmZlclNpemU7CisgICAgcmV0dXJuIG1f
aGFuZGxlLT5idWZmZXJlZEFtb3VudCgpOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNs
b3NlKCkKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY2xvc2UiLCB0
aGlzKTsKKyAgICBpZiAobV9oYW5kbGUuZ2V0KCkpCisgICAgICAgIG1faGFuZGxlLT5jbG9zZSgp
OyAgLy8gd2lsbCBjYWxsIGRpZENsb3NlKCkKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjp3
aWxsT3BlblN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBLVVJMJikKK3sKK30KKwor
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjp3aWxsU2VuZERhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiwg
Y29uc3QgY2hhciosIGludCkKK3sKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRPcGVu
KFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29j
a2V0Q2hhbm5lbCAlcCBkaWRPcGVuIiwgdGhpcyk7CisgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hh
bmRsZS5nZXQoKSk7CisgICAgY29uc3QgQ1N0cmluZyYgaGFuZHNoYWtlTWVzc2FnZSA9IG1faGFu
ZHNoYWtlLmNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKTsKKyAgICBpZiAoIWhhbmRsZS0+c2VuZCho
YW5kc2hha2VNZXNzYWdlLmRhdGEoKSwgaGFuZHNoYWtlTWVzc2FnZS5sZW5ndGgoKSkpIHsKKyAg
ICAgICAgTE9HKE5ldHdvcmssICJFcnJvciBpbiBzZW5kaW5nIGhhbmRzaGFrZSBtZXNzYWdlLiIp
OworICAgICAgICBoYW5kbGUtPmNsb3NlKCk7CisgICAgfQorfQorCit2b2lkIFdlYlNvY2tldENo
YW5uZWw6OmRpZENsb3NlKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQoreworICAgIExPRyhO
ZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRDbG9zZSIsIHRoaXMpOworICAgIEFTU0VS
VChoYW5kbGUgPT0gbV9oYW5kbGUuZ2V0KCkgfHwgIW1faGFuZGxlLmdldCgpKTsKKyAgICBpZiAo
IW1faGFuZGxlLmdldCgpKQorICAgICAgICByZXR1cm47CisgICAgbV91bmhhbmRsZWRCdWZmZXJT
aXplID0gaGFuZGxlLT5idWZmZXJlZEFtb3VudCgpOworICAgIFdlYlNvY2tldENoYW5uZWxDbGll
bnQqIGNsaWVudCA9IG1fY2xpZW50OworICAgIG1fY2xpZW50ID0gMDsKKyAgICBtX2hhbmRsZSA9
IDA7CisgICAgY2xpZW50LT5kaWRDbG9zZSgpOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmRpZFJlY2VpdmVEYXRhKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBk
aWRSZWNlaXZlRGF0YSAlZCIsIHRoaXMsIGxlbik7CisgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hh
bmRsZS5nZXQoKSk7CisgICAgaWYgKCFhcHBlbmRUb0J1ZmZlcihkYXRhLCBsZW4pKSB7CisgICAg
ICAgIGhhbmRsZS0+Y2xvc2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9o
YW5kc2hha2UubW9kZSgpICE9IFdlYlNvY2tldEhhbmRzaGFrZTo6Q29ubmVjdGVkKSB7CisgICAg
ICAgIGludCBoZWFkZXJMZW5ndGggPSBtX2hhbmRzaGFrZS5yZWFkU2VydmVySGFuZHNoYWtlKG1f
YnVmZmVyLCBtX2J1ZmZlclNpemUpOworICAgICAgICBpZiAoaGVhZGVyTGVuZ3RoIDw9IDApCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN3aXRjaCAobV9oYW5kc2hha2UubW9kZSgpKSB7
CisgICAgICAgIGNhc2UgV2ViU29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQ6CisgICAgICAgICAg
ICBpZiAoIW1faGFuZHNoYWtlLnNlcnZlclNldENvb2tpZSgpLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgICAgIGlmIChtX2NvbnRleHQtPmlzRG9jdW1lbnQoKSkgeworICAgICAgICAgICAgICAg
ICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fY29udGV4
dCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb29raWVzRW5hYmxlZChkb2N1bWVudCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC0+c2V0Q29va2llKG1faGFuZHNoYWtlLnNl
cnZlclNldENvb2tpZSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAvLyBGSVhNRTogaGFuZGxlIHNldC1jb29raWUyLgorICAgICAgICAgICAgTE9HKE5l
dHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNvbm5lY3RlZCIsIHRoaXMpOworICAgICAgICAg
ICAgbV9jbGllbnQtPmRpZENvbm5lY3QoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNv
bm5lY3Rpb24gZmFpbGVkIiwgdGhpcyk7CisgICAgICAgICAgICBoYW5kbGUtPmNsb3NlKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc2tpcEJ1ZmZlcihoZWFkZXJM
ZW5ndGgpOworICAgICAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBMT0coTmV0d29yaywgInJlbWFpbmluZyBpbiByZWFkIGJ1ZiAldWwiLCBtX2J1ZmZlclNp
emUpOworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIG5leHRGcmFtZSA9IG1fYnVmZmVyOworICAg
IGNvbnN0IGNoYXIqIHAgPSBtX2J1ZmZlcjsKKyAgICBjb25zdCBjaGFyKiBlbmQgPSBwICsgbV9i
dWZmZXJTaXplOworICAgIHdoaWxlIChwIDwgZW5kKSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIg
ZnJhbWVCeXRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKnArKyk7CisgICAgICAgIGlm
ICgoZnJhbWVCeXRlICYgMHg4MCkgPT0gMHg4MCkgeworICAgICAgICAgICAgaW50IGxlbmd0aCA9
IDA7CisgICAgICAgICAgICB3aGlsZSAocCA8IGVuZCAmJiAoKnAgJiAweDgwKSA9PSAweDgwKSB7
CisgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6
bWF4KCkgLyAxMjgpIHsKKyAgICAgICAgICAgICAgICAgICAgTE9HKE5ldHdvcmssICJmcmFtZSBs
ZW5ndGggb3ZlcmZsb3cgJWQiLCBsZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBoYW5kbGUt
PmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoICogMTI4ICsgKnAgJiAweDdmOworICAg
ICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwICsgbGVu
Z3RoIDwgZW5kKSB7CisgICAgICAgICAgICAgICAgcCArPSBsZW5ndGg7CisgICAgICAgICAgICAg
ICAgbmV4dEZyYW1lID0gcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIG1zZ1N0YXJ0ID0gcDsKKyAgICAgICAgICAgIHdoaWxlIChwIDwg
ZW5kICYmICpwICE9ICdceGZmJykKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICBp
ZiAocCA8IGVuZCAmJiAqcCA9PSAnXHhmZicpIHsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWVC
eXRlID09IDB4MDApCisgICAgICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVz
c2FnZShTdHJpbmc6OmZyb21VVEY4KG1zZ1N0YXJ0LCBwIC0gbXNnU3RhcnQpKTsKKyAgICAgICAg
ICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgbmV4dEZyYW1lID0gcDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKyAgICBza2lwQnVmZmVyKG5leHRGcmFtZSAtIG1fYnVmZmVy
KTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRGYWlsKFNvY2tldFN0cmVhbUhhbmRs
ZSogaGFuZGxlLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYpCit7CisgICAgTE9HKE5ldHdvcmss
ICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZEZhaWwiLCB0aGlzKTsKKyAgICBBU1NFUlQoaGFuZGxl
ID09IG1faGFuZGxlLmdldCgpIHx8ICFtX2hhbmRsZS5nZXQoKSk7CisgICAgaGFuZGxlLT5jbG9z
ZSgpOworfQorCitib29sIFdlYlNvY2tldENoYW5uZWw6OmFwcGVuZFRvQnVmZmVyKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW4pCit7CisgICAgY2hhciogbmV3QnVmZmVyID0gMDsKKyAgICBpZiAo
dHJ5RmFzdE1hbGxvYyhtX2J1ZmZlclNpemUgKyBsZW4pLmdldFZhbHVlKG5ld0J1ZmZlcikpIHsK
KyAgICAgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICAgICAgbWVtY3B5KG5ld0J1ZmZlciwgbV9i
dWZmZXIsIG1fYnVmZmVyU2l6ZSk7CisgICAgICAgIG1lbWNweShuZXdCdWZmZXIgKyBtX2J1ZmZl
clNpemUsIGRhdGEsIGxlbik7CisgICAgICAgIGZhc3RGcmVlKG1fYnVmZmVyKTsKKyAgICAgICAg
bV9idWZmZXIgPSBuZXdCdWZmZXI7CisgICAgICAgIG1fYnVmZmVyU2l6ZSArPSBsZW47CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBMT0coTmV0d29yaywgIlRvbyBsb25nIFdlYlNv
Y2tldCBmcmFtZSAlZCIsIG1fYnVmZmVyU2l6ZSArIGxlbik7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNraXBCdWZmZXIoaW50IGxlbikKK3sKKyAgICBB
U1NFUlQobGVuIDw9IG1fYnVmZmVyU2l6ZSk7CisgICAgbV9idWZmZXJTaXplIC09IGxlbjsKKyAg
ICBpZiAoIW1fYnVmZmVyU2l6ZSkgeworICAgICAgICBmYXN0RnJlZShtX2J1ZmZlcik7CisgICAg
ICAgIG1fYnVmZmVyID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtZW1tb3ZlKG1f
YnVmZmVyLCBtX2J1ZmZlciArIGxlbiwgbV9idWZmZXJTaXplKTsKK30KKworfSAgLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li43NWY0MWY2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuaApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0Q2hhbm5lbF9oCisj
ZGVmaW5lIFdlYlNvY2tldENoYW5uZWxfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisj
aW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0
SGFuZHNoYWtlLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBjbGFzcyBT
dHJpbmc7CisgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlOworICAgIGNsYXNzIFNvY2tldFN0
cmVhbUVycm9yOworICAgIGNsYXNzIFdlYlNvY2tldENoYW5uZWxDbGllbnQ7CisKKyAgICBjbGFz
cyBXZWJTb2NrZXRDaGFubmVsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5lbD4s
IHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0Q2hhbm5lbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCwgY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSB7IHJldHVybiBuZXcgV2ViU29ja2V0
Q2hhbm5lbChjb250ZXh0LCBjbGllbnQsIHVybCwgcHJvdG9jb2wpOyB9CisgICAgICAgIHZpcnR1
YWwgfldlYlNvY2tldENoYW5uZWwoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdCgp
OworCisgICAgICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbXNnKTsKKyAgICAg
ICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CisKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGNsb3NlKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxPcGVu
U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEtVUkwmKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHdpbGxTZW5kRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZE9wZW4oU29ja2V0U3RyZWFtSGFuZGxlKik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShTb2NrZXRTdHJlYW1IYW5kbGUqKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0
IGNoYXIqLCBpbnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChTb2NrZXRTdHJlYW1I
YW5kbGUqLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYpOworCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgV2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViU29ja2V0Q2hh
bm5lbENsaWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKTsKKworICAgICAgICBib29s
IGFwcGVuZFRvQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pOworICAgICAgICB2b2lk
IHNraXBCdWZmZXIoaW50IGxlbik7CisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
bV9jb250ZXh0OworICAgICAgICBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBtX2NsaWVudDsKKyAg
ICAgICAgV2ViU29ja2V0SGFuZHNoYWtlIG1faGFuZHNoYWtlOworICAgICAgICBSZWZQdHI8U29j
a2V0U3RyZWFtSGFuZGxlPiBtX2hhbmRsZTsKKyAgICAgICAgY2hhciogbV9idWZmZXI7CisgICAg
ICAgIGludCBtX2J1ZmZlclNpemU7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbV91bmhhbmRsZWRC
dWZmZXJTaXplOworICAgIH07CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAg
Ly8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYgIC8vIFdlYlNvY2tldENoYW5uZWxfaApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaCBi
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzY2FkYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgKQEAgLTAsMCArMSw1MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYlNvY2tldENoYW5uZWxDbGllbnRfaAorI2RlZmluZSBXZWJTb2NrZXRDaGFubmVs
Q2xpZW50X2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisgICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENsaWVudCB7CisgICAgcHVibGljOgorICAg
ICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDaGFubmVsQ2xpZW50KCkgeyB9CisgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRDb25uZWN0KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3Nl
KCkgeyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIFdlYlNvY2tldENoYW5uZWxDbGllbnQo
KSB7IH0KKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIEVO
QUJMRShXRUJfU09DS0VUUykKKworI2VuZGlmICAvLyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50X2gK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNjkxZmExYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC0wLDAgKzEsNDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIldl
YlNvY2tldEhhbmRzaGFrZS5oIgorCisjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCisjaW5jbHVk
ZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkNvb2tpZUphci5oIgorI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgY2hhciB3ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hha2VI
ZWFkZXJbXSA9ICJIVFRQLzEuMSAxMDEgV2ViIFNvY2tldCBQcm90b2NvbCBIYW5kc2hha2Vcclxu
IjsKK2NvbnN0IGNoYXIgd2ViU29ja2V0VXBncmFkZUhlYWRlcltdID0gIlVwZ3JhZGU6IFdlYlNv
Y2tldFxyXG4iOworY29uc3QgY2hhciB3ZWJTb2NrZXRDb25uZWN0aW9uSGVhZGVyW10gPSAiQ29u
bmVjdGlvbjogVXBncmFkZVxyXG4iOworCitzdGF0aWMgU3RyaW5nIGV4dHJhY3RSZXNwb25zZUNv
ZGUoY29uc3QgY2hhciogaGVhZGVyLCBpbnQgbGVuKQoreworICAgIGNvbnN0IGNoYXIqIHNwYWNl
MSA9IDA7CisgICAgY29uc3QgY2hhciogc3BhY2UyID0gMDsKKyAgICBjb25zdCBjaGFyKiBwOwor
ICAgIGZvciAocCA9IGhlYWRlcjsgcCAtIGhlYWRlciA8IGxlbjsgcCsrKSB7CisgICAgICAgIGlm
ICgqcCA9PSAnICcpIHsKKyAgICAgICAgICAgIGlmICghc3BhY2UxKQorICAgICAgICAgICAgICAg
IHNwYWNlMSA9IHA7CisgICAgICAgICAgICBlbHNlIGlmICghc3BhY2UyKQorICAgICAgICAgICAg
ICAgIHNwYWNlMiA9IHA7CisgICAgICAgIH0gZWxzZSBpZiAoKnAgPT0gJ1xuJykKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAocCAtIGhlYWRlciA9PSBsZW4pCisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKyAgICBpZiAoIXNwYWNlMSB8fCAhc3BhY2UyKQorICAgICAgICByZXR1
cm4gIiI7CisgICAgcmV0dXJuIFN0cmluZyhzcGFjZTEgKyAxLCBzcGFjZTIgLSBzcGFjZTEgLSAx
KTsKK30KKworV2ViU29ja2V0SGFuZHNoYWtlOjpXZWJTb2NrZXRIYW5kc2hha2UoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQorICAgIDogbV91cmwodXJsKQorICAgICwgbV9jbGllbnRQcm90b2NvbChwcm90b2Nv
bCkKKyAgICAsIG1fc2VjdXJlKG1fdXJsLnByb3RvY29sSXMoIndzcyIpKQorICAgICwgbV9jb250
ZXh0KGNvbnRleHQpCisgICAgLCBtX21vZGUoSW5jb21wbGV0ZSkKK3sKK30KKworV2ViU29ja2V0
SGFuZHNoYWtlOjp+V2ViU29ja2V0SGFuZHNoYWtlKCkKK3sKK30KKworY29uc3QgS1VSTCYgV2Vi
U29ja2V0SGFuZHNoYWtlOjp1cmwoKSBjb25zdAoreworICAgIHJldHVybiBtX3VybDsKK30KKwor
dm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFVSTChjb25zdCBLVVJMJiB1cmwpCit7CisgICAg
bV91cmwgPSB1cmwuY29weSgpOworfQorCitjb25zdCBTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtl
Ojpob3N0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91cmwuaG9zdCgpLmxvd2VyKCk7Cit9CisK
K2NvbnN0IFN0cmluZyYgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRQcm90b2NvbCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY2xpZW50UHJvdG9jb2w7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFu
ZHNoYWtlOjpzZXRDbGllbnRQcm90b2NvbChjb25zdCBTdHJpbmcmIHByb3RvY29sKQoreworICAg
IG1fY2xpZW50UHJvdG9jb2wgPSBwcm90b2NvbDsKK30KKworYm9vbCBXZWJTb2NrZXRIYW5kc2hh
a2U6OnNlY3VyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VjdXJlOworfQorCit2b2lkIFdl
YlNvY2tldEhhbmRzaGFrZTo6c2V0U2VjdXJlKGJvb2wgc2VjdXJlKQoreworICAgIG1fc2VjdXJl
ID0gc2VjdXJlOworfQorCitTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRPcmlnaW4o
KSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3Ry
aW5nKCk7Cit9CisKK1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudExvY2F0aW9uKCkg
Y29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQo
bV9zZWN1cmUgPyAid3NzIiA6ICJ3cyIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCI6Ly8iKTsKKyAg
ICBidWlsZGVyLmFwcGVuZChtX3VybC5ob3N0KCkubG93ZXIoKSk7CisgICAgaWYgKG1fdXJsLnBv
cnQoKSkgeworICAgICAgICBpZiAoKCFtX3NlY3VyZSAmJiBtX3VybC5wb3J0KCkgIT0gODApIHx8
IChtX3NlY3VyZSAmJiBtX3VybC5wb3J0KCkgIT0gNDQzKSkgeworICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIjoiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVy
KG1fdXJsLnBvcnQoKSkpOworICAgICAgICB9CisgICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKG1f
dXJsLnBhdGgoKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworQ1N0cmlu
ZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKSBjb25zdAorewor
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgIGJ1aWxkZXIuYXBwZW5kKCJHRVQgIik7
CisgICAgYnVpbGRlci5hcHBlbmQobV91cmwucGF0aCgpKTsKKyAgICBpZiAoIW1fdXJsLnF1ZXJ5
KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI/Iik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKG1fdXJsLnF1ZXJ5KCkpOworICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZCgi
IEhUVFAvMS4xXHJcbiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJVcGdyYWRlOiBXZWJTb2NrZXRc
clxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIkNvbm5lY3Rpb246IFVwZ3JhZGVcclxuIik7Cisg
ICAgYnVpbGRlci5hcHBlbmQoIkhvc3Q6ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fdXJsLmhv
c3QoKS5sb3dlcigpKTsKKyAgICBpZiAobV91cmwucG9ydCgpKSB7CisgICAgICAgIGlmICgoIW1f
c2VjdXJlICYmIG1fdXJsLnBvcnQoKSAhPSA4MCkgfHwgKG1fc2VjdXJlICYmIG1fdXJsLnBvcnQo
KSAhPSA0NDMpKSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiOiIpOworICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIobV91cmwucG9ydCgpKSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgYnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKKyAgICBidWlsZGVyLmFwcGVu
ZCgiT3JpZ2luOiAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChjbGllbnRPcmlnaW4oKSk7CisgICAg
YnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKKyAgICBpZiAoIW1fY2xpZW50UHJvdG9jb2wuaXNFbXB0
eSgpKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJXZWJTb2NrZXQtUHJvdG9jb2w6ICIpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZChtX2NsaWVudFByb3RvY29sKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIlxyXG4iKTsKKyAgICB9CisgICAgS1VSTCB1cmwgPSBodHRwVVJMRm9yQXV0aGVu
dGljYXRpb25BbmRDb29raWVzKCk7CisgICAgLy8gRklYTUU6IHNldCBhdXRoZW50aWNhdGlvbiBp
bmZvcm1hdGlvbiBvciBjb29raWVzIGZvciB1cmwuCisgICAgLy8gU2V0ICJBdXRob3JpemF0aW9u
OiA8Y3JlZGVudGlhbHM+IiBpZiBhdXRoZW50aWNhdGlvbiBpbmZvcm1hdGlvbiBleGlzdHMgZm9y
IHVybC4KKyAgICBpZiAobV9jb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKKyAgICAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX2NvbnRleHQpOworICAgICAg
ICBTdHJpbmcgY29va2llID0gY29va2llcyhkb2N1bWVudCwgdXJsKTsKKyAgICAgICAgaWYgKCFj
b29raWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiQ29va2llOiAi
KTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNvb2tpZSk7CisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgiXHJcbiIpOworICAgICAgICB9CisgICAgICAgIC8vIFNldCAiQ29va2llMjog
PGNvb2tpZT4iIGlmIGNvb2tpZXMgMiBleGlzdHMgZm9yIHVybD8KKyAgICB9CisgICAgYnVpbGRl
ci5hcHBlbmQoIlxyXG4iKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsK
K30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlc2V0KCkKK3sKKyAgICBtX21vZGUgPSBJ
bmNvbXBsZXRlOworCisgICAgbV93c09yaWdpbiA9IFN0cmluZygpOworICAgIG1fd3NMb2NhdGlv
biA9IFN0cmluZygpOworICAgIG1fd3NQcm90b2NvbCA9IFN0cmluZygpOworICAgIG1fc2V0Q29v
a2llID0gU3RyaW5nKCk7CisgICAgbV9zZXRDb29raWUyID0gU3RyaW5nKCk7Cit9CisKK2ludCBX
ZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciogaGVhZGVy
LCBzaXplX3QgbGVuKQoreworICAgIG1fbW9kZSA9IEluY29tcGxldGU7CisgICAgaWYgKGxlbiA8
IHNpemVvZih3ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hha2VIZWFkZXIpIC0gMSkgeworICAgICAgICAv
LyBKdXN0IGhhc24ndCBiZWVuIHJlY2VpdmVkIGZ1bGx5IHlldC4KKyAgICAgICAgcmV0dXJuIC0x
OworICAgIH0KKyAgICBpZiAoIW1lbWNtcChoZWFkZXIsIHdlYlNvY2tldFNlcnZlckhhbmRzaGFr
ZUhlYWRlciwgc2l6ZW9mKHdlYlNvY2tldFNlcnZlckhhbmRzaGFrZUhlYWRlcikgLSAxKSkKKyAg
ICAgICAgbV9tb2RlID0gTm9ybWFsOworICAgIGVsc2UgeworICAgICAgICBjb25zdCBTdHJpbmcm
IGNvZGUgPSBleHRyYWN0UmVzcG9uc2VDb2RlKGhlYWRlciwgbGVuKTsKKyAgICAgICAgaWYgKGNv
ZGUuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAic2hvcnQgc2VydmVyIGhh
bmRzaGFrZTogJXMiLCBoZWFkZXIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9
CisgICAgICAgIGlmIChjb2RlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgTE9HKE5ldHdvcmss
ICJubyByZXNwb25zZSBjb2RlIGZvdW5kOiAlcyIsIGhlYWRlcik7CisgICAgICAgICAgICByZXR1
cm4gbGVuOworICAgICAgICB9CisgICAgICAgIExPRyhOZXR3b3JrLCAicmVzcG9uc2UgY29kZTog
JXMiLCBjb2RlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBpZiAoY29kZSA9PSAiNDAxIikgewor
ICAgICAgICAgICAgTE9HKE5ldHdvcmssICJBdXRoZW50aWNhdGlvbiByZXF1aXJlZCIpOworICAg
ICAgICAgICAgcmV0dXJuIGxlbjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIExPRyhO
ZXR3b3JrLCAiTWlzbWF0Y2ggc2VydmVyIGhhbmRzaGFrZTogJXMiLCBoZWFkZXIpOworICAgICAg
ICAgICAgcmV0dXJuIGxlbjsKKyAgICAgICAgfQorICAgIH0KKyAgICBjb25zdCBjaGFyKiBwID0g
aGVhZGVyICsgc2l6ZW9mKHdlYlNvY2tldFNlcnZlckhhbmRzaGFrZUhlYWRlcikgLSAxOworICAg
IGNvbnN0IGNoYXIqIGVuZCA9IGhlYWRlciArIGxlbiArIDE7CisKKyAgICBpZiAobV9tb2RlID09
IE5vcm1hbCkgeworICAgICAgICBzaXplX3QgaGVhZGVyU2l6ZSA9IGVuZCAtIHA7CisgICAgICAg
IGlmIChoZWFkZXJTaXplIDwgc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMSkKKyAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAobWVtY21wKHAsIHdlYlNvY2tldFVwZ3Jh
ZGVIZWFkZXIsIHNpemVvZih3ZWJTb2NrZXRVcGdyYWRlSGVhZGVyKSAtIDEpKSB7CisgICAgICAg
ICAgICBMT0coTmV0d29yaywgIkJhZCB1cGdyYWRlIGhlYWRlcjogJXMiLCBwKTsKKyAgICAgICAg
ICAgIHJldHVybiBwIC0gaGVhZGVyICsgc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0g
MTsKKyAgICAgICAgfQorICAgICAgICBwICs9IHNpemVvZih3ZWJTb2NrZXRVcGdyYWRlSGVhZGVy
KSAtIDE7CisKKyAgICAgICAgaGVhZGVyU2l6ZSA9IGVuZCAtIHA7CisgICAgICAgIGlmIChoZWFk
ZXJTaXplIDwgc2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXIpIC0gMSkKKyAgICAgICAg
ICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKG1lbWNtcChwLCB3ZWJTb2NrZXRDb25uZWN0aW9u
SGVhZGVyLCBzaXplb2Yod2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlcikgLSAxKSkgeworICAgICAg
ICAgICAgTE9HKE5ldHdvcmssICJCYWQgY29ubmVjdGlvbiBoZWFkZXI6ICVzIiwgcCk7CisgICAg
ICAgICAgICByZXR1cm4gcCAtIGhlYWRlciArIHNpemVvZih3ZWJTb2NrZXRDb25uZWN0aW9uSGVh
ZGVyKSAtIDE7CisgICAgICAgIH0KKyAgICAgICAgcCArPSBzaXplb2Yod2ViU29ja2V0Q29ubmVj
dGlvbkhlYWRlcikgLSAxOworICAgIH0KKworICAgIGlmICghc3RybnN0cihwLCAiXHJcblxyXG4i
LCBlbmQgLSBwKSkgeworICAgICAgICAvLyBKdXN0IGhhc24ndCBiZWVuIHJlY2VpdmVkIGZ1bGx5
IHlldC4KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBIVFRQSGVhZGVyTWFwIGhlYWRl
cnM7CisgICAgcCA9IHJlYWRIVFRQSGVhZGVycyhwLCBlbmQsICZoZWFkZXJzKTsKKyAgICBpZiAo
IXApIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJyZWFkSFRUUEhlYWRlcnMgZmFpbGVkIik7Cisg
ICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAgICAgICAgcmV0dXJuIGxlbjsKKyAgICB9CisgICAg
aWYgKCFwcm9jZXNzSGVhZGVycyhoZWFkZXJzKSkgeworICAgICAgICBMT0coTmV0d29yaywgImhl
YWRlciBwcm9jZXNzIGZhaWxlZCIpOworICAgICAgICBtX21vZGUgPSBGYWlsZWQ7CisgICAgICAg
IHJldHVybiBwIC0gaGVhZGVyOworICAgIH0KKyAgICBzd2l0Y2ggKG1fbW9kZSkgeworICAgIGNh
c2UgTm9ybWFsOgorICAgICAgICBjaGVja1Jlc3BvbnNlSGVhZGVycygpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBtX21vZGUgPSBGYWlsZWQ7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICByZXR1cm4gcCAtIGhlYWRlcjsKK30KKworV2ViU29ja2V0SGFuZHNoYWtl
OjpNb2RlIFdlYlNvY2tldEhhbmRzaGFrZTo6bW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bW9kZTsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlcldlYlNv
Y2tldE9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3NPcmlnaW47Cit9CisKK3ZvaWQg
V2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oY29uc3QgU3RyaW5n
JiB3ZWJTb2NrZXRPcmlnaW4pCit7CisgICAgbV93c09yaWdpbiA9IHdlYlNvY2tldE9yaWdpbjsK
K30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlcldlYlNvY2tldExv
Y2F0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93c0xvY2F0aW9uOworfQorCit2b2lkIFdl
YlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyV2ViU29ja2V0TG9jYXRpb24oY29uc3QgU3RyaW5n
JiB3ZWJTb2NrZXRMb2NhdGlvbikKK3sKKyAgICBtX3dzTG9jYXRpb24gPSB3ZWJTb2NrZXRMb2Nh
dGlvbjsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlcldlYlNv
Y2tldFByb3RvY29sKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93c1Byb3RvY29sOworfQorCit2
b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyV2ViU29ja2V0UHJvdG9jb2woY29uc3Qg
U3RyaW5nJiB3ZWJTb2NrZXRQcm90b2NvbCkKK3sKKyAgICBtX3dzUHJvdG9jb2wgPSB3ZWJTb2Nr
ZXRQcm90b2NvbDsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZl
clNldENvb2tpZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2V0Q29va2llOworfQorCit2b2lk
IFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyU2V0Q29va2llKGNvbnN0IFN0cmluZyYgc2V0
Q29va2llKQoreworICAgIG1fc2V0Q29va2llID0gc2V0Q29va2llOworfQorCitjb25zdCBTdHJp
bmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyU2V0Q29va2llMigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fc2V0Q29va2llMjsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFNl
cnZlclNldENvb2tpZTIoY29uc3QgU3RyaW5nJiBzZXRDb29raWUyKQoreworICAgIG1fc2V0Q29v
a2llMiA9IHNldENvb2tpZTI7Cit9CisKK0tVUkwgV2ViU29ja2V0SGFuZHNoYWtlOjpodHRwVVJM
Rm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3QKK3sKKyAgICBLVVJMIHVybCA9IG1f
dXJsLmNvcHkoKTsKKyAgICB1cmwuc2V0UHJvdG9jb2wobV9zZWN1cmUgPyAiaHR0cHMiIDogImh0
dHAiKTsKKyAgICByZXR1cm4gdXJsOworfQorCitjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hh
a2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kLCBI
VFRQSGVhZGVyTWFwKiBoZWFkZXJzKQoreworICAgIFZlY3RvcjxjaGFyPiBuYW1lOworICAgIFZl
Y3RvcjxjaGFyPiB2YWx1ZTsKKyAgICBmb3IgKGNvbnN0IGNoYXIqIHAgPSBzdGFydDsgcCA8IGVu
ZDsgcCsrKSB7CisgICAgICAgIG5hbWUuY2xlYXIoKTsKKyAgICAgICAgdmFsdWUuY2xlYXIoKTsK
KworICAgICAgICBmb3IgKDsgcCA8IGVuZDsgcCsrKSB7CisgICAgICAgICAgICBzd2l0Y2ggKCpw
KSB7CisgICAgICAgICAgICBjYXNlICdccic6CisgICAgICAgICAgICAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwICsgMSA8IGVuZCAmJiAqKHAgKyAx
KSA9PSAnXG4nKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAgKyAyOworICAgICAg
ICAgICAgICAgICAgICBMT0coTmV0d29yaywgIkNSIGRvZXNuJ3QgZm9sbG93IExGIHA9JXAgZW5k
PSVwIiwgcCwgZW5kKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiVW5leHBlY3RlZCBDUiBpbiBu
YW1lIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBjYXNlICdcbic6
CisgICAgICAgICAgICAgICAgTE9HKE5ldHdvcmssICJVbmV4cGVjdGVkIExGIGluIG5hbWUiKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGNhc2UgJzonOgorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBp
ZiAoKnAgPj0gMHg0MSAmJiAqcCA8PSAweDVhKQorICAgICAgICAgICAgICAgICAgICBuYW1lLmFw
cGVuZCgqcCArIDB4MjApOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgbmFtZS5hcHBlbmQoKnApOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKCpwID09ICc6JykgeworICAgICAgICAgICAgICAgICsrcDsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGZvciAoOyBwIDwgZW5kICYmICpwID09IDB4MjA7IHArKykgeyB9CisKKyAgICAgICAgZm9y
ICg7IHAgPCBlbmQ7IHArKykgeworICAgICAgICAgICAgc3dpdGNoICgqcCkgeworICAgICAgICAg
ICAgY2FzZSAnXHInOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAn
XG4nOgorICAgICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiVW5leHBlY3RlZCBMRiBpbiB2YWx1
ZSIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICB2YWx1ZS5hcHBlbmQoKnApOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKCpwID09ICdccicpIHsKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHAgPj0gZW5k
IHx8ICpwICE9ICdcbicpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiQ1IgZG9lc24ndCBm
b2xsb3cgTEYgYWZ0ZXIgdmFsdWUgcD0lcCBlbmQ9JXAiLCBwLCBlbmQpOworICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgQXRvbWljU3RyaW5nIG5hbWVTdHIoU3RyaW5n
Ojpmcm9tVVRGOChuYW1lLmRhdGEoKSwgbmFtZS5zaXplKCkpKTsKKyAgICAgICAgU3RyaW5nIHZh
bHVlU3RyID0gU3RyaW5nOjpmcm9tVVRGOCh2YWx1ZS5kYXRhKCksIHZhbHVlLnNpemUoKSk7Cisg
ICAgICAgIExPRyhOZXR3b3JrLCAibmFtZT0lcyB2YWx1ZT0lcyIsIG5hbWVTdHIuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgdmFsdWVTdHIudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGhlYWRlcnMt
PmFkZChuYW1lU3RyLCB2YWx1ZVN0cik7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiAwOworfQorCitib29sIFdlYlNvY2tldEhhbmRzaGFrZTo6cHJvY2Vzc0hl
YWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKK3sKKyAgICBmb3IgKEhUVFBIZWFk
ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVycy5iZWdpbigpOyBpdCAhPSBoZWFkZXJz
LmVuZCgpOyArK2l0KSB7CisgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7CisgICAgICAgIGNhc2Ug
Tm9ybWFsOgorICAgICAgICAgICAgaWYgKGl0LT5maXJzdCA9PSAid2Vic29ja2V0LW9yaWdpbiIp
CisgICAgICAgICAgICAgICAgbV93c09yaWdpbiA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBl
bHNlIGlmIChpdC0+Zmlyc3QgPT0gIndlYnNvY2tldC1sb2NhdGlvbiIpCisgICAgICAgICAgICAg
ICAgbV93c0xvY2F0aW9uID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGl0LT5m
aXJzdCA9PSAid2Vic29ja2V0LXByb3RvY29sIikKKyAgICAgICAgICAgICAgICBtX3dzUHJvdG9j
b2wgPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJzZXQt
Y29va2llIikKKyAgICAgICAgICAgICAgICBtX3NldENvb2tpZSA9IGl0LT5zZWNvbmQ7CisgICAg
ICAgICAgICBlbHNlIGlmIChpdC0+Zmlyc3QgPT0gInNldC1jb29raWUyIikKKyAgICAgICAgICAg
ICAgICBtX3NldENvb2tpZTIgPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIGNhc2UgSW5jb21wbGV0ZToKKyAgICAgICAgY2FzZSBGYWlsZWQ6CisgICAgICAgIGNh
c2UgQ29ubmVjdGVkOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2hlY2tSZXNwb25zZUhlYWRlcnMoKQor
eworICAgIEFTU0VSVChtX21vZGUgPT0gTm9ybWFsKTsKKyAgICBtX21vZGUgPSBGYWlsZWQ7Cisg
ICAgaWYgKG1fd3NPcmlnaW4uaXNOdWxsKCkgfHwgbV93c0xvY2F0aW9uLmlzTnVsbCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoY2xpZW50T3JpZ2luKCkgIT0gbV93c09yaWdpbikgewor
ICAgICAgICBMT0coTmV0d29yaywgIk1pc21hdGNoIG9yaWdpbjogJXMgIT0gJXMiLCBjbGllbnRP
cmlnaW4oKS51dGY4KCkuZGF0YSgpLCBtX3dzT3JpZ2luLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmIChjbGllbnRMb2NhdGlvbigpICE9IG1fd3NMb2NhdGlv
bikgeworICAgICAgICBMT0coTmV0d29yaywgIk1pc21hdGNoIGxvY2F0aW9uOiAlcyAhPSAlcyIs
IGNsaWVudExvY2F0aW9uKCkudXRmOCgpLmRhdGEoKSwgbV93c0xvY2F0aW9uLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghbV9jbGllbnRQcm90b2NvbC5p
c0VtcHR5KCkgJiYgbV9jbGllbnRQcm90b2NvbCAhPSBtX3dzUHJvdG9jb2wpIHsKKyAgICAgICAg
TE9HKE5ldHdvcmssICJNaXNtYXRjaCBwcm90b2NvbDogJXMgIT0gJXMiLCBtX2NsaWVudFByb3Rv
Y29sLnV0ZjgoKS5kYXRhKCksIG1fd3NQcm90b2NvbC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBtX21vZGUgPSBDb25uZWN0ZWQ7CisgICAgcmV0dXJuOworfQor
Cit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VU
UykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBi
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5kNWRiZTY4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViU29ja2V0SGFuZHNoYWtlX2gKKyNkZWZpbmUgV2ViU29ja2V0SGFuZHNoYWtlX2gKKworI2lm
IEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIGNsYXNz
IEhUVFBIZWFkZXJNYXA7CisKKyAgICBjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2UgOiBwdWJsaWMg
Tm9uY29weWFibGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgZW51bSBNb2RlIHsKKyAgICAgICAg
ICAgIEluY29tcGxldGUsIE5vcm1hbCwgRmFpbGVkLCBDb25uZWN0ZWQKKyAgICAgICAgfTsKKyAg
ICAgICAgV2ViU29ja2V0SGFuZHNoYWtlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgICAgIH5XZWJTb2NrZXRIYW5kc2hh
a2UoKTsKKworICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKKyAgICAgICAgdm9pZCBz
ZXRVUkwoY29uc3QgS1VSTCYpOworICAgICAgICBjb25zdCBTdHJpbmcgaG9zdCgpIGNvbnN0Owor
CisgICAgICAgIGNvbnN0IFN0cmluZyYgY2xpZW50UHJvdG9jb2woKSBjb25zdDsKKyAgICAgICAg
dm9pZCBzZXRDbGllbnRQcm90b2NvbChjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKKworICAgICAg
ICBib29sIHNlY3VyZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNlY3VyZShib29sIHNlY3Vy
ZSk7CisKKyAgICAgICAgU3RyaW5nIGNsaWVudE9yaWdpbigpIGNvbnN0OworICAgICAgICBTdHJp
bmcgY2xpZW50TG9jYXRpb24oKSBjb25zdDsKKworICAgICAgICBDU3RyaW5nIGNsaWVudEhhbmRz
aGFrZU1lc3NhZ2UoKSBjb25zdDsKKworICAgICAgICB2b2lkIHJlc2V0KCk7CisKKyAgICAgICAg
aW50IHJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgbGVuKTsK
KyAgICAgICAgTW9kZSBtb2RlKCkgY29uc3Q7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2
ZXJXZWJTb2NrZXRPcmlnaW4oKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTZXJ2ZXJXZWJTb2Nr
ZXRPcmlnaW4oY29uc3QgU3RyaW5nJiB3ZWJTb2NrZXRPcmlnaW4pOworCisgICAgICAgIGNvbnN0
IFN0cmluZyYgc2VydmVyV2ViU29ja2V0TG9jYXRpb24oKSBjb25zdDsKKyAgICAgICAgdm9pZCBz
ZXRTZXJ2ZXJXZWJTb2NrZXRMb2NhdGlvbihjb25zdCBTdHJpbmcmIHdlYlNvY2tldExvY2F0aW9u
KTsKKworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZlcldlYlNvY2tldFByb3RvY29sKCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0U2VydmVyV2ViU29ja2V0UHJvdG9jb2woY29uc3QgU3RyaW5n
JiB3ZWJTb2NrZXRQcm90b2NvbCk7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJTZXRD
b29raWUoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTZXJ2ZXJTZXRDb29raWUoY29uc3QgU3Ry
aW5nJiBzZXRDb29raWUpOworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZlclNldENvb2tpZTIo
KSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTZXJ2ZXJTZXRDb29raWUyKGNvbnN0IFN0cmluZyYg
c2V0Q29va2llMik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBLVVJMIGh0dHBVUkxGb3JBdXRo
ZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdDsKKworICAgICAgICAvLyBSZWFkcyBhbGwgaGVh
ZGVycyBleGNlcHQgZm9yIHRoZSB0d28gcHJlZGVmaW5lZCBvbmVzLgorICAgICAgICBjb25zdCBj
aGFyKiByZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCwg
SFRUUEhlYWRlck1hcCogaGVhZGVycyk7CisgICAgICAgIGJvb2wgcHJvY2Vzc0hlYWRlcnMoY29u
c3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycyk7CisgICAgICAgIHZvaWQgY2hlY2tSZXNwb25zZUhl
YWRlcnMoKTsKKworICAgICAgICBLVVJMIG1fdXJsOworICAgICAgICBTdHJpbmcgbV9jbGllbnRQ
cm90b2NvbDsKKyAgICAgICAgYm9vbCBtX3NlY3VyZTsKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogbV9jb250ZXh0OworCisgICAgICAgIE1vZGUgbV9tb2RlOworCisgICAgICAgIFN0
cmluZyBtX3dzT3JpZ2luOworICAgICAgICBTdHJpbmcgbV93c0xvY2F0aW9uOworICAgICAgICBT
dHJpbmcgbV93c1Byb3RvY29sOworICAgICAgICBTdHJpbmcgbV9zZXRDb29raWU7CisgICAgICAg
IFN0cmluZyBtX3NldENvb2tpZTI7CisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAgLy8gV2ViU29ja2V0
SGFuZHNoYWtlX2g=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39172</attachid>
            <date>2009-09-07 22:56:02 -0700</date>
            <delta_ts>2009-09-10 03:24:04 -0700</delta_ts>
            <desc>WebSocket API implementation. (add vcproj build)</desc>
            <filename>bug-28038-20090908145600.patch</filename>
            <type>text/plain</type>
            <size>172227</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA0OGYzNWU0Li5lNzJlNWQ3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMDktMDktMDcgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IFdURjo6
dHJ5RmFzdE1hbGxvYyB1c2VkIGluIFdlYlNvY2tldENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODAzOAorICAgICAgICAKKyAgICAgICAg
Rml4IHdpbmRvd3MgYnVpbGQgdG8gcjQ4MTIxLCB0aGF0IHdhcyByZXZlcnRlZCBieSByNDgxMzcu
CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVfZGVidWcu
ZGVmOgorCiAyMDA5LTA5LTA3ICBEcmV3IFdpbHNvbiAgPGF0d2lsc29uQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgUmV2ZXJ0aW5nIHI0ODEyMSB0byBmaXggV2luZG93cyBidWlsZCBlcnJvcnMuCmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAgYi9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggYTAyOTcyNC4uY2Q4MGQ3NCAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmV4cApAQCAtMjk0LDYgKzI5NCw3IEBAIF9fWk4zV1RGMTJkZXRhY2hU
aHJlYWRFagogX19aTjNXVEYxMmlzTWFpblRocmVhZEV2CiBfX1pOM1dURjEycmFuZG9tTnVtYmVy
RXYKIF9fWk4zV1RGMTNjdXJyZW50VGhyZWFkRXYKK19fWk4zV1RGMTN0cnlGYXN0TWFsbG9jRW0K
IF9fWk4zV1RGMTN0cnlGYXN0Q2FsbG9jRW1tCiBfX1pOM1dURjEzdHJ5RmFzdE1hbGxvY0VtCiBf
X1pOM1dURjE1VGhyZWFkQ29uZGl0aW9uNHdhaXRFUk5TXzVNdXRleEUKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5kZWYgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCmluZGV4IDcwMDU5YzguLjQwYjJkOTEgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5kZWYKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtMjcwLDYgKzI3MCw3
IEBAIEVYUE9SVFMKICAgICA/dG9VSW50MzJAVVN0cmluZ0BKU0NAQFFCRUlQQV9OX05AWgogICAg
ID90b1VJbnQzMlNsb3dDYXNlQEpTQ0BAWUFJTkFBX05AWgogICAgID90cnlGYXN0Q2FsbG9jQFdU
RkBAWUE/QVVUcnlNYWxsb2NSZXR1cm5WYWx1ZUAxQElJQFoKKyAgICA/dHJ5RmFzdE1hbGxvY0BX
VEZAQFlBP0FVVHJ5TWFsbG9jUmV0dXJuVmFsdWVAMUBJQFoKICAgICA/dHJ5TG9ja0BNdXRleEBX
VEZAQFFBRV9OWFoKICAgICA/dHlwZUBEZWJ1Z2dlckNhbGxGcmFtZUBKU0NAQFFCRT9BVzRUeXBl
QDEyQFhaCiAgICAgP3VubG9ja0BKU0xvY2tASlNDQEBTQVhXNEpTTG9ja0JlaGF2aW9yQDJAQFoK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZV9kZWJ1Zy5kZWYgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVfZGVidWcuZGVmCmlu
ZGV4IDgxNjU2MmYuLmJkMDk2YTUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZV9kZWJ1Zy5kZWYKKysr
IGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlX2RlYnVnLmRlZgpAQCAtMjcwLDYgKzI3MCw3IEBAIEVYUE9SVFMKICAgICA/
dG9VSW50MzJAVVN0cmluZ0BKU0NAQFFCRUlQQV9OX05AWgogICAgID90b1VJbnQzMlNsb3dDYXNl
QEpTQ0BAWUFJTkFBX05AWgogICAgID90cnlGYXN0Q2FsbG9jQFdURkBAWUE/QVVUcnlNYWxsb2NS
ZXR1cm5WYWx1ZUAxQElJQFoKKyAgICA/dHJ5RmFzdE1hbGxvY0BXVEZAQFlBP0FVVHJ5TWFsbG9j
UmV0dXJuVmFsdWVAMUBJQFoKICAgICA/dHJ5TG9ja0BNdXRleEBXVEZAQFFBRV9OWFoKICAgICA/
dHlwZUBEZWJ1Z2dlckNhbGxGcmFtZUBKU0NAQFFCRT9BVzRUeXBlQDEyQFhaCiAgICAgP3VubG9j
a0BKU0xvY2tASlNDQEBTQVhXNEpTTG9ja0JlaGF2aW9yQDJAQFoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZTJiNmM4Li44
MjNmZjM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDktMDcgIEZ1bWl0b3NoaSBVa2Fp
ICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIFdlYlNvY2tldCBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODAzOAorICAgICAgICAKKyAgICAgICAgRml4IHdp
bmRvd3MgYnVpbGQgdG8gcjQ4MTIxLCB0aGF0IHdhcyByZXZlcnRlZCBieSByNDgxMzcuCisgICAg
ICAgIFdlYlNvY2tldCBjb25zdHJ1Y3RvciBpcyBhdmFpbGFibGUgaW4gd2luZG93IG9iamVjdC4K
KworICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLTItZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dDoK
KwogMjAwOS0wOS0wNyAgRHJldyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgogCiAgICAg
ICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRl
eCA3NzE5ZmQ1Li4yYmE5MDcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTE1MTQsNiArMTUx
NCwxMyBAQCB3aW5kb3cuV2ViS2l0UG9pbnQgW29iamVjdCBXZWJLaXRQb2ludENvbnN0cnVjdG9y
XQogd2luZG93LldlYktpdFBvaW50LnByb3RvdHlwZSBbb2JqZWN0IFdlYktpdFBvaW50UHJvdG90
eXBlXQogd2luZG93LldlYktpdFRyYW5zaXRpb25FdmVudCBbb2JqZWN0IFdlYktpdFRyYW5zaXRp
b25FdmVudENvbnN0cnVjdG9yXQogd2luZG93LldlYktpdFRyYW5zaXRpb25FdmVudC5wcm90b3R5
cGUgW3ByaW50ZWQgYWJvdmUgYXMgd2luZG93LkV2ZW50LnByb3RvdHlwZV0KK3dpbmRvdy5XZWJT
b2NrZXQgW29iamVjdCBXZWJTb2NrZXRDb25zdHJ1Y3Rvcl0KK3dpbmRvdy5XZWJTb2NrZXQucHJv
dG90eXBlIFtvYmplY3QgV2ViU29ja2V0UHJvdG90eXBlXQord2luZG93LldlYlNvY2tldC5wcm90
b3R5cGUuQ0xPU0VEIFtudW1iZXJdCit3aW5kb3cuV2ViU29ja2V0LnByb3RvdHlwZS5DT05ORUNU
SU5HIFtudW1iZXJdCit3aW5kb3cuV2ViU29ja2V0LnByb3RvdHlwZS5PUEVOIFtudW1iZXJdCit3
aW5kb3cuV2ViU29ja2V0LnByb3RvdHlwZS5jbG9zZSBbZnVuY3Rpb25dCit3aW5kb3cuV2ViU29j
a2V0LnByb3RvdHlwZS5zZW5kIFtmdW5jdGlvbl0KIHdpbmRvdy5XaGVlbEV2ZW50IFtvYmplY3Qg
V2hlZWxFdmVudENvbnN0cnVjdG9yXQogd2luZG93LldoZWVsRXZlbnQucHJvdG90eXBlIFtwcmlu
dGVkIGFib3ZlIGFzIHdpbmRvdy5FdmVudC5wcm90b3R5cGVdCiB3aW5kb3cuV29ya2VyIFtvYmpl
Y3QgV29ya2VyQ29uc3RydWN0b3JdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9w
cm90b3R5cGUtaW5oZXJpdGFuY2UtMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtMi1leHBlY3RlZC50eHQKaW5kZXggMzUwMTcwYy4uMDRh
ZDFhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRh
bmNlLTItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1p
bmhlcml0YW5jZS0yLWV4cGVjdGVkLnR4dApAQCAtMzYzLDYgKzM2Myw3IEBAIE5ldmVyIGZvdW5k
IFRleHRNZXRyaWNzCiBOZXZlciBmb3VuZCBXZWJLaXRDU1NNYXRyaXgKIE5ldmVyIGZvdW5kIFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlCiBOZXZlciBmb3VuZCBXZWJLaXRQb2ludAorTmV2ZXIgZm91
bmQgV2ViU29ja2V0CiBOZXZlciBmb3VuZCBXb3JrZXIKIE5ldmVyIGZvdW5kIFhNTEh0dHBSZXF1
ZXN0CiBOZXZlciBmb3VuZCBYTUxIdHRwUmVxdWVzdFVwbG9hZApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQKaW5kZXgg
YmY0YjcwZC4uZmE1Y2MyZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90
eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9w
cm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0CkBAIC0zMzcsNiArMzM3LDggQEAgUEFT
UyBpbm5lci5XZWJLaXRQb2ludC5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIuV2ViS2l0UG9p
bnQuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLldlYktpdFRyYW5zaXRp
b25FdmVudC5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIuV2ViS2l0VHJhbnNpdGlvbkV2ZW50
LmNvbnN0cnVjdG9yLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5XZWJTb2NrZXQuaXNJbm5l
ciBpcyB0cnVlCitQQVNTIGlubmVyLldlYlNvY2tldC5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRy
dWUKIFBBU1MgaW5uZXIuV2hlZWxFdmVudC5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIuV2hl
ZWxFdmVudC5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIuV29ya2VyLmlz
SW5uZXIgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9nbG9iYWwtY29u
c3RydWN0b3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvanMvZ2xvYmFsLWNvbnN0
cnVjdG9ycy1leHBlY3RlZC50eHQKaW5kZXggNzQyMzI1YS4uMGQzMTZhMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CkBA
IC0xNjMsNiArMTYzLDcgQEAgUEFTUyBXZWJLaXRDU1NNYXRyaXgudG9TdHJpbmcoKSBpcyAnW29i
amVjdCBXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvcl0nCiBQQVNTIFdlYktpdENTU1RyYW5zZm9y
bVZhbHVlLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWVDb25z
dHJ1Y3Rvcl0nCiBQQVNTIFdlYktpdFBvaW50LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgV2ViS2l0
UG9pbnRDb25zdHJ1Y3Rvcl0nCiBQQVNTIFdlYktpdFRyYW5zaXRpb25FdmVudC50b1N0cmluZygp
IGlzICdbb2JqZWN0IFdlYktpdFRyYW5zaXRpb25FdmVudENvbnN0cnVjdG9yXScKK1BBU1MgV2Vi
U29ja2V0LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgV2ViU29ja2V0Q29uc3RydWN0b3JdJwogUEFT
UyBXaGVlbEV2ZW50LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgV2hlZWxFdmVudENvbnN0cnVjdG9y
XScKIFBBU1MgV29ya2VyLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgV29ya2VyQ29uc3RydWN0b3Jd
JwogUEFTUyBYTUxEb2N1bWVudC50b1N0cmluZygpIGlzICdbb2JqZWN0IERvY3VtZW50Q29uc3Ry
dWN0b3JdJwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBiZTAwYWUzLi5mYjkyODkxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAwOS0wOS0wNyAgRnVt
aXRvc2hpIFVrYWkgIDx1a2FpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJTb2NrZXQgQVBJIGltcGxlbWVudGF0aW9uIGFn
YWluLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjgw
MzgKKyAgICAgICAgCisgICAgICAgIEZpeCB3aW5kb3dzIGJ1aWxkLiBBZGQgYnVpbGQgc3lzdGVt
IGZvciBXZWJDb3JlLnZjcHJvagorICAgICAgICB0byByNDgxMjEsIHRoYXQgd2FzIHJldmVydGVk
IGJ5IHI0ODEzNy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlQ29tbW9uLnZzcHJvcHM6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93
Ojp3ZWJTb2NrZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjp0b0V2ZW50VGFyZ2V0
KToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRUYXJnZXQ6OnRvV2ViU29ja2V0KToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzazo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NXZWJTb2NrZXRFdmVudFRhc2s6OnBlcmZv
cm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NXZWJTb2NrZXRFdmVudFRhc2s6OlBy
b2Nlc3NXZWJTb2NrZXRFdmVudFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFByb3Rv
Y29sU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y29ubmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmJ1ZmZlcmVkQW1vdW50
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldDo6ZGlkQ29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZFJl
Y2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkQ2xvc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaXNwYXRjaE9wZW5FdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNoTWVzc2FnZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldDo6ZGlzcGF0Y2hDbG9zZUV2ZW50KToKKyAgICAgICAgKiB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjopOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjpzZXRPbm9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojpvbm9wZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpzZXRPbm1lc3NhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Ojpvbm1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
OjpzZXRPbmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6b25jbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnRvV2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6ZXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRlcmVm
RXZlbnRUYXJnZXQpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6V2ViU29ja2V0Q2hh
bm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjp+V2ViU29ja2V0Q2hh
bm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0Q2hhbm5lbDo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hh
bm5lbDo6d2lsbE9wZW5TdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5l
bDo6d2lsbFNlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRp
ZE9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkQ2xvc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjphcHBlbmRUb0J1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRDaGFubmVsOjpza2lwQnVmZmVyKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFu
bmVsOjpjcmVhdGUpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVu
dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWxDbGllbnQ6On5X
ZWJTb2NrZXRDaGFubmVsQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5u
ZWxDbGllbnQ6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5l
bENsaWVudDo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
Q2hhbm5lbENsaWVudDo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hh
bm5lbENsaWVudDo6V2ViU29ja2V0Q2hhbm5lbENsaWVudCk6CisgICAgICAgICogd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RSZXNwb25zZUNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpX
ZWJTb2NrZXRIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtl
Ojp+V2ViU29ja2V0SGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRz
aGFrZTo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6c2V0VVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6aG9zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudFByb3RvY29sKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6c2V0Q2xpZW50UHJvdG9jb2wpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpzZWN1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZWN1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0SGFuZHNoYWtlOjpjbGllbnRPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SGFuZHNoYWtlOjpjbGllbnRMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0SGFuZHNoYWtlOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRI
YW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SGFuZHNoYWtlOjptb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFr
ZTo6c2VydmVyV2ViU29ja2V0T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhh
bmRzaGFrZTo6c2V0U2VydmVyV2ViU29ja2V0T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEhhbmRzaGFrZTo6c2VydmVyV2ViU29ja2V0TG9jYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJXZWJTb2NrZXRMb2NhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlcldlYlNvY2tldFByb3Rv
Y29sKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyV2Vi
U29ja2V0UHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpz
ZXJ2ZXJTZXRDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpz
ZXRTZXJ2ZXJTZXRDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtl
OjpzZXJ2ZXJTZXRDb29raWUyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFr
ZTo6c2V0U2VydmVyU2V0Q29va2llMik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5k
c2hha2U6Omh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpwcm9jZXNzSGVhZGVycyk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OmNoZWNrUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAg
KiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEhhbmRzaGFrZTo6KToKKwogMjAwOS0wOS0wNyAgS2V2aW4gT2xsaXZpZXIg
IDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICB3eCBidWlsZCBmaXggZm9yIDIu
OCBjb21waWxhdGlvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwIGIv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggOWJjNjNiYS4uNDA4ZGFiYSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5jcHAKQEAgLTM0MSw2ICszNDEsNyBAQAogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTTWF0cml4
LmNwcCIKICNpbmNsdWRlICJKU1dlYktpdFBvaW50LmNwcCIKICNpbmNsdWRlICJKU1dlYktpdFRy
YW5zaXRpb25FdmVudC5jcHAiCisjaW5jbHVkZSAiSlNXZWJTb2NrZXQuY3BwIgogI2luY2x1ZGUg
IkpTV2hlZWxFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNXb3JrZXIuY3BwIgogI2luY2x1ZGUgIkpT
V29ya2VyQ29udGV4dC5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA4NzNlMDZiLi44NGI3OGFhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAg
LTMyMzUsNyArMzIzNSwxMiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggXAogCVdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBcCiAJV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAgXAotCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorCVdlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuY3BwIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIFwK
KwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIFwKKwlXZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBcCisJV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5oCiAKIHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtRXJyb3IuaCBcCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA1ZDExYzM5Li41MDhhNmY2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY3LDcgKzY3LDcgQEAKIAkJCS8+DQogCQkJ
PFRvb2wNCiAJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5l
PSJta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OyYjeDBEOyYjeDBBO21rZGly
IDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2Fy
ZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBh
cnNlciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBE
OyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcbWFzbSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7
TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hl
YWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVv
dDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsmI3gwRDsmI3gwQTtta2Rp
ciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVu
aWNvZGUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZx
dW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxjb25maWcuaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5caW5zcGVjdG9yXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXBwY2FjaGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2ZcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGljb25cKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caGlzdG9yeVwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XGNmXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5cbm90aWZpY2F0aW9uc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxjc3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9ybXNcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
d2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XGdyYXBoaWNzXG9wZW50eXBlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXHRleHRcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1xjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdpblwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxzcWxcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2Fpcm9cY2Fpcm9cc3Jj
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpz
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb25cKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW5cKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW5cKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZVwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxlZGl0aW5nXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlx4bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5cc3ZnXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXHN0b3JhZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
d29ya2Vyc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9y
d2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJz
XHBhcnNlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcbWFzbVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVy
c1xwY3JlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
XEZvcndhcmRpbmdIZWFkZXJzXHBjcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJz
XHByb2ZpbGVyJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3cmVjXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJz
XHd0ZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyc1x3dGYmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJz
XHd0Zlx1bmljb2RlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3VcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3Rm
XHVuaWNvZGVcaWN1JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGluc3BlY3RvciZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNsdWRlOnhjb3B5LmV4Y2x1ZGVzICZx
dW90OyQoUHJvamVjdERpcilcLi5caW5zcGVjdG9yXGZyb250LWVuZFwqJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gw
RDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktp
dC5yZXNvdXJjZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAvcyAvZXhj
bHVkZTp4Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4uXEVuZ2xpc2gubHByb2pc
bG9jYWxpemVkU3RyaW5ncy5qcyZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdl
YktpdC5yZXNvdXJjZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTtpZiBl
eGlzdCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQmcXVvdDsgZGVsICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxidWlsZGZhaWxlZCZxdW90OyYjeDBEOyYjeDBBOyINCisJCQkJ
Q29tbWFuZExpbmU9Im1rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7JiN4MEQ7
JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDIm
Z3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNccGFyc2VyJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1l
JnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtJnF1b3Q7JiN4MEQ7JiN4MEE7
bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyc1xwY3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xw
cm9maWxlciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3JlYyZxdW90OyYjeDBE
OyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtO
VUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVyc1x3dGZcdW5pY29kZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVu
aWNvZGVcaWN1JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGNvbmZpZy5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XHdpblwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3JcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcHBjYWNoZVwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxjZlwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcaWNvblwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3RvcnlcY2ZcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caHRtbFwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxub3RpZmljYXRpb25zXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNzc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb25cKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2ZcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNm
b3Jtc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVxncmFwaGljc1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1wqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcd2luXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbFwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxjYWly
b1xjYWlyb1xzcmNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
YmluZGluZ3NcanNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
cGFnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXGFu
aW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwYWdl
XHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2Vc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1wqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdpblwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHN0eWxlXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGVkaXRpbmdcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cZG9tXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHhtbFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5cc3RvcmFnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlx3ZWJzb2NrZXRzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHdvcmtlcnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJk
aW5nSGVhZGVyc1xwYXJzZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1l
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXG1hc21cKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcbWFzbSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2Fy
ZGluZ0hlYWRlcnNccGNyZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlclwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1xwcm9maWxlciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3JlY1wqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3cmVjJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJk
aW5nSGVhZGVyc1x3dGZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1x3dGZcdW5pY29kZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcaWN1XCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdI
ZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO21rZGly
IDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xp
bnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAvcyAvZXhjbHVkZTp4Y29weS5l
eGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4uXGluc3BlY3Rvclxmcm9udC1lbmRcKiZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcaW5zcGVjdG9y
JnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxFbmds
aXNoLmxwcm9qXGxvY2FsaXplZFN0cmluZ3MuanMmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7
JiN4MEE7aWYgZXhpc3QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJ1aWxkZmFpbGVkJnF1b3Q7
IGRlbCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQmcXVvdDsmI3gwRDsmI3gw
QTsiDQogCQkJLz4NCiAJCTwvQ29uZmlndXJhdGlvbj4NCiAJCTxDb25maWd1cmF0aW9uDQpAQCAt
MTIzLDcgKzEyMyw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUG9zdEJ1aWxk
RXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0ibWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7
TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hl
YWRlcnMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzJnF1b3Q7JiN4
MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAy
Jmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXG1hc20m
cXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBjcmUmcXVvdDsmI3gwRDsmI3gwQTtt
a2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVy
c1x3cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGYmcXVvdDsmI3gwRDsm
I3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIg
MiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3UmcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cY29uZmlnLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291cmNlc1wq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxp
dHlcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGluc3Bl
Y3RvclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNh
Y2hlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxh
cmNoaXZlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRl
clxhcmNoaXZlXGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGxvYWRlclxpY29uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGhpc3RvcnlcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caGlz
dG9yeVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxodG1s
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXG5vdGlmaWNhdGlv
bnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cY3NzXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGFuaW1hdGlvblwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxjZlwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFw
aGljc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVxncmFwaGljc1x0cmFuc2Zvcm1zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZVwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0XCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpblwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdv
cmtcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cbmV0d29ya1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cc3FsXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBsYXRmb3JtXGNhaXJvXGNhaXJvXHNyY1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xqc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxwYWdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBhZ2Vcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGJyaWRnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxwbHVnaW5zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsdWdpbnNcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHJlbmRlcmluZ1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxy
ZW5kZXJpbmdcc3R5bGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cZWRpdGluZ1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxk
b21cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ceG1sXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1wqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxzdG9yYWdlXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdvcmtlcnNcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdI
ZWFkZXJzXGJpbmRpbmdzJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJk
aW5nSGVhZGVyc1xydW50aW1lXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXG1hc21c
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2Fy
ZGluZ0hlYWRlcnNcbWFzbSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccGNyZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5n
SGVhZGVyc1xwcm9maWxlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3JlY1wq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1x3cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVh
ZGVyc1x3dGZcdW5pY29kZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3Rm
XHVuaWNvZGVcaWN1XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBB
OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5c
V2ViS2l0LnJlc291cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAv
cyAvZXhjbHVkZTp4Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4uXGluc3BlY3Rv
clxmcm9udC1lbmRcKiZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5y
ZXNvdXJjZXNcaW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQ
cm9qZWN0RGlyKVwuLlxFbmdsaXNoLmxwcm9qXGxvY2FsaXplZFN0cmluZ3MuanMmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7
JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7aWYgZXhpc3QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGJ1aWxkZmFpbGVkJnF1b3Q7IGRlbCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWls
ZWQmcXVvdDsmI3gwRDsmI3gwQTsiDQorCQkJCUNvbW1hbmRMaW5lPSJta2RpciAyJmd0O05VTCAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVycyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGlu
Z3MmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYj
eDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7
TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hl
YWRlcnNcbWFzbSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYj
eDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTtta2Rp
ciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZx
dW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsm
I3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjb25maWcuaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2
ZWRTb3VyY2VzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFj
Y2Vzc2liaWxpdHlcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
YWNjZXNzaWJpbGl0eVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5caW5zcGVjdG9yXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXGxvYWRlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxs
b2FkZXJcYXBwY2FjaGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cbG9hZGVyXGFyY2hpdmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5cbG9hZGVyXGFyY2hpdmVcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5cbG9hZGVyXGljb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5caGlzdG9yeVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxoaXN0b3J5XGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGh0bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
bm90aWZpY2F0aW9uc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
Llxjc3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
YW5pbWF0aW9uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXGdyYXBoaWNzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9ybXNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBl
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRl
eHRcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
d2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XG5ldHdvcmtcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxh
dGZvcm1cbmV0d29ya1xjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxzcWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2Fpcm9cY2Fpcm9cc3JjXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb25cKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5ccGx1Z2luc1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5ccmVuZGVyaW5nXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxlZGl0aW5nXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGRvbVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
Llx4bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2VcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cd2Vic29ja2V0c1wqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx3b3JrZXJzXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5k
aW5nc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJz
XHBhcnNlciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilc
Li5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVh
ZGVyc1xtYXNtXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXG1hc20mcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHBjcmVcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
cGNyZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5c
Rm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFk
ZXJzXHdyZWNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnNcd3JlYyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0
ZiZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9y
d2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdI
ZWFkZXJzXHd0Zlx1bmljb2RlXGljdVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3UmcXVvdDsm
I3gwRDsmI3gwQTsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcaW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9qZWN0RGlyKVwu
LlxpbnNwZWN0b3JcZnJvbnQtZW5kXComcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJp
blxXZWJLaXQucmVzb3VyY2VzXGluc3BlY3RvciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7
TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xlbi5scHJv
aiZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNsdWRlOnhjb3B5LmV4Y2x1ZGVz
ICZxdW90OyQoUHJvamVjdERpcilcLi5cRW5nbGlzaC5scHJvalxsb2NhbGl6ZWRTdHJpbmdzLmpz
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xlbi5s
cHJvaiZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO2lmIGV4aXN0ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxidWlsZGZhaWxlZCZxdW90OyBkZWwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGJ1aWxkZmFpbGVkJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KIAkJCS8+DQogCQk8L0NvbmZpZ3VyYXRp
b24+DQogCQk8Q29uZmlndXJhdGlvbg0KQEAgLTE3OCw3ICsxNzgsNyBAQAogCQkJLz4NCiAJCQk8
VG9vbA0KIAkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9
Im1rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIg
MiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGFy
c2VyJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lJnF1b3Q7JiN4MEQ7
JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtO
VUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVyc1xwY3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciZxdW90
OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3JlYyZxdW90OyYjeDBEOyYjeDBBO21rZGly
IDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2Fy
ZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5p
Y29kZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcaWN1JnF1
b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXGNvbmZpZy5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
b2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3JcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcHBjYWNoZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxjZlwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcaWNvblwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3RvcnlcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5caHRtbFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxub3RpZmljYXRpb25zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGNzc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNmb3Jtc1wqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x3
aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
Z3JhcGhpY3Ncb3BlbnR5cGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cdGV4dFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcd2luXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbFwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxjYWlyb1xjYWlyb1xzcmNc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYmluZGluZ3NcanNc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXGFuaW1hdGlvblwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXHdpblwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2VcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1wqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdpblwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHN0eWxlXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGVkaXRpbmdcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cZG9tXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHhtbFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxzdmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cc3RvcmFnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx3
b3JrZXJzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3
YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNc
cGFyc2VyXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
XEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVy
c1xydW50aW1lJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXG1hc20mcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJz
XHBjcmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVc
Rm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXJcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
cHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
XC4uXEZvcndhcmRpbmdIZWFkZXJzXHdyZWNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3JlYyZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNc
d3RmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
d3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdVwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZc
dW5pY29kZVxpY3UmcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcaW5zcGVjdG9yJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXComcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGluc3BlY3RvciZxdW90OyYjeDBE
OyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0
LnJlc291cmNlc1xlbi5scHJvaiZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNs
dWRlOnhjb3B5LmV4Y2x1ZGVzICZxdW90OyQoUHJvamVjdERpcilcLi5cRW5nbGlzaC5scHJvalxs
b2NhbGl6ZWRTdHJpbmdzLmpzJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2Vi
S2l0LnJlc291cmNlc1xlbi5scHJvaiZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO2lmIGV4
aXN0ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxidWlsZGZhaWxlZCZxdW90OyBkZWwgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGJ1aWxkZmFpbGVkJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KKwkJCQlD
b21tYW5kTGluZT0ibWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDsmI3gwRDsm
I3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZn
dDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyc1xwYXJzZXImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWUm
cXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXG1hc20mcXVvdDsmI3gwRDsmI3gwQTtt
a2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzXHBjcmUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBy
b2ZpbGVyJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3cmVjJnF1b3Q7JiN4MEQ7
JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGYmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05V
TCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXHd0Zlx1bmljb2RlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5p
Y29kZVxpY3UmcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5cY29uZmlnLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291cmNlc1wqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcd2luXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGluc3BlY3RvclwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXGNmXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxpY29uXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3RvcnlcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caGlzdG9yeVxjZlwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxodG1sXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXG5vdGlmaWNhdGlvbnNcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cY3NzXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGFuaW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1wqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zv
cm1zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XGdyYXBoaWNzXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3aW5cKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cc3FsXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNhaXJv
XGNhaXJvXHNyY1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxi
aW5kaW5nc1xqc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxw
YWdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5p
bWF0aW9uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2Vc
d2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcd2luXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1wqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5bGVcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGluZ1wqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxkb21cKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ceG1sXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxzdG9yYWdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHdlYnNvY2tldHNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5cd29ya2Vyc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRp
bmdIZWFkZXJzXHBhcnNlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXImcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2Fy
ZGluZ0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcbWFzbVwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJk
aW5nSGVhZGVyc1xwY3JlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBjcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzXHByb2ZpbGVyJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3cmVjXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHdyZWMmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRp
bmdIZWFkZXJzXHd0ZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGYmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzXHd0Zlx1bmljb2RlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3VcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hl
YWRlcnNcd3RmXHVuaWNvZGVcaWN1JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7bWtkaXIg
MiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGlu
c3BlY3RvciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNsdWRlOnhjb3B5LmV4
Y2x1ZGVzICZxdW90OyQoUHJvamVjdERpcilcLi5caW5zcGVjdG9yXGZyb250LWVuZFwqJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xpbnNwZWN0b3Im
cXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
YmluXFdlYktpdC5yZXNvdXJjZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAvcyAvZXhjbHVkZTp4Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4uXEVuZ2xp
c2gubHByb2pcbG9jYWxpemVkU3RyaW5ncy5qcyZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcYmluXFdlYktpdC5yZXNvdXJjZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsm
I3gwQTtpZiBleGlzdCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQmcXVvdDsg
ZGVsICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxidWlsZGZhaWxlZCZxdW90OyYjeDBEOyYjeDBB
OyINCiAJCQkvPg0KIAkJPC9Db25maWd1cmF0aW9uPg0KIAkJPENvbmZpZ3VyYXRpb24NCkBAIC0y
MzMsNyArMjMzLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQb3N0QnVpbGRF
dmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtO
VUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVycyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsmI3gw
RDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDIm
Z3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcbWFzbSZx
dW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBBO21r
ZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9y
d2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJz
XHdyZWMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBEOyYj
eDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAy
Jmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjb25maWcuaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0
eVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caW5zcGVj
dG9yXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXBwY2Fj
aGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFy
Y2hpdmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVy
XGFyY2hpdmVcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
bG9hZGVyXGljb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
aGlzdG9yeVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0
b3J5XGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbm90aWZpY2F0aW9u
c1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjc3NcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNmXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBo
aWNzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XGdyYXBoaWNzXHRyYW5zZm9ybXNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHRcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29y
a1xjdXJsXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXG5ldHdvcmtcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBsYXRmb3JtXHNxbFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVxjYWlyb1xjYWlyb1xzcmNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5cYmluZGluZ3NcanNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5ccGFnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxwYWdlXGFuaW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxwYWdlXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxicmlkZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5ccGx1Z2luc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxwbHVnaW5zXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxyZW5kZXJpbmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
cmVuZGVyaW5nXHN0eWxlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXGVkaXRpbmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
ZG9tXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHhtbFwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cc3RvcmFnZVwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx3b3JrZXJzXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1wqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2Fy
ZGluZ0hlYWRlcnNccnVudGltZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xtYXNt
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXG1hc20mcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHBjcmVcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGlu
Z0hlYWRlcnNccHJvZmlsZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHdyZWNc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2Fy
ZGluZ0hlYWRlcnNcd3JlYyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hl
YWRlcnNcd3RmXHVuaWNvZGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0
Zlx1bmljb2RlXGljdVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3UmcXVvdDsmI3gwRDsmI3gw
QTsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmlu
XFdlYktpdC5yZXNvdXJjZXNcaW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
L3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxpbnNwZWN0
b3JcZnJvbnQtZW5kXComcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQu
cmVzb3VyY2VzXGluc3BlY3RvciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xlbi5scHJvaiZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNsdWRlOnhjb3B5LmV4Y2x1ZGVzICZxdW90OyQo
UHJvamVjdERpcilcLi5cRW5nbGlzaC5scHJvalxsb2NhbGl6ZWRTdHJpbmdzLmpzJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xlbi5scHJvaiZxdW90
OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO2lmIGV4aXN0ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxidWlsZGZhaWxlZCZxdW90OyBkZWwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJ1aWxkZmFp
bGVkJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KKwkJCQlDb21tYW5kTGluZT0ibWtkaXIgMiZndDtOVUwg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVc
Rm9yd2FyZGluZ0hlYWRlcnMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRp
bmdzJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXImcXVvdDsmI3gwRDsm
I3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0
O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdI
ZWFkZXJzXG1hc20mcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBjcmUmcXVvdDsm
I3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyJnF1b3Q7JiN4MEQ7JiN4MEE7bWtk
aXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3
YXJkaW5nSGVhZGVyc1x3cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGYm
cXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlJnF1b3Q7JiN4MEQ7
JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3UmcXVvdDsmI3gwRDsmI3gwQTsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cY29uZmlnLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJp
dmVkU291cmNlc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxh
Y2Nlc3NpYmlsaXR5XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGFjY2Vzc2liaWxpdHlcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGluc3BlY3RvclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxsb2FkZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
bG9hZGVyXGFwcGNhY2hlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXGxvYWRlclxhcmNoaXZlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGxvYWRlclxhcmNoaXZlXGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGxvYWRlclxpY29uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGhpc3RvcnlcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5caGlzdG9yeVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxodG1sXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XG5vdGlmaWNhdGlvbnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cY3NzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XGFuaW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVxncmFwaGljc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlw
ZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0
ZXh0XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVxuZXR3b3JrXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXG5ldHdvcmtcY3VybFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxzcWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2Fpcm9cY2Fpcm9cc3JjXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb25cKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5ccmVuZGVyaW5nXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxlZGl0aW5nXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGRvbVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlx4bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cc3Zn
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2VcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cd2Vic29ja2V0c1wqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx3b3JrZXJzXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xi
aW5kaW5nc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXHBhcnNlciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5n
SGVhZGVyc1xtYXNtXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXG1hc20mcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHBjcmVcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnNccGNyZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilc
Li5cRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdI
ZWFkZXJzXHdyZWNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3JlYyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJz
XHd0ZiZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5c
Rm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRp
bmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3UmcXVv
dDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcaW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9qZWN0RGly
KVwuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXComcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGJpblxXZWJLaXQucmVzb3VyY2VzXGluc3BlY3RvciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDIm
Z3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xlbi5s
cHJvaiZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNsdWRlOnhjb3B5LmV4Y2x1
ZGVzICZxdW90OyQoUHJvamVjdERpcilcLi5cRW5nbGlzaC5scHJvalxsb2NhbGl6ZWRTdHJpbmdz
LmpzJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xl
bi5scHJvaiZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO2lmIGV4aXN0ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxidWlsZGZhaWxlZCZxdW90OyBkZWwgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGJ1aWxkZmFpbGVkJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KIAkJCS8+DQogCQk8L0NvbmZpZ3Vy
YXRpb24+DQogCQk8Q29uZmlndXJhdGlvbg0KQEAgLTI4OSw3ICsyODksNyBAQAogCQkJLz4NCiAJ
CQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExp
bmU9Im1rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7JiN4MEQ7JiN4MEE7bWtk
aXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3
YXJkaW5nSGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
cGFyc2VyJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lJnF1b3Q7JiN4
MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZn
dDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyc1xwY3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciZx
dW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3JlYyZxdW90OyYjeDBEOyYjeDBBO21r
ZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9y
d2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZc
dW5pY29kZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcaWN1
JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGNvbmZpZy5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XHdpblwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3JcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcHBjYWNoZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxjZlwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcaWNvblwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3RvcnlcY2ZcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caHRtbFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxub3RpZmljYXRpb25zXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNzc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNmb3Jtc1wqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGlj
c1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cZ3JhcGhpY3Ncb3BlbnR5cGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cdGV4dFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXGN1cmxcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3aW5cKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cc3FsXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNhaXJvXGNhaXJv
XHNyY1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5n
c1xqc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9u
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2Vcd2luXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcd2luXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1wqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5bGVcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGluZ1wqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxkb21cKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5ceG1sXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHN2Z1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxzdG9yYWdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXHdvcmtlcnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4u
XEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVh
ZGVyc1xwYXJzZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdI
ZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXG1hc21cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcbWFzbSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hl
YWRlcnNccGNyZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlclwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVyc1xwcm9maWxlciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3JlY1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3cmVjJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVh
ZGVyc1x3dGZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVyc1x3dGZcdW5pY29kZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcaWN1XCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJz
XHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7
TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xpbnNwZWN0
b3ImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAvcyAvZXhjbHVkZTp4Y29weS5leGNsdWRl
cyAmcXVvdDskKFByb2plY3REaXIpXC4uXGluc3BlY3Rvclxmcm9udC1lbmRcKiZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcaW5zcGVjdG9yJnF1b3Q7
JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxX
ZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgL3Mg
L2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxFbmdsaXNoLmxw
cm9qXGxvY2FsaXplZFN0cmluZ3MuanMmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJp
blxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7
aWYgZXhpc3QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJ1aWxkZmFpbGVkJnF1b3Q7IGRlbCAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQmcXVvdDsmI3gwRDsmI3gwQTsiDQor
CQkJCUNvbW1hbmRMaW5lPSJta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OyYj
eDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsmI3gwRDsmI3gwQTtta2Rp
ciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccnVu
dGltZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcbWFzbSZxdW90OyYjeDBEOyYj
eDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVM
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsm
I3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDIm
Z3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0
Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxjb25maWcuaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW5cKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caW5zcGVjdG9yXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXBwY2FjaGVcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2Zc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGljb25c
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caGlzdG9yeVwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XGNmXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbm90aWZpY2F0aW9uc1wqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjc3NcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNmXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRy
YW5zZm9ybXNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxh
dGZvcm1cZ3JhcGhpY3Ncd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHRcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtc
d2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XHNxbFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVxjYWlyb1xjYWlyb1xzcmNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5cYmluZGluZ3NcanNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5ccGFnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxw
YWdlXGFuaW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxwYWdlXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxi
cmlkZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2lu
c1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdp
blwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHN0
eWxlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGVkaXRpbmdc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cZG9tXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHhtbFwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5cc3RvcmFnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlx3ZWJzb2NrZXRzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHdvcmtlcnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRp
bmdzJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxG
b3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xy
dW50aW1lXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
XEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXG1hc21cKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
bWFzbSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5c
Rm9yd2FyZGluZ0hlYWRlcnNccGNyZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xwcm9m
aWxlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3JlY1wqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3
cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxG
b3J3YXJkaW5nSGVhZGVyc1x3dGZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5p
Y29kZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcaWN1
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBB
O21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291
cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAvcyAvZXhjbHVkZTp4
Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4uXGluc3BlY3Rvclxmcm9udC1lbmRc
KiZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcaW5z
cGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9qZWN0RGlyKVwu
LlxFbmdsaXNoLmxwcm9qXGxvY2FsaXplZFN0cmluZ3MuanMmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4MEQ7JiN4MEE7
JiN4MEQ7JiN4MEE7aWYgZXhpc3QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJ1aWxkZmFpbGVk
JnF1b3Q7IGRlbCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQmcXVvdDsmI3gw
RDsmI3gwQTsiDQogCQkJLz4NCiAJCTwvQ29uZmlndXJhdGlvbj4NCiAJPC9Db25maWd1cmF0aW9u
cz4NCkBAIC0xNTc0Nyw2ICsxNTc0Nyw1NCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVy
aXZlZFNvdXJjZXNcSlNXZWJTb2NrZXQuY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4N
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiIN
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0Nh
aXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJ
CQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2
ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291cmNlc1xKU1dl
YlNvY2tldC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTV29y
a2VyLmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0xNzA2OCwxMSAr
MTcxMTYsMTEgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcU2V0dGluZ3MuaCINCiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQ0KKwkJCTxGaWxl
DQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxVc2VyU2NyaXB0LmgiDQogCQkJCT4NCiAJCQk8
L0ZpbGU+DQotICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUNCisJCQk8RmlsZQ0KIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcVXNlclNjcmlwdFR5cGVzLmgiDQogCQkJCT4NCiAJCQk8L0Zp
bGU+DQpAQCAtMjAwNTIsNiArMjAxMDAsMjYgQEAKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0
Zm9ybVxuZXR3b3JrXFJlc291cmNlUmVzcG9uc2VCYXNlLmgiDQogCQkJCQk+DQogCQkJCTwvRmls
ZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xT
b2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxG
aWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcU29ja2V0U3RyZWFt
RXJyb3JCYXNlLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNw
cCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxuZXR3b3JrXFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCINCisJCQkJCT4N
CisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxuZXR3b3JrXFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIg0KKwkJCQkJPg0KKwkJCQk8L0Zp
bGU+DQogCQkJCTxGaWx0ZXINCiAJCQkJCU5hbWU9ImNmIg0KIAkJCQkJPg0KQEAgLTIwMzM1LDYg
KzIwNDAzLDY2IEBACiAJCQkJCQkJLz4NCiAJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJ
CQkJPC9GaWxlPg0KKwkJCQkJPEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcY2ZcU29ja2V0U3RyZWFtRXJyb3IuaCINCisJCQkJCQk+DQorCQkJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQorCQkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQkJPg0KKwkJCQkJCQk8VG9vbA0KKwkJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJLz4NCisJCQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPg0KKwkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCQlOYW1lPSJSZWxl
YXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJ
CQkJPg0KKwkJCQkJCQk8VG9vbA0KKwkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJ
CQkJCQkJLz4NCisJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPC9GaWxlPg0KKwkJ
CQkJPEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcU29j
a2V0U3RyZWFtSGFuZGxlLmgiDQorCQkJCQkJPg0KKwkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0K
KwkJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiDQorCQkJCQkJCT4NCisJCQkJCQkJPFRvb2wNCisJCQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiDQorCQkJCQkJCS8+DQorCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJ
CQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4z
MiINCisJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJCT4NCisJCQkJCQkJ
PFRvb2wNCisJCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCS8+DQorCQkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTwvRmlsZT4NCisJCQkJCTxGaWxlDQorCQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFNvY2tldFN0cmVhbUhhbmRs
ZUNGTmV0LmNwcCINCisJCQkJCQk+DQorCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJ
CU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSINCisJCQkJCQkJPg0KKwkJCQkJCQk8VG9vbA0KKwkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCINCisJCQkJCQkJLz4NCisJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJ
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQkJPg0KKwkJCQkJCQk8VG9vbA0K
KwkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJLz4NCisJCQkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPC9GaWxlPg0KIAkJCQk8L0ZpbHRlcj4NCiAJCQkJPEZp
bHRlcg0KIAkJCQkJTmFtZT0id2luIg0KQEAgLTI4NzMxLDExICsyODg1OSwxMSBAQAogCQkJCQk+
DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGlu
Z3NcanNcSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCINCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cYmluZGluZ3NcanNcSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3Bw
Ig0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGJpbmRpbmdzXGpzXEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCINCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KQEAgLTI5MjYz
LDYgKzI5MzkxLDE4IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1dlYlNvY2tldENvbnN0cnVjdG9yLmNwcCIN
CisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxiaW5kaW5nc1xqc1xKU1dlYlNvY2tldENvbnN0cnVjdG9yLmgiDQorCQkJCQk+DQorCQkJCTwv
RmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNX
ZWJTb2NrZXRDdXN0b20uY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQog
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTV29ya2VyQ29uc3RydWN0b3IuY3Bw
Ig0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpAQCAtMzA4OTIsMTEgKzMxMDMyLDExIEBACiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2Vc
U1FMVHJhbnNhY3Rpb25DbGllbnQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFNR
TFRyYW5zYWN0aW9uQ2xpZW50LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0K
LQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwIg0K
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcU1FMVHJhbnNhY3Rpb25DbGllbnQuaCINCiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KQEAgLTMxNzY0LDYgKzMxOTA0LDM4IEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KKwkJPEZpbHRlcg0KKwkJCU5hbWU9Indl
YnNvY2tldHMiDQorCQkJPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29j
a2V0c1xXZWJTb2NrZXQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXQuaCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29j
a2V0Q2hhbm5lbC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldENoYW5uZWwuaCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2Vi
U29ja2V0Q2hhbm5lbENsaWVudC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRIYW5kc2hha2UuY3BwIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vi
c29ja2V0c1xXZWJTb2NrZXRIYW5kc2hha2UuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCTwv
RmlsdGVyPg0KIAkJPEZpbGUNCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNvbmZpZy5oIg0KIAkJCT4N
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmVDb21tb24udnNwcm9w
cyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZUNvbW1vbi52c3Byb3BzCmluZGV4IDBm
NjlhYzIuLmNhNGUxOGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZUNvbW1vbi52c3Byb3BzCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZUNvbW1v
bi52c3Byb3BzCkBAIC03LDggKzcsOCBAQAogCT4KIAk8VG9vbAogCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKFByb2plY3RE
aXIpLi5cJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLiZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cYWNjZXNzaWJpbGl0eSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJp
bGl0eVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZSZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cYnJpZGdlXGMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNzcyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGluZyZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccmVuZGVyaW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5
bGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxkb20mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbVxkZWZhdWx0
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5JnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxodG1sJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxodG1sXGNhbnZhcyZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5caW5zcGVjdG9yJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxsb2FkZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcHBjYWNoZSZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmUmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXGNmJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
Llxsb2FkZXJcaWNvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbm90aWZpY2F0aW9ucyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5ccGFnZVxhbmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2Vcd2luJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybSZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxzcWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpbiZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29yayZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXGNmJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGlj
cyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGUm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9ybXMm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHQmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ceG1sJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJp
dmVkU291cmNlcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2lucyZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHN2Z1xncmFwaGljcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzXGZp
bHRlcnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2ZyZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5cd21sJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdG9yYWdlJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlx3b3JrZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXHByaXZhdGUm
cXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVv
dDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29y
ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1
b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJy
YXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0Rp
cilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGli
cmFyaWVzRGlyKVxpbmNsdWRlXGljdSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0Rpcilc
aW5jbHVkZVxpY29udiZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxw
dGhyZWFkcyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxzcWxpdGUm
cXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUm
cXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRpb25c
T1NYQ29tcGF0aWJpbGl0eUhlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIp
XEluY2x1ZGVcQ29yZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRlcnNcR05VQ29tcGF0
aWJpbGl0eSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGFuaW1hdGlvbiZxdW90OyIK
LQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9fV0lOMzJfXztXRUJDT1JFX0NPTlRFWFRfTUVO
VVM7RU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HO0VOQUJMRV9EQVRBQkFTRTtFTkFCTEVfREFUQUdS
SUQ7RU5BQkxFX0RBVEFMSVNUO0VOQUJMRV9ET01fU1RPUkFHRTtFTkFCTEVfRVZFTlRTT1VSQ0U7
RU5BQkxFX0lDT05EQVRBQkFTRTtFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TO0VOQUJM
RV9SVUJZO0VOQUJMRV9TSEFSRURfV09SS0VSUztFTkFCTEVfU1ZHO0VOQUJMRV9TVkdfQU5JTUFU
SU9OO0VOQUJMRV9TVkdfQVNfSU1BR0U7RU5BQkxFX1NWR19GT05UUztFTkFCTEVfU1ZHX0ZPUkVJ
R05fT0JKRUNUO0VOQUJMRV9TVkdfVVNFO0VOQUJMRV9XRUJfU09DS0VUUztFTkFCTEVfV09SS0VS
UztFTkFCTEVfWFBBVEg7RU5BQkxFX1hTTFQiCisJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM9IiZxdW90OyQoUHJvamVjdERpcikuLlwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5JnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
YnJpZGdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2VcYyZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cY3NzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxlZGl0aW5nJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHJlbmRlcmluZ1xzdHlsZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYmluZGlu
Z3NcanMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbSZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5cZG9tXGRlZmF1bHQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3Rvcnkm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXGh0bWxcY2FudmFzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3ImcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlciZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5cbG9hZGVyXGFwcGNhY2hlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJj
aGl2ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2YmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxpY29uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxub3RpZmljYXRpb25zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXGFuaW1hdGlvbiZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGFnZVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb24mcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3Jr
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdpbiZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2YmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBsYXRmb3JtXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVxncmFwaGljc1xvcGVudHlwZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcdHJhbnNmb3JtcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
dGV4dCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx4bWwmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxwbHVnaW5zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdpbiZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxzdmdcZ3JhcGhpY3NcZmlsdGVycyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3Zn
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx3bWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHN0b3JhZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdlYnNvY2tldHMmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdvcmtlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVccHJpdmF0
ZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZx
dW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRD
b3JlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxGb3J3YXJkaW5nSGVhZGVycyZxdW90Ozsm
cXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExp
YnJhcmllc0RpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVz
RGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRM
aWJyYXJpZXNEaXIpXGluY2x1ZGVcaWN1JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGly
KVxpbmNsdWRlXGljb252JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRl
XHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHNxbGl0
ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29y
ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3JlRm91bmRhdGlv
blxPU1hDb21wYXRpYmlsaXR5SGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0Rp
cilcSW5jbHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVhZGVyc1xHTlVDb21w
YXRpYmlsaXR5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcYW5pbWF0aW9uJnF1b3Q7
IgorCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX19XSU4zMl9fO1dFQkNPUkVfQ09OVEVYVF9N
RU5VUztFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7RU5BQkxFX0RBVEFCQVNFO0VOQUJMRV9EQVRB
R1JJRDtFTkFCTEVfREFUQUxJU1Q7RU5BQkxFX0RPTV9TVE9SQUdFO0VOQUJMRV9FVkVOVFNPVVJD
RTtFTkFCTEVfSUNPTkRBVEFCQVNFO0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7RU5B
QkxFX1JVQlk7RU5BQkxFX1NWRztFTkFCTEVfU1ZHX0FOSU1BVElPTjtFTkFCTEVfU1ZHX0FTX0lN
QUdFO0VOQUJMRV9TVkdfRk9OVFM7RU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVDtFTkFCTEVfU1ZH
X1VTRTtFTkFCTEVfV0VCX1NPQ0tFVFM7RU5BQkxFX1dPUktFUlM7RU5BQkxFX1hQQVRIO0VOQUJM
RV9YU0xUIgogCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKIAkJUHJlY29tcGlsZWRIZWFkZXJU
aHJvdWdoPSJXZWJDb3JlUHJlZml4LmgiCiAJCUZvcmNlZEluY2x1ZGVGaWxlcz0iV2ViQ29yZVBy
ZWZpeC5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBl
YWM0NDQ4Li45NzZiZTg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtODg4LDYgKzg4OCw5IEBACiAJCTUxMEQ0QTM2MTAzMTY1RUUwMDQ5RUE1NCAvKiBT
b2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMwMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1I
YW5kbGVCYXNlLmNwcCAqLzsgfTsKIAkJNTEwRDRBMzcxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tl
dFN0cmVhbUhhbmRsZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVC
YXNlLmggKi87IH07CiAJCTUxMEQ0QTM4MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQu
aCAqLzsgfTsKKwkJNTEwRDRBNEUxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRB
NDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwICovOyB9OworCQk1MTBE
NEE0RjEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBNDgxMDMxNzdBMjAwNDlFQTU0
IC8qIFdlYlNvY2tldENoYW5uZWwuaCAqLzsgfTsKKwkJNTEwRDRBNTAxMDMxNzdBMjAwNDlFQTU0
IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRD
aGFubmVsQ2xpZW50LmggKi87IH07CiAJCTUxMTZEOTc3MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRh
YmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTFGMjMxNzBEQzE2
MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGMjMxMzBEQzE2MERBMDA0RjAwMzIgLyogTG9j
YWxTdG9yYWdlVGFzay5jcHAgKi87IH07CiAJCTUxMUYyMzE4MERDMTYwREEwMDRGMDAzMiAvKiBM
b2NhbFN0b3JhZ2VUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTFGMjMxNDBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5oICov
OyB9OwpAQCAtOTc0LDYgKzk3NywxMCBAQAogCQk1MUFCQUUxQjEwM0MxOEZGMDA4QzUyNjAgLyog
U29ja2V0U3RyZWFtRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQUJBRTFBMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5o
ICovOyB9OwogCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUx
QzEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggKi87IH07CiAJCTUxQUJB
RTFGMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUxRDEwM0MxOTEz
MDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwICovOyB9OworCQk1MUFCQUUy
RTEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUyQzEwM0Q0Rjc1MDA4QzUy
NjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5jcHAgKi87IH07CisJCTUxQUJBRTJGMTAzRDRGNzUw
MDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUyRDEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29j
a2V0SGFuZHNoYWtlci5oICovOyB9OworCQk1MUFCQUU0NDEwNDNBQjRBMDA4QzUyNjAgLyogV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQUJBRTQyMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2Uu
Y3BwICovOyB9OworCQk1MUFCQUU0NTEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNo
YWtlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFC
QUU0MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggKi87IH07CiAJCTUx
QjI0MTdCMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMjQxN0EwRDkzMUYzRjAw
RTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0gKi87IH07CiAJCTUxQkUzN0UwMERBRUUw
MEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFCRTM3REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVh
LmggKi87IH07CiAJCTUxQzBBQTM5MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEFBMzgwRjJB
QTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTYwMjUsNiArNjAzMiw5IEBACiAJCTUxMEQ0QTMwMTAz
MTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQgLyogU29j
a2V0U3RyZWFtSGFuZGxlQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
b2NrZXRTdHJlYW1IYW5kbGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
MEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAv
KiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYlNvY2tldENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldENo
YW5uZWxDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExNkQ5NzUwQ0Yx
NzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEYXRhYmFzZURldGFpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTExRjIzMTMwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxTdG9yYWdlVGFzay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYyMzE0MERDMTYwREEwMDRGMDAzMiAvKiBM
b2NhbFN0b3JhZ2VUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2Fs
U3RvcmFnZVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxMTgsNiArNjEy
OCwxMCBAQAogCQk1MUFCQUUxQTEwM0MxOEZGMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtRXJyb3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU29ja2V0U3RyZWFtRXJyb3IuaDsg
cGF0aCA9IGNmL1NvY2tldFN0cmVhbUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxQUJBRTFDMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU29ja2V0U3RyZWFtSGFuZGxlLmg7IHBhdGgg
PSBjZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFBQkFFMUQxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNvY2tldFN0cmVhbUhhbmRsZUNG
TmV0LmNwcDsgcGF0aCA9IGNmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFMkMxMDNENEY3NTAwOEM1MjYwIC8qIFdlYlNvY2tl
dEhhbmRzaGFrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
U29ja2V0SGFuZHNoYWtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQUJB
RTJEMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFNDIxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhh
bmRzaGFrZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUFCQUU0MzEw
NDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUIyNDE3QTBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExlZ2FjeVdlYkFy
Y2hpdmVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQkUzN0RFMERBRUUw
MEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdG9yYWdlQXJlYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUEz
ODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2FjaGVkRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEwNTY5LDYgKzEwNTgzLDExIEBACiAJCTUxOEEzNEJEMTAyNkM4MzEwMDFCNjg5NiAvKiB3ZWJz
b2NrZXRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1
MUFCQUU0MjEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCAqLywKKwkJ
CQk1MUFCQUU0MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggKi8sCisJ
CQkJNTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwICovLAor
CQkJCTUxMEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggKi8sCisJ
CQkJNTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCAq
LywKIAkJCQk1MThBMzRCRTEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmNwcCAqLywKIAkJ
CQk1MThBMzRCRjEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmggKi8sCiAJCQkJNTE4QTM0
QzAxMDI2QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tldC5pZGwgKi8sCkBAIC0xNzU1OCw2ICsxNzU3
Nyw5IEBACiAJCQkJNTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBQkFFMUIxMDNDMThGRjAwOEM1MjYwIC8q
IFNvY2tldFN0cmVhbUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUFCQUUxRTEwM0MxOTEz
MDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTBE
NEE0RjEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTEwRDRBNTAxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTUxQUJBRTQ1MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2Nr
ZXRIYW5kc2hha2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTk2NTMsNiArMTk2NzUsOCBAQAogCQkJ
CTUxMEQ0QTMzMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTEwRDRBMzYxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUhhbmRsZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBQkFFMUYxMDNDMTkxMzAwOEM1
MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUx
MEQ0QTRFMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTUxQUJBRTQ0MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCmluZGV4IDAwNWE5MmYuLjRjYTNmNjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCkBAIC01NCw2ICs1NCw5IEBACiAKICNpbmNsdWRlICJKU1dlYktpdENT
U01hdHJpeENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNXZWJLaXRQb2ludENvbnN0cnVjdG9y
LmgiCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorI2luY2x1ZGUgIkpTV2ViU29ja2V0Q29uc3Ry
dWN0b3IuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkpTV29ya2VyQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1hTTFRQcm9j
ZXNzb3JDb25zdHJ1Y3Rvci5oIgpAQCAtNjQ2LDYgKzY0OSwxMyBAQCBKU1ZhbHVlIEpTRE9NV2lu
ZG93OjpzaGFyZWRXb3JrZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogfQogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCitKU1ZhbHVlIEpTRE9NV2luZG93Ojp3ZWJTb2NrZXQoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1dl
YlNvY2tldENvbnN0cnVjdG9yPihleGVjLCB0aGlzKTsKK30KKyNlbmRpZgorCiAvLyBDdXN0b20g
ZnVuY3Rpb25zCiAKIC8vIEhlbHBlciBmb3Igd2luZG93Lm9wZW4oKSBhbmQgd2luZG93LnNob3dN
b2RhbERpYWxvZygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXQuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAppbmRleCBlZDgw
ZDgwLi4wNDIxZDEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXQuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAKQEAgLTc4
LDYgKzc4LDExIEBACiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShXRUJfU09DS0VUUykKKyNpbmNsdWRlICJKU1dlYlNvY2tldC5oIgorI2luY2x1ZGUgIldl
YlNvY2tldC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTEzOSw2ICsxNDQsMTEgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhl
YywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXZlbnRUYXJnZXQqIHRhcmcKICAg
ICAgICAgcmV0dXJuIHRvSlMoZXhlYywgbm90aWZpY2F0aW9uKTsKICNlbmRpZgogCisjaWYgRU5B
QkxFKFdFQl9TT0NLRVRTKQorICAgIGlmIChXZWJTb2NrZXQqIHdlYlNvY2tldCA9IHRhcmdldC0+
dG9XZWJTb2NrZXQoKSkKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgd2ViU29ja2V0KTsKKyNl
bmRpZgorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwog
fQpAQCAtMTgzLDYgKzE5MywxMCBAQCBFdmVudFRhcmdldCogdG9FdmVudFRhcmdldChKU0M6OkpT
VmFsdWUgdmFsdWUpCiAgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJHRVQoTm90aWZpY2F0aW9uKQog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgQ09OVkVSVF9UT19FVkVOVF9U
QVJHRVQoV2ViU29ja2V0KQorI2VuZGlmCisKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
Y3BwCmluZGV4IDJmMTNkYTguLjY1MjY0NGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTgzLDYgKzgz
LDEzIEBAIFNWR0VsZW1lbnRJbnN0YW5jZSogRXZlbnRUYXJnZXQ6OnRvU1ZHRWxlbWVudEluc3Rh
bmNlKCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorV2ViU29ja2V0KiBF
dmVudFRhcmdldDo6dG9XZWJTb2NrZXQoKQoreworICAgIHJldHVybiAwOworfQorI2VuZGlmCisK
IE1lc3NhZ2VQb3J0KiBFdmVudFRhcmdldDo6dG9NZXNzYWdlUG9ydCgpCiB7CiAgICAgcmV0dXJu
IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaAppbmRleCA2ZDNjYjdjLi42YmNjM2ZiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTUx
LDYgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyOwogICAgIGNsYXNzIFNoYXJlZFdvcmtl
ckNvbnRleHQ7CisgICAgY2xhc3MgV2ViU29ja2V0OwogICAgIGNsYXNzIFdvcmtlcjsKICAgICBj
bGFzcyBYTUxIdHRwUmVxdWVzdDsKICAgICBjbGFzcyBYTUxIdHRwUmVxdWVzdFVwbG9hZDsKQEAg
LTc1LDExICs3NiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgV29y
a2VyKiB0b1dvcmtlcigpOwogICAgICAgICB2aXJ0dWFsIERlZGljYXRlZFdvcmtlckNvbnRleHQq
IHRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpOwogI2VuZGlmCi0KICNpZiBFTkFCTEUoU0hBUkVE
X1dPUktFUlMpCiAgICAgICAgIHZpcnR1YWwgU2hhcmVkV29ya2VyKiB0b1NoYXJlZFdvcmtlcigp
OwogICAgICAgICB2aXJ0dWFsIFNoYXJlZFdvcmtlckNvbnRleHQqIHRvU2hhcmVkV29ya2VyQ29u
dGV4dCgpOwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgICAgICB2aXJ0dWFs
IFdlYlNvY2tldCogdG9XZWJTb2NrZXQoKTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCiAgICAgICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uKiB0b05vdGlmaWNhdGlvbigpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbAppbmRleCAyODQxOGQzLi4xNWNhYTE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtNDg3
LDYgKzQ4NywxMCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIFtKU0NDdXN0
b21HZXR0ZXJdIFNoYXJlZFdvcmtlckNvbnN0cnVjdG9yIFNoYXJlZFdvcmtlcjsgLy8gVXNhYmxl
IHdpdGggdGhlIG5ldyBvcGVyYXRvcgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9XRUJf
U09DS0VUUykgJiYgRU5BQkxFX1dFQl9TT0NLRVRTCisgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3Vz
dG9tR2V0dGVyXSBXZWJTb2NrZXRDb25zdHJ1Y3RvciBXZWJTb2NrZXQ7IC8vIFVzYWJsZSB3aXRo
IHRoZSBuZXcgb3BlcmF0b3IKKyNlbmRpZgorCiAgICAgICAgIGF0dHJpYnV0ZSBQbHVnaW5Db25z
dHJ1Y3RvciBQbHVnaW47CiAgICAgICAgIGF0dHJpYnV0ZSBQbHVnaW5BcnJheUNvbnN0cnVjdG9y
IFBsdWdpbkFycmF5OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDk5OWMxZmYuLjhm
OTBiMWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBi
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0zNCwxMyArMzQsNTggQEAKIAog
I2luY2x1ZGUgIldlYlNvY2tldC5oIgogCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRp
b24uaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFByb2Nlc3NXZWJTb2NrZXRF
dmVudFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiB2b2lkIChXZWJTb2NrZXQ6OipNZXRob2QpKEV2ZW50Kik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzaz4gY3JlYXRlKFBhc3NSZWZQ
dHI8V2ViU29ja2V0PiB3ZWJTb2NrZXQsIE1ldGhvZCBtZXRob2QsIFBhc3NSZWZQdHI8RXZlbnQ+
IGV2ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQcm9jZXNzV2ViU29j
a2V0RXZlbnRUYXNrKHdlYlNvY2tldCwgbWV0aG9kLCBldmVudCkpOworICAgIH0KKyAgICB2aXJ0
dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCisgICAgeworICAg
ICAgICAobV93ZWJTb2NrZXQuZ2V0KCktPiptX21ldGhvZCkobV9ldmVudC5nZXQoKSk7CisgICAg
fQorCisgIHByaXZhdGU6CisgICAgUHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzayhQYXNzUmVmUHRy
PFdlYlNvY2tldD4gd2ViU29ja2V0LCBNZXRob2QgbWV0aG9kLCBQYXNzUmVmUHRyPEV2ZW50PiBl
dmVudCkKKyAgICAgICAgOiBtX3dlYlNvY2tldCh3ZWJTb2NrZXQpCisgICAgICAgICwgbV9tZXRo
b2QobWV0aG9kKQorICAgICAgICAsIG1fZXZlbnQoZXZlbnQpIHsgfQorCisgICAgUmVmUHRyPFdl
YlNvY2tldD4gbV93ZWJTb2NrZXQ7CisgICAgTWV0aG9kIG1fbWV0aG9kOworICAgIFJlZlB0cjxF
dmVudD4gbV9ldmVudDsKK307CisKK3N0YXRpYyBib29sIGlzVmFsaWRQcm90b2NvbFN0cmluZyhj
b25zdCBXZWJDb3JlOjpTdHJpbmcmIHByb3RvY29sKQoreworICAgIGlmIChwcm90b2NvbC5pc051
bGwoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHByb3RvY29sLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gcHJv
dG9jb2wuY2hhcmFjdGVycygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvdG9jb2wu
bGVuZ3RoKCk7IGkrKykgeworICAgICAgICBpZiAoY2hhcmFjdGVyc1tpXSA8IDB4MjEgfHwgY2hh
cmFjdGVyc1tpXSA+IDB4N0UpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCiBXZWJTb2NrZXQ6OldlYlNvY2tldChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAg
ICAgLCBtX3N0YXRlKENPTk5FQ1RJTkcpCkBAIC01OSwzOSArMTA0LDQ5IEBAIHZvaWQgV2ViU29j
a2V0Ojpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIHZvaWQg
V2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAg
Y29ubmVjdCB0byAlcyBwcm90b2NvbD0lcyIsIHRoaXMsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCBwcm90b2NvbC51dGY4KCkuZGF0YSgpKTsKICAgICBtX3VybCA9IHVybDsKICAgICBtX3By
b3RvY29sID0gcHJvdG9jb2w7CiAKICAgICBpZiAoIW1fdXJsLnByb3RvY29sSXMoIndzIikgJiYg
IW1fdXJsLnByb3RvY29sSXMoIndzcyIpKSB7CisgICAgICAgIExPR19FUlJPUigiRXJyb3I6IHdy
b25nIHVybCBmb3IgV2ViU29ja2V0ICVzIiwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOwogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX3Byb3RvY29sLmlzTnVsbCgpICYmIG1fcHJv
dG9jb2wuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFpc1ZhbGlkUHJvdG9jb2xTdHJpbmcobV9wcm90
b2NvbCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJFcnJvcjogd3JvbmcgcHJvdG9jb2wgZm9yIFdl
YlNvY2tldCAlcyIsIG1fcHJvdG9jb2wudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIG1fc3RhdGUg
PSBDTE9TRUQ7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAvLyBGSVhNRTogQ2hlY2sgcHJvdG9jb2wgaXMgdmFsaWQgZm9ybS4KLSAgICAvLyBG
SVhNRTogQ29ubmVjdCBXZWJTb2NrZXRDaGFubmVsLgorICAgIC8vIEZJWE1FOiBpZiBtX3VybC5w
b3J0KCkgaXMgYmxvY2tpbmcgcG9ydCwgcmFpc2UgU0VDVVJJVFlfRVJSLgorCisgICAgbV9jaGFu
bmVsID0gV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
dGhpcywgbV91cmwsIG1fcHJvdG9jb2wpOworICAgIG1fY2hhbm5lbC0+Y29ubmVjdCgpOwogfQog
Ci1ib29sIFdlYlNvY2tldDo6c2VuZChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiBlYykK
K2Jvb2wgV2ViU29ja2V0OjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0gICAgaWYgKG1fc3RhdGUgIT0gT1BFTikgeworICAgIExPRyhOZXR3b3JrLCAi
V2ViU29ja2V0ICVwIHNlbmQgJXMiLCB0aGlzLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAg
IGlmIChtX3N0YXRlID09IENPTk5FQ1RJTkcpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAvLyBGSVhNRTogc2VuZCBt
ZXNzYWdlIG9uIFdlYlNvY2tldENoYW5uZWwuCi0gICAgcmV0dXJuIGZhbHNlOworICAgIC8vIE5v
IGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYgdGhlIGNvbm5lY3Rpb24gd2FzIG9uY2UgZXN0YWJsaXNo
ZWQgYnV0IGhhcyBzdWJzZXF1ZW50bHkgYmVlbiBjbG9zZWQuCisgICAgaWYgKG1fc3RhdGUgPT0g
Q0xPU0VEKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gRklYTUU6IGNoZWNrIG1lc3Nh
Z2UgaXMgdmFsaWQgdXRmOC4KKyAgICByZXR1cm4gbV9jaGFubmVsLT5zZW5kKG1lc3NhZ2UpOwog
fQogCiB2b2lkIFdlYlNvY2tldDo6Y2xvc2UoKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29j
a2V0ICVwIGNsb3NlIiwgdGhpcyk7CiAgICAgaWYgKG1fc3RhdGUgPT0gQ0xPU0VEKQogICAgICAg
ICByZXR1cm47CiAgICAgbV9zdGF0ZSA9IENMT1NFRDsKLSAgICAvLyBGSVhNRTogY2xvc2UgV2Vi
U29ja2V0Q2hhbm5lbC4KKyAgICBtX2NoYW5uZWwtPmNsb3NlKCk7CiB9CiAKIGNvbnN0IEtVUkwm
IFdlYlNvY2tldDo6dXJsKCkgY29uc3QKQEAgLTEwNiw3ICsxNjEsOCBAQCBXZWJTb2NrZXQ6OlN0
YXRlIFdlYlNvY2tldDo6cmVhZHlTdGF0ZSgpIGNvbnN0CiAKIHVuc2lnbmVkIGxvbmcgV2ViU29j
a2V0OjpidWZmZXJlZEFtb3VudCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IGFzayBwbGF0Zm9y
bSBjb2RlIHRvIGdldCBidWZmZXJlZCBhbW91bnQgdG8gYmUgc2VudC4KKyAgICBpZiAobV9zdGF0
ZSA9PSBPUEVOKQorICAgICAgICByZXR1cm4gbV9jaGFubmVsLT5idWZmZXJlZEFtb3VudCgpOwog
ICAgIHJldHVybiAwOwogfQogCkBAIC0xMTUsNTggKzE3MSwxMjAgQEAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogV2ViU29ja2V0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICBy
ZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiB9CiAKLXZv
aWQgV2ViU29ja2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYsIFBhc3NS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wpCit2b2lkIFdlYlNvY2tldDo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3Rl
bmVyPiBldmVudExpc3RlbmVyLCBib29sKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhp
cy4KKyAgICBFdmVudExpc3RlbmVyc01hcDo6aXRlcmF0b3IgaXRlciA9IG1fZXZlbnRMaXN0ZW5l
cnMuZmluZChldmVudFR5cGUpOworICAgIGlmIChpdGVyID09IG1fZXZlbnRMaXN0ZW5lcnMuZW5k
KCkpIHsKKyAgICAgICAgTGlzdGVuZXJWZWN0b3IgbGlzdGVuZXJzOworICAgICAgICBsaXN0ZW5l
cnMuYXBwZW5kKGV2ZW50TGlzdGVuZXIpOworICAgICAgICBtX2V2ZW50TGlzdGVuZXJzLmFkZChl
dmVudFR5cGUsIGxpc3RlbmVycyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTGlzdGVuZXJWZWN0
b3ImIGxpc3RlbmVycyA9IGl0ZXItPnNlY29uZDsKKyAgICAgICAgZm9yIChMaXN0ZW5lclZlY3Rv
cjo6aXRlcmF0b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVuZXJzLmJlZ2luKCk7IGxpc3RlbmVySXRl
ciAhPSBsaXN0ZW5lcnMuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKQorICAgICAgICAgICAgaWYgKCps
aXN0ZW5lckl0ZXIgPT0gZXZlbnRMaXN0ZW5lcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgbGlzdGVuZXJzLmFwcGVuZChldmVudExpc3RlbmVyKTsKKyAgICAgICAgbV9ldmVu
dExpc3RlbmVycy5hZGQoZXZlbnRUeXBlLCBsaXN0ZW5lcnMpOworICAgIH0KIH0KIAotdm9pZCBX
ZWJTb2NrZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiwgRXZlbnRM
aXN0ZW5lciosIGJvb2wpCit2b2lkIFdlYlNvY2tldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5lciwg
Ym9vbCkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisgICAgRXZlbnRMaXN0ZW5l
cnNNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2V2ZW50TGlzdGVuZXJzLmZpbmQoZXZlbnRUeXBlKTsK
KyAgICBpZiAoaXRlciA9PSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBMaXN0ZW5lclZlY3RvciYgbGlzdGVuZXJzID0gaXRlci0+c2Vjb25kOworICAgIGZv
ciAoTGlzdGVuZXJWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGxpc3RlbmVySXRlciA9IGxpc3RlbmVy
cy5iZWdpbigpOyBsaXN0ZW5lckl0ZXIgIT0gbGlzdGVuZXJzLmVuZCgpOyArK2xpc3RlbmVySXRl
cikKKyAgICAgICAgaWYgKCpsaXN0ZW5lckl0ZXIgPT0gZXZlbnRMaXN0ZW5lcikgeworICAgICAg
ICAgICAgbGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lckl0ZXIgLSBsaXN0ZW5lcnMuYmVnaW4oKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIH0KIAotYm9vbCBXZWJTb2NrZXQ6OmRp
c3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKQorYm9vbCBXZWJT
b2NrZXQ6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZ0LCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCi0gICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZXZ0IHx8IGV2dC0+dHlwZSgpLmlzRW1wdHkoKSkgeworICAgICAgICBlYyA9
IEV2ZW50RXhjZXB0aW9uOjpVTlNQRUNJRklFRF9FVkVOVF9UWVBFX0VSUjsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgTGlzdGVuZXJWZWN0b3IgbGlzdGVuZXJzQ29weSA9IG1f
ZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2dC0+dHlwZSgpKTsKKyAgICBmb3IgKExpc3RlbmVyVmVjdG9y
Ojpjb25zdF9pdGVyYXRvciBsaXN0ZW5lckl0ZXIgPSBsaXN0ZW5lcnNDb3B5LmJlZ2luKCk7IGxp
c3RlbmVySXRlciAhPSBsaXN0ZW5lcnNDb3B5LmVuZCgpOyArK2xpc3RlbmVySXRlcikgeworICAg
ICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50VGFyZ2V0
KHRoaXMpOworICAgICAgICBsaXN0ZW5lckl0ZXItPmdldCgpLT5oYW5kbGVFdmVudChldnQuZ2V0
KCksIGZhbHNlKTsKKyAgICB9CisgICAgcmV0dXJuICFldnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsK
IH0KIAogdm9pZCBXZWJTb2NrZXQ6OmRpZENvbm5lY3QoKQogeworICAgIExPRyhOZXR3b3JrLCAi
V2ViU29ja2V0ICVwIGRpZENvbm5lY3QiLCB0aGlzKTsKICAgICBpZiAobV9zdGF0ZSAhPSBDT05O
RUNUSU5HKSB7CiAgICAgICAgIGRpZENsb3NlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgbV9zdGF0ZSA9IE9QRU47Ci0gICAgZGlzcGF0Y2hPcGVuRXZlbnQoKTsKKyAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFByb2Nlc3NXZWJTb2NrZXRFdmVudFRhc2s6OmNy
ZWF0ZSh0aGlzLCAmV2ViU29ja2V0OjpkaXNwYXRjaE9wZW5FdmVudCwgRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkub3BlbkV2ZW50LCBmYWxzZSwgZmFsc2UpKSk7CiB9CiAKIHZvaWQgV2ViU29j
a2V0OjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZykKIHsKKyAgICBMT0coTmV0
d29yaywgIldlYlNvY2tldCAlcCBkaWRSZWNlaXZlTWVzc2FnZSAlcyIsIHRoaXMsIG1zZy51dGY4
KCkuZGF0YSgpKTsKICAgICBpZiAobV9zdGF0ZSAhPSBPUEVOKQogICAgICAgICByZXR1cm47Ci0g
ICAgZGlzcGF0Y2hNZXNzYWdlRXZlbnQobXNnKTsKKyAgICBSZWZQdHI8TWVzc2FnZUV2ZW50PiBl
dnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZSgpOworICAgIC8vIEZJWE1FOiBvcmlnaW4sIGxhc3RF
dmVudElkLCBzb3VyY2UsIG1lc3NhZ2VQb3J0LgorICAgIGV2dC0+aW5pdE1lc3NhZ2VFdmVudChl
dmVudE5hbWVzKCkubWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UsIG1zZywgIiIsICIiLCAwLCAw
KTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFByb2Nlc3NXZWJTb2Nr
ZXRFdmVudFRhc2s6OmNyZWF0ZSh0aGlzLCAmV2ViU29ja2V0OjpkaXNwYXRjaE1lc3NhZ2VFdmVu
dCwgZXZ0KSk7CiB9CiAKIHZvaWQgV2ViU29ja2V0OjpkaWRDbG9zZSgpCiB7CisgICAgTE9HKE5l
dHdvcmssICJXZWJTb2NrZXQgJXAgZGlkQ2xvc2UiLCB0aGlzKTsKICAgICBtX3N0YXRlID0gQ0xP
U0VEOwotICAgIGRpc3BhdGNoQ2xvc2VFdmVudCgpOworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+cG9zdFRhc2soUHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzazo6Y3JlYXRlKHRoaXMsICZX
ZWJTb2NrZXQ6OmRpc3BhdGNoQ2xvc2VFdmVudCwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y2xvc2VFdmVudCwgZmFsc2UsIGZhbHNlKSkpOwogfQogCi12b2lkIFdlYlNvY2tldDo6ZGlzcGF0
Y2hPcGVuRXZlbnQoKQordm9pZCBXZWJTb2NrZXQ6OmRpc3BhdGNoT3BlbkV2ZW50KEV2ZW50KiBl
dnQpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgorICAgIGlmIChtX29ub3Blbikg
eworICAgICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50
VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29ub3Blbi0+aGFuZGxlRXZlbnQoZXZ0LCBmYWxzZSk7
CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hFdmVudChl
dnQsIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKIH0KIAotdm9pZCBXZWJTb2NrZXQ6OmRpc3BhdGNo
TWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYpCit2b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hNZXNz
YWdlRXZlbnQoRXZlbnQqIGV2dCkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisg
ICAgaWYgKG1fb25tZXNzYWdlKSB7CisgICAgICAgIGV2dC0+c2V0VGFyZ2V0KHRoaXMpOworICAg
ICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fb25tZXNzYWdlLT5o
YW5kbGVFdmVudChldnQsIGZhbHNlKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2dCwgZWMpOworICAgIEFTU0VSVCghZWMpOwogfQogCi12
b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hDbG9zZUV2ZW50KCkKK3ZvaWQgV2ViU29ja2V0OjpkaXNw
YXRjaENsb3NlRXZlbnQoRXZlbnQqIGV2dCkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRo
aXMuCisgICAgaWYgKG1fb25jbG9zZSkgeworICAgICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsK
KyAgICAgICAgZXZ0LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29uY2xvc2Ut
PmhhbmRsZUV2ZW50KGV2dCwgZmFsc2UpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZ0LCBlYyk7CisgICAgQVNTRVJUKCFlYyk7CiB9CiAK
IH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0LmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggNDg1ZTJj
Yy4uMmJlMzQ0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisr
KyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtMzEsOTMgKzMxLDEwNCBAQAog
I2lmbmRlZiBXZWJTb2NrZXRfaAogI2RlZmluZSBXZWJTb2NrZXRfaAogCisjaWYgRU5BQkxFKFdF
Ql9TT0NLRVRTKQorCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQXRv
bWljU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJF
dmVudFRhcmdldC5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU3RyaW5nOworICAgIGNs
YXNzIFN0cmluZzsKKyAgICBjbGFzcyBXZWJTb2NrZXRDaGFubmVsOwogCi1jbGFzcyBXZWJTb2Nr
ZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTb2NrZXQ+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1
YmxpYyBBY3RpdmVET01PYmplY3QgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpOyB9Ci0gICAgdmlydHVhbCB+V2ViU29j
a2V0KCk7CisgICAgY2xhc3MgV2ViU29ja2V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0
PiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgV2Vi
U29ja2V0Q2hhbm5lbENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViU29ja2V0KGNvbnRleHQpKTsgfQorICAgICAgICB2aXJ0
dWFsIH5XZWJTb2NrZXQoKTsKIAotICAgIGVudW0gU3RhdGUgewotICAgICAgICBDT05ORUNUSU5H
ID0gMCwKLSAgICAgICAgT1BFTiA9IDEsCi0gICAgICAgIENMT1NFRCA9IDIKLSAgICB9OworICAg
ICAgICBlbnVtIFN0YXRlIHsKKyAgICAgICAgICAgIENPTk5FQ1RJTkcgPSAwLAorICAgICAgICAg
ICAgT1BFTiA9IDEsCisgICAgICAgICAgICBDTE9TRUQgPSAyCisgICAgICAgIH07CiAKLSAgICB2
b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBj
b25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0aW9u
Q29kZSYpOworICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZvaWQgY2xvc2UoKTsKKyAgICAgICAgdm9p
ZCBjbG9zZSgpOwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7Ci0gICAgU3RhdGUgcmVh
ZHlTdGF0ZSgpIGNvbnN0OwotICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25z
dDsKKyAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7CisgICAgICAgIFN0YXRlIHJlYWR5
U3RhdGUoKSBjb25zdDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNv
bnN0OwogCi0gICAgdm9pZCBzZXRPbm9wZW4oUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVu
dExpc3RlbmVyKSB7IG1fb25vcGVuID0gZXZlbnRMaXN0ZW5lcjsgfQotICAgIEV2ZW50TGlzdGVu
ZXIqIG9ub3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fb25vcGVuLmdldCgpOyB9Ci0gICAgdm9pZCBz
ZXRPbm1lc3NhZ2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1f
b25tZXNzYWdlID0gZXZlbnRMaXN0ZW5lcjsgfQotICAgIEV2ZW50TGlzdGVuZXIqIG9ubWVzc2Fn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25tZXNzYWdlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRPbmNs
b3NlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uY2xvc2Ug
PSBldmVudExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25jbG9zZSgpIGNvbnN0IHsg
cmV0dXJuIG1fb25jbG9zZS5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldE9ub3BlbihQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbm9wZW4gPSBldmVudExpc3Rl
bmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9ub3BlbigpIGNvbnN0IHsgcmV0dXJuIG1f
b25vcGVuLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0T25tZXNzYWdlKFBhc3NSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29ubWVzc2FnZSA9IGV2ZW50TGlzdGVuZXI7
IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25tZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9v
bm1lc3NhZ2UuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRPbmNsb3NlKFBhc3NSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uY2xvc2UgPSBldmVudExpc3RlbmVyOyB9
CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uY2xvc2UoKSBjb25zdCB7IHJldHVybiBtX29uY2xv
c2UuZ2V0KCk7IH0KIAotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBXZWJTb2NrZXQq
IHRvV2ViU29ja2V0KCkgeyByZXR1cm4gdGhpczsgfQorICAgICAgICAvLyBFdmVudFRhcmdldAor
ICAgICAgICB2aXJ0dWFsIFdlYlNvY2tldCogdG9XZWJTb2NrZXQoKSB7IHJldHVybiB0aGlzOyB9
CiAKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lcios
IGJvb2wgdXNlQ2FwdHVyZSk7Ci0gICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPEV2ZW50TGlzdGVuZXI+ID4gTGlzdGVuZXJWZWN0b3I7CisgICAgICAgIHR5cGVkZWYgSGFz
aE1hcDxBdG9taWNTdHJpbmcsIExpc3RlbmVyVmVjdG9yPiBFdmVudExpc3RlbmVyc01hcDsKIAot
ICAgIC8vIEFjdGl2ZURPTU9iamVjdAotICAgIC8vIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdDsKLSAgICAvLyB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwot
ICAgIC8vIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Q7Ci0gICAgLy8gdmlydHVhbCB2
b2lkIHN1c3BlbmQoKTsKLSAgICAvLyB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7Ci0gICAgLy8gdmly
dHVhbCB2b2lkIHN0b3AoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4s
IGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1
c2VDYXB0dXJlKTsKKyAgICAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0
cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAmIGV2
ZW50TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9ldmVudExpc3RlbmVyczsgfQogCi0gICAgdXNpbmcg
UmVmQ291bnRlZDxXZWJTb2NrZXQ+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJTb2Nr
ZXQ+OjpkZXJlZjsKKyAgICAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CisgICAgICAgIC8vICB2aXJ0
dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CisgICAgICAgIC8vIHZpcnR1YWwg
dm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CisgICAgICAgIC8vIHZpcnR1YWwgYm9vbCBjYW5TdXNw
ZW5kKCkgY29uc3Q7CisgICAgICAgIC8vIHZpcnR1YWwgdm9pZCBzdXNwZW5kKCk7CisgICAgICAg
IC8vIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lkIHN0b3Ao
KTsKIAotcHJpdmF0ZToKLSAgICBXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwor
ICAgICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldD46OnJlZjsKKyAgICAgICAgdXNpbmcg
UmVmQ291bnRlZDxXZWJTb2NrZXQ+OjpkZXJlZjsKIAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVu
dFRhcmdldCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgp
IHsgZGVyZWYoKTsgfQorICAgICAgICAvLyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRDb25uZWN0KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZyk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRD
bG9zZSgpOwogCi0gICAgLy8gV2ViU29ja2V0Q2hhbm5lbENsaWVudAotICAgIHZvaWQgZGlkQ29u
bmVjdCgpOwotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtc2cpOwot
ICAgIHZvaWQgZGlkQ2xvc2UoKTsKKyAgICBwcml2YXRlOgorICAgICAgICBXZWJTb2NrZXQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwogCi0gICAgdm9pZCBkaXNwYXRjaE9wZW5FdmVudCgpOwot
ICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBtc2cpOwotICAgIHZv
aWQgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRh
cmdldCgpIHsgcmVmKCk7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSB7IGRlcmVmKCk7IH0KIAotICAgIC8vIEZJWE1FOiBhZGQgV2ViU29ja2V0Q2hhbm5lbC4KKyAg
ICAgICAgdm9pZCBkaXNwYXRjaE9wZW5FdmVudChFdmVudCopOworICAgICAgICB2b2lkIGRpc3Bh
dGNoTWVzc2FnZUV2ZW50KEV2ZW50Kik7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50
KEV2ZW50Kik7CiAKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbm9wZW47Ci0gICAgUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IG1fb25tZXNzYWdlOwotICAgIFJlZlB0cjxFdmVudExpc3RlbmVy
PiBtX29uY2xvc2U7CisgICAgICAgIFJlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBtX2NoYW5uZWw7
CiAKLSAgICBTdGF0ZSBtX3N0YXRlOwotICAgIEtVUkwgbV91cmw7Ci0gICAgU3RyaW5nIG1fcHJv
dG9jb2w7Ci19OworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbm9wZW47CisgICAg
ICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ubWVzc2FnZTsKKyAgICAgICAgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IG1fb25jbG9zZTsKKyAgICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAgbV9ldmVu
dExpc3RlbmVyczsKKworICAgICAgICBTdGF0ZSBtX3N0YXRlOworICAgICAgICBLVVJMIG1fdXJs
OworICAgICAgICBTdHJpbmcgbV9wcm90b2NvbDsKKyAgICB9OwogCiB9ICAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCisjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKwogI2VuZGlmICAvLyBX
ZWJTb2NrZXRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NWNkMzQKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTAsMCArMSwyNDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVk
ZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgorCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUg
IkNvb2tpZUphci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yLmgiCisjaW5jbHVkZSAiU29j
a2V0U3RyZWFtSGFuZGxlLmgiCisjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgorI2luY2x1ZGUgIldl
YlNvY2tldENoYW5uZWxDbGllbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVu
dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQorICAgIDogbV9jb250
ZXh0KGNvbnRleHQpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX2hhbmRzaGFrZSh1
cmwsIHByb3RvY29sLCBjb250ZXh0KQorICAgICwgbV9idWZmZXIoMCkKKyAgICAsIG1fYnVmZmVy
U2l6ZSgwKQorICAgICwgbV91bmhhbmRsZWRCdWZmZXJTaXplKDApCit7Cit9CisKK1dlYlNvY2tl
dENoYW5uZWw6On5XZWJTb2NrZXRDaGFubmVsKCkKK3sKKyAgICBmYXN0RnJlZShtX2J1ZmZlcik7
Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdCgpCit7CisgICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNvbm5lY3QiLCB0aGlzKTsKKyAgICBBU1NFUlQoIW1f
aGFuZGxlLmdldCgpKTsKKyAgICBtX2hhbmRzaGFrZS5yZXNldCgpOworICAgIG1faGFuZGxlID0g
U29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGUobV9oYW5kc2hha2UudXJsKCksIHRoaXMpOworfQor
Citib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtc2cpCit7CisgICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQgJXMiLCB0aGlzLCBtc2cudXRm
OCgpLmRhdGEoKSk7CisgICAgVmVjdG9yPGNoYXI+IGJ1ZjsKKyAgICBidWYuYXBwZW5kKCdcMCcp
OyAgLy8gZnJhbWUgdHlwZQorICAgIGJ1Zi5hcHBlbmQobXNnLnV0ZjgoKS5kYXRhKCksIG1zZy51
dGY4KCkubGVuZ3RoKCkpOworICAgIGJ1Zi5hcHBlbmQoJ1x4ZmYnKTsgIC8vIGZyYW1lIGVuZAor
ICAgIGlmICghbV9oYW5kbGUuZ2V0KCkpIHsKKyAgICAgICAgbV91bmhhbmRsZWRCdWZmZXJTaXpl
ICs9IGJ1Zi5zaXplKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJu
IG1faGFuZGxlLT5zZW5kKGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkpOworfQorCit1bnNpZ25lZCBs
b25nIFdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKK3sKKyAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgYnVmZmVyZWRBbW91bnQiLCB0aGlzKTsKKyAg
ICBpZiAoIW1faGFuZGxlLmdldCgpKQorICAgICAgICByZXR1cm4gbV91bmhhbmRsZWRCdWZmZXJT
aXplOworICAgIHJldHVybiBtX2hhbmRsZS0+YnVmZmVyZWRBbW91bnQoKTsKK30KKwordm9pZCBX
ZWJTb2NrZXRDaGFubmVsOjpjbG9zZSgpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIGNsb3NlIiwgdGhpcyk7CisgICAgaWYgKG1faGFuZGxlLmdldCgpKQorICAgICAg
ICBtX2hhbmRsZS0+Y2xvc2UoKTsgIC8vIHdpbGwgY2FsbCBkaWRDbG9zZSgpCit9CisKK3ZvaWQg
V2ViU29ja2V0Q2hhbm5lbDo6d2lsbE9wZW5TdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiwgY29u
c3QgS1VSTCYpCit7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6d2lsbFNlbmREYXRhKFNv
Y2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQpCit7Cit9CisKK3ZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6ZGlkT3BlbihTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKK3sKKyAgICBM
T0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkT3BlbiIsIHRoaXMpOworICAgIEFT
U0VSVChoYW5kbGUgPT0gbV9oYW5kbGUuZ2V0KCkpOworICAgIGNvbnN0IENTdHJpbmcmIGhhbmRz
aGFrZU1lc3NhZ2UgPSBtX2hhbmRzaGFrZS5jbGllbnRIYW5kc2hha2VNZXNzYWdlKCk7CisgICAg
aWYgKCFoYW5kbGUtPnNlbmQoaGFuZHNoYWtlTWVzc2FnZS5kYXRhKCksIGhhbmRzaGFrZU1lc3Nh
Z2UubGVuZ3RoKCkpKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiRXJyb3IgaW4gc2VuZGluZyBo
YW5kc2hha2UgbWVzc2FnZS4iKTsKKyAgICAgICAgaGFuZGxlLT5jbG9zZSgpOworICAgIH0KK30K
Kwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRDbG9zZShTb2NrZXRTdHJlYW1IYW5kbGUqIGhh
bmRsZSkKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkQ2xvc2Ui
LCB0aGlzKTsKKyAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdldCgpIHx8ICFtX2hhbmRs
ZS5nZXQoKSk7CisgICAgaWYgKCFtX2hhbmRsZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fdW5oYW5kbGVkQnVmZmVyU2l6ZSA9IGhhbmRsZS0+YnVmZmVyZWRBbW91bnQoKTsKKyAgICBX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQgPSBtX2NsaWVudDsKKyAgICBtX2NsaWVudCA9
IDA7CisgICAgbV9oYW5kbGUgPSAwOworICAgIGNsaWVudC0+ZGlkQ2xvc2UoKTsKK30KKwordm9p
ZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNlaXZlRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqIGhh
bmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKK3sKKyAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldENoYW5uZWwgJXAgZGlkUmVjZWl2ZURhdGEgJWQiLCB0aGlzLCBsZW4pOworICAgIEFT
U0VSVChoYW5kbGUgPT0gbV9oYW5kbGUuZ2V0KCkpOworICAgIGlmICghYXBwZW5kVG9CdWZmZXIo
ZGF0YSwgbGVuKSkgeworICAgICAgICBoYW5kbGUtPmNsb3NlKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgaWYgKG1faGFuZHNoYWtlLm1vZGUoKSAhPSBXZWJTb2NrZXRIYW5kc2hha2U6
OkNvbm5lY3RlZCkgeworICAgICAgICBpbnQgaGVhZGVyTGVuZ3RoID0gbV9oYW5kc2hha2UucmVh
ZFNlcnZlckhhbmRzaGFrZShtX2J1ZmZlciwgbV9idWZmZXJTaXplKTsKKyAgICAgICAgaWYgKGhl
YWRlckxlbmd0aCA8PSAwKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzd2l0Y2ggKG1f
aGFuZHNoYWtlLm1vZGUoKSkgeworICAgICAgICBjYXNlIFdlYlNvY2tldEhhbmRzaGFrZTo6Q29u
bmVjdGVkOgorICAgICAgICAgICAgaWYgKCFtX2hhbmRzaGFrZS5zZXJ2ZXJTZXRDb29raWUoKS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9jb250ZXh0LT5pc0RvY3VtZW50KCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihtX2NvbnRleHQpOworICAgICAgICAgICAgICAgICAgICBpZiAoY29va2llc0Vu
YWJsZWQoZG9jdW1lbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPnNldENv
b2tpZShtX2hhbmRzaGFrZS5zZXJ2ZXJTZXRDb29raWUoKSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gRklYTUU6IGhhbmRsZSBzZXQtY29va2llMi4K
KyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjb25uZWN0ZWQi
LCB0aGlzKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDb25uZWN0KCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiV2Vi
U29ja2V0Q2hhbm5lbCAlcCBjb25uZWN0aW9uIGZhaWxlZCIsIHRoaXMpOworICAgICAgICAgICAg
aGFuZGxlLT5jbG9zZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IHNraXBCdWZmZXIoaGVhZGVyTGVuZ3RoKTsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgTE9HKE5ldHdvcmssICJyZW1haW5pbmcgaW4gcmVhZCBi
dWYgJXVsIiwgbV9idWZmZXJTaXplKTsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyKiBuZXh0RnJh
bWUgPSBtX2J1ZmZlcjsKKyAgICBjb25zdCBjaGFyKiBwID0gbV9idWZmZXI7CisgICAgY29uc3Qg
Y2hhciogZW5kID0gcCArIG1fYnVmZmVyU2l6ZTsKKyAgICB3aGlsZSAocCA8IGVuZCkgeworICAg
ICAgICB1bnNpZ25lZCBjaGFyIGZyYW1lQnl0ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KCpwKyspOworICAgICAgICBpZiAoKGZyYW1lQnl0ZSAmIDB4ODApID09IDB4ODApIHsKKyAgICAg
ICAgICAgIGludCBsZW5ndGggPSAwOworICAgICAgICAgICAgd2hpbGUgKHAgPCBlbmQgJiYgKCpw
ICYgMHg4MCkgPT0gMHg4MCkgeworICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPiBzdGQ6Om51
bWVyaWNfbGltaXRzPGludD46Om1heCgpIC8gMTI4KSB7CisgICAgICAgICAgICAgICAgICAgIExP
RyhOZXR3b3JrLCAiZnJhbWUgbGVuZ3RoIG92ZXJmbG93ICVkIiwgbGVuZ3RoKTsKKyAgICAgICAg
ICAgICAgICAgICAgaGFuZGxlLT5jbG9zZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aCAqIDEy
OCArICpwICYgMHg3ZjsKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAocCArIGxlbmd0aCA8IGVuZCkgeworICAgICAgICAgICAgICAgIHAgKz0gbGVu
Z3RoOworICAgICAgICAgICAgICAgIG5leHRGcmFtZSA9IHA7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBtc2dTdGFydCA9IHA7CisgICAg
ICAgICAgICB3aGlsZSAocCA8IGVuZCAmJiAqcCAhPSAnXHhmZicpCisgICAgICAgICAgICAgICAg
KytwOworICAgICAgICAgICAgaWYgKHAgPCBlbmQgJiYgKnAgPT0gJ1x4ZmYnKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGZyYW1lQnl0ZSA9PSAweDAwKQorICAgICAgICAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2UoU3RyaW5nOjpmcm9tVVRGOChtc2dTdGFydCwgcCAtIG1z
Z1N0YXJ0KSk7CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgIG5leHRGcmFt
ZSA9IHA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgc2tpcEJ1ZmZlcihu
ZXh0RnJhbWUgLSBtX2J1ZmZlcik7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmFp
bChTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImKQor
eworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRGYWlsIiwgdGhpcyk7
CisgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hhbmRsZS5nZXQoKSB8fCAhbV9oYW5kbGUuZ2V0KCkp
OworICAgIGhhbmRsZS0+Y2xvc2UoKTsKK30KKworYm9vbCBXZWJTb2NrZXRDaGFubmVsOjphcHBl
bmRUb0J1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQoreworICAgIGNoYXIqIG5ld0J1
ZmZlciA9IDA7CisgICAgaWYgKHRyeUZhc3RNYWxsb2MobV9idWZmZXJTaXplICsgbGVuKS5nZXRW
YWx1ZShuZXdCdWZmZXIpKSB7CisgICAgICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgICAgIG1l
bWNweShuZXdCdWZmZXIsIG1fYnVmZmVyLCBtX2J1ZmZlclNpemUpOworICAgICAgICBtZW1jcHko
bmV3QnVmZmVyICsgbV9idWZmZXJTaXplLCBkYXRhLCBsZW4pOworICAgICAgICBmYXN0RnJlZSht
X2J1ZmZlcik7CisgICAgICAgIG1fYnVmZmVyID0gbmV3QnVmZmVyOworICAgICAgICBtX2J1ZmZl
clNpemUgKz0gbGVuOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgTE9HKE5ldHdv
cmssICJUb28gbG9uZyBXZWJTb2NrZXQgZnJhbWUgJWQiLCBtX2J1ZmZlclNpemUgKyBsZW4pOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpza2lwQnVmZmVy
KGludCBsZW4pCit7CisgICAgQVNTRVJUKGxlbiA8PSBtX2J1ZmZlclNpemUpOworICAgIG1fYnVm
ZmVyU2l6ZSAtPSBsZW47CisgICAgaWYgKCFtX2J1ZmZlclNpemUpIHsKKyAgICAgICAgZmFzdEZy
ZWUobV9idWZmZXIpOworICAgICAgICBtX2J1ZmZlciA9IDA7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgbWVtbW92ZShtX2J1ZmZlciwgbV9idWZmZXIgKyBsZW4sIG1fYnVmZmVyU2l6ZSk7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9T
T0NLRVRTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
aCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNzVmNDFmNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YlNvY2tldENoYW5uZWxfaAorI2RlZmluZSBXZWJTb2NrZXRDaGFubmVsX2gKKworI2lmIEVOQUJM
RShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgor
I2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CisgICAgY2xhc3MgU3RyaW5nOworICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZTsK
KyAgICBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvcjsKKyAgICBjbGFzcyBXZWJTb2NrZXRDaGFubmVs
Q2xpZW50OworCisgICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbCA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYlNvY2tldENoYW5uZWw+LCBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50IHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldENoYW5uZWw+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkgeyBy
ZXR1cm4gbmV3IFdlYlNvY2tldENoYW5uZWwoY29udGV4dCwgY2xpZW50LCB1cmwsIHByb3RvY29s
KTsgfQorICAgICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDaGFubmVsKCk7CisKKyAgICAgICAgdmly
dHVhbCB2b2lkIGNvbm5lY3QoKTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBT
dHJpbmcmIG1zZyk7CisgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3Vu
dCgpIGNvbnN0OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOworCisgICAgICAgIHZp
cnR1YWwgdm9pZCB3aWxsT3BlblN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBLVVJM
Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZERhdGEoU29ja2V0U3RyZWFtSGFuZGxl
KiwgY29uc3QgY2hhciosIGludCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuKFNvY2tl
dFN0cmVhbUhhbmRsZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoU29ja2V0U3Ry
ZWFtSGFuZGxlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShTb2NrZXRT
dHJlYW1IYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImKTsKKwor
ICAgIHByaXZhdGU6CisgICAgICAgIFdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFdlYlNvY2tldENoYW5uZWxDbGllbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5n
Jik7CisKKyAgICAgICAgYm9vbCBhcHBlbmRUb0J1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuKTsKKyAgICAgICAgdm9pZCBza2lwQnVmZmVyKGludCBsZW4pOworCisgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbENs
aWVudCogbV9jbGllbnQ7CisgICAgICAgIFdlYlNvY2tldEhhbmRzaGFrZSBtX2hhbmRzaGFrZTsK
KyAgICAgICAgUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gbV9oYW5kbGU7CisgICAgICAgIGNo
YXIqIG1fYnVmZmVyOworICAgICAgICBpbnQgbV9idWZmZXJTaXplOworICAgICAgICB1bnNpZ25l
ZCBsb25nIG1fdW5oYW5kbGVkQnVmZmVyU2l6ZTsKKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlmICAvLyBX
ZWJTb2NrZXRDaGFubmVsX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50LmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENs
aWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2M2NhZGEKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5o
CkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50X2gKKyNkZWZp
bmUgV2ViU29ja2V0Q2hhbm5lbENsaWVudF9oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFdlYlNvY2tldENoYW5uZWxDbGllbnQg
eworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+V2ViU29ja2V0Q2hhbm5lbENsaWVudCgp
IHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29ubmVjdCgpIHsgfQorICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJikgeyB9CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRDbG9zZSgpIHsgfQorCisgICAgcHJvdGVjdGVkOgorICAgICAgICBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50KCkgeyB9CisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAgLy8gV2ViU29j
a2V0Q2hhbm5lbENsaWVudF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5MWZhMWMKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAt
MCwwICsxLDQ2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tF
VFMpCisKKyNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2UuaCIKKworI2luY2x1ZGUgIkF0b21p
Y1N0cmluZy5oIgorI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJDb29raWVKYXIuaCIK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKKyNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlN0
cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGNoYXIgd2ViU29j
a2V0U2VydmVySGFuZHNoYWtlSGVhZGVyW10gPSAiSFRUUC8xLjEgMTAxIFdlYiBTb2NrZXQgUHJv
dG9jb2wgSGFuZHNoYWtlXHJcbiI7Citjb25zdCBjaGFyIHdlYlNvY2tldFVwZ3JhZGVIZWFkZXJb
XSA9ICJVcGdyYWRlOiBXZWJTb2NrZXRcclxuIjsKK2NvbnN0IGNoYXIgd2ViU29ja2V0Q29ubmVj
dGlvbkhlYWRlcltdID0gIkNvbm5lY3Rpb246IFVwZ3JhZGVcclxuIjsKKworc3RhdGljIFN0cmlu
ZyBleHRyYWN0UmVzcG9uc2VDb2RlKGNvbnN0IGNoYXIqIGhlYWRlciwgaW50IGxlbikKK3sKKyAg
ICBjb25zdCBjaGFyKiBzcGFjZTEgPSAwOworICAgIGNvbnN0IGNoYXIqIHNwYWNlMiA9IDA7Cisg
ICAgY29uc3QgY2hhciogcDsKKyAgICBmb3IgKHAgPSBoZWFkZXI7IHAgLSBoZWFkZXIgPCBsZW47
IHArKykgeworICAgICAgICBpZiAoKnAgPT0gJyAnKSB7CisgICAgICAgICAgICBpZiAoIXNwYWNl
MSkKKyAgICAgICAgICAgICAgICBzcGFjZTEgPSBwOworICAgICAgICAgICAgZWxzZSBpZiAoIXNw
YWNlMikKKyAgICAgICAgICAgICAgICBzcGFjZTIgPSBwOworICAgICAgICB9IGVsc2UgaWYgKCpw
ID09ICdcbicpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKHAgLSBoZWFkZXIg
PT0gbGVuKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgaWYgKCFzcGFjZTEgfHwgIXNw
YWNlMikKKyAgICAgICAgcmV0dXJuICIiOworICAgIHJldHVybiBTdHJpbmcoc3BhY2UxICsgMSwg
c3BhY2UyIC0gc3BhY2UxIC0gMSk7Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZTo6V2ViU29ja2V0
SGFuZHNoYWtlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fdXJsKHVybCkKKyAgICAsIG1fY2xp
ZW50UHJvdG9jb2wocHJvdG9jb2wpCisgICAgLCBtX3NlY3VyZShtX3VybC5wcm90b2NvbElzKCJ3
c3MiKSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9tb2RlKEluY29tcGxldGUp
Cit7Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZTo6fldlYlNvY2tldEhhbmRzaGFrZSgpCit7Cit9
CisKK2NvbnN0IEtVUkwmIFdlYlNvY2tldEhhbmRzaGFrZTo6dXJsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV91cmw7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRVUkwoY29uc3Qg
S1VSTCYgdXJsKQoreworICAgIG1fdXJsID0gdXJsLmNvcHkoKTsKK30KKworY29uc3QgU3RyaW5n
IFdlYlNvY2tldEhhbmRzaGFrZTo6aG9zdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXJsLmhv
c3QoKS5sb3dlcigpOworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xp
ZW50UHJvdG9jb2woKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudFByb3RvY29sOworfQor
Cit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0Q2xpZW50UHJvdG9jb2woY29uc3QgU3RyaW5n
JiBwcm90b2NvbCkKK3sKKyAgICBtX2NsaWVudFByb3RvY29sID0gcHJvdG9jb2w7Cit9CisKK2Jv
b2wgV2ViU29ja2V0SGFuZHNoYWtlOjpzZWN1cmUoKSBjb25zdAoreworICAgIHJldHVybiBtX3Nl
Y3VyZTsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFNlY3VyZShib29sIHNlY3Vy
ZSkKK3sKKyAgICBtX3NlY3VyZSA9IHNlY3VyZTsKK30KKworU3RyaW5nIFdlYlNvY2tldEhhbmRz
aGFrZTo6Y2xpZW50T3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0LT5zZWN1
cml0eU9yaWdpbigpLT50b1N0cmluZygpOworfQorCitTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtl
OjpjbGllbnRMb2NhdGlvbigpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKG1fc2VjdXJlID8gIndzcyIgOiAid3MiKTsKKyAgICBidWlsZGVy
LmFwcGVuZCgiOi8vIik7CisgICAgYnVpbGRlci5hcHBlbmQobV91cmwuaG9zdCgpLmxvd2VyKCkp
OworICAgIGlmIChtX3VybC5wb3J0KCkpIHsKKyAgICAgICAgaWYgKCghbV9zZWN1cmUgJiYgbV91
cmwucG9ydCgpICE9IDgwKSB8fCAobV9zZWN1cmUgJiYgbV91cmwucG9ydCgpICE9IDQ0MykpIHsK
KyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6Iik7CisgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChTdHJpbmc6Om51bWJlcihtX3VybC5wb3J0KCkpKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBidWlsZGVyLmFwcGVuZChtX3VybC5wYXRoKCkpOworICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7Cit9CisKK0NTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VN
ZXNzYWdlKCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAgICBidWls
ZGVyLmFwcGVuZCgiR0VUICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fdXJsLnBhdGgoKSk7Cisg
ICAgaWYgKCFtX3VybC5xdWVyeSgpLmlzRW1wdHkoKSkgeworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiPyIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChtX3VybC5xdWVyeSgpKTsKKyAgICB9Cisg
ICAgYnVpbGRlci5hcHBlbmQoIiBIVFRQLzEuMVxyXG4iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgi
VXBncmFkZTogV2ViU29ja2V0XHJcbiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJDb25uZWN0aW9u
OiBVcGdyYWRlXHJcbiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJIb3N0OiAiKTsKKyAgICBidWls
ZGVyLmFwcGVuZChtX3VybC5ob3N0KCkubG93ZXIoKSk7CisgICAgaWYgKG1fdXJsLnBvcnQoKSkg
eworICAgICAgICBpZiAoKCFtX3NlY3VyZSAmJiBtX3VybC5wb3J0KCkgIT0gODApIHx8IChtX3Nl
Y3VyZSAmJiBtX3VybC5wb3J0KCkgIT0gNDQzKSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIjoiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG1fdXJs
LnBvcnQoKSkpOworICAgICAgICB9CisgICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7
CisgICAgYnVpbGRlci5hcHBlbmQoIk9yaWdpbjogIik7CisgICAgYnVpbGRlci5hcHBlbmQoY2xp
ZW50T3JpZ2luKCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisgICAgaWYgKCFtX2Ns
aWVudFByb3RvY29sLmlzRW1wdHkoKSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZCgiV2ViU29j
a2V0LVByb3RvY29sOiAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV9jbGllbnRQcm90b2Nv
bCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisgICAgfQorICAgIEtVUkwgdXJs
ID0gaHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpOworICAgIC8vIEZJWE1FOiBz
ZXQgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gb3IgY29va2llcyBmb3IgdXJsLgorICAgIC8v
IFNldCAiQXV0aG9yaXphdGlvbjogPGNyZWRlbnRpYWxzPiIgaWYgYXV0aGVudGljYXRpb24gaW5m
b3JtYXRpb24gZXhpc3RzIGZvciB1cmwuCisgICAgaWYgKG1fY29udGV4dC0+aXNEb2N1bWVudCgp
KSB7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4o
bV9jb250ZXh0KTsKKyAgICAgICAgU3RyaW5nIGNvb2tpZSA9IGNvb2tpZXMoZG9jdW1lbnQsIHVy
bCk7CisgICAgICAgIGlmICghY29va2llLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIkNvb2tpZTogIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChjb29raWUp
OworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKKyAgICAgICAgfQorICAgICAg
ICAvLyBTZXQgIkNvb2tpZTI6IDxjb29raWU+IiBpZiBjb29raWVzIDIgZXhpc3RzIGZvciB1cmw/
CisgICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKS51dGY4KCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZXNldCgp
Cit7CisgICAgbV9tb2RlID0gSW5jb21wbGV0ZTsKKworICAgIG1fd3NPcmlnaW4gPSBTdHJpbmco
KTsKKyAgICBtX3dzTG9jYXRpb24gPSBTdHJpbmcoKTsKKyAgICBtX3dzUHJvdG9jb2wgPSBTdHJp
bmcoKTsKKyAgICBtX3NldENvb2tpZSA9IFN0cmluZygpOworICAgIG1fc2V0Q29va2llMiA9IFN0
cmluZygpOworfQorCitpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtl
KGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKK3sKKyAgICBtX21vZGUgPSBJbmNvbXBs
ZXRlOworICAgIGlmIChsZW4gPCBzaXplb2Yod2ViU29ja2V0U2VydmVySGFuZHNoYWtlSGVhZGVy
KSAtIDEpIHsKKyAgICAgICAgLy8gSnVzdCBoYXNuJ3QgYmVlbiByZWNlaXZlZCBmdWxseSB5ZXQu
CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFtZW1jbXAoaGVhZGVyLCB3ZWJT
b2NrZXRTZXJ2ZXJIYW5kc2hha2VIZWFkZXIsIHNpemVvZih3ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hh
a2VIZWFkZXIpIC0gMSkpCisgICAgICAgIG1fbW9kZSA9IE5vcm1hbDsKKyAgICBlbHNlIHsKKyAg
ICAgICAgY29uc3QgU3RyaW5nJiBjb2RlID0gZXh0cmFjdFJlc3BvbnNlQ29kZShoZWFkZXIsIGxl
bik7CisgICAgICAgIGlmIChjb2RlLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBMT0coTmV0d29y
aywgInNob3J0IHNlcnZlciBoYW5kc2hha2U6ICVzIiwgaGVhZGVyKTsKKyAgICAgICAgICAgIHJl
dHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29kZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIExPRyhOZXR3b3JrLCAibm8gcmVzcG9uc2UgY29kZSBmb3VuZDogJXMiLCBoZWFkZXIp
OworICAgICAgICAgICAgcmV0dXJuIGxlbjsKKyAgICAgICAgfQorICAgICAgICBMT0coTmV0d29y
aywgInJlc3BvbnNlIGNvZGU6ICVzIiwgY29kZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYg
KGNvZGUgPT0gIjQwMSIpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiQXV0aGVudGljYXRp
b24gcmVxdWlyZWQiKTsKKyAgICAgICAgICAgIHJldHVybiBsZW47CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBMT0coTmV0d29yaywgIk1pc21hdGNoIHNlcnZlciBoYW5kc2hha2U6ICVz
IiwgaGVhZGVyKTsKKyAgICAgICAgICAgIHJldHVybiBsZW47CisgICAgICAgIH0KKyAgICB9Cisg
ICAgY29uc3QgY2hhciogcCA9IGhlYWRlciArIHNpemVvZih3ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hh
a2VIZWFkZXIpIC0gMTsKKyAgICBjb25zdCBjaGFyKiBlbmQgPSBoZWFkZXIgKyBsZW4gKyAxOwor
CisgICAgaWYgKG1fbW9kZSA9PSBOb3JtYWwpIHsKKyAgICAgICAgc2l6ZV90IGhlYWRlclNpemUg
PSBlbmQgLSBwOworICAgICAgICBpZiAoaGVhZGVyU2l6ZSA8IHNpemVvZih3ZWJTb2NrZXRVcGdy
YWRlSGVhZGVyKSAtIDEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKG1lbWNt
cChwLCB3ZWJTb2NrZXRVcGdyYWRlSGVhZGVyLCBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRl
cikgLSAxKSkgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJCYWQgdXBncmFkZSBoZWFkZXI6
ICVzIiwgcCk7CisgICAgICAgICAgICByZXR1cm4gcCAtIGhlYWRlciArIHNpemVvZih3ZWJTb2Nr
ZXRVcGdyYWRlSGVhZGVyKSAtIDE7CisgICAgICAgIH0KKyAgICAgICAgcCArPSBzaXplb2Yod2Vi
U29ja2V0VXBncmFkZUhlYWRlcikgLSAxOworCisgICAgICAgIGhlYWRlclNpemUgPSBlbmQgLSBw
OworICAgICAgICBpZiAoaGVhZGVyU2l6ZSA8IHNpemVvZih3ZWJTb2NrZXRDb25uZWN0aW9uSGVh
ZGVyKSAtIDEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChtZW1jbXAocCwg
d2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlciwgc2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rpb25IZWFk
ZXIpIC0gMSkpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiQmFkIGNvbm5lY3Rpb24gaGVh
ZGVyOiAlcyIsIHApOworICAgICAgICAgICAgcmV0dXJuIHAgLSBoZWFkZXIgKyBzaXplb2Yod2Vi
U29ja2V0Q29ubmVjdGlvbkhlYWRlcikgLSAxOworICAgICAgICB9CisgICAgICAgIHAgKz0gc2l6
ZW9mKHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXIpIC0gMTsKKyAgICB9CisKKyAgICBpZiAoIXN0
cm5zdHIocCwgIlxyXG5cclxuIiwgZW5kIC0gcCkpIHsKKyAgICAgICAgLy8gSnVzdCBoYXNuJ3Qg
YmVlbiByZWNlaXZlZCBmdWxseSB5ZXQuCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAg
SFRUUEhlYWRlck1hcCBoZWFkZXJzOworICAgIHAgPSByZWFkSFRUUEhlYWRlcnMocCwgZW5kLCAm
aGVhZGVycyk7CisgICAgaWYgKCFwKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAicmVhZEhUVFBI
ZWFkZXJzIGZhaWxlZCIpOworICAgICAgICBtX21vZGUgPSBGYWlsZWQ7CisgICAgICAgIHJldHVy
biBsZW47CisgICAgfQorICAgIGlmICghcHJvY2Vzc0hlYWRlcnMoaGVhZGVycykpIHsKKyAgICAg
ICAgTE9HKE5ldHdvcmssICJoZWFkZXIgcHJvY2VzcyBmYWlsZWQiKTsKKyAgICAgICAgbV9tb2Rl
ID0gRmFpbGVkOworICAgICAgICByZXR1cm4gcCAtIGhlYWRlcjsKKyAgICB9CisgICAgc3dpdGNo
IChtX21vZGUpIHsKKyAgICBjYXNlIE5vcm1hbDoKKyAgICAgICAgY2hlY2tSZXNwb25zZUhlYWRl
cnMoKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbV9tb2RlID0gRmFp
bGVkOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHAgLSBoZWFkZXI7Cit9CisK
K1dlYlNvY2tldEhhbmRzaGFrZTo6TW9kZSBXZWJTb2NrZXRIYW5kc2hha2U6Om1vZGUoKSBjb25z
dAoreworICAgIHJldHVybiBtX21vZGU7Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0SGFu
ZHNoYWtlOjpzZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oKSBjb25zdAoreworICAgIHJldHVybiBtX3dz
T3JpZ2luOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyV2ViU29ja2V0
T3JpZ2luKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0T3JpZ2luKQoreworICAgIG1fd3NPcmlnaW4g
PSB3ZWJTb2NrZXRPcmlnaW47Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0SGFuZHNoYWtl
OjpzZXJ2ZXJXZWJTb2NrZXRMb2NhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd3NMb2Nh
dGlvbjsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFNlcnZlcldlYlNvY2tldExv
Y2F0aW9uKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0TG9jYXRpb24pCit7CisgICAgbV93c0xvY2F0
aW9uID0gd2ViU29ja2V0TG9jYXRpb247Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0SGFu
ZHNoYWtlOjpzZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
d3NQcm90b2NvbDsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFNlcnZlcldlYlNv
Y2tldFByb3RvY29sKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0UHJvdG9jb2wpCit7CisgICAgbV93
c1Byb3RvY29sID0gd2ViU29ja2V0UHJvdG9jb2w7Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29j
a2V0SGFuZHNoYWtlOjpzZXJ2ZXJTZXRDb29raWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3Nl
dENvb2tpZTsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFNlcnZlclNldENvb2tp
ZShjb25zdCBTdHJpbmcmIHNldENvb2tpZSkKK3sKKyAgICBtX3NldENvb2tpZSA9IHNldENvb2tp
ZTsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlclNldENvb2tp
ZTIoKSBjb25zdAoreworICAgIHJldHVybiBtX3NldENvb2tpZTI7Cit9CisKK3ZvaWQgV2ViU29j
a2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJTZXRDb29raWUyKGNvbnN0IFN0cmluZyYgc2V0Q29va2ll
MikKK3sKKyAgICBtX3NldENvb2tpZTIgPSBzZXRDb29raWUyOworfQorCitLVVJMIFdlYlNvY2tl
dEhhbmRzaGFrZTo6aHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0Cit7
CisgICAgS1VSTCB1cmwgPSBtX3VybC5jb3B5KCk7CisgICAgdXJsLnNldFByb3RvY29sKG1fc2Vj
dXJlID8gImh0dHBzIiA6ICJodHRwIik7CisgICAgcmV0dXJuIHVybDsKK30KKworY29uc3QgY2hh
ciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQs
IGNvbnN0IGNoYXIqIGVuZCwgSFRUUEhlYWRlck1hcCogaGVhZGVycykKK3sKKyAgICBWZWN0b3I8
Y2hhcj4gbmFtZTsKKyAgICBWZWN0b3I8Y2hhcj4gdmFsdWU7CisgICAgZm9yIChjb25zdCBjaGFy
KiBwID0gc3RhcnQ7IHAgPCBlbmQ7IHArKykgeworICAgICAgICBuYW1lLmNsZWFyKCk7CisgICAg
ICAgIHZhbHVlLmNsZWFyKCk7CisKKyAgICAgICAgZm9yICg7IHAgPCBlbmQ7IHArKykgeworICAg
ICAgICAgICAgc3dpdGNoICgqcCkgeworICAgICAgICAgICAgY2FzZSAnXHInOgorICAgICAgICAg
ICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAocCAr
IDEgPCBlbmQgJiYgKihwICsgMSkgPT0gJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBwICsgMjsKKyAgICAgICAgICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDUiBkb2Vzbid0
IGZvbGxvdyBMRiBwPSVwIGVuZD0lcCIsIHAsIGVuZCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBMT0coTmV0d29yaywg
IlVuZXhwZWN0ZWQgQ1IgaW4gbmFtZSIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICAgICAgY2FzZSAnXG4nOgorICAgICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiVW5leHBl
Y3RlZCBMRiBpbiBuYW1lIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAg
ICBjYXNlICc6JzoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgaWYgKCpwID49IDB4NDEgJiYgKnAgPD0gMHg1YSkKKyAgICAgICAg
ICAgICAgICAgICAgbmFtZS5hcHBlbmQoKnAgKyAweDIwKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIG5hbWUuYXBwZW5kKCpwKTsKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgqcCA9PSAnOicpIHsKKyAg
ICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBmb3IgKDsgcCA8IGVuZCAmJiAqcCA9PSAweDIwOyBwKysp
IHsgfQorCisgICAgICAgIGZvciAoOyBwIDwgZW5kOyBwKyspIHsKKyAgICAgICAgICAgIHN3aXRj
aCAoKnApIHsKKyAgICAgICAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgJ1xuJzoKKyAgICAgICAgICAgICAgICBMT0coTmV0d29yaywgIlVu
ZXhwZWN0ZWQgTEYgaW4gdmFsdWUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdmFsdWUuYXBwZW5kKCpwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmICgqcCA9PSAnXHInKSB7CisgICAgICAgICAgICAgICAg
KytwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGlmIChwID49IGVuZCB8fCAqcCAhPSAnXG4nKSB7CisgICAgICAgICAgICBMT0coTmV0
d29yaywgIkNSIGRvZXNuJ3QgZm9sbG93IExGIGFmdGVyIHZhbHVlIHA9JXAgZW5kPSVwIiwgcCwg
ZW5kKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIEF0b21pY1N0
cmluZyBuYW1lU3RyKFN0cmluZzo6ZnJvbVVURjgobmFtZS5kYXRhKCksIG5hbWUuc2l6ZSgpKSk7
CisgICAgICAgIFN0cmluZyB2YWx1ZVN0ciA9IFN0cmluZzo6ZnJvbVVURjgodmFsdWUuZGF0YSgp
LCB2YWx1ZS5zaXplKCkpOworICAgICAgICBMT0coTmV0d29yaywgIm5hbWU9JXMgdmFsdWU9JXMi
LCBuYW1lU3RyLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHZhbHVlU3RyLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICBoZWFkZXJzLT5hZGQobmFtZVN0ciwgdmFsdWVTdHIpOworICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBXZWJTb2NrZXRI
YW5kc2hha2U6OnByb2Nlc3NIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCit7
CisgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMuYmVn
aW4oKTsgaXQgIT0gaGVhZGVycy5lbmQoKTsgKytpdCkgeworICAgICAgICBzd2l0Y2ggKG1fbW9k
ZSkgeworICAgICAgICBjYXNlIE5vcm1hbDoKKyAgICAgICAgICAgIGlmIChpdC0+Zmlyc3QgPT0g
IndlYnNvY2tldC1vcmlnaW4iKQorICAgICAgICAgICAgICAgIG1fd3NPcmlnaW4gPSBpdC0+c2Vj
b25kOworICAgICAgICAgICAgZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJ3ZWJzb2NrZXQtbG9jYXRp
b24iKQorICAgICAgICAgICAgICAgIG1fd3NMb2NhdGlvbiA9IGl0LT5zZWNvbmQ7CisgICAgICAg
ICAgICBlbHNlIGlmIChpdC0+Zmlyc3QgPT0gIndlYnNvY2tldC1wcm90b2NvbCIpCisgICAgICAg
ICAgICAgICAgbV93c1Byb3RvY29sID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIGVsc2UgaWYg
KGl0LT5maXJzdCA9PSAic2V0LWNvb2tpZSIpCisgICAgICAgICAgICAgICAgbV9zZXRDb29raWUg
PSBpdC0+c2Vjb25kOworICAgICAgICAgICAgZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJzZXQtY29v
a2llMiIpCisgICAgICAgICAgICAgICAgbV9zZXRDb29raWUyID0gaXQtPnNlY29uZDsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBjYXNlIEluY29tcGxldGU6CisgICAgICAgIGNhc2Ug
RmFpbGVkOgorICAgICAgICBjYXNlIENvbm5lY3RlZDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OmNoZWNr
UmVzcG9uc2VIZWFkZXJzKCkKK3sKKyAgICBBU1NFUlQobV9tb2RlID09IE5vcm1hbCk7CisgICAg
bV9tb2RlID0gRmFpbGVkOworICAgIGlmIChtX3dzT3JpZ2luLmlzTnVsbCgpIHx8IG1fd3NMb2Nh
dGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNsaWVudE9yaWdpbigp
ICE9IG1fd3NPcmlnaW4pIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJNaXNtYXRjaCBvcmlnaW46
ICVzICE9ICVzIiwgY2xpZW50T3JpZ2luKCkudXRmOCgpLmRhdGEoKSwgbV93c09yaWdpbi51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoY2xpZW50TG9jYXRp
b24oKSAhPSBtX3dzTG9jYXRpb24pIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJNaXNtYXRjaCBs
b2NhdGlvbjogJXMgIT0gJXMiLCBjbGllbnRMb2NhdGlvbigpLnV0ZjgoKS5kYXRhKCksIG1fd3NM
b2NhdGlvbi51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
IW1fY2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpICYmIG1fY2xpZW50UHJvdG9jb2wgIT0gbV93c1By
b3RvY29sKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiTWlzbWF0Y2ggcHJvdG9jb2w6ICVzICE9
ICVzIiwgbV9jbGllbnRQcm90b2NvbC51dGY4KCkuZGF0YSgpLCBtX3dzUHJvdG9jb2wudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9tb2RlID0gQ29ubmVjdGVk
OworICAgIHJldHVybjsKK30KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAv
LyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVkYmU2OAotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaApAQCAtMCww
ICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldEhhbmRzaGFrZV9oCisjZGVmaW5lIFdlYlNvY2tl
dEhhbmRzaGFrZV9oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKKyAgICBjbGFzcyBIVFRQSGVhZGVyTWFwOworCisgICAgY2xhc3MgV2ViU29ja2V0
SGFuZHNoYWtlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGVu
dW0gTW9kZSB7CisgICAgICAgICAgICBJbmNvbXBsZXRlLCBOb3JtYWwsIEZhaWxlZCwgQ29ubmVj
dGVkCisgICAgICAgIH07CisgICAgICAgIFdlYlNvY2tldEhhbmRzaGFrZShjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgICAg
ICB+V2ViU29ja2V0SGFuZHNoYWtlKCk7CisKKyAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0VVJMKGNvbnN0IEtVUkwmKTsKKyAgICAgICAgY29uc3QgU3Ry
aW5nIGhvc3QoKSBjb25zdDsKKworICAgICAgICBjb25zdCBTdHJpbmcmIGNsaWVudFByb3RvY29s
KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0Q2xpZW50UHJvdG9jb2woY29uc3QgU3RyaW5nJiBw
cm90b2NvbCk7CisKKyAgICAgICAgYm9vbCBzZWN1cmUoKSBjb25zdDsKKyAgICAgICAgdm9pZCBz
ZXRTZWN1cmUoYm9vbCBzZWN1cmUpOworCisgICAgICAgIFN0cmluZyBjbGllbnRPcmlnaW4oKSBj
b25zdDsKKyAgICAgICAgU3RyaW5nIGNsaWVudExvY2F0aW9uKCkgY29uc3Q7CisKKyAgICAgICAg
Q1N0cmluZyBjbGllbnRIYW5kc2hha2VNZXNzYWdlKCkgY29uc3Q7CisKKyAgICAgICAgdm9pZCBy
ZXNldCgpOworCisgICAgICAgIGludCByZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhl
YWRlciwgc2l6ZV90IGxlbik7CisgICAgICAgIE1vZGUgbW9kZSgpIGNvbnN0OworCisgICAgICAg
IGNvbnN0IFN0cmluZyYgc2VydmVyV2ViU29ja2V0T3JpZ2luKCkgY29uc3Q7CisgICAgICAgIHZv
aWQgc2V0U2VydmVyV2ViU29ja2V0T3JpZ2luKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0T3JpZ2lu
KTsKKworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZlcldlYlNvY2tldExvY2F0aW9uKCkgY29u
c3Q7CisgICAgICAgIHZvaWQgc2V0U2VydmVyV2ViU29ja2V0TG9jYXRpb24oY29uc3QgU3RyaW5n
JiB3ZWJTb2NrZXRMb2NhdGlvbik7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJXZWJT
b2NrZXRQcm90b2NvbCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNlcnZlcldlYlNvY2tldFBy
b3RvY29sKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0UHJvdG9jb2wpOworCisgICAgICAgIGNvbnN0
IFN0cmluZyYgc2VydmVyU2V0Q29va2llKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2VydmVy
U2V0Q29va2llKGNvbnN0IFN0cmluZyYgc2V0Q29va2llKTsKKyAgICAgICAgY29uc3QgU3RyaW5n
JiBzZXJ2ZXJTZXRDb29raWUyKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2VydmVyU2V0Q29v
a2llMihjb25zdCBTdHJpbmcmIHNldENvb2tpZTIpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAg
S1VSTCBodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3Q7CisKKyAgICAg
ICAgLy8gUmVhZHMgYWxsIGhlYWRlcnMgZXhjZXB0IGZvciB0aGUgdHdvIHByZWRlZmluZWQgb25l
cy4KKyAgICAgICAgY29uc3QgY2hhciogcmVhZEhUVFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0YXJ0
LCBjb25zdCBjaGFyKiBlbmQsIEhUVFBIZWFkZXJNYXAqIGhlYWRlcnMpOworICAgICAgICBib29s
IHByb2Nlc3NIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpOworICAgICAgICB2
b2lkIGNoZWNrUmVzcG9uc2VIZWFkZXJzKCk7CisKKyAgICAgICAgS1VSTCBtX3VybDsKKyAgICAg
ICAgU3RyaW5nIG1fY2xpZW50UHJvdG9jb2w7CisgICAgICAgIGJvb2wgbV9zZWN1cmU7CisgICAg
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKKworICAgICAgICBNb2RlIG1f
bW9kZTsKKworICAgICAgICBTdHJpbmcgbV93c09yaWdpbjsKKyAgICAgICAgU3RyaW5nIG1fd3NM
b2NhdGlvbjsKKyAgICAgICAgU3RyaW5nIG1fd3NQcm90b2NvbDsKKyAgICAgICAgU3RyaW5nIG1f
c2V0Q29va2llOworICAgICAgICBTdHJpbmcgbV9zZXRDb29raWUyOworICAgIH07CisKK30gIC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisj
ZW5kaWYgIC8vIFdlYlNvY2tldEhhbmRzaGFrZV9o
</data>
<flag name="review"
          id="20231"
          type_id="1"
          status="-"
          setter="ukai"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39226</attachid>
            <date>2009-09-08 16:24:42 -0700</date>
            <delta_ts>2009-09-10 03:24:39 -0700</delta_ts>
            <desc>WebSocket API implementation. (add vcproj build)</desc>
            <filename>bug-28038-20090909082439.patch</filename>
            <type>text/plain</type>
            <size>167787</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAwYWNlODdjLi41ODQxMzI5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMDktMDktMDcgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IFdURjo6
dHJ5RmFzdE1hbGxvYyB1c2VkIGluIFdlYlNvY2tldENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODAzOAorCisgICAgICAgICogSmF2YVNj
cmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlX2RlYnVnLmRlZjoKKwogMjAwOS0wOS0wOCAg
S2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICB3eCBi
dWlsZCBmaXgsIGdlbmVyYXRlIGRlcml2ZWQgc291cmNlcyBlYXJsaWVyIGluIG9yZGVyIHRvIG1h
a2Ugc3VyZQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IGEwMjk3MjQuLmNkODBkNzQg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTI5NCw2ICsyOTQsNyBAQCBfX1pOM1dU
RjEyZGV0YWNoVGhyZWFkRWoKIF9fWk4zV1RGMTJpc01haW5UaHJlYWRFdgogX19aTjNXVEYxMnJh
bmRvbU51bWJlckV2CiBfX1pOM1dURjEzY3VycmVudFRocmVhZEV2CitfX1pOM1dURjEzdHJ5RmFz
dE1hbGxvY0VtCiBfX1pOM1dURjEzdHJ5RmFzdENhbGxvY0VtbQogX19aTjNXVEYxM3RyeUZhc3RN
YWxsb2NFbQogX19aTjNXVEYxNVRocmVhZENvbmRpdGlvbjR3YWl0RVJOU181TXV0ZXhFCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgppbmRleCA3MDA1OWM4Li40MGIy
ZDkxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAgLTI3
MCw2ICsyNzAsNyBAQCBFWFBPUlRTCiAgICAgP3RvVUludDMyQFVTdHJpbmdASlNDQEBRQkVJUEFf
Tl9OQFoKICAgICA/dG9VSW50MzJTbG93Q2FzZUBKU0NAQFlBSU5BQV9OQFoKICAgICA/dHJ5RmFz
dENhbGxvY0BXVEZAQFlBP0FVVHJ5TWFsbG9jUmV0dXJuVmFsdWVAMUBJSUBaCisgICAgP3RyeUZh
c3RNYWxsb2NAV1RGQEBZQT9BVVRyeU1hbGxvY1JldHVyblZhbHVlQDFASUBaCiAgICAgP3RyeUxv
Y2tATXV0ZXhAV1RGQEBRQUVfTlhaCiAgICAgP3R5cGVARGVidWdnZXJDYWxsRnJhbWVASlNDQEBR
QkU/QVc0VHlwZUAxMkBYWgogICAgID91bmxvY2tASlNMb2NrQEpTQ0BAU0FYVzRKU0xvY2tCZWhh
dmlvckAyQEBaCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVfZGVidWcuZGVmIGIvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlX2Rl
YnVnLmRlZgppbmRleCA4MTY1NjJmLi5iZDA5NmE1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVfZGVi
dWcuZGVmCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZV9kZWJ1Zy5kZWYKQEAgLTI3MCw2ICsyNzAsNyBAQCBFWFBP
UlRTCiAgICAgP3RvVUludDMyQFVTdHJpbmdASlNDQEBRQkVJUEFfTl9OQFoKICAgICA/dG9VSW50
MzJTbG93Q2FzZUBKU0NAQFlBSU5BQV9OQFoKICAgICA/dHJ5RmFzdENhbGxvY0BXVEZAQFlBP0FV
VHJ5TWFsbG9jUmV0dXJuVmFsdWVAMUBJSUBaCisgICAgP3RyeUZhc3RNYWxsb2NAV1RGQEBZQT9B
VVRyeU1hbGxvY1JldHVyblZhbHVlQDFASUBaCiAgICAgP3RyeUxvY2tATXV0ZXhAV1RGQEBRQUVf
TlhaCiAgICAgP3R5cGVARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkU/QVc0VHlwZUAxMkBYWgog
ICAgID91bmxvY2tASlNMb2NrQEpTQ0BAU0FYVzRKU0xvY2tCZWhhdmlvckAyQEBaCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YTM0NmVmYS4uZjBhMDM1NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDA5LTA5LTA3ICBGdW1p
dG9zaGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXZWJTb2NrZXQgQVBJLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgwMzgKKworICAgICAgICAqIGZh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLTItZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dDoKKwogMjAwOS0wOS0wOCAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90
aHkgSGF0Y2hlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5k
b3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cv
d2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CmluZGV4IDdmNThkOGMuLmU4N2QwMzggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9w
ZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMTUxNSw2ICsxNTE1LDEzIEBAIHdpbmRvdy5XZWJLaXRQ
b2ludCBbb2JqZWN0IFdlYktpdFBvaW50Q29uc3RydWN0b3JdCiB3aW5kb3cuV2ViS2l0UG9pbnQu
cHJvdG90eXBlIFtvYmplY3QgV2ViS2l0UG9pbnRQcm90b3R5cGVdCiB3aW5kb3cuV2ViS2l0VHJh
bnNpdGlvbkV2ZW50IFtvYmplY3QgV2ViS2l0VHJhbnNpdGlvbkV2ZW50Q29uc3RydWN0b3JdCiB3
aW5kb3cuV2ViS2l0VHJhbnNpdGlvbkV2ZW50LnByb3RvdHlwZSBbcHJpbnRlZCBhYm92ZSBhcyB3
aW5kb3cuRXZlbnQucHJvdG90eXBlXQord2luZG93LldlYlNvY2tldCBbb2JqZWN0IFdlYlNvY2tl
dENvbnN0cnVjdG9yXQord2luZG93LldlYlNvY2tldC5wcm90b3R5cGUgW29iamVjdCBXZWJTb2Nr
ZXRQcm90b3R5cGVdCit3aW5kb3cuV2ViU29ja2V0LnByb3RvdHlwZS5DTE9TRUQgW251bWJlcl0K
K3dpbmRvdy5XZWJTb2NrZXQucHJvdG90eXBlLkNPTk5FQ1RJTkcgW251bWJlcl0KK3dpbmRvdy5X
ZWJTb2NrZXQucHJvdG90eXBlLk9QRU4gW251bWJlcl0KK3dpbmRvdy5XZWJTb2NrZXQucHJvdG90
eXBlLmNsb3NlIFtmdW5jdGlvbl0KK3dpbmRvdy5XZWJTb2NrZXQucHJvdG90eXBlLnNlbmQgW2Z1
bmN0aW9uXQogd2luZG93LldoZWVsRXZlbnQgW29iamVjdCBXaGVlbEV2ZW50Q29uc3RydWN0b3Jd
CiB3aW5kb3cuV2hlZWxFdmVudC5wcm90b3R5cGUgW3ByaW50ZWQgYWJvdmUgYXMgd2luZG93LkV2
ZW50LnByb3RvdHlwZV0KIHdpbmRvdy5Xb3JrZXIgW29iamVjdCBXb3JrZXJDb25zdHJ1Y3Rvcl0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS0y
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5j
ZS0yLWV4cGVjdGVkLnR4dAppbmRleCAzNTAxNzBjLi4wNGFkMWFmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtMi1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLTItZXhwZWN0ZWQu
dHh0CkBAIC0zNjMsNiArMzYzLDcgQEAgTmV2ZXIgZm91bmQgVGV4dE1ldHJpY3MKIE5ldmVyIGZv
dW5kIFdlYktpdENTU01hdHJpeAogTmV2ZXIgZm91bmQgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUK
IE5ldmVyIGZvdW5kIFdlYktpdFBvaW50CitOZXZlciBmb3VuZCBXZWJTb2NrZXQKIE5ldmVyIGZv
dW5kIFdvcmtlcgogTmV2ZXIgZm91bmQgWE1MSHR0cFJlcXVlc3QKIE5ldmVyIGZvdW5kIFhNTEh0
dHBSZXF1ZXN0VXBsb2FkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5
cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90
eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dAppbmRleCBiZjRiNzBkLi5mYTVjYzJkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1l
eHBlY3RlZC50eHQKQEAgLTMzNyw2ICszMzcsOCBAQCBQQVNTIGlubmVyLldlYktpdFBvaW50Lmlz
SW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci5XZWJLaXRQb2ludC5jb25zdHJ1Y3Rvci5pc0lubmVy
IGlzIHRydWUKIFBBU1MgaW5uZXIuV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlzSW5uZXIgaXMgdHJ1
ZQogUEFTUyBpbm5lci5XZWJLaXRUcmFuc2l0aW9uRXZlbnQuY29uc3RydWN0b3IuaXNJbm5lciBp
cyB0cnVlCitQQVNTIGlubmVyLldlYlNvY2tldC5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIu
V2ViU29ja2V0LmNvbnN0cnVjdG9yLmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci5XaGVlbEV2
ZW50LmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci5XaGVlbEV2ZW50LmNvbnN0cnVjdG9yLmlz
SW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci5Xb3JrZXIuaXNJbm5lciBpcyB0cnVlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dApp
bmRleCA3NDIzMjVhLi4wZDMxNmEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2pzL2ds
b2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMv
Z2xvYmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKQEAgLTE2Myw2ICsxNjMsNyBAQCBQQVNT
IFdlYktpdENTU01hdHJpeC50b1N0cmluZygpIGlzICdbb2JqZWN0IFdlYktpdENTU01hdHJpeENv
bnN0cnVjdG9yXScKIFBBU1MgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUudG9TdHJpbmcoKSBpcyAn
W29iamVjdCBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZUNvbnN0cnVjdG9yXScKIFBBU1MgV2ViS2l0
UG9pbnQudG9TdHJpbmcoKSBpcyAnW29iamVjdCBXZWJLaXRQb2ludENvbnN0cnVjdG9yXScKIFBB
U1MgV2ViS2l0VHJhbnNpdGlvbkV2ZW50LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgV2ViS2l0VHJh
bnNpdGlvbkV2ZW50Q29uc3RydWN0b3JdJworUEFTUyBXZWJTb2NrZXQudG9TdHJpbmcoKSBpcyAn
W29iamVjdCBXZWJTb2NrZXRDb25zdHJ1Y3Rvcl0nCiBQQVNTIFdoZWVsRXZlbnQudG9TdHJpbmco
KSBpcyAnW29iamVjdCBXaGVlbEV2ZW50Q29uc3RydWN0b3JdJwogUEFTUyBXb3JrZXIudG9TdHJp
bmcoKSBpcyAnW29iamVjdCBXb3JrZXJDb25zdHJ1Y3Rvcl0nCiBQQVNTIFhNTERvY3VtZW50LnRv
U3RyaW5nKCkgaXMgJ1tvYmplY3QgRG9jdW1lbnRDb25zdHJ1Y3Rvcl0nCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDMxMDdhYzIuLjY5NDBm
YzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNjUgQEAKKzIwMDktMDktMDcgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2ViU29ja2V0IEFQSSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MDM4CisKKyAgICAgICAgQWRkIGJ1aWxkIHN5c3Rl
bXMgZm9yIEdOVW1ha2VmaWxlLmFtLCBXZWJDb3JlLnhjb2RlcHJvaiBhbmQKKyAgICAgICAgV2Vi
Q29yZS52Y3Byb2ogbm93LgorICAgICAgICBUZXN0cyB3aWxsIGJlIGxhbmRlZCBvbmNlIHRoZSBj
b2RlIGlzIGNvbXBsZXRlZCBhbmQgZnVuY3Rpb25hbC4KKworICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLmNwcDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlQ29t
bW9uLnZzcHJvcHM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRE9NV2luZG93Ojp3ZWJTb2NrZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChX
ZWJDb3JlOjp0b0V2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnRvV2ViU29ja2V0KToKKyAgICAgICAgKiBk
b20vRXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvY2Vzc1dl
YlNvY2tldEV2ZW50VGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NXZWJT
b2NrZXRFdmVudFRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NX
ZWJTb2NrZXRFdmVudFRhc2s6OlByb2Nlc3NXZWJTb2NrZXRFdmVudFRhc2spOgorICAgICAgICAo
V2ViQ29yZTo6aXNWYWxpZFByb3RvY29sU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldDo6Y29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXQ6OmJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6YWRk
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnJlbW92ZUV2ZW50
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaXNwYXRjaEV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkQ29ubmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldDo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaXNwYXRj
aE9wZW5FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNoTWVzc2Fn
ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlzcGF0Y2hDbG9zZUV2ZW50
KToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjopOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpzZXRPbm9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0Ojpvbm9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpzZXRPbm1l
c3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojpvbm1lc3NhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0OjpzZXRPbmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldDo6b25jbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnRvV2ViU29j
a2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZXZlbnRMaXN0ZW5lcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXQ6OmRlcmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAqIHdlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5jcHA6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5oOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWxDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5o
OiBBZGRlZC4KKwogMjAwOS0wOS0wOCAgRGF2ZSBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLmNwcCBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCmluZGV4IDliYzYzYmEu
LjQwOGRhYmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC0zNDEsNiArMzQxLDcgQEAKICNpbmNsdWRlICJK
U1dlYktpdENTU01hdHJpeC5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRQb2ludC5jcHAiCiAjaW5j
bHVkZSAiSlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwIgorI2luY2x1ZGUgIkpTV2ViU29ja2V0
LmNwcCIKICNpbmNsdWRlICJKU1doZWVsRXZlbnQuY3BwIgogI2luY2x1ZGUgIkpTV29ya2VyLmNw
cCIKICNpbmNsdWRlICJKU1dvcmtlckNvbnRleHQuY3BwIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggZGU2MDYxNS4uYjY1
YzU3ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCkBAIC0zMjUzLDcgKzMyNTMsMTIgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oIFwKIAlX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggXAogCVdl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIFwKLQlXZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmgKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggXAorCVdlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuaCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGll
bnQuaCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgXAorCVdl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAogCiB3ZWJjb3JlZ3RrX3NvdXJj
ZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUVycm9y
LmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBi
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggM2EzZTAxZC4uNDA0
MTUzNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02Nyw3ICs2Nyw3
IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0K
LQkJCQlDb21tYW5kTGluZT0ibWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDsm
I3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzJnF1b3Q7JiN4MEQ7JiN4MEE7bWtk
aXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3
YXJkaW5nSGVhZGVyc1xwYXJzZXImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHJ1
bnRpbWUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXG1hc20mcXVvdDsmI3gwRDsm
I3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXHBjcmUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05V
TCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXHByb2ZpbGVyJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3cmVjJnF1b3Q7
JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGYmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAy
Jmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzXHd0Zlx1bmljb2RlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3
dGZcdW5pY29kZVxpY3UmcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5cY29uZmlnLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291cmNlc1wqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcd2luXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGluc3BlY3RvclwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXGNm
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxpY29u
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3RvcnlcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caGlzdG9yeVxjZlwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxodG1sXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXG5vdGlmaWNhdGlvbnNcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cY3NzXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGFuaW1hdGlvblwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxjZlwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1wqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x0
cmFuc2Zvcm1zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXGdyYXBoaWNzXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0XCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3
aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
c3FsXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XGNhaXJvXGNhaXJvXHNyY1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxiaW5kaW5nc1xqc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxwYWdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBh
Z2VcYW5pbWF0aW9uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBhZ2Vcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJy
aWRnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5z
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcd2lu
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1wq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5
bGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGluZ1wq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxkb21cKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ceG1sXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxzdG9yYWdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHdvcmtlcnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRp
bmdzJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxG
b3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xy
dW50aW1lXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
XEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXG1hc21cKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
bWFzbSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5c
Rm9yd2FyZGluZ0hlYWRlcnNccGNyZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xwcm9m
aWxlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3JlY1wqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3
cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxG
b3J3YXJkaW5nSGVhZGVyc1x3dGZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5p
Y29kZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcaWN1
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBB
O21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291
cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAvcyAvZXhjbHVkZTp4
Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4uXGluc3BlY3Rvclxmcm9udC1lbmRc
KiZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcaW5z
cGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9qZWN0RGlyKVwu
LlxFbmdsaXNoLmxwcm9qXGxvY2FsaXplZFN0cmluZ3MuanMmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4MEQ7JiN4MEE7
JiN4MEQ7JiN4MEE7aWYgZXhpc3QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJ1aWxkZmFpbGVk
JnF1b3Q7IGRlbCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQmcXVvdDsmI3gw
RDsmI3gwQTsiDQorCQkJCUNvbW1hbmRMaW5lPSJta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtO
VUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVycyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsmI3gw
RDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDIm
Z3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcbWFzbSZx
dW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBBO21r
ZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9y
d2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJz
XHdyZWMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBEOyYj
eDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAy
Jmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjb25maWcuaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0
eVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caW5zcGVj
dG9yXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXBwY2Fj
aGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFy
Y2hpdmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVy
XGFyY2hpdmVcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
bG9hZGVyXGljb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
aGlzdG9yeVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0
b3J5XGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbm90aWZpY2F0aW9u
c1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjc3NcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNmXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBo
aWNzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XGdyYXBoaWNzXHRyYW5zZm9ybXNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHRcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29y
a1xjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVxuZXR3b3JrXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxwbGF0Zm9ybVxzcWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cY2Fpcm9cY2Fpcm9cc3JjXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHBhZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGFnZVxhbmltYXRpb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5ccGFnZVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5cYnJpZGdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBsdWdpbnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
cGx1Z2luc1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
cmVuZGVyaW5nXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJl
bmRlcmluZ1xzdHlsZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxlZGl0aW5nXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRv
bVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx4bWxcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2VcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cd2Vic29ja2V0c1wqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx3b3JrZXJzXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1wqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGlu
Z0hlYWRlcnNccnVudGltZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzXG1hc20mcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHBjcmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hl
YWRlcnNccHJvZmlsZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHdyZWNcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNcd3JlYyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRl
cnNcd3RmXHVuaWNvZGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1
bmljb2RlXGljdVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3UmcXVvdDsmI3gwRDsmI3gwQTsm
I3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdl
YktpdC5yZXNvdXJjZXNcaW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgL3Mg
L2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxpbnNwZWN0b3Jc
ZnJvbnQtZW5kXComcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVz
b3VyY2VzXGluc3BlY3RvciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xlbi5scHJvaiZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNsdWRlOnhjb3B5LmV4Y2x1ZGVzICZxdW90OyQoUHJv
amVjdERpcilcLi5cRW5nbGlzaC5scHJvalxsb2NhbGl6ZWRTdHJpbmdzLmpzJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xlbi5scHJvaiZxdW90OyYj
eDBEOyYjeDBBOyYjeDBEOyYjeDBBO2lmIGV4aXN0ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxi
dWlsZGZhaWxlZCZxdW90OyBkZWwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJ1aWxkZmFpbGVk
JnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KIAkJCS8+DQogCQk8L0NvbmZpZ3VyYXRpb24+DQogCQk8Q29u
ZmlndXJhdGlvbg0KQEAgLTEyMyw3ICsxMjMsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlO
YW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9Im1rZGlyIDImZ3Q7
TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xi
aW5kaW5ncyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyJnF1b3Q7JiN4
MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIg
MiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1xtYXNtJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciZxdW90OyYjeDBEOyYjeDBB
O21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVc
Rm9yd2FyZGluZ0hlYWRlcnNcd3JlYyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
d3RmJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZSZxdW90OyYj
eDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcaWN1JnF1b3Q7JiN4MEQ7JiN4
MEE7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNvbmZpZy5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVc
RGVyaXZlZFNvdXJjZXNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cYWNjZXNzaWJpbGl0eVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxhY2Nlc3NpYmlsaXR5XHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxpbnNwZWN0b3JcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5cbG9hZGVyXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXGxvYWRlclxhcHBjYWNoZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxsb2FkZXJcYXJjaGl2ZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxsb2FkZXJcaWNvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGhpc3RvcnlcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5caHRtbFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxub3RpZmljYXRpb25zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGNzc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxhbmltYXRpb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNmb3Jtc1wqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3Bl
bnR5cGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cdGV4dFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxh
dGZvcm1cbmV0d29ya1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxwbGF0Zm9ybVxuZXR3b3JrXGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxjYWlyb1xjYWlyb1xzcmNcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYmluZGluZ3NcanNcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXGFuaW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHN0eWxlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGVkaXRpbmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5cZG9tXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHhtbFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxz
dmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cc3RvcmFnZVwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx3b3JrZXJzXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVy
c1xiaW5kaW5nc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdI
ZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJk
aW5nSGVhZGVyc1xtYXNtXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXG1hc20mcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHBjcmVcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hl
YWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRp
bmdIZWFkZXJzXHdyZWNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3JlYyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXHd0ZiZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilc
Li5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndh
cmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3Um
cXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcaW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9qZWN0
RGlyKVwuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXComcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGluc3BlY3RvciZxdW90OyYjeDBEOyYjeDBBO21rZGly
IDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xl
bi5scHJvaiZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNsdWRlOnhjb3B5LmV4
Y2x1ZGVzICZxdW90OyQoUHJvamVjdERpcilcLi5cRW5nbGlzaC5scHJvalxsb2NhbGl6ZWRTdHJp
bmdzLmpzJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNl
c1xlbi5scHJvaiZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO2lmIGV4aXN0ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxidWlsZGZhaWxlZCZxdW90OyBkZWwgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGJ1aWxkZmFpbGVkJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KKwkJCQlDb21tYW5kTGluZT0i
bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAy
Jmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzXGJpbmRpbmdzJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJz
ZXImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsm
I3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXG1hc20mcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05V
TCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXHBjcmUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyJnF1b3Q7
JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIg
MiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1x3dGYmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmlj
b2RlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3UmcXVv
dDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cY29uZmlnLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxv
YmpcV2ViQ29yZVxEZXJpdmVkU291cmNlc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGluc3BlY3RvclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXGNmXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxpY29uXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3RvcnlcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5caGlzdG9yeVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxodG1sXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXG5vdGlmaWNhdGlvbnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5cY3NzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXGFuaW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdp
blwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxn
cmFwaGljc1xvcGVudHlwZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVx0ZXh0XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3aW5cKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cc3FsXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNhaXJvXGNhaXJvXHNyY1wq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xqc1wq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9uXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2Vcd2luXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcd2luXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1wqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5bGVcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGluZ1wqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxkb21cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5ceG1sXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHN2Z1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxzdG9yYWdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdl
YnNvY2tldHNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cd29y
a2Vyc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2Fy
ZGluZ0hlYWRlcnNcYmluZGluZ3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHBh
cnNlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyc1xwYXJzZXImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
cnVudGltZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilc
Li5cRm9yd2FyZGluZ0hlYWRlcnNcbWFzbVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xw
Y3JlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzXHBjcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBy
b2ZpbGVyJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwu
LlxGb3J3YXJkaW5nSGVhZGVyc1x3cmVjXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0
ZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3
YXJkaW5nSGVhZGVyc1x3dGYmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0
Zlx1bmljb2RlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3VcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVu
aWNvZGVcaWN1JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGluc3BlY3RvciZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNsdWRlOnhjb3B5LmV4Y2x1ZGVzICZxdW90
OyQoUHJvamVjdERpcilcLi5caW5zcGVjdG9yXGZyb250LWVuZFwqJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsm
I3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5y
ZXNvdXJjZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAvcyAvZXhjbHVk
ZTp4Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4uXEVuZ2xpc2gubHByb2pcbG9j
YWxpemVkU3RyaW5ncy5qcyZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktp
dC5yZXNvdXJjZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTtpZiBleGlz
dCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQmcXVvdDsgZGVsICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxidWlsZGZhaWxlZCZxdW90OyYjeDBEOyYjeDBBOyINCiAJCQkvPg0K
IAkJPC9Db25maWd1cmF0aW9uPg0KIAkJPENvbmZpZ3VyYXRpb24NCkBAIC0xNzgsNyArMTc4LDcg
QEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQot
CQkJCUNvbW1hbmRMaW5lPSJta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OyYj
eDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsmI3gwRDsmI3gwQTtta2Rp
ciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccnVu
dGltZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcbWFzbSZxdW90OyYjeDBEOyYj
eDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVM
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsm
I3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDIm
Z3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0
Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxjb25maWcuaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW5cKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caW5zcGVjdG9yXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXBwY2FjaGVcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2Zc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGljb25c
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caGlzdG9yeVwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XGNmXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbm90aWZpY2F0aW9uc1wqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjc3NcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNmXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRy
YW5zZm9ybXNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxh
dGZvcm1cZ3JhcGhpY3Ncd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHRcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1xjZlwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdp
blwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxz
cWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
Y2Fpcm9cY2Fpcm9cc3JjXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXGJpbmRpbmdzXGpzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBhZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFn
ZVxhbmltYXRpb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
cGFnZVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYnJp
ZGdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW5c
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHls
ZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxlZGl0aW5nXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbVwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx4bWxcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5cd29ya2Vyc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGlu
Z3MmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZv
cndhcmRpbmdIZWFkZXJzXHBhcnNlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXImcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1
bnRpbWVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVc
Rm9yd2FyZGluZ0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcbWFzbVwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xt
YXNtJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxG
b3J3YXJkaW5nSGVhZGVyc1xwY3JlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBjcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHByb2Zp
bGVyXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3cmVjXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHdy
ZWMmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZv
cndhcmRpbmdIZWFkZXJzXHd0ZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGYmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmlj
b2RlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3Vc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2Fy
ZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcaWN1JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7
bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3Vy
Y2VzXGluc3BlY3RvciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNsdWRlOnhj
b3B5LmV4Y2x1ZGVzICZxdW90OyQoUHJvamVjdERpcilcLi5caW5zcGVjdG9yXGZyb250LWVuZFwq
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xpbnNw
ZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAvcyAvZXhjbHVkZTp4Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4u
XEVuZ2xpc2gubHByb2pcbG9jYWxpemVkU3RyaW5ncy5qcyZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTsm
I3gwRDsmI3gwQTtpZiBleGlzdCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQm
cXVvdDsgZGVsICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxidWlsZGZhaWxlZCZxdW90OyYjeDBE
OyYjeDBBOyINCisJCQkJQ29tbWFuZExpbmU9Im1rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05V
TCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBE
OyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZn
dDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyc1xydW50aW1lJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtJnF1
b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtk
aXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3
YXJkaW5nSGVhZGVyc1xwcm9maWxlciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
d3JlYyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7JiN4
MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDIm
Z3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNcd3RmXHVuaWNvZGVcaWN1JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNvbmZpZy5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5
XHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0
b3JcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcHBjYWNo
ZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJj
aGl2ZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJc
YXJjaGl2ZVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxs
b2FkZXJcaWNvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxo
aXN0b3J5XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3Rv
cnlcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caHRtbFwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxub3RpZmljYXRpb25z
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNzc1wqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb25cKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2ZcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcdHJhbnNmb3Jtc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGVcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dFwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx3aW5cKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1wqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3Jr
XGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XG5ldHdvcmtcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXHNxbFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxwbGF0Zm9ybVxjYWlyb1xjYWlyb1xzcmNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5cYmluZGluZ3NcanNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5ccGFnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwYWdlXGFuaW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxwYWdlXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxicmlkZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5ccGx1Z2luc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxw
bHVnaW5zXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxy
ZW5kZXJpbmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccmVu
ZGVyaW5nXHN0eWxlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGVkaXRpbmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cZG9t
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHhtbFwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cc3RvcmFnZVwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx3ZWJzb2NrZXRzXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdvcmtlcnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXGJpbmRpbmdzJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5n
SGVhZGVyc1xydW50aW1lXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXG1hc21cKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNcbWFzbSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccGNyZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVh
ZGVyc1xwcm9maWxlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3JlY1wqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyc1x3cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVy
c1x3dGZcdW5pY29kZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVu
aWNvZGVcaWN1XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYj
eDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2Vi
S2l0LnJlc291cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAvcyAv
ZXhjbHVkZTp4Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4uXGluc3BlY3Rvclxm
cm9udC1lbmRcKiZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNv
dXJjZXNcaW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9q
ZWN0RGlyKVwuLlxFbmdsaXNoLmxwcm9qXGxvY2FsaXplZFN0cmluZ3MuanMmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4
MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7aWYgZXhpc3QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJ1
aWxkZmFpbGVkJnF1b3Q7IGRlbCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQm
cXVvdDsmI3gwRDsmI3gwQTsiDQogCQkJLz4NCiAJCTwvQ29uZmlndXJhdGlvbj4NCiAJCTxDb25m
aWd1cmF0aW9uDQpAQCAtMjMzLDcgKzIzMyw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5h
bWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0ibWtkaXIgMiZndDtO
VUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXGJp
bmRpbmdzJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXImcXVvdDsmI3gw
RDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAy
Jmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzXG1hc20mcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBjcmUmcXVv
dDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyJnF1b3Q7JiN4MEQ7JiN4MEE7
bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyc1x3cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3
dGYmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlJnF1b3Q7JiN4
MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3UmcXVvdDsmI3gwRDsmI3gw
QTsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cY29uZmlnLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxE
ZXJpdmVkU291cmNlc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxhY2Nlc3NpYmlsaXR5XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXGFjY2Vzc2liaWxpdHlcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGluc3BlY3RvclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxsb2FkZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cbG9hZGVyXGFwcGNhY2hlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGxvYWRlclxhcmNoaXZlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGxvYWRlclxpY29uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGhpc3RvcnlcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5caGlzdG9yeVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxodG1sXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXG5vdGlmaWNhdGlvbnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5cY3NzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXGFuaW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxwbGF0Zm9ybVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxwbGF0Zm9ybVxncmFwaGljc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVu
dHlwZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVx0ZXh0XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxuZXR3b3JrXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXG5ldHdvcmtcY3VybFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxzcWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2Fpcm9cY2Fpcm9cc3JjXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb25cKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxlZGl0aW5nXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGRvbVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlx4bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
c3ZnXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2Vc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cd29ya2Vyc1wqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRl
cnNcYmluZGluZ3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlclwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyc1xwYXJzZXImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2Fy
ZGluZ0hlYWRlcnNcbWFzbVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdI
ZWFkZXJzXHBjcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJk
aW5nSGVhZGVyc1x3cmVjXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0ZlwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVyc1x3dGYmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
XC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2Rl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3
YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcaWN1
JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGluc3BlY3RvciZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kIC9zIC9leGNsdWRlOnhjb3B5LmV4Y2x1ZGVzICZxdW90OyQoUHJvamVj
dERpcilcLi5caW5zcGVjdG9yXGZyb250LWVuZFwqJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTtta2Rp
ciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNc
ZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAvcyAvZXhjbHVkZTp4Y29weS5l
eGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4uXEVuZ2xpc2gubHByb2pcbG9jYWxpemVkU3Ry
aW5ncy5qcyZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJj
ZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTtpZiBleGlzdCAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQmcXVvdDsgZGVsICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxidWlsZGZhaWxlZCZxdW90OyYjeDBEOyYjeDBBOyINCisJCQkJQ29tbWFuZExpbmU9
Im1rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIg
MiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGFy
c2VyJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lJnF1b3Q7JiN4MEQ7
JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtO
VUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVyc1xwY3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciZxdW90
OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3JlYyZxdW90OyYjeDBEOyYjeDBBO21rZGly
IDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2Fy
ZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5p
Y29kZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcaWN1JnF1
b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXGNvbmZpZy5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
b2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3JcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcHBjYWNoZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxjZlwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcaWNvblwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3RvcnlcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5caHRtbFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxub3RpZmljYXRpb25zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGNzc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNmb3Jtc1wqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x3
aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
Z3JhcGhpY3Ncb3BlbnR5cGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cdGV4dFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXGN1cmxcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3aW5cKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cc3FsXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNhaXJvXGNhaXJvXHNy
Y1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xq
c1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9uXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2Vcd2luXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcd2luXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1wqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5bGVcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGluZ1wqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxkb21cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5ceG1sXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHN2Z1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxzdG9yYWdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHdlYnNvY2tldHNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
d29ya2Vyc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9y
d2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJz
XHBhcnNlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcbWFzbVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVy
c1xwY3JlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
XEZvcndhcmRpbmdIZWFkZXJzXHBjcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJz
XHByb2ZpbGVyJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3cmVjXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJz
XHd0ZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyc1x3dGYmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJz
XHd0Zlx1bmljb2RlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3VcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3Rm
XHVuaWNvZGVcaWN1JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGluc3BlY3RvciZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNsdWRlOnhjb3B5LmV4Y2x1ZGVzICZx
dW90OyQoUHJvamVjdERpcilcLi5caW5zcGVjdG9yXGZyb250LWVuZFwqJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gw
RDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktp
dC5yZXNvdXJjZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAvcyAvZXhj
bHVkZTp4Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4uXEVuZ2xpc2gubHByb2pc
bG9jYWxpemVkU3RyaW5ncy5qcyZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdl
YktpdC5yZXNvdXJjZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTtpZiBl
eGlzdCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQmcXVvdDsgZGVsICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxidWlsZGZhaWxlZCZxdW90OyYjeDBEOyYjeDBBOyINCiAJCQkv
Pg0KIAkJPC9Db25maWd1cmF0aW9uPg0KIAkJPENvbmZpZ3VyYXRpb24NCkBAIC0yODksNyArMjg5
LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wi
DQotCQkJCUNvbW1hbmRMaW5lPSJta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90
OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsmI3gwRDsmI3gwQTtt
a2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
cnVudGltZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcbWFzbSZxdW90OyYjeDBE
OyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7
TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hl
YWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHdyZWMmcXVv
dDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBEOyYjeDBBO21rZGly
IDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2Fy
ZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJz
XHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxjb25maWcuaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW5cKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caW5zcGVjdG9yXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXBwY2FjaGVcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVc
Y2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGlj
b25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caGlzdG9yeVwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XGNmXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbm90aWZpY2F0aW9uc1wqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjc3NcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNmXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNz
XHRyYW5zZm9ybXNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cZ3JhcGhpY3Ncd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHRcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdv
cmtcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXHNxbFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxjYWlyb1xjYWlyb1xzcmNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5cYmluZGluZ3NcanNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGFnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxwYWdlXGFuaW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxwYWdlXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxicmlkZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGx1
Z2luc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5z
XHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJp
bmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5n
XHN0eWxlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGVkaXRp
bmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cZG9tXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHhtbFwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5cc3RvcmFnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlx3b3JrZXJzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1wqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xi
aW5kaW5ncyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilc
Li5cRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRl
cnNccnVudGltZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXG1hc20mcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
XC4uXEZvcndhcmRpbmdIZWFkZXJzXHBjcmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNc
cHJvZmlsZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHdyZWNcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnNcd3JlYyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilc
Li5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3Rm
XHVuaWNvZGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2Rl
XGljdVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3UmcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsm
I3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5y
ZXNvdXJjZXNcaW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgL3MgL2V4Y2x1
ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxpbnNwZWN0b3JcZnJvbnQt
ZW5kXComcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2Vz
XGluc3BlY3RvciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xlbi5scHJvaiZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kIC9zIC9leGNsdWRlOnhjb3B5LmV4Y2x1ZGVzICZxdW90OyQoUHJvamVjdERp
cilcLi5cRW5nbGlzaC5scHJvalxsb2NhbGl6ZWRTdHJpbmdzLmpzJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xlbi5scHJvaiZxdW90OyYjeDBEOyYj
eDBBOyYjeDBEOyYjeDBBO2lmIGV4aXN0ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxidWlsZGZh
aWxlZCZxdW90OyBkZWwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJ1aWxkZmFpbGVkJnF1b3Q7
JiN4MEQ7JiN4MEE7Ig0KKwkJCQlDb21tYW5kTGluZT0ibWtkaXIgMiZndDtOVUwgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDIm
Z3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzJnF1b3Q7
JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXImcXVvdDsmI3gwRDsmI3gwQTtta2Rp
ciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXG1h
c20mcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBjcmUmcXVvdDsmI3gwRDsmI3gw
QTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
XEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtO
VUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVyc1x3cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGYmcXVvdDsmI3gw
RDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtk
aXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3
YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3UmcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cY29uZmlnLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291cmNl
c1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmls
aXR5XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2li
aWxpdHlcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGlu
c3BlY3RvclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2Fk
ZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFw
cGNhY2hlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRl
clxhcmNoaXZlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxv
YWRlclxhcmNoaXZlXGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXGxvYWRlclxpY29uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXGhpc3RvcnlcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
aGlzdG9yeVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxo
dG1sXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXG5vdGlmaWNh
dGlvbnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cY3NzXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGFuaW1hdGlv
blwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxj
ZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxn
cmFwaGljc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZVwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0XCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpblwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3Jr
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5l
dHdvcmtcY3VybFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVxuZXR3b3JrXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxzcWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cY2Fpcm9cY2Fpcm9cc3JjXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5ccGFnZVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5cYnJpZGdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsdWdpbnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5ccGx1Z2luc1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5ccmVuZGVyaW5nXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXHJlbmRlcmluZ1xzdHlsZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxlZGl0aW5nXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXGRvbVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx4bWxc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2VcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cd2Vic29ja2V0c1wqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx3b3JrZXJzXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1wq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNl
ciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9y
d2FyZGluZ0hlYWRlcnNccnVudGltZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xt
YXNtXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzXG1hc20mcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHBjcmVcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2Fy
ZGluZ0hlYWRlcnNccHJvZmlsZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHdy
ZWNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9y
d2FyZGluZ0hlYWRlcnNcd3JlYyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGlu
Z0hlYWRlcnNcd3RmXHVuaWNvZGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJz
XHd0Zlx1bmljb2RlXGljdVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3UmcXVvdDsmI3gwRDsm
I3gwQTsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
YmluXFdlYktpdC5yZXNvdXJjZXNcaW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxpbnNw
ZWN0b3JcZnJvbnQtZW5kXComcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJL
aXQucmVzb3VyY2VzXGluc3BlY3RvciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xlbi5scHJvaiZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNsdWRlOnhjb3B5LmV4Y2x1ZGVzICZxdW90
OyQoUHJvamVjdERpcilcLi5cRW5nbGlzaC5scHJvalxsb2NhbGl6ZWRTdHJpbmdzLmpzJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xlbi5scHJvaiZx
dW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO2lmIGV4aXN0ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxidWlsZGZhaWxlZCZxdW90OyBkZWwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJ1aWxk
ZmFpbGVkJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KIAkJCS8+DQogCQk8L0NvbmZpZ3VyYXRpb24+DQog
CTwvQ29uZmlndXJhdGlvbnM+DQpAQCAtMTU3NDcsNiArMTU3NDcsNTQgQEAKIAkJCQk+DQogCQkJ
PC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIp
XG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTV2ViU29ja2V0LmNwcCINCisJCQkJPg0KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8
V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxU
b29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVi
dWdfQ2Fpcm98V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4N
CisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJ
TmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
Ig0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0K
KwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVy
aXZlZFNvdXJjZXNcSlNXZWJTb2NrZXQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJp
dmVkU291cmNlc1xKU1dvcmtlci5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9u
DQpAQCAtMjAwNTIsNiArMjAxMDAsMjYgQEAKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxuZXR3b3JrXFJlc291cmNlUmVzcG9uc2VCYXNlLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4N
CisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xTb2Nr
ZXRTdHJlYW1FcnJvckJhc2UuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxl
DQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcU29ja2V0U3RyZWFtRXJy
b3JCYXNlLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCIN
CisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCINCisJCQkJCT4NCisJ
CQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxu
ZXR3b3JrXFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+
DQogCQkJCTxGaWx0ZXINCiAJCQkJCU5hbWU9ImNmIg0KIAkJCQkJPg0KQEAgLTIwMzM1LDYgKzIw
NDAzLDY2IEBACiAJCQkJCQkJLz4NCiAJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQkJ
PC9GaWxlPg0KKwkJCQkJPEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5l
dHdvcmtcY2ZcU29ja2V0U3RyZWFtRXJyb3IuaCINCisJCQkJCQk+DQorCQkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQorCQkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQkJPg0KKwkJCQkJCQk8VG9vbA0KKwkJCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJLz4NCisJCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KKwkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCQlOYW1lPSJSZWxlYXNl
X0NhaXJvfFdpbjMyIg0KKwkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQkJ
Pg0KKwkJCQkJCQk8VG9vbA0KKwkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJ
CQkJLz4NCisJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPC9GaWxlPg0KKwkJCQkJ
PEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcU29ja2V0
U3RyZWFtSGFuZGxlLmgiDQorCQkJCQkJPg0KKwkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJ
CQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiDQorCQkJCQkJCT4NCisJCQkJCQkJPFRvb2wNCisJCQkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiDQorCQkJCQkJCS8+DQorCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiIN
CisJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJCT4NCisJCQkJCQkJPFRv
b2wNCisJCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCS8+DQorCQkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTwvRmlsZT4NCisJCQkJCTxGaWxlDQorCQkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFNvY2tldFN0cmVhbUhhbmRsZUNG
TmV0LmNwcCINCisJCQkJCQk+DQorCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJCU5h
bWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIN
CisJCQkJCQkJPg0KKwkJCQkJCQk8VG9vbA0KKwkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCINCisJCQkJCQkJLz4NCisJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJCTxGaWxl
Q29uZmlndXJhdGlvbg0KKwkJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQkJPg0KKwkJCQkJCQk8VG9vbA0KKwkJ
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJLz4NCisJCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPg0KKwkJCQkJPC9GaWxlPg0KIAkJCQk8L0ZpbHRlcj4NCiAJCQkJPEZpbHRl
cg0KIAkJCQkJTmFtZT0id2luIg0KQEAgLTI5Mjc1LDYgKzI5NDAzLDE4IEBACiAJCQkJCT4NCiAJ
CQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xq
c1xKU1dlYlNvY2tldENvbnN0cnVjdG9yLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJ
CQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1dlYlNvY2tldENv
bnN0cnVjdG9yLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNXZWJTb2NrZXRDdXN0b20uY3BwIg0KKwkJCQkJ
Pg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRp
bmdzXGpzXEpTV29ya2VyQ29uc3RydWN0b3IuY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpA
QCAtMzE4MDQsNiArMzE5NDQsMzggQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+
DQorCQk8RmlsdGVyDQorCQkJTmFtZT0id2Vic29ja2V0cyINCisJCQk+DQorCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldC5jcHAiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdl
YlNvY2tldC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRDaGFubmVsLmNwcCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29j
a2V0Q2hhbm5lbC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRz
XFdlYlNvY2tldEhhbmRzaGFrZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldEhhbmRzaGFrZS5oIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJPC9GaWx0ZXI+DQogCQk8RmlsZQ0KIAkJCVJlbGF0aXZl
UGF0aD0iLi5cY29uZmlnLmgiDQogCQkJPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZUNvbW1vbi52c3Byb3BzIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlQ29tbW9uLnZzcHJvcHMKaW5kZXggNWVkZWFkNC4uODUyMWFiYiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlQ29tbW9uLnZzcHJvcHMKKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlQ29tbW9uLnZzcHJvcHMKQEAgLTcsNyArNyw3IEBACiAJPgog
CTxUb29sCiAJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM9IiZxdW90OyQoUHJvamVjdERpcikuLlwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5JnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XHdpbiZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cYnJpZGdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2VcYyZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5cY3NzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxlZGl0
aW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmcmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
YmluZGluZ3NcanMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbSZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cZG9tXGRlZmF1bHQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhp
c3RvcnkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWwmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGh0bWxcY2FudmFzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0
b3ImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlciZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2Fk
ZXJcYXJjaGl2ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2Ym
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxpY29uJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxub3RpZmljYXRpb25zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwYWdl
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXGFuaW1hdGlvbiZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5ccGFnZVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb24mcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG1vY2smcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXHNxbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
d2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdpbiZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cY2YmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGlj
c1xvcGVudHlwZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
dHJhbnNmb3JtcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dCZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlx4bWwmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxX
ZWJDb3JlXERlcml2ZWRTb3VyY2VzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5z
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdpbiZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdc
Z3JhcGhpY3NcZmlsdGVycyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlx3bWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3Jh
Z2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdvcmtlcnMmcXVvdDs7JnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxKYXZhU2Ny
aXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxwcml2YXRlXEph
dmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxGb3J3YXJkaW5nSGVhZGVy
cyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDsk
KFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0
TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7
JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcaWN1JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGli
cmFyaWVzRGlyKVxpbmNsdWRlXGljb252JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGly
KVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNs
dWRlXHNxbGl0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxKYXZh
U2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3Jl
Rm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExp
YnJhcmllc0RpcilcSW5jbHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVhZGVy
c1xHTlVDb21wYXRpYmlsaXR5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcYW5pbWF0
aW9uJnF1b3Q7IgorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKFByb2pl
Y3REaXIpLi5cJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLiZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5cYWNjZXNzaWJpbGl0eSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNz
aWJpbGl0eVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZSZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5cYnJpZGdlXGMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNz
cyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGluZyZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5ccmVuZGVyaW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdc
c3R5bGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxkb20mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbVxkZWZh
dWx0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5JnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxodG1sJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxodG1sXGNhbnZhcyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caW5zcGVjdG9yJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxsb2FkZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcHBjYWNo
ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmUmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXGNmJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxsb2FkZXJcaWNvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbm90aWZpY2F0aW9u
cyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZSZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccGFnZVxhbmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2Vcd2lu
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybSZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVxzcWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpbiZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29yayZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBsYXRmb3JtXGNmJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFw
aGljcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5
cGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9y
bXMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHQmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpbiZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5ceG1sJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxE
ZXJpdmVkU291cmNlcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2lucyZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHN2Z1xncmFwaGljcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNz
XGZpbHRlcnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2ZyZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cd21sJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdG9yYWdlJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlx3ZWJzb2NrZXRzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlx3b3JrZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlJnF1b3Q7
OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJy
YXJpZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1
ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwcml2
YXRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNs
dWRlXGljdSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxpY29udiZx
dW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90Ozsm
cXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxzcWxpdGUmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0
eUhlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcQ29yZUZv
dW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRlcnNcR05VQ29tcGF0aWJpbGl0eSZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGFuaW1hdGlvbiZxdW90OyIKIAkJUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM9Il9fV0lOMzJfXztXRUJDT1JFX0NPTlRFWFRfTUVOVVM7RU5BQkxFX0NIQU5O
RUxfTUVTU0FHSU5HO0VOQUJMRV9EQVRBQkFTRTtFTkFCTEVfREFUQUdSSUQ7RU5BQkxFX0RBVEFM
SVNUO0VOQUJMRV9ET01fU1RPUkFHRTtFTkFCTEVfRVZFTlRTT1VSQ0U7RU5BQkxFX0lDT05EQVRB
QkFTRTtFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TO0VOQUJMRV9SVUJZO0VOQUJMRV9T
SEFSRURfV09SS0VSUztFTkFCTEVfU1ZHO0VOQUJMRV9TVkdfQU5JTUFUSU9OO0VOQUJMRV9TVkdf
QVNfSU1BR0U7RU5BQkxFX1NWR19GT05UUztFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUO0VOQUJM
RV9TVkdfVVNFO0VOQUJMRV9XRUJfU09DS0VUUztFTkFCTEVfV09SS0VSUztFTkFCTEVfWFBBVEg7
RU5BQkxFX1hTTFQiCiAJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgogCQlQcmVjb21waWxlZEhl
YWRlclRocm91Z2g9IldlYkNvcmVQcmVmaXguaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNTIzOGM2Ni4uMjE5MDNmNyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk0OCw2ICs5NDgsOSBAQAogCQk1MTBENEEz
NjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMDEwMzE2NUVFMDA0
OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgKi87IH07CiAJCTUxMEQ0QTM3MTAz
MTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQg
LyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oICovOyB9OwogCQk1MTBENEEzODEwMzE2NUVFMDA0
OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggKi87IH07CisJCTUxMEQ0QTRFMTAzMTc3QTIwMDQ5RUE1
NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFu
bmVsLmNwcCAqLzsgfTsKKwkJNTEwRDRBNEYxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENo
YW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggKi87IH07CisJCTUx
MEQ0QTUwMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEE0OTEwMzE3N0Ey
MDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oICovOyB9OwogCQk1MTE2RDk3NzBD
RjE3N0JEMDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTE2RDk3NTBDRjE3N0JEMDBDMkI4NEQgLyogRGF0
YWJhc2VEZXRhaWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTExRjIzMTcwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjIzMTMw
REMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suY3BwICovOyB9OwogCQk1MTFGMjMx
ODBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjIzMTQwREMxNjBEQTAwNEYwMDMyIC8q
IExvY2FsU3RvcmFnZVRhc2suaCAqLzsgfTsKQEAgLTEwMzQsNiArMTAzNywxMCBAQAogCQk1MUFC
QUUxQjEwM0MxOEZGMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtRXJyb3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFBMTAzQzE4RkYwMDhDNTI2
MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oICovOyB9OwogCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUy
NjAgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUxQzEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFt
SGFuZGxlLmggKi87IH07CiAJCTUxQUJBRTFGMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGVDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUFCQUUxRDEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZO
ZXQuY3BwICovOyB9OworCQk1MUFCQUUyRTEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFu
ZHNoYWtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUFCQUUyQzEwM0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5jcHAgKi87
IH07CisJCTUxQUJBRTJGMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUyRDEw
M0Q0Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5oICovOyB9OworCQk1MUFCQUU0
NDEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTQyMTA0M0FCNEEwMDhDNTI2
MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwICovOyB9OworCQk1MUFCQUU0NTEwNDNBQjRBMDA4
QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUU0MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0
SGFuZHNoYWtlLmggKi87IH07CiAJCTUxQjI0MTdCMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lX
ZWJBcmNoaXZlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFCMjQxN0EwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdlYkFyY2hpdmVNYWMubW0g
Ki87IH07CiAJCTUxQkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTM3REUwREFFRTAw
RTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi87IH07CiAJCTUxQzBBQTM5MEYyQUExMEEwMDE2
NDhDMiAvKiBDYWNoZWRGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTYxNTAsNiAr
NjE1Nyw5IEBACiAJCTUxMEQ0QTMwMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5k
bGVCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0
cmVhbUhhbmRsZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBENEEz
MTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUx
MEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldENoYW5uZWwuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29j
a2V0Q2hhbm5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRD
aGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0QTQ5MTAzMTc3QTIw
MDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNvY2tldENoYW5uZWxDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTExNkQ5NzUwQ0YxNzdCRDAwQzJCODREIC8qIERhdGFiYXNlRGV0YWlscy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZURldGFpbHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjIzMTMwREMxNjBEQTAwNEYwMDMyIC8qIExv
Y2FsU3RvcmFnZVRhc2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TG9jYWxTdG9yYWdlVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYy
MzE0MERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsU3RvcmFnZVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTYyNDMsNiArNjI1MywxMCBAQAogCQk1MUFCQUUxQTEwM0MxOEZGMDA4QzUy
NjAgLyogU29ja2V0U3RyZWFtRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gU29ja2V0U3RyZWFtRXJyb3IuaDsgcGF0aCA9IGNmL1NvY2tldFN0cmVhbUVycm9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQUJBRTFDMTAzQzE5MTMwMDhDNTI2MCAvKiBT
b2NrZXRTdHJlYW1IYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU29j
a2V0U3RyZWFtSGFuZGxlLmg7IHBhdGggPSBjZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBQkFFMUQxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tl
dFN0cmVhbUhhbmRsZUNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDsgcGF0aCA9IGNmL1NvY2tldFN0cmVhbUhh
bmRsZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFMkMxMDNE
NEY3NTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxQUJBRTJEMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRI
YW5kc2hha2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhh
bmRzaGFrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFNDIxMDQzQUI0
QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MUFCQUU0MzEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNo
YWtlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFr
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUIyNDE3QTBEOTMxRjNGMDBFODNG
NUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IExlZ2FjeVdlYkFyY2hpdmVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkRnJhbWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNzI3LDYgKzEwNzQxLDExIEBACiAJCTUxOEEzNEJE
MTAyNkM4MzEwMDFCNjg5NiAvKiB3ZWJzb2NrZXRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MUFCQUU0MjEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29j
a2V0SGFuZHNoYWtlLmNwcCAqLywKKwkJCQk1MUFCQUU0MzEwNDNBQjRBMDA4QzUyNjAgLyogV2Vi
U29ja2V0SGFuZHNoYWtlLmggKi8sCisJCQkJNTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdl
YlNvY2tldENoYW5uZWwuY3BwICovLAorCQkJCTUxMEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBX
ZWJTb2NrZXRDaGFubmVsLmggKi8sCisJCQkJNTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdl
YlNvY2tldENoYW5uZWxDbGllbnQuaCAqLywKIAkJCQk1MThBMzRCRTEwMjZDODMxMDAxQjY4OTYg
LyogV2ViU29ja2V0LmNwcCAqLywKIAkJCQk1MThBMzRCRjEwMjZDODMxMDAxQjY4OTYgLyogV2Vi
U29ja2V0LmggKi8sCiAJCQkJNTE4QTM0QzAxMDI2QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tldC5p
ZGwgKi8sCkBAIC0xNzc4OCw2ICsxNzgwNyw5IEBACiAJCQkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5
RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk0
OUVFRDE0NzEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0QuaCBp
biBIZWFkZXJzICovLAogCQkJCTU5Qzc3RjJCMTA1NDVCM0IwMDUwNjEwNCAvKiBHZW9sb2NhdGlv
blNlcnZpY2VNb2NrLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTBENEE0RjEwMzE3N0EyMDA0OUVB
NTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRDRBNTAxMDMx
NzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxQUJBRTQ1MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMTk5MjMsNiArMTk5NDUsOCBAQAogCQkJCTQ5RUVEMTRGMTA1MTk3MUEw
MDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQzREN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0OUVFRDE1MDEwNTE5NzFBMDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU5Qzc3RjJBMTA1NDVCM0IwMDUw
NjEwNCAvKiBHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUx
MEQ0QTRFMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTUxQUJBRTQ0MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCmluZGV4IDE3NDYzZGMuLjY3N2U2MmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCkBAIC02NCw2ICs2NCw5IEBACiAjZW5kaWYKICNpbmNsdWRlICJKU1dl
YktpdENTU01hdHJpeENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNXZWJLaXRQb2ludENvbnN0
cnVjdG9yLmgiCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorI2luY2x1ZGUgIkpTV2ViU29ja2V0
Q29uc3RydWN0b3IuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkpTV29ya2VyQ29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1hT
TFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5oIgpAQCAtNjk4LDYgKzcwMSwxMyBAQCBKU1ZhbHVlIEpT
RE9NV2luZG93OjpzaGFyZWRXb3JrZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCitKU1ZhbHVlIEpTRE9NV2luZG93Ojp3ZWJTb2Nr
ZXQoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rv
cjxKU1dlYlNvY2tldENvbnN0cnVjdG9yPihleGVjLCB0aGlzKTsKK30KKyNlbmRpZgorCiAvLyBD
dXN0b20gZnVuY3Rpb25zCiAKIC8vIEhlbHBlciBmb3Igd2luZG93Lm9wZW4oKSBhbmQgd2luZG93
LnNob3dNb2RhbERpYWxvZygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRUYXJnZXQuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAppbmRl
eCBlZDgwZDgwLi4wNDIxZDEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRUYXJnZXQuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAK
QEAgLTc4LDYgKzc4LDExIEBACiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyNpbmNsdWRlICJKU1dlYlNvY2tldC5oIgorI2luY2x1
ZGUgIldlYlNvY2tldC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTEzOSw2ICsxNDQsMTEgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXZlbnRUYXJnZXQqIHRh
cmcKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgbm90aWZpY2F0aW9uKTsKICNlbmRpZgogCisj
aWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIGlmIChXZWJTb2NrZXQqIHdlYlNvY2tldCA9IHRh
cmdldC0+dG9XZWJTb2NrZXQoKSkKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgd2ViU29ja2V0
KTsKKyNlbmRpZgorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGpzTnVs
bCgpOwogfQpAQCAtMTgzLDYgKzE5MywxMCBAQCBFdmVudFRhcmdldCogdG9FdmVudFRhcmdldChK
U0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJHRVQoTm90aWZpY2F0
aW9uKQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisgICAgQ09OVkVSVF9UT19F
VkVOVF9UQVJHRVQoV2ViU29ja2V0KQorI2VuZGlmCisKICAgICByZXR1cm4gMDsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuY3BwCmluZGV4IDJmMTNkYTguLjY1MjY0NGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTgz
LDYgKzgzLDEzIEBAIFNWR0VsZW1lbnRJbnN0YW5jZSogRXZlbnRUYXJnZXQ6OnRvU1ZHRWxlbWVu
dEluc3RhbmNlKCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorV2ViU29j
a2V0KiBFdmVudFRhcmdldDo6dG9XZWJTb2NrZXQoKQoreworICAgIHJldHVybiAwOworfQorI2Vu
ZGlmCisKIE1lc3NhZ2VQb3J0KiBFdmVudFRhcmdldDo6dG9NZXNzYWdlUG9ydCgpCiB7CiAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCA2ZDNjYjdjLi42YmNjM2ZiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgK
QEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyOwogICAgIGNsYXNzIFNoYXJl
ZFdvcmtlckNvbnRleHQ7CisgICAgY2xhc3MgV2ViU29ja2V0OwogICAgIGNsYXNzIFdvcmtlcjsK
ICAgICBjbGFzcyBYTUxIdHRwUmVxdWVzdDsKICAgICBjbGFzcyBYTUxIdHRwUmVxdWVzdFVwbG9h
ZDsKQEAgLTc1LDExICs3NiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgV29ya2VyKiB0b1dvcmtlcigpOwogICAgICAgICB2aXJ0dWFsIERlZGljYXRlZFdvcmtlckNv
bnRleHQqIHRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpOwogI2VuZGlmCi0KICNpZiBFTkFCTEUo
U0hBUkVEX1dPUktFUlMpCiAgICAgICAgIHZpcnR1YWwgU2hhcmVkV29ya2VyKiB0b1NoYXJlZFdv
cmtlcigpOwogICAgICAgICB2aXJ0dWFsIFNoYXJlZFdvcmtlckNvbnRleHQqIHRvU2hhcmVkV29y
a2VyQ29udGV4dCgpOwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorICAgICAgICB2
aXJ0dWFsIFdlYlNvY2tldCogdG9XZWJTb2NrZXQoKTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCiAgICAgICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uKiB0b05vdGlmaWNhdGlv
bigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbAppbmRleCBiNTdkMWFkLi5kY2Q4M2Q5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApA
QCAtNDk2LDYgKzQ5NiwxMCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIFtK
U0NDdXN0b21HZXR0ZXJdIFNoYXJlZFdvcmtlckNvbnN0cnVjdG9yIFNoYXJlZFdvcmtlcjsgLy8g
VXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRvcgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJM
RV9XRUJfU09DS0VUUykgJiYgRU5BQkxFX1dFQl9TT0NLRVRTCisgICAgICAgIGF0dHJpYnV0ZSBb
SlNDQ3VzdG9tR2V0dGVyXSBXZWJTb2NrZXRDb25zdHJ1Y3RvciBXZWJTb2NrZXQ7IC8vIFVzYWJs
ZSB3aXRoIHRoZSBuZXcgb3BlcmF0b3IKKyNlbmRpZgorCiAgICAgICAgIGF0dHJpYnV0ZSBQbHVn
aW5Db25zdHJ1Y3RvciBQbHVnaW47CiAgICAgICAgIGF0dHJpYnV0ZSBQbHVnaW5BcnJheUNvbnN0
cnVjdG9yIFBsdWdpbkFycmF5OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDk5OWMx
ZmYuLjhmOTBiMWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
CisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0zNCwxMyArMzQsNTgg
QEAKIAogI2luY2x1ZGUgIldlYlNvY2tldC5oIgogCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2lu
Y2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRF
eGNlcHRpb24uaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIK
KyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFByb2Nlc3NXZWJT
b2NrZXRFdmVudFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7Citw
dWJsaWM6CisgICAgdHlwZWRlZiB2b2lkIChXZWJTb2NrZXQ6OipNZXRob2QpKEV2ZW50Kik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzaz4gY3JlYXRlKFBh
c3NSZWZQdHI8V2ViU29ja2V0PiB3ZWJTb2NrZXQsIE1ldGhvZCBtZXRob2QsIFBhc3NSZWZQdHI8
RXZlbnQ+IGV2ZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQcm9jZXNz
V2ViU29ja2V0RXZlbnRUYXNrKHdlYlNvY2tldCwgbWV0aG9kLCBldmVudCkpOworICAgIH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCisgICAg
eworICAgICAgICAobV93ZWJTb2NrZXQuZ2V0KCktPiptX21ldGhvZCkobV9ldmVudC5nZXQoKSk7
CisgICAgfQorCisgIHByaXZhdGU6CisgICAgUHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzayhQYXNz
UmVmUHRyPFdlYlNvY2tldD4gd2ViU29ja2V0LCBNZXRob2QgbWV0aG9kLCBQYXNzUmVmUHRyPEV2
ZW50PiBldmVudCkKKyAgICAgICAgOiBtX3dlYlNvY2tldCh3ZWJTb2NrZXQpCisgICAgICAgICwg
bV9tZXRob2QobWV0aG9kKQorICAgICAgICAsIG1fZXZlbnQoZXZlbnQpIHsgfQorCisgICAgUmVm
UHRyPFdlYlNvY2tldD4gbV93ZWJTb2NrZXQ7CisgICAgTWV0aG9kIG1fbWV0aG9kOworICAgIFJl
ZlB0cjxFdmVudD4gbV9ldmVudDsKK307CisKK3N0YXRpYyBib29sIGlzVmFsaWRQcm90b2NvbFN0
cmluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHByb3RvY29sKQoreworICAgIGlmIChwcm90b2Nv
bC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHByb3RvY29sLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
ID0gcHJvdG9jb2wuY2hhcmFjdGVycygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJv
dG9jb2wubGVuZ3RoKCk7IGkrKykgeworICAgICAgICBpZiAoY2hhcmFjdGVyc1tpXSA8IDB4MjEg
fHwgY2hhcmFjdGVyc1tpXSA+IDB4N0UpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCiBXZWJTb2NrZXQ6OldlYlNvY2tldChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRo
aXMpCiAgICAgLCBtX3N0YXRlKENPTk5FQ1RJTkcpCkBAIC01OSwzOSArMTA0LDQ5IEBAIHZvaWQg
V2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAK
IHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2Nr
ZXQgJXAgY29ubmVjdCB0byAlcyBwcm90b2NvbD0lcyIsIHRoaXMsIHVybC5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCBwcm90b2NvbC51dGY4KCkuZGF0YSgpKTsKICAgICBtX3VybCA9IHVybDsKICAg
ICBtX3Byb3RvY29sID0gcHJvdG9jb2w7CiAKICAgICBpZiAoIW1fdXJsLnByb3RvY29sSXMoIndz
IikgJiYgIW1fdXJsLnByb3RvY29sSXMoIndzcyIpKSB7CisgICAgICAgIExPR19FUlJPUigiRXJy
b3I6IHdyb25nIHVybCBmb3IgV2ViU29ja2V0ICVzIiwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOwogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX3Byb3RvY29sLmlzTnVsbCgpICYm
IG1fcHJvdG9jb2wuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFpc1ZhbGlkUHJvdG9jb2xTdHJpbmco
bV9wcm90b2NvbCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJFcnJvcjogd3JvbmcgcHJvdG9jb2wg
Zm9yIFdlYlNvY2tldCAlcyIsIG1fcHJvdG9jb2wudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIG1f
c3RhdGUgPSBDTE9TRUQ7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICAvLyBGSVhNRTogQ2hlY2sgcHJvdG9jb2wgaXMgdmFsaWQgZm9ybS4KLSAg
ICAvLyBGSVhNRTogQ29ubmVjdCBXZWJTb2NrZXRDaGFubmVsLgorICAgIC8vIEZJWE1FOiBpZiBt
X3VybC5wb3J0KCkgaXMgYmxvY2tpbmcgcG9ydCwgcmFpc2UgU0VDVVJJVFlfRVJSLgorCisgICAg
bV9jaGFubmVsID0gV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgdGhpcywgbV91cmwsIG1fcHJvdG9jb2wpOworICAgIG1fY2hhbm5lbC0+Y29ubmVjdCgp
OwogfQogCi1ib29sIFdlYlNvY2tldDo6c2VuZChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
JiBlYykKK2Jvb2wgV2ViU29ja2V0OjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKG1fc3RhdGUgIT0gT1BFTikgeworICAgIExPRyhOZXR3
b3JrLCAiV2ViU29ja2V0ICVwIHNlbmQgJXMiLCB0aGlzLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkp
OworICAgIGlmIChtX3N0YXRlID09IENPTk5FQ1RJTkcpIHsKICAgICAgICAgZWMgPSBJTlZBTElE
X1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAvLyBGSVhNRTog
c2VuZCBtZXNzYWdlIG9uIFdlYlNvY2tldENoYW5uZWwuCi0gICAgcmV0dXJuIGZhbHNlOworICAg
IC8vIE5vIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYgdGhlIGNvbm5lY3Rpb24gd2FzIG9uY2UgZXN0
YWJsaXNoZWQgYnV0IGhhcyBzdWJzZXF1ZW50bHkgYmVlbiBjbG9zZWQuCisgICAgaWYgKG1fc3Rh
dGUgPT0gQ0xPU0VEKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gRklYTUU6IGNoZWNr
IG1lc3NhZ2UgaXMgdmFsaWQgdXRmOC4KKyAgICByZXR1cm4gbV9jaGFubmVsLT5zZW5kKG1lc3Nh
Z2UpOwogfQogCiB2b2lkIFdlYlNvY2tldDo6Y2xvc2UoKQogeworICAgIExPRyhOZXR3b3JrLCAi
V2ViU29ja2V0ICVwIGNsb3NlIiwgdGhpcyk7CiAgICAgaWYgKG1fc3RhdGUgPT0gQ0xPU0VEKQog
ICAgICAgICByZXR1cm47CiAgICAgbV9zdGF0ZSA9IENMT1NFRDsKLSAgICAvLyBGSVhNRTogY2xv
c2UgV2ViU29ja2V0Q2hhbm5lbC4KKyAgICBtX2NoYW5uZWwtPmNsb3NlKCk7CiB9CiAKIGNvbnN0
IEtVUkwmIFdlYlNvY2tldDo6dXJsKCkgY29uc3QKQEAgLTEwNiw3ICsxNjEsOCBAQCBXZWJTb2Nr
ZXQ6OlN0YXRlIFdlYlNvY2tldDo6cmVhZHlTdGF0ZSgpIGNvbnN0CiAKIHVuc2lnbmVkIGxvbmcg
V2ViU29ja2V0OjpidWZmZXJlZEFtb3VudCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IGFzayBw
bGF0Zm9ybSBjb2RlIHRvIGdldCBidWZmZXJlZCBhbW91bnQgdG8gYmUgc2VudC4KKyAgICBpZiAo
bV9zdGF0ZSA9PSBPUEVOKQorICAgICAgICByZXR1cm4gbV9jaGFubmVsLT5idWZmZXJlZEFtb3Vu
dCgpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMTUsNTggKzE3MSwxMjAgQEAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogV2ViU29ja2V0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QK
ICAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiB9
CiAKLXZvaWQgV2ViU29ja2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYs
IFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wpCit2b2lkIFdlYlNvY2tldDo6YWRkRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiBldmVudExpc3RlbmVyLCBib29sKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQgdGhpcy4KKyAgICBFdmVudExpc3RlbmVyc01hcDo6aXRlcmF0b3IgaXRlciA9IG1fZXZlbnRM
aXN0ZW5lcnMuZmluZChldmVudFR5cGUpOworICAgIGlmIChpdGVyID09IG1fZXZlbnRMaXN0ZW5l
cnMuZW5kKCkpIHsKKyAgICAgICAgTGlzdGVuZXJWZWN0b3IgbGlzdGVuZXJzOworICAgICAgICBs
aXN0ZW5lcnMuYXBwZW5kKGV2ZW50TGlzdGVuZXIpOworICAgICAgICBtX2V2ZW50TGlzdGVuZXJz
LmFkZChldmVudFR5cGUsIGxpc3RlbmVycyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTGlzdGVu
ZXJWZWN0b3ImIGxpc3RlbmVycyA9IGl0ZXItPnNlY29uZDsKKyAgICAgICAgZm9yIChMaXN0ZW5l
clZlY3Rvcjo6aXRlcmF0b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVuZXJzLmJlZ2luKCk7IGxpc3Rl
bmVySXRlciAhPSBsaXN0ZW5lcnMuZW5kKCk7ICsrbGlzdGVuZXJJdGVyKQorICAgICAgICAgICAg
aWYgKCpsaXN0ZW5lckl0ZXIgPT0gZXZlbnRMaXN0ZW5lcikKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgbGlzdGVuZXJzLmFwcGVuZChldmVudExpc3RlbmVyKTsKKyAgICAgICAg
bV9ldmVudExpc3RlbmVycy5hZGQoZXZlbnRUeXBlLCBsaXN0ZW5lcnMpOworICAgIH0KIH0KIAot
dm9pZCBXZWJTb2NrZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiwg
RXZlbnRMaXN0ZW5lciosIGJvb2wpCit2b2lkIFdlYlNvY2tldDo6cmVtb3ZlRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogZXZlbnRMaXN0
ZW5lciwgYm9vbCkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisgICAgRXZlbnRM
aXN0ZW5lcnNNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2V2ZW50TGlzdGVuZXJzLmZpbmQoZXZlbnRU
eXBlKTsKKyAgICBpZiAoaXRlciA9PSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBMaXN0ZW5lclZlY3RvciYgbGlzdGVuZXJzID0gaXRlci0+c2Vjb25kOwor
ICAgIGZvciAoTGlzdGVuZXJWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGxpc3RlbmVySXRlciA9IGxp
c3RlbmVycy5iZWdpbigpOyBsaXN0ZW5lckl0ZXIgIT0gbGlzdGVuZXJzLmVuZCgpOyArK2xpc3Rl
bmVySXRlcikKKyAgICAgICAgaWYgKCpsaXN0ZW5lckl0ZXIgPT0gZXZlbnRMaXN0ZW5lcikgewor
ICAgICAgICAgICAgbGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lckl0ZXIgLSBsaXN0ZW5lcnMuYmVn
aW4oKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIH0KIAotYm9vbCBXZWJTb2Nr
ZXQ6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKQorYm9v
bCBXZWJTb2NrZXQ6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZ0LCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCi0gICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghZXZ0IHx8IGV2dC0+dHlwZSgpLmlzRW1wdHkoKSkgeworICAgICAg
ICBlYyA9IEV2ZW50RXhjZXB0aW9uOjpVTlNQRUNJRklFRF9FVkVOVF9UWVBFX0VSUjsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgTGlzdGVuZXJWZWN0b3IgbGlzdGVuZXJzQ29w
eSA9IG1fZXZlbnRMaXN0ZW5lcnMuZ2V0KGV2dC0+dHlwZSgpKTsKKyAgICBmb3IgKExpc3RlbmVy
VmVjdG9yOjpjb25zdF9pdGVyYXRvciBsaXN0ZW5lckl0ZXIgPSBsaXN0ZW5lcnNDb3B5LmJlZ2lu
KCk7IGxpc3RlbmVySXRlciAhPSBsaXN0ZW5lcnNDb3B5LmVuZCgpOyArK2xpc3RlbmVySXRlcikg
eworICAgICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50
VGFyZ2V0KHRoaXMpOworICAgICAgICBsaXN0ZW5lckl0ZXItPmdldCgpLT5oYW5kbGVFdmVudChl
dnQuZ2V0KCksIGZhbHNlKTsKKyAgICB9CisgICAgcmV0dXJuICFldnQtPmRlZmF1bHRQcmV2ZW50
ZWQoKTsKIH0KIAogdm9pZCBXZWJTb2NrZXQ6OmRpZENvbm5lY3QoKQogeworICAgIExPRyhOZXR3
b3JrLCAiV2ViU29ja2V0ICVwIGRpZENvbm5lY3QiLCB0aGlzKTsKICAgICBpZiAobV9zdGF0ZSAh
PSBDT05ORUNUSU5HKSB7CiAgICAgICAgIGRpZENsb3NlKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgbV9zdGF0ZSA9IE9QRU47Ci0gICAgZGlzcGF0Y2hPcGVuRXZlbnQoKTsKKyAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFByb2Nlc3NXZWJTb2NrZXRFdmVudFRh
c2s6OmNyZWF0ZSh0aGlzLCAmV2ViU29ja2V0OjpkaXNwYXRjaE9wZW5FdmVudCwgRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkub3BlbkV2ZW50LCBmYWxzZSwgZmFsc2UpKSk7CiB9CiAKIHZvaWQg
V2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZykKIHsKKyAgICBM
T0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRSZWNlaXZlTWVzc2FnZSAlcyIsIHRoaXMsIG1z
Zy51dGY4KCkuZGF0YSgpKTsKICAgICBpZiAobV9zdGF0ZSAhPSBPUEVOKQogICAgICAgICByZXR1
cm47Ci0gICAgZGlzcGF0Y2hNZXNzYWdlRXZlbnQobXNnKTsKKyAgICBSZWZQdHI8TWVzc2FnZUV2
ZW50PiBldnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZSgpOworICAgIC8vIEZJWE1FOiBvcmlnaW4s
IGxhc3RFdmVudElkLCBzb3VyY2UsIG1lc3NhZ2VQb3J0LgorICAgIGV2dC0+aW5pdE1lc3NhZ2VF
dmVudChldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UsIG1zZywgIiIsICIi
LCAwLCAwKTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFByb2Nlc3NX
ZWJTb2NrZXRFdmVudFRhc2s6OmNyZWF0ZSh0aGlzLCAmV2ViU29ja2V0OjpkaXNwYXRjaE1lc3Nh
Z2VFdmVudCwgZXZ0KSk7CiB9CiAKIHZvaWQgV2ViU29ja2V0OjpkaWRDbG9zZSgpCiB7CisgICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkQ2xvc2UiLCB0aGlzKTsKICAgICBtX3N0YXRl
ID0gQ0xPU0VEOwotICAgIGRpc3BhdGNoQ2xvc2VFdmVudCgpOworICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+cG9zdFRhc2soUHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzazo6Y3JlYXRlKHRo
aXMsICZXZWJTb2NrZXQ6OmRpc3BhdGNoQ2xvc2VFdmVudCwgRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuY2xvc2VFdmVudCwgZmFsc2UsIGZhbHNlKSkpOwogfQogCi12b2lkIFdlYlNvY2tldDo6
ZGlzcGF0Y2hPcGVuRXZlbnQoKQordm9pZCBXZWJTb2NrZXQ6OmRpc3BhdGNoT3BlbkV2ZW50KEV2
ZW50KiBldnQpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgorICAgIGlmIChtX29u
b3BlbikgeworICAgICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRD
dXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29ub3Blbi0+aGFuZGxlRXZlbnQoZXZ0LCBm
YWxzZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlzcGF0Y2hF
dmVudChldnQsIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKIH0KIAotdm9pZCBXZWJTb2NrZXQ6OmRp
c3BhdGNoTWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYpCit2b2lkIFdlYlNvY2tldDo6ZGlzcGF0
Y2hNZXNzYWdlRXZlbnQoRXZlbnQqIGV2dCkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRo
aXMuCisgICAgaWYgKG1fb25tZXNzYWdlKSB7CisgICAgICAgIGV2dC0+c2V0VGFyZ2V0KHRoaXMp
OworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fb25tZXNz
YWdlLT5oYW5kbGVFdmVudChldnQsIGZhbHNlKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2dCwgZWMpOworICAgIEFTU0VSVCghZWMpOwog
fQogCi12b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hDbG9zZUV2ZW50KCkKK3ZvaWQgV2ViU29ja2V0
OjpkaXNwYXRjaENsb3NlRXZlbnQoRXZlbnQqIGV2dCkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHRoaXMuCisgICAgaWYgKG1fb25jbG9zZSkgeworICAgICAgICBldnQtPnNldFRhcmdldCh0
aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29u
Y2xvc2UtPmhhbmRsZUV2ZW50KGV2dCwgZmFsc2UpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZ0LCBlYyk7CisgICAgQVNTRVJUKCFlYyk7
CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXgg
NDg1ZTJjYy4uMmJlMzQ0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5oCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtMzEsOTMgKzMxLDEw
NCBAQAogI2lmbmRlZiBXZWJTb2NrZXRfaAogI2RlZmluZSBXZWJTb2NrZXRfaAogCisjaWYgRU5B
QkxFKFdFQl9TT0NLRVRTKQorCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiQXRvbWljU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU3RyaW5nOwor
ICAgIGNsYXNzIFN0cmluZzsKKyAgICBjbGFzcyBXZWJTb2NrZXRDaGFubmVsOwogCi1jbGFzcyBX
ZWJTb2NrZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTb2NrZXQ+LCBwdWJsaWMgRXZlbnRUYXJn
ZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpOyB9Ci0gICAgdmlydHVhbCB+
V2ViU29ja2V0KCk7CisgICAgY2xhc3MgV2ViU29ja2V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
U29ja2V0PiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJs
aWMgV2ViU29ja2V0Q2hhbm5lbENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2ViU29ja2V0KGNvbnRleHQpKTsgfQorICAgICAg
ICB2aXJ0dWFsIH5XZWJTb2NrZXQoKTsKIAotICAgIGVudW0gU3RhdGUgewotICAgICAgICBDT05O
RUNUSU5HID0gMCwKLSAgICAgICAgT1BFTiA9IDEsCi0gICAgICAgIENMT1NFRCA9IDIKLSAgICB9
OworICAgICAgICBlbnVtIFN0YXRlIHsKKyAgICAgICAgICAgIENPTk5FQ1RJTkcgPSAwLAorICAg
ICAgICAgICAgT1BFTiA9IDEsCisgICAgICAgICAgICBDTE9TRUQgPSAyCisgICAgICAgIH07CiAK
LSAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
dm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRXhj
ZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBib29sIHNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIGJvb2wgc2VuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZvaWQgY2xvc2UoKTsKKyAgICAg
ICAgdm9pZCBjbG9zZSgpOwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7Ci0gICAgU3Rh
dGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwotICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQo
KSBjb25zdDsKKyAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7CisgICAgICAgIFN0YXRl
IHJlYWR5U3RhdGUoKSBjb25zdDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3Vu
dCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRPbm9wZW4oUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiBldmVudExpc3RlbmVyKSB7IG1fb25vcGVuID0gZXZlbnRMaXN0ZW5lcjsgfQotICAgIEV2ZW50
TGlzdGVuZXIqIG9ub3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fb25vcGVuLmdldCgpOyB9Ci0gICAg
dm9pZCBzZXRPbm1lc3NhZ2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVy
KSB7IG1fb25tZXNzYWdlID0gZXZlbnRMaXN0ZW5lcjsgfQotICAgIEV2ZW50TGlzdGVuZXIqIG9u
bWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25tZXNzYWdlLmdldCgpOyB9Ci0gICAgdm9pZCBz
ZXRPbmNsb3NlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29u
Y2xvc2UgPSBldmVudExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25jbG9zZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb25jbG9zZS5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldE9ub3BlbihQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbm9wZW4gPSBldmVu
dExpc3RlbmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9ub3BlbigpIGNvbnN0IHsgcmV0
dXJuIG1fb25vcGVuLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0T25tZXNzYWdlKFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29ubWVzc2FnZSA9IGV2ZW50TGlz
dGVuZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25tZXNzYWdlKCkgY29uc3QgeyByZXR1
cm4gbV9vbm1lc3NhZ2UuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRPbmNsb3NlKFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uY2xvc2UgPSBldmVudExpc3Rl
bmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uY2xvc2UoKSBjb25zdCB7IHJldHVybiBt
X29uY2xvc2UuZ2V0KCk7IH0KIAotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBXZWJT
b2NrZXQqIHRvV2ViU29ja2V0KCkgeyByZXR1cm4gdGhpczsgfQorICAgICAgICAvLyBFdmVudFRh
cmdldAorICAgICAgICB2aXJ0dWFsIFdlYlNvY2tldCogdG9XZWJTb2NrZXQoKSB7IHJldHVybiB0
aGlzOyB9CiAKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0
cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0
ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7Ci0gICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQo
UGFzc1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgdHlwZWRlZiBWZWN0
b3I8UmVmUHRyPEV2ZW50TGlzdGVuZXI+ID4gTGlzdGVuZXJWZWN0b3I7CisgICAgICAgIHR5cGVk
ZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIExpc3RlbmVyVmVjdG9yPiBFdmVudExpc3RlbmVyc01h
cDsKIAotICAgIC8vIEFjdGl2ZURPTU9iamVjdAotICAgIC8vIHZpcnR1YWwgYm9vbCBoYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdDsKLSAgICAvLyB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3ll
ZCgpOwotICAgIC8vIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Q7Ci0gICAgLy8gdmly
dHVhbCB2b2lkIHN1c3BlbmQoKTsKLSAgICAvLyB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7Ci0gICAg
Ly8gdmlydHVhbCB2b2lkIHN0b3AoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwg
Ym9vbCB1c2VDYXB0dXJlKTsKKyAgICAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgRXZlbnRMaXN0ZW5lcnNN
YXAmIGV2ZW50TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9ldmVudExpc3RlbmVyczsgfQogCi0gICAg
dXNpbmcgUmVmQ291bnRlZDxXZWJTb2NrZXQ+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxX
ZWJTb2NrZXQ+OjpkZXJlZjsKKyAgICAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CisgICAgICAgIC8v
ICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CisgICAgICAgIC8vIHZp
cnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CisgICAgICAgIC8vIHZpcnR1YWwgYm9vbCBj
YW5TdXNwZW5kKCkgY29uc3Q7CisgICAgICAgIC8vIHZpcnR1YWwgdm9pZCBzdXNwZW5kKCk7Cisg
ICAgICAgIC8vIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKKyAgICAgICAgLy8gdmlydHVhbCB2b2lk
IHN0b3AoKTsKIAotcHJpdmF0ZToKLSAgICBXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopOworICAgICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldD46OnJlZjsKKyAgICAgICAg
dXNpbmcgUmVmQ291bnRlZDxXZWJTb2NrZXQ+OjpkZXJlZjsKIAotICAgIHZpcnR1YWwgdm9pZCBy
ZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIHsgZGVyZWYoKTsgfQorICAgICAgICAvLyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDb25uZWN0KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1zZyk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRDbG9zZSgpOwogCi0gICAgLy8gV2ViU29ja2V0Q2hhbm5lbENsaWVudAotICAgIHZvaWQg
ZGlkQ29ubmVjdCgpOwotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBt
c2cpOwotICAgIHZvaWQgZGlkQ2xvc2UoKTsKKyAgICBwcml2YXRlOgorICAgICAgICBXZWJTb2Nr
ZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCi0gICAgdm9pZCBkaXNwYXRjaE9wZW5FdmVu
dCgpOwotICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBtc2cpOwot
ICAgIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRU
YXJnZXQoKSB7IGRlcmVmKCk7IH0KIAotICAgIC8vIEZJWE1FOiBhZGQgV2ViU29ja2V0Q2hhbm5l
bC4KKyAgICAgICAgdm9pZCBkaXNwYXRjaE9wZW5FdmVudChFdmVudCopOworICAgICAgICB2b2lk
IGRpc3BhdGNoTWVzc2FnZUV2ZW50KEV2ZW50Kik7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hDbG9z
ZUV2ZW50KEV2ZW50Kik7CiAKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbm9wZW47Ci0g
ICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25tZXNzYWdlOwotICAgIFJlZlB0cjxFdmVudExp
c3RlbmVyPiBtX29uY2xvc2U7CisgICAgICAgIFJlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBtX2No
YW5uZWw7CiAKLSAgICBTdGF0ZSBtX3N0YXRlOwotICAgIEtVUkwgbV91cmw7Ci0gICAgU3RyaW5n
IG1fcHJvdG9jb2w7Ci19OworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbm9wZW47
CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ubWVzc2FnZTsKKyAgICAgICAgUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IG1fb25jbG9zZTsKKyAgICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAg
bV9ldmVudExpc3RlbmVyczsKKworICAgICAgICBTdGF0ZSBtX3N0YXRlOworICAgICAgICBLVVJM
IG1fdXJsOworICAgICAgICBTdHJpbmcgbV9wcm90b2NvbDsKKyAgICB9OwogCiB9ICAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCisjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKwogI2VuZGlm
ICAvLyBXZWJTb2NrZXRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NWNkMzQKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTAsMCArMSwy
NDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisj
aW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgorCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2lu
Y2x1ZGUgIkNvb2tpZUphci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yLmgiCisjaW5jbHVk
ZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCisjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgorI2luY2x1
ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgor
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQq
IGNsaWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQorICAgIDog
bV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX2hhbmRz
aGFrZSh1cmwsIHByb3RvY29sLCBjb250ZXh0KQorICAgICwgbV9idWZmZXIoMCkKKyAgICAsIG1f
YnVmZmVyU2l6ZSgwKQorICAgICwgbV91bmhhbmRsZWRCdWZmZXJTaXplKDApCit7Cit9CisKK1dl
YlNvY2tldENoYW5uZWw6On5XZWJTb2NrZXRDaGFubmVsKCkKK3sKKyAgICBmYXN0RnJlZShtX2J1
ZmZlcik7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdCgpCit7CisgICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNvbm5lY3QiLCB0aGlzKTsKKyAgICBBU1NF
UlQoIW1faGFuZGxlLmdldCgpKTsKKyAgICBtX2hhbmRzaGFrZS5yZXNldCgpOworICAgIG1faGFu
ZGxlID0gU29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGUobV9oYW5kc2hha2UudXJsKCksIHRoaXMp
OworfQorCitib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtc2cpCit7
CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQgJXMiLCB0aGlzLCBt
c2cudXRmOCgpLmRhdGEoKSk7CisgICAgVmVjdG9yPGNoYXI+IGJ1ZjsKKyAgICBidWYuYXBwZW5k
KCdcMCcpOyAgLy8gZnJhbWUgdHlwZQorICAgIGJ1Zi5hcHBlbmQobXNnLnV0ZjgoKS5kYXRhKCks
IG1zZy51dGY4KCkubGVuZ3RoKCkpOworICAgIGJ1Zi5hcHBlbmQoJ1x4ZmYnKTsgIC8vIGZyYW1l
IGVuZAorICAgIGlmICghbV9oYW5kbGUuZ2V0KCkpIHsKKyAgICAgICAgbV91bmhhbmRsZWRCdWZm
ZXJTaXplICs9IGJ1Zi5zaXplKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
cmV0dXJuIG1faGFuZGxlLT5zZW5kKGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkpOworfQorCit1bnNp
Z25lZCBsb25nIFdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKK3sKKyAg
ICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgYnVmZmVyZWRBbW91bnQiLCB0aGlz
KTsKKyAgICBpZiAoIW1faGFuZGxlLmdldCgpKQorICAgICAgICByZXR1cm4gbV91bmhhbmRsZWRC
dWZmZXJTaXplOworICAgIHJldHVybiBtX2hhbmRsZS0+YnVmZmVyZWRBbW91bnQoKTsKK30KKwor
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjbG9zZSgpCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXRDaGFubmVsICVwIGNsb3NlIiwgdGhpcyk7CisgICAgaWYgKG1faGFuZGxlLmdldCgpKQor
ICAgICAgICBtX2hhbmRsZS0+Y2xvc2UoKTsgIC8vIHdpbGwgY2FsbCBkaWRDbG9zZSgpCit9CisK
K3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6d2lsbE9wZW5TdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxl
KiwgY29uc3QgS1VSTCYpCit7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6d2lsbFNlbmRE
YXRhKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQpCit7Cit9CisKK3ZvaWQg
V2ViU29ja2V0Q2hhbm5lbDo6ZGlkT3BlbihTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKK3sK
KyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkT3BlbiIsIHRoaXMpOwor
ICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5kbGUuZ2V0KCkpOworICAgIGNvbnN0IENTdHJpbmcm
IGhhbmRzaGFrZU1lc3NhZ2UgPSBtX2hhbmRzaGFrZS5jbGllbnRIYW5kc2hha2VNZXNzYWdlKCk7
CisgICAgaWYgKCFoYW5kbGUtPnNlbmQoaGFuZHNoYWtlTWVzc2FnZS5kYXRhKCksIGhhbmRzaGFr
ZU1lc3NhZ2UubGVuZ3RoKCkpKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiRXJyb3IgaW4gc2Vu
ZGluZyBoYW5kc2hha2UgbWVzc2FnZS4iKTsKKyAgICAgICAgaGFuZGxlLT5jbG9zZSgpOworICAg
IH0KK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRDbG9zZShTb2NrZXRTdHJlYW1IYW5k
bGUqIGhhbmRsZSkKK3sKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlk
Q2xvc2UiLCB0aGlzKTsKKyAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlLmdldCgpIHx8ICFt
X2hhbmRsZS5nZXQoKSk7CisgICAgaWYgKCFtX2hhbmRsZS5nZXQoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fdW5oYW5kbGVkQnVmZmVyU2l6ZSA9IGhhbmRsZS0+YnVmZmVyZWRBbW91bnQoKTsK
KyAgICBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQgPSBtX2NsaWVudDsKKyAgICBtX2Ns
aWVudCA9IDA7CisgICAgbV9oYW5kbGUgPSAwOworICAgIGNsaWVudC0+ZGlkQ2xvc2UoKTsKK30K
Kwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNlaXZlRGF0YShTb2NrZXRTdHJlYW1IYW5k
bGUqIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKK3sKKyAgICBMT0coTmV0d29y
aywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkUmVjZWl2ZURhdGEgJWQiLCB0aGlzLCBsZW4pOwor
ICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5kbGUuZ2V0KCkpOworICAgIGlmICghYXBwZW5kVG9C
dWZmZXIoZGF0YSwgbGVuKSkgeworICAgICAgICBoYW5kbGUtPmNsb3NlKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaWYgKG1faGFuZHNoYWtlLm1vZGUoKSAhPSBXZWJTb2NrZXRIYW5k
c2hha2U6OkNvbm5lY3RlZCkgeworICAgICAgICBpbnQgaGVhZGVyTGVuZ3RoID0gbV9oYW5kc2hh
a2UucmVhZFNlcnZlckhhbmRzaGFrZShtX2J1ZmZlciwgbV9idWZmZXJTaXplKTsKKyAgICAgICAg
aWYgKGhlYWRlckxlbmd0aCA8PSAwKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzd2l0
Y2ggKG1faGFuZHNoYWtlLm1vZGUoKSkgeworICAgICAgICBjYXNlIFdlYlNvY2tldEhhbmRzaGFr
ZTo6Q29ubmVjdGVkOgorICAgICAgICAgICAgaWYgKCFtX2hhbmRzaGFrZS5zZXJ2ZXJTZXRDb29r
aWUoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9jb250ZXh0LT5pc0RvY3Vt
ZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihtX2NvbnRleHQpOworICAgICAgICAgICAgICAgICAgICBpZiAoY29v
a2llc0VuYWJsZWQoZG9jdW1lbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQt
PnNldENvb2tpZShtX2hhbmRzaGFrZS5zZXJ2ZXJTZXRDb29raWUoKSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gRklYTUU6IGhhbmRsZSBzZXQtY29v
a2llMi4KKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjb25u
ZWN0ZWQiLCB0aGlzKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDb25uZWN0KCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjb25uZWN0aW9uIGZhaWxlZCIsIHRoaXMpOworICAgICAg
ICAgICAgaGFuZGxlLT5jbG9zZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIHNraXBCdWZmZXIoaGVhZGVyTGVuZ3RoKTsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcikK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgTE9HKE5ldHdvcmssICJyZW1haW5pbmcgaW4g
cmVhZCBidWYgJXVsIiwgbV9idWZmZXJTaXplKTsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyKiBu
ZXh0RnJhbWUgPSBtX2J1ZmZlcjsKKyAgICBjb25zdCBjaGFyKiBwID0gbV9idWZmZXI7CisgICAg
Y29uc3QgY2hhciogZW5kID0gcCArIG1fYnVmZmVyU2l6ZTsKKyAgICB3aGlsZSAocCA8IGVuZCkg
eworICAgICAgICB1bnNpZ25lZCBjaGFyIGZyYW1lQnl0ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KCpwKyspOworICAgICAgICBpZiAoKGZyYW1lQnl0ZSAmIDB4ODApID09IDB4ODApIHsK
KyAgICAgICAgICAgIGludCBsZW5ndGggPSAwOworICAgICAgICAgICAgd2hpbGUgKHAgPCBlbmQg
JiYgKCpwICYgMHg4MCkgPT0gMHg4MCkgeworICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPiBz
dGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpIC8gMTI4KSB7CisgICAgICAgICAgICAgICAg
ICAgIExPRyhOZXR3b3JrLCAiZnJhbWUgbGVuZ3RoIG92ZXJmbG93ICVkIiwgbGVuZ3RoKTsKKyAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlLT5jbG9zZSgpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0
aCAqIDEyOCArICpwICYgMHg3ZjsKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAocCArIGxlbmd0aCA8IGVuZCkgeworICAgICAgICAgICAgICAgIHAg
Kz0gbGVuZ3RoOworICAgICAgICAgICAgICAgIG5leHRGcmFtZSA9IHA7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBtc2dTdGFydCA9IHA7
CisgICAgICAgICAgICB3aGlsZSAocCA8IGVuZCAmJiAqcCAhPSAnXHhmZicpCisgICAgICAgICAg
ICAgICAgKytwOworICAgICAgICAgICAgaWYgKHAgPCBlbmQgJiYgKnAgPT0gJ1x4ZmYnKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGZyYW1lQnl0ZSA9PSAweDAwKQorICAgICAgICAgICAgICAgICAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2UoU3RyaW5nOjpmcm9tVVRGOChtc2dTdGFydCwg
cCAtIG1zZ1N0YXJ0KSk7CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgIG5l
eHRGcmFtZSA9IHA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgc2tpcEJ1
ZmZlcihuZXh0RnJhbWUgLSBtX2J1ZmZlcik7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
ZGlkRmFpbChTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSwgY29uc3QgU29ja2V0U3RyZWFtRXJy
b3ImKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRGYWlsIiwg
dGhpcyk7CisgICAgQVNTRVJUKGhhbmRsZSA9PSBtX2hhbmRsZS5nZXQoKSB8fCAhbV9oYW5kbGUu
Z2V0KCkpOworICAgIGhhbmRsZS0+Y2xvc2UoKTsKK30KKworYm9vbCBXZWJTb2NrZXRDaGFubmVs
OjphcHBlbmRUb0J1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQoreworICAgIGNoYXIq
IG5ld0J1ZmZlciA9IDA7CisgICAgaWYgKHRyeUZhc3RNYWxsb2MobV9idWZmZXJTaXplICsgbGVu
KS5nZXRWYWx1ZShuZXdCdWZmZXIpKSB7CisgICAgICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAg
ICAgIG1lbWNweShuZXdCdWZmZXIsIG1fYnVmZmVyLCBtX2J1ZmZlclNpemUpOworICAgICAgICBt
ZW1jcHkobmV3QnVmZmVyICsgbV9idWZmZXJTaXplLCBkYXRhLCBsZW4pOworICAgICAgICBmYXN0
RnJlZShtX2J1ZmZlcik7CisgICAgICAgIG1fYnVmZmVyID0gbmV3QnVmZmVyOworICAgICAgICBt
X2J1ZmZlclNpemUgKz0gbGVuOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgTE9H
KE5ldHdvcmssICJUb28gbG9uZyBXZWJTb2NrZXQgZnJhbWUgJWQiLCBtX2J1ZmZlclNpemUgKyBs
ZW4pOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpza2lw
QnVmZmVyKGludCBsZW4pCit7CisgICAgQVNTRVJUKGxlbiA8PSBtX2J1ZmZlclNpemUpOworICAg
IG1fYnVmZmVyU2l6ZSAtPSBsZW47CisgICAgaWYgKCFtX2J1ZmZlclNpemUpIHsKKyAgICAgICAg
ZmFzdEZyZWUobV9idWZmZXIpOworICAgICAgICBtX2J1ZmZlciA9IDA7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgbWVtbW92ZShtX2J1ZmZlciwgbV9idWZmZXIgKyBsZW4sIG1fYnVmZmVy
U2l6ZSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxF
KFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVmNDFmNgotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTAsMCArMSw4NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlNvY2tldENoYW5uZWxfaAorI2RlZmluZSBXZWJTb2NrZXRDaGFubmVsX2gKKworI2lm
IEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dC5oIgorI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CisgICAgY2xhc3MgU3RyaW5nOworICAgIGNsYXNzIFNvY2tldFN0cmVhbUhh
bmRsZTsKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvcjsKKyAgICBjbGFzcyBXZWJTb2NrZXRD
aGFubmVsQ2xpZW50OworCisgICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbCA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYlNvY2tldENoYW5uZWw+LCBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldENoYW5u
ZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50KiBjbGllbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCkgeyByZXR1cm4gbmV3IFdlYlNvY2tldENoYW5uZWwoY29udGV4dCwgY2xpZW50LCB1cmwsIHBy
b3RvY29sKTsgfQorICAgICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDaGFubmVsKCk7CisKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoKTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgc2VuZChj
b25zdCBTdHJpbmcmIG1zZyk7CisgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJl
ZEFtb3VudCgpIGNvbnN0OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOworCisgICAg
ICAgIHZpcnR1YWwgdm9pZCB3aWxsT3BlblN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25z
dCBLVVJMJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZERhdGEoU29ja2V0U3RyZWFt
SGFuZGxlKiwgY29uc3QgY2hhciosIGludCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVu
KFNvY2tldFN0cmVhbUhhbmRsZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoU29j
a2V0U3RyZWFtSGFuZGxlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShT
b2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50KTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3Im
KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdlYlNvY2tldENoYW5uZWxDbGllbnQqLCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJik7CisKKyAgICAgICAgYm9vbCBhcHBlbmRUb0J1ZmZlcihjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuKTsKKyAgICAgICAgdm9pZCBza2lwQnVmZmVyKGludCBsZW4pOworCisgICAgICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKKyAgICAgICAgV2ViU29ja2V0Q2hh
bm5lbENsaWVudCogbV9jbGllbnQ7CisgICAgICAgIFdlYlNvY2tldEhhbmRzaGFrZSBtX2hhbmRz
aGFrZTsKKyAgICAgICAgUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gbV9oYW5kbGU7CisgICAg
ICAgIGNoYXIqIG1fYnVmZmVyOworICAgICAgICBpbnQgbV9idWZmZXJTaXplOworICAgICAgICB1
bnNpZ25lZCBsb25nIG1fdW5oYW5kbGVkQnVmZmVyU2l6ZTsKKyAgICB9OworCit9ICAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlm
ICAvLyBXZWJTb2NrZXRDaGFubmVsX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbENsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2M2NhZGEK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENs
aWVudC5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50X2gK
KyNkZWZpbmUgV2ViU29ja2V0Q2hhbm5lbENsaWVudF9oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tF
VFMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFdlYlNvY2tldENoYW5uZWxD
bGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+V2ViU29ja2V0Q2hhbm5lbENs
aWVudCgpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29ubmVjdCgpIHsgfQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJikgeyB9CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZSgpIHsgfQorCisgICAgcHJvdGVjdGVkOgorICAgICAg
ICBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KCkgeyB9CisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAgLy8g
V2ViU29ja2V0Q2hhbm5lbENsaWVudF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5MWZhMWMKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNw
cApAQCAtMCwwICsxLDQ2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VC
X1NPQ0tFVFMpCisKKyNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2UuaCIKKworI2luY2x1ZGUg
IkF0b21pY1N0cmluZy5oIgorI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJDb29raWVK
YXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIK
KyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1
ZGUgIlN0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGNoYXIg
d2ViU29ja2V0U2VydmVySGFuZHNoYWtlSGVhZGVyW10gPSAiSFRUUC8xLjEgMTAxIFdlYiBTb2Nr
ZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbiI7Citjb25zdCBjaGFyIHdlYlNvY2tldFVwZ3JhZGVI
ZWFkZXJbXSA9ICJVcGdyYWRlOiBXZWJTb2NrZXRcclxuIjsKK2NvbnN0IGNoYXIgd2ViU29ja2V0
Q29ubmVjdGlvbkhlYWRlcltdID0gIkNvbm5lY3Rpb246IFVwZ3JhZGVcclxuIjsKKworc3RhdGlj
IFN0cmluZyBleHRyYWN0UmVzcG9uc2VDb2RlKGNvbnN0IGNoYXIqIGhlYWRlciwgaW50IGxlbikK
K3sKKyAgICBjb25zdCBjaGFyKiBzcGFjZTEgPSAwOworICAgIGNvbnN0IGNoYXIqIHNwYWNlMiA9
IDA7CisgICAgY29uc3QgY2hhciogcDsKKyAgICBmb3IgKHAgPSBoZWFkZXI7IHAgLSBoZWFkZXIg
PCBsZW47IHArKykgeworICAgICAgICBpZiAoKnAgPT0gJyAnKSB7CisgICAgICAgICAgICBpZiAo
IXNwYWNlMSkKKyAgICAgICAgICAgICAgICBzcGFjZTEgPSBwOworICAgICAgICAgICAgZWxzZSBp
ZiAoIXNwYWNlMikKKyAgICAgICAgICAgICAgICBzcGFjZTIgPSBwOworICAgICAgICB9IGVsc2Ug
aWYgKCpwID09ICdcbicpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKHAgLSBo
ZWFkZXIgPT0gbGVuKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgaWYgKCFzcGFjZTEg
fHwgIXNwYWNlMikKKyAgICAgICAgcmV0dXJuICIiOworICAgIHJldHVybiBTdHJpbmcoc3BhY2Ux
ICsgMSwgc3BhY2UyIC0gc3BhY2UxIC0gMSk7Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZTo6V2Vi
U29ja2V0SGFuZHNoYWtlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fdXJsKHVybCkKKyAgICAs
IG1fY2xpZW50UHJvdG9jb2wocHJvdG9jb2wpCisgICAgLCBtX3NlY3VyZShtX3VybC5wcm90b2Nv
bElzKCJ3c3MiKSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9tb2RlKEluY29t
cGxldGUpCit7Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZTo6fldlYlNvY2tldEhhbmRzaGFrZSgp
Cit7Cit9CisKK2NvbnN0IEtVUkwmIFdlYlNvY2tldEhhbmRzaGFrZTo6dXJsKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV91cmw7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRVUkwo
Y29uc3QgS1VSTCYgdXJsKQoreworICAgIG1fdXJsID0gdXJsLmNvcHkoKTsKK30KKworY29uc3Qg
U3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6aG9zdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
dXJsLmhvc3QoKS5sb3dlcigpOworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFr
ZTo6Y2xpZW50UHJvdG9jb2woKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudFByb3RvY29s
OworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0Q2xpZW50UHJvdG9jb2woY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCkKK3sKKyAgICBtX2NsaWVudFByb3RvY29sID0gcHJvdG9jb2w7Cit9
CisKK2Jvb2wgV2ViU29ja2V0SGFuZHNoYWtlOjpzZWN1cmUoKSBjb25zdAoreworICAgIHJldHVy
biBtX3NlY3VyZTsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFNlY3VyZShib29s
IHNlY3VyZSkKK3sKKyAgICBtX3NlY3VyZSA9IHNlY3VyZTsKK30KKworU3RyaW5nIFdlYlNvY2tl
dEhhbmRzaGFrZTo6Y2xpZW50T3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0
LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpOworfQorCitTdHJpbmcgV2ViU29ja2V0SGFu
ZHNoYWtlOjpjbGllbnRMb2NhdGlvbigpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fc2VjdXJlID8gIndzcyIgOiAid3MiKTsKKyAgICBi
dWlsZGVyLmFwcGVuZCgiOi8vIik7CisgICAgYnVpbGRlci5hcHBlbmQobV91cmwuaG9zdCgpLmxv
d2VyKCkpOworICAgIGlmIChtX3VybC5wb3J0KCkpIHsKKyAgICAgICAgaWYgKCghbV9zZWN1cmUg
JiYgbV91cmwucG9ydCgpICE9IDgwKSB8fCAobV9zZWN1cmUgJiYgbV91cmwucG9ydCgpICE9IDQ0
MykpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6Iik7CisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihtX3VybC5wb3J0KCkpKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBidWlsZGVyLmFwcGVuZChtX3VybC5wYXRoKCkpOworICAgIHJldHVybiBidWlsZGVy
LnRvU3RyaW5nKCk7Cit9CisKK0NTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5k
c2hha2VNZXNzYWdlKCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAg
ICBidWlsZGVyLmFwcGVuZCgiR0VUICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKG1fdXJsLnBhdGgo
KSk7CisgICAgaWYgKCFtX3VybC5xdWVyeSgpLmlzRW1wdHkoKSkgeworICAgICAgICBidWlsZGVy
LmFwcGVuZCgiPyIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChtX3VybC5xdWVyeSgpKTsKKyAg
ICB9CisgICAgYnVpbGRlci5hcHBlbmQoIiBIVFRQLzEuMVxyXG4iKTsKKyAgICBidWlsZGVyLmFw
cGVuZCgiVXBncmFkZTogV2ViU29ja2V0XHJcbiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJDb25u
ZWN0aW9uOiBVcGdyYWRlXHJcbiIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJIb3N0OiAiKTsKKyAg
ICBidWlsZGVyLmFwcGVuZChtX3VybC5ob3N0KCkubG93ZXIoKSk7CisgICAgaWYgKG1fdXJsLnBv
cnQoKSkgeworICAgICAgICBpZiAoKCFtX3NlY3VyZSAmJiBtX3VybC5wb3J0KCkgIT0gODApIHx8
IChtX3NlY3VyZSAmJiBtX3VybC5wb3J0KCkgIT0gNDQzKSkgeworICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIjoiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6bnVtYmVy
KG1fdXJsLnBvcnQoKSkpOworICAgICAgICB9CisgICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKCJc
clxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIk9yaWdpbjogIik7CisgICAgYnVpbGRlci5hcHBl
bmQoY2xpZW50T3JpZ2luKCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisgICAgaWYg
KCFtX2NsaWVudFByb3RvY29sLmlzRW1wdHkoKSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZCgi
V2ViU29ja2V0LVByb3RvY29sOiAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV9jbGllbnRQ
cm90b2NvbCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisgICAgfQorICAgIEtV
UkwgdXJsID0gaHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpOworICAgIC8vIEZJ
WE1FOiBzZXQgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gb3IgY29va2llcyBmb3IgdXJsLgor
ICAgIC8vIFNldCAiQXV0aG9yaXphdGlvbjogPGNyZWRlbnRpYWxzPiIgaWYgYXV0aGVudGljYXRp
b24gaW5mb3JtYXRpb24gZXhpc3RzIGZvciB1cmwuCisgICAgaWYgKG1fY29udGV4dC0+aXNEb2N1
bWVudCgpKSB7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4obV9jb250ZXh0KTsKKyAgICAgICAgU3RyaW5nIGNvb2tpZSA9IGNvb2tpZXMoZG9jdW1l
bnQsIHVybCk7CisgICAgICAgIGlmICghY29va2llLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoIkNvb2tpZTogIik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChj
b29raWUpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxyXG4iKTsKKyAgICAgICAgfQor
ICAgICAgICAvLyBTZXQgIkNvb2tpZTI6IDxjb29raWU+IiBpZiBjb29raWVzIDIgZXhpc3RzIGZv
ciB1cmw/CisgICAgfQorICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisgICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpy
ZXNldCgpCit7CisgICAgbV9tb2RlID0gSW5jb21wbGV0ZTsKKworICAgIG1fd3NPcmlnaW4gPSBT
dHJpbmcoKTsKKyAgICBtX3dzTG9jYXRpb24gPSBTdHJpbmcoKTsKKyAgICBtX3dzUHJvdG9jb2wg
PSBTdHJpbmcoKTsKKyAgICBtX3NldENvb2tpZSA9IFN0cmluZygpOworICAgIG1fc2V0Q29va2ll
MiA9IFN0cmluZygpOworfQorCitpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFu
ZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKK3sKKyAgICBtX21vZGUgPSBJ
bmNvbXBsZXRlOworICAgIGlmIChsZW4gPCBzaXplb2Yod2ViU29ja2V0U2VydmVySGFuZHNoYWtl
SGVhZGVyKSAtIDEpIHsKKyAgICAgICAgLy8gSnVzdCBoYXNuJ3QgYmVlbiByZWNlaXZlZCBmdWxs
eSB5ZXQuCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFtZW1jbXAoaGVhZGVy
LCB3ZWJTb2NrZXRTZXJ2ZXJIYW5kc2hha2VIZWFkZXIsIHNpemVvZih3ZWJTb2NrZXRTZXJ2ZXJI
YW5kc2hha2VIZWFkZXIpIC0gMSkpCisgICAgICAgIG1fbW9kZSA9IE5vcm1hbDsKKyAgICBlbHNl
IHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBjb2RlID0gZXh0cmFjdFJlc3BvbnNlQ29kZShoZWFk
ZXIsIGxlbik7CisgICAgICAgIGlmIChjb2RlLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBMT0co
TmV0d29yaywgInNob3J0IHNlcnZlciBoYW5kc2hha2U6ICVzIiwgaGVhZGVyKTsKKyAgICAgICAg
ICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29kZS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAibm8gcmVzcG9uc2UgY29kZSBmb3VuZDogJXMiLCBo
ZWFkZXIpOworICAgICAgICAgICAgcmV0dXJuIGxlbjsKKyAgICAgICAgfQorICAgICAgICBMT0co
TmV0d29yaywgInJlc3BvbnNlIGNvZGU6ICVzIiwgY29kZS51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgaWYgKGNvZGUgPT0gIjQwMSIpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiQXV0aGVu
dGljYXRpb24gcmVxdWlyZWQiKTsKKyAgICAgICAgICAgIHJldHVybiBsZW47CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBMT0coTmV0d29yaywgIk1pc21hdGNoIHNlcnZlciBoYW5kc2hh
a2U6ICVzIiwgaGVhZGVyKTsKKyAgICAgICAgICAgIHJldHVybiBsZW47CisgICAgICAgIH0KKyAg
ICB9CisgICAgY29uc3QgY2hhciogcCA9IGhlYWRlciArIHNpemVvZih3ZWJTb2NrZXRTZXJ2ZXJI
YW5kc2hha2VIZWFkZXIpIC0gMTsKKyAgICBjb25zdCBjaGFyKiBlbmQgPSBoZWFkZXIgKyBsZW4g
KyAxOworCisgICAgaWYgKG1fbW9kZSA9PSBOb3JtYWwpIHsKKyAgICAgICAgc2l6ZV90IGhlYWRl
clNpemUgPSBlbmQgLSBwOworICAgICAgICBpZiAoaGVhZGVyU2l6ZSA8IHNpemVvZih3ZWJTb2Nr
ZXRVcGdyYWRlSGVhZGVyKSAtIDEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYg
KG1lbWNtcChwLCB3ZWJTb2NrZXRVcGdyYWRlSGVhZGVyLCBzaXplb2Yod2ViU29ja2V0VXBncmFk
ZUhlYWRlcikgLSAxKSkgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJCYWQgdXBncmFkZSBo
ZWFkZXI6ICVzIiwgcCk7CisgICAgICAgICAgICByZXR1cm4gcCAtIGhlYWRlciArIHNpemVvZih3
ZWJTb2NrZXRVcGdyYWRlSGVhZGVyKSAtIDE7CisgICAgICAgIH0KKyAgICAgICAgcCArPSBzaXpl
b2Yod2ViU29ja2V0VXBncmFkZUhlYWRlcikgLSAxOworCisgICAgICAgIGhlYWRlclNpemUgPSBl
bmQgLSBwOworICAgICAgICBpZiAoaGVhZGVyU2l6ZSA8IHNpemVvZih3ZWJTb2NrZXRDb25uZWN0
aW9uSGVhZGVyKSAtIDEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChtZW1j
bXAocCwgd2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlciwgc2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rp
b25IZWFkZXIpIC0gMSkpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiQmFkIGNvbm5lY3Rp
b24gaGVhZGVyOiAlcyIsIHApOworICAgICAgICAgICAgcmV0dXJuIHAgLSBoZWFkZXIgKyBzaXpl
b2Yod2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlcikgLSAxOworICAgICAgICB9CisgICAgICAgIHAg
Kz0gc2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXIpIC0gMTsKKyAgICB9CisKKyAgICBp
ZiAoIXN0cm5zdHIocCwgIlxyXG5cclxuIiwgZW5kIC0gcCkpIHsKKyAgICAgICAgLy8gSnVzdCBo
YXNuJ3QgYmVlbiByZWNlaXZlZCBmdWxseSB5ZXQuCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9
CisgICAgSFRUUEhlYWRlck1hcCBoZWFkZXJzOworICAgIHAgPSByZWFkSFRUUEhlYWRlcnMocCwg
ZW5kLCAmaGVhZGVycyk7CisgICAgaWYgKCFwKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAicmVh
ZEhUVFBIZWFkZXJzIGZhaWxlZCIpOworICAgICAgICBtX21vZGUgPSBGYWlsZWQ7CisgICAgICAg
IHJldHVybiBsZW47CisgICAgfQorICAgIGlmICghcHJvY2Vzc0hlYWRlcnMoaGVhZGVycykpIHsK
KyAgICAgICAgTE9HKE5ldHdvcmssICJoZWFkZXIgcHJvY2VzcyBmYWlsZWQiKTsKKyAgICAgICAg
bV9tb2RlID0gRmFpbGVkOworICAgICAgICByZXR1cm4gcCAtIGhlYWRlcjsKKyAgICB9CisgICAg
c3dpdGNoIChtX21vZGUpIHsKKyAgICBjYXNlIE5vcm1hbDoKKyAgICAgICAgY2hlY2tSZXNwb25z
ZUhlYWRlcnMoKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbV9tb2Rl
ID0gRmFpbGVkOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHAgLSBoZWFkZXI7
Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZTo6TW9kZSBXZWJTb2NrZXRIYW5kc2hha2U6Om1vZGUo
KSBjb25zdAoreworICAgIHJldHVybiBtX21vZGU7Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29j
a2V0SGFuZHNoYWtlOjpzZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oKSBjb25zdAoreworICAgIHJldHVy
biBtX3dzT3JpZ2luOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0U2VydmVyV2Vi
U29ja2V0T3JpZ2luKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0T3JpZ2luKQoreworICAgIG1fd3NP
cmlnaW4gPSB3ZWJTb2NrZXRPcmlnaW47Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0SGFu
ZHNoYWtlOjpzZXJ2ZXJXZWJTb2NrZXRMb2NhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
d3NMb2NhdGlvbjsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFNlcnZlcldlYlNv
Y2tldExvY2F0aW9uKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0TG9jYXRpb24pCit7CisgICAgbV93
c0xvY2F0aW9uID0gd2ViU29ja2V0TG9jYXRpb247Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29j
a2V0SGFuZHNoYWtlOjpzZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fd3NQcm90b2NvbDsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFNlcnZl
cldlYlNvY2tldFByb3RvY29sKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0UHJvdG9jb2wpCit7Cisg
ICAgbV93c1Byb3RvY29sID0gd2ViU29ja2V0UHJvdG9jb2w7Cit9CisKK2NvbnN0IFN0cmluZyYg
V2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJTZXRDb29raWUoKSBjb25zdAoreworICAgIHJldHVy
biBtX3NldENvb2tpZTsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFNlcnZlclNl
dENvb2tpZShjb25zdCBTdHJpbmcmIHNldENvb2tpZSkKK3sKKyAgICBtX3NldENvb2tpZSA9IHNl
dENvb2tpZTsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlclNl
dENvb2tpZTIoKSBjb25zdAoreworICAgIHJldHVybiBtX3NldENvb2tpZTI7Cit9CisKK3ZvaWQg
V2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJTZXRDb29raWUyKGNvbnN0IFN0cmluZyYgc2V0
Q29va2llMikKK3sKKyAgICBtX3NldENvb2tpZTIgPSBzZXRDb29raWUyOworfQorCitLVVJMIFdl
YlNvY2tldEhhbmRzaGFrZTo6aHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNv
bnN0Cit7CisgICAgS1VSTCB1cmwgPSBtX3VybC5jb3B5KCk7CisgICAgdXJsLnNldFByb3RvY29s
KG1fc2VjdXJlID8gImh0dHBzIiA6ICJodHRwIik7CisgICAgcmV0dXJuIHVybDsKK30KKworY29u
c3QgY2hhciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciog
c3RhcnQsIGNvbnN0IGNoYXIqIGVuZCwgSFRUUEhlYWRlck1hcCogaGVhZGVycykKK3sKKyAgICBW
ZWN0b3I8Y2hhcj4gbmFtZTsKKyAgICBWZWN0b3I8Y2hhcj4gdmFsdWU7CisgICAgZm9yIChjb25z
dCBjaGFyKiBwID0gc3RhcnQ7IHAgPCBlbmQ7IHArKykgeworICAgICAgICBuYW1lLmNsZWFyKCk7
CisgICAgICAgIHZhbHVlLmNsZWFyKCk7CisKKyAgICAgICAgZm9yICg7IHAgPCBlbmQ7IHArKykg
eworICAgICAgICAgICAgc3dpdGNoICgqcCkgeworICAgICAgICAgICAgY2FzZSAnXHInOgorICAg
ICAgICAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAocCArIDEgPCBlbmQgJiYgKihwICsgMSkgPT0gJ1xuJykKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBwICsgMjsKKyAgICAgICAgICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDUiBk
b2Vzbid0IGZvbGxvdyBMRiBwPSVwIGVuZD0lcCIsIHAsIGVuZCk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBMT0coTmV0
d29yaywgIlVuZXhwZWN0ZWQgQ1IgaW4gbmFtZSIpOworICAgICAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICAgICAgY2FzZSAnXG4nOgorICAgICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAi
VW5leHBlY3RlZCBMRiBpbiBuYW1lIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgICAgICBjYXNlICc6JzoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgaWYgKCpwID49IDB4NDEgJiYgKnAgPD0gMHg1YSkKKyAg
ICAgICAgICAgICAgICAgICAgbmFtZS5hcHBlbmQoKnAgKyAweDIwKTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5hbWUuYXBwZW5kKCpwKTsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgqcCA9PSAnOicp
IHsKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3IgKDsgcCA8IGVuZCAmJiAqcCA9PSAweDIw
OyBwKyspIHsgfQorCisgICAgICAgIGZvciAoOyBwIDwgZW5kOyBwKyspIHsKKyAgICAgICAgICAg
IHN3aXRjaCAoKnApIHsKKyAgICAgICAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgJ1xuJzoKKyAgICAgICAgICAgICAgICBMT0coTmV0d29y
aywgIlVuZXhwZWN0ZWQgTEYgaW4gdmFsdWUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdmFsdWUuYXBwZW5kKCpwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgqcCA9PSAnXHInKSB7CisgICAgICAgICAg
ICAgICAgKytwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGlmIChwID49IGVuZCB8fCAqcCAhPSAnXG4nKSB7CisgICAgICAgICAgICBM
T0coTmV0d29yaywgIkNSIGRvZXNuJ3QgZm9sbG93IExGIGFmdGVyIHZhbHVlIHA9JXAgZW5kPSVw
IiwgcCwgZW5kKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIEF0
b21pY1N0cmluZyBuYW1lU3RyKFN0cmluZzo6ZnJvbVVURjgobmFtZS5kYXRhKCksIG5hbWUuc2l6
ZSgpKSk7CisgICAgICAgIFN0cmluZyB2YWx1ZVN0ciA9IFN0cmluZzo6ZnJvbVVURjgodmFsdWUu
ZGF0YSgpLCB2YWx1ZS5zaXplKCkpOworICAgICAgICBMT0coTmV0d29yaywgIm5hbWU9JXMgdmFs
dWU9JXMiLCBuYW1lU3RyLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHZhbHVlU3RyLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICBoZWFkZXJzLT5hZGQobmFtZVN0ciwgdmFsdWVTdHIpOworICAgIH0K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBXZWJT
b2NrZXRIYW5kc2hha2U6OnByb2Nlc3NIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRl
cnMpCit7CisgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRl
cnMuYmVnaW4oKTsgaXQgIT0gaGVhZGVycy5lbmQoKTsgKytpdCkgeworICAgICAgICBzd2l0Y2gg
KG1fbW9kZSkgeworICAgICAgICBjYXNlIE5vcm1hbDoKKyAgICAgICAgICAgIGlmIChpdC0+Zmly
c3QgPT0gIndlYnNvY2tldC1vcmlnaW4iKQorICAgICAgICAgICAgICAgIG1fd3NPcmlnaW4gPSBp
dC0+c2Vjb25kOworICAgICAgICAgICAgZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJ3ZWJzb2NrZXQt
bG9jYXRpb24iKQorICAgICAgICAgICAgICAgIG1fd3NMb2NhdGlvbiA9IGl0LT5zZWNvbmQ7Cisg
ICAgICAgICAgICBlbHNlIGlmIChpdC0+Zmlyc3QgPT0gIndlYnNvY2tldC1wcm90b2NvbCIpCisg
ICAgICAgICAgICAgICAgbV93c1Byb3RvY29sID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGl0LT5maXJzdCA9PSAic2V0LWNvb2tpZSIpCisgICAgICAgICAgICAgICAgbV9zZXRD
b29raWUgPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJz
ZXQtY29va2llMiIpCisgICAgICAgICAgICAgICAgbV9zZXRDb29raWUyID0gaXQtPnNlY29uZDsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjYXNlIEluY29tcGxldGU6CisgICAgICAg
IGNhc2UgRmFpbGVkOgorICAgICAgICBjYXNlIENvbm5lY3RlZDoKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6
OmNoZWNrUmVzcG9uc2VIZWFkZXJzKCkKK3sKKyAgICBBU1NFUlQobV9tb2RlID09IE5vcm1hbCk7
CisgICAgbV9tb2RlID0gRmFpbGVkOworICAgIGlmIChtX3dzT3JpZ2luLmlzTnVsbCgpIHx8IG1f
d3NMb2NhdGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNsaWVudE9y
aWdpbigpICE9IG1fd3NPcmlnaW4pIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJNaXNtYXRjaCBv
cmlnaW46ICVzICE9ICVzIiwgY2xpZW50T3JpZ2luKCkudXRmOCgpLmRhdGEoKSwgbV93c09yaWdp
bi51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoY2xpZW50
TG9jYXRpb24oKSAhPSBtX3dzTG9jYXRpb24pIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJNaXNt
YXRjaCBsb2NhdGlvbjogJXMgIT0gJXMiLCBjbGllbnRMb2NhdGlvbigpLnV0ZjgoKS5kYXRhKCks
IG1fd3NMb2NhdGlvbi51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpZiAoIW1fY2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpICYmIG1fY2xpZW50UHJvdG9jb2wgIT0g
bV93c1Byb3RvY29sKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiTWlzbWF0Y2ggcHJvdG9jb2w6
ICVzICE9ICVzIiwgbV9jbGllbnRQcm90b2NvbC51dGY4KCkuZGF0YSgpLCBtX3dzUHJvdG9jb2wu
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9tb2RlID0gQ29u
bmVjdGVkOworICAgIHJldHVybjsKK30KKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVkYmU2OAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaApA
QCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldEhhbmRzaGFrZV9oCisjZGVmaW5lIFdl
YlNvY2tldEhhbmRzaGFrZV9oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKKyAgICBjbGFzcyBIVFRQSGVhZGVyTWFwOworCisgICAgY2xhc3MgV2Vi
U29ja2V0SGFuZHNoYWtlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIGVudW0gTW9kZSB7CisgICAgICAgICAgICBJbmNvbXBsZXRlLCBOb3JtYWwsIEZhaWxlZCwg
Q29ubmVjdGVkCisgICAgICAgIH07CisgICAgICAgIFdlYlNvY2tldEhhbmRzaGFrZShjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwor
ICAgICAgICB+V2ViU29ja2V0SGFuZHNoYWtlKCk7CisKKyAgICAgICAgY29uc3QgS1VSTCYgdXJs
KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0VVJMKGNvbnN0IEtVUkwmKTsKKyAgICAgICAgY29u
c3QgU3RyaW5nIGhvc3QoKSBjb25zdDsKKworICAgICAgICBjb25zdCBTdHJpbmcmIGNsaWVudFBy
b3RvY29sKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0Q2xpZW50UHJvdG9jb2woY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCk7CisKKyAgICAgICAgYm9vbCBzZWN1cmUoKSBjb25zdDsKKyAgICAgICAg
dm9pZCBzZXRTZWN1cmUoYm9vbCBzZWN1cmUpOworCisgICAgICAgIFN0cmluZyBjbGllbnRPcmln
aW4oKSBjb25zdDsKKyAgICAgICAgU3RyaW5nIGNsaWVudExvY2F0aW9uKCkgY29uc3Q7CisKKyAg
ICAgICAgQ1N0cmluZyBjbGllbnRIYW5kc2hha2VNZXNzYWdlKCkgY29uc3Q7CisKKyAgICAgICAg
dm9pZCByZXNldCgpOworCisgICAgICAgIGludCByZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNo
YXIqIGhlYWRlciwgc2l6ZV90IGxlbik7CisgICAgICAgIE1vZGUgbW9kZSgpIGNvbnN0OworCisg
ICAgICAgIGNvbnN0IFN0cmluZyYgc2VydmVyV2ViU29ja2V0T3JpZ2luKCkgY29uc3Q7CisgICAg
ICAgIHZvaWQgc2V0U2VydmVyV2ViU29ja2V0T3JpZ2luKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0
T3JpZ2luKTsKKworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZlcldlYlNvY2tldExvY2F0aW9u
KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2VydmVyV2ViU29ja2V0TG9jYXRpb24oY29uc3Qg
U3RyaW5nJiB3ZWJTb2NrZXRMb2NhdGlvbik7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2
ZXJXZWJTb2NrZXRQcm90b2NvbCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNlcnZlcldlYlNv
Y2tldFByb3RvY29sKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0UHJvdG9jb2wpOworCisgICAgICAg
IGNvbnN0IFN0cmluZyYgc2VydmVyU2V0Q29va2llKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0
U2VydmVyU2V0Q29va2llKGNvbnN0IFN0cmluZyYgc2V0Q29va2llKTsKKyAgICAgICAgY29uc3Qg
U3RyaW5nJiBzZXJ2ZXJTZXRDb29raWUyKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2VydmVy
U2V0Q29va2llMihjb25zdCBTdHJpbmcmIHNldENvb2tpZTIpOworCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgS1VSTCBodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3Q7CisK
KyAgICAgICAgLy8gUmVhZHMgYWxsIGhlYWRlcnMgZXhjZXB0IGZvciB0aGUgdHdvIHByZWRlZmlu
ZWQgb25lcy4KKyAgICAgICAgY29uc3QgY2hhciogcmVhZEhUVFBIZWFkZXJzKGNvbnN0IGNoYXIq
IHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQsIEhUVFBIZWFkZXJNYXAqIGhlYWRlcnMpOworICAgICAg
ICBib29sIHByb2Nlc3NIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpOworICAg
ICAgICB2b2lkIGNoZWNrUmVzcG9uc2VIZWFkZXJzKCk7CisKKyAgICAgICAgS1VSTCBtX3VybDsK
KyAgICAgICAgU3RyaW5nIG1fY2xpZW50UHJvdG9jb2w7CisgICAgICAgIGJvb2wgbV9zZWN1cmU7
CisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKKworICAgICAgICBN
b2RlIG1fbW9kZTsKKworICAgICAgICBTdHJpbmcgbV93c09yaWdpbjsKKyAgICAgICAgU3RyaW5n
IG1fd3NMb2NhdGlvbjsKKyAgICAgICAgU3RyaW5nIG1fd3NQcm90b2NvbDsKKyAgICAgICAgU3Ry
aW5nIG1fc2V0Q29va2llOworICAgICAgICBTdHJpbmcgbV9zZXRDb29raWUyOworICAgIH07CisK
K30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRT
KQorCisjZW5kaWYgIC8vIFdlYlNvY2tldEhhbmRzaGFrZV9o
</data>
<flag name="review"
          id="20292"
          type_id="1"
          status="-"
          setter="ukai"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39338</attachid>
            <date>2009-09-10 03:21:30 -0700</date>
            <delta_ts>2009-09-10 14:24:04 -0700</delta_ts>
            <desc>WebSocket API implementation. (add vcproj build, fix qt and wx build)</desc>
            <filename>bug-28038-20090910192128.patch</filename>
            <type>text/plain</type>
            <size>170011</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA4MjQ1YTdjLi43OTkwMzNkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMDktMDktMTAgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IFdURjo6
dHJ5RmFzdE1hbGxvYyB1c2VkIGluIFdlYlNvY2tldENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODAzOAorCisgICAgICAgICogSmF2YVNj
cmlwdENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlX2RlYnVnLmRlZjoKKwogMjAwOS0wOS0wOSAg
TGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5leHAgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggYTAy
OTcyNC4uY2Q4MGQ3NCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZXhwCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cApAQCAtMjk0LDYgKzI5
NCw3IEBAIF9fWk4zV1RGMTJkZXRhY2hUaHJlYWRFagogX19aTjNXVEYxMmlzTWFpblRocmVhZEV2
CiBfX1pOM1dURjEycmFuZG9tTnVtYmVyRXYKIF9fWk4zV1RGMTNjdXJyZW50VGhyZWFkRXYKK19f
Wk4zV1RGMTN0cnlGYXN0TWFsbG9jRW0KIF9fWk4zV1RGMTN0cnlGYXN0Q2FsbG9jRW1tCiBfX1pO
M1dURjEzdHJ5RmFzdE1hbGxvY0VtCiBfX1pOM1dURjE1VGhyZWFkQ29uZGl0aW9uNHdhaXRFUk5T
XzVNdXRleEUKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCmluZGV4
IDcwMDU5YzguLjQwYjJkOTEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKKysrIGIvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmRlZgpAQCAtMjcwLDYgKzI3MCw3IEBAIEVYUE9SVFMKICAgICA/dG9VSW50MzJAVVN0cmlu
Z0BKU0NAQFFCRUlQQV9OX05AWgogICAgID90b1VJbnQzMlNsb3dDYXNlQEpTQ0BAWUFJTkFBX05A
WgogICAgID90cnlGYXN0Q2FsbG9jQFdURkBAWUE/QVVUcnlNYWxsb2NSZXR1cm5WYWx1ZUAxQElJ
QFoKKyAgICA/dHJ5RmFzdE1hbGxvY0BXVEZAQFlBP0FVVHJ5TWFsbG9jUmV0dXJuVmFsdWVAMUBJ
QFoKICAgICA/dHJ5TG9ja0BNdXRleEBXVEZAQFFBRV9OWFoKICAgICA/dHlwZUBEZWJ1Z2dlckNh
bGxGcmFtZUBKU0NAQFFCRT9BVzRUeXBlQDEyQFhaCiAgICAgP3VubG9ja0BKU0xvY2tASlNDQEBT
QVhXNEpTTG9ja0JlaGF2aW9yQDJAQFoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZV9kZWJ1Zy5kZWYg
Yi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmVfZGVidWcuZGVmCmluZGV4IDgxNjU2MmYuLmJkMDk2YTUgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZV9kZWJ1Zy5kZWYKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlX2RlYnVnLmRlZgpAQCAtMjcwLDYg
KzI3MCw3IEBAIEVYUE9SVFMKICAgICA/dG9VSW50MzJAVVN0cmluZ0BKU0NAQFFCRUlQQV9OX05A
WgogICAgID90b1VJbnQzMlNsb3dDYXNlQEpTQ0BAWUFJTkFBX05AWgogICAgID90cnlGYXN0Q2Fs
bG9jQFdURkBAWUE/QVVUcnlNYWxsb2NSZXR1cm5WYWx1ZUAxQElJQFoKKyAgICA/dHJ5RmFzdE1h
bGxvY0BXVEZAQFlBP0FVVHJ5TWFsbG9jUmV0dXJuVmFsdWVAMUBJQFoKICAgICA/dHJ5TG9ja0BN
dXRleEBXVEZAQFFBRV9OWFoKICAgICA/dHlwZUBEZWJ1Z2dlckNhbGxGcmFtZUBKU0NAQFFCRT9B
VzRUeXBlQDEyQFhaCiAgICAgP3VubG9ja0BKU0xvY2tASlNDQEBTQVhXNEpTTG9ja0JlaGF2aW9y
QDJAQFoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBhNWRhYmE3Li4xNzI3NGNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MDktMDktMTAgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdlYlNvY2tldCBBUEku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODAzOAor
ICAgICAgICAKKyAgICAgICAgV2ViU29ja2V0IGNvbnN0cnVjdG9yIGlzIGF2YWlsYWJsZSBpbiB3
aW5kb3cgb2JqZWN0LgorCisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0
aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFu
Y2UtMi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRh
bmNlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMt
ZXhwZWN0ZWQudHh0OgorCiAyMDA5LTA5LTA4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4
dAppbmRleCA3ZjU4ZDhjLi5lODdkMDM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTE1MTUs
NiArMTUxNSwxMyBAQCB3aW5kb3cuV2ViS2l0UG9pbnQgW29iamVjdCBXZWJLaXRQb2ludENvbnN0
cnVjdG9yXQogd2luZG93LldlYktpdFBvaW50LnByb3RvdHlwZSBbb2JqZWN0IFdlYktpdFBvaW50
UHJvdG90eXBlXQogd2luZG93LldlYktpdFRyYW5zaXRpb25FdmVudCBbb2JqZWN0IFdlYktpdFRy
YW5zaXRpb25FdmVudENvbnN0cnVjdG9yXQogd2luZG93LldlYktpdFRyYW5zaXRpb25FdmVudC5w
cm90b3R5cGUgW3ByaW50ZWQgYWJvdmUgYXMgd2luZG93LkV2ZW50LnByb3RvdHlwZV0KK3dpbmRv
dy5XZWJTb2NrZXQgW29iamVjdCBXZWJTb2NrZXRDb25zdHJ1Y3Rvcl0KK3dpbmRvdy5XZWJTb2Nr
ZXQucHJvdG90eXBlIFtvYmplY3QgV2ViU29ja2V0UHJvdG90eXBlXQord2luZG93LldlYlNvY2tl
dC5wcm90b3R5cGUuQ0xPU0VEIFtudW1iZXJdCit3aW5kb3cuV2ViU29ja2V0LnByb3RvdHlwZS5D
T05ORUNUSU5HIFtudW1iZXJdCit3aW5kb3cuV2ViU29ja2V0LnByb3RvdHlwZS5PUEVOIFtudW1i
ZXJdCit3aW5kb3cuV2ViU29ja2V0LnByb3RvdHlwZS5jbG9zZSBbZnVuY3Rpb25dCit3aW5kb3cu
V2ViU29ja2V0LnByb3RvdHlwZS5zZW5kIFtmdW5jdGlvbl0KIHdpbmRvdy5XaGVlbEV2ZW50IFtv
YmplY3QgV2hlZWxFdmVudENvbnN0cnVjdG9yXQogd2luZG93LldoZWVsRXZlbnQucHJvdG90eXBl
IFtwcmludGVkIGFib3ZlIGFzIHdpbmRvdy5FdmVudC5wcm90b3R5cGVdCiB3aW5kb3cuV29ya2Vy
IFtvYmplY3QgV29ya2VyQ29uc3RydWN0b3JdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtMi1leHBlY3RlZC50eHQKaW5kZXggMzUwMTcw
Yy4uMDRhZDFhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWlu
aGVyaXRhbmNlLTItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3Rv
dHlwZS1pbmhlcml0YW5jZS0yLWV4cGVjdGVkLnR4dApAQCAtMzYzLDYgKzM2Myw3IEBAIE5ldmVy
IGZvdW5kIFRleHRNZXRyaWNzCiBOZXZlciBmb3VuZCBXZWJLaXRDU1NNYXRyaXgKIE5ldmVyIGZv
dW5kIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlCiBOZXZlciBmb3VuZCBXZWJLaXRQb2ludAorTmV2
ZXIgZm91bmQgV2ViU29ja2V0CiBOZXZlciBmb3VuZCBXb3JrZXIKIE5ldmVyIGZvdW5kIFhNTEh0
dHBSZXF1ZXN0CiBOZXZlciBmb3VuZCBYTUxIdHRwUmVxdWVzdFVwbG9hZApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQK
aW5kZXggYmY0YjcwZC4uZmE1Y2MyZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
cHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0CkBAIC0zMzcsNiArMzM3LDgg
QEAgUEFTUyBpbm5lci5XZWJLaXRQb2ludC5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIuV2Vi
S2l0UG9pbnQuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLldlYktpdFRy
YW5zaXRpb25FdmVudC5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIuV2ViS2l0VHJhbnNpdGlv
bkV2ZW50LmNvbnN0cnVjdG9yLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5XZWJTb2NrZXQu
aXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLldlYlNvY2tldC5jb25zdHJ1Y3Rvci5pc0lubmVy
IGlzIHRydWUKIFBBU1MgaW5uZXIuV2hlZWxFdmVudC5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5u
ZXIuV2hlZWxFdmVudC5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIuV29y
a2VyLmlzSW5uZXIgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9nbG9i
YWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvanMvZ2xvYmFs
LWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKaW5kZXggNzQyMzI1YS4uMGQzMTZhMiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQu
dHh0CkBAIC0xNjMsNiArMTYzLDcgQEAgUEFTUyBXZWJLaXRDU1NNYXRyaXgudG9TdHJpbmcoKSBp
cyAnW29iamVjdCBXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvcl0nCiBQQVNTIFdlYktpdENTU1Ry
YW5zZm9ybVZhbHVlLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWVDb25zdHJ1Y3Rvcl0nCiBQQVNTIFdlYktpdFBvaW50LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3Qg
V2ViS2l0UG9pbnRDb25zdHJ1Y3Rvcl0nCiBQQVNTIFdlYktpdFRyYW5zaXRpb25FdmVudC50b1N0
cmluZygpIGlzICdbb2JqZWN0IFdlYktpdFRyYW5zaXRpb25FdmVudENvbnN0cnVjdG9yXScKK1BB
U1MgV2ViU29ja2V0LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgV2ViU29ja2V0Q29uc3RydWN0b3Jd
JwogUEFTUyBXaGVlbEV2ZW50LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgV2hlZWxFdmVudENvbnN0
cnVjdG9yXScKIFBBU1MgV29ya2VyLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgV29ya2VyQ29uc3Ry
dWN0b3JdJwogUEFTUyBYTUxEb2N1bWVudC50b1N0cmluZygpIGlzICdbb2JqZWN0IERvY3VtZW50
Q29uc3RydWN0b3JdJwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZTVhMTllLi40ZjNmNDUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDA5LTA5LTEw
ICBGdW1pdG9zaGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYlNvY2tldCBBUEkgaW1wbGVtZW50YXRp
b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODAz
OAorICAgICAgICAKKyAgICAgICAgQWRkIGJ1aWxkIHN5c3RlbXMgZm9yIEdOVW1ha2VmaWxlLmFt
LCBXZWJDb3JlLnhjb2RlcHJvaiBhbmQKKyAgICAgICAgV2ViQ29yZS52Y3Byb2ouCisgICAgICAg
IEFkZCB3ZWJzb2NrZXRzIGRpcmVjdG9yeSBhbmQgV2ViU29ja2V0LmlkbCBpbiBxdCBidWlsZCBz
eXN0ZW0uCisgICAgICAgIFRlc3RzIHdpbGwgYmUgbGFuZGVkIG9uY2UgdGhlIGNvZGUgaXMgY29t
cGxldGVkIGFuZCBmdW5jdGlvbmFsLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmVDb21tb24udnNwcm9wczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OndlYlNvY2tldCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pT
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvRXZlbnRUYXJnZXQpOgorICAgICAgICAqIGRvbS9FdmVu
dFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6dG9XZWJTb2NrZXQp
OgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmlkbDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2Vi
Q29yZTo6UHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzazo6UHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFz
ayk6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkUHJvdG9jb2xTdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dDo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRp
c3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRDb25uZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXQ6OmRpc3BhdGNoT3BlbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
ZGlzcGF0Y2hNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaXNw
YXRjaENsb3NlRXZlbnQpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXQ6Oik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNldE9ub3Blbik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Om9ub3Blbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXQ6OnNldE9ubWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6Om9ubWVz
c2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNldE9uY2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0OjpvbmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldDo6dG9XZWJTb2NrZXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpldmVudExp
c3RlbmVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnJlZkV2ZW50VGFyZ2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDogQWRkZWQuCisgICAgICAgICogd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmg6IEFkZGVkLgorCiAyMDA5LTA5LTA4ICBBZGFtIEJhcnRoICA8YWJhcnRo
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
Y3BwCmluZGV4IDliYzYzYmEuLjQwOGRhYmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMuY3BwCisrKyBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC0zNDEsNiArMzQx
LDcgQEAKICNpbmNsdWRlICJKU1dlYktpdENTU01hdHJpeC5jcHAiCiAjaW5jbHVkZSAiSlNXZWJL
aXRQb2ludC5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwIgorI2lu
Y2x1ZGUgIkpTV2ViU29ja2V0LmNwcCIKICNpbmNsdWRlICJKU1doZWVsRXZlbnQuY3BwIgogI2lu
Y2x1ZGUgIkpTV29ya2VyLmNwcCIKICNpbmNsdWRlICJKU1dvcmtlckNvbnRleHQuY3BwIgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
aW5kZXggZGU2MDYxNS4uYjY1YzU3ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zMjUzLDcgKzMyNTMsMTIgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFt
SGFuZGxlQmFzZS5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50LmggXAogCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIFwKLQlXZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmggXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBcCisJV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWxDbGllbnQuaCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAgXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAog
CiB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvY2tldFN0cmVhbUVycm9yLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBi
L1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNGZlMTM5My4uZjk3ZDI1NCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xNjgsNiAr
MTY4LDEwIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TSU5HTEVfVEhSRUFERUQ9MSkgewog
ICAgIH0KIH0KIAorIyBXZWIgU29ja2V0IHN1cHBvcnQuCisjIEZJWE1FOiBFbmFibGUgb25jZSBw
bGF0Zm9ybSBjb2RlIGlzIGxhbmRlZC4KKyMgIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJf
U09DS0VUUz0uKTogREVGSU5FUyArPSBFTkFCTEVfV0VCX1NPQ0tFVFM9MQorCiBERUZJTkVTICs9
IFdURl9VU0VfSkFWQVNDUklQVENPUkVfQklORElOR1M9MSBXVEZfQ0hBTkdFUz0xCiAKICMgVXNl
ZCB0byBjb21wdXRlIGRlZmF1bHRzIGZvciB0aGUgYnVpbGQtd2Via2l0IHNjcmlwdApAQCAtMjI0
LDYgKzIyOCw3IEBAIElOQ0xVREVQQVRIID0gXAogICAgICQkUFdEL3N2Zy9hbmltYXRpb24gXAog
ICAgICQkUFdEL3N2Zy9ncmFwaGljcyBcCiAgICAgJCRQV0Qvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMg
XAorICAgICQkUFdEL3dlYnNvY2tldHMgXAogICAgICQkUFdEL3dtbCBcCiAgICAgJCRQV0Qvd29y
a2VycyBcCiAgICAgJCRQV0QveG1sIFwKQEAgLTYxNSw2ICs2MjAsNyBAQCBJRExfQklORElOR1Mg
Kz0gXAogICAgIHN2Zy9TVkdVbml0VHlwZXMuaWRsIFwKICAgICBzdmcvU1ZHVXNlRWxlbWVudC5p
ZGwgXAogICAgIHN2Zy9TVkdWaWV3RWxlbWVudC5pZGwgXAorICAgIHdlYnNvY2tldHMvV2ViU29j
a2V0LmlkbCBcCiAgICAgd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwgXAogICAgIHdvcmtlcnMv
RGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwgXAogICAgIHdvcmtlcnMvU2hhcmVkV29ya2VyLmlk
bCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAwM2RjY2U5Li4xMzI0
ZmM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY3LDcgKzY3LDcg
QEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQot
CQkJCUNvbW1hbmRMaW5lPSJta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OyYj
eDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsmI3gwRDsmI3gwQTtta2Rp
ciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccnVu
dGltZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcbWFzbSZxdW90OyYjeDBEOyYj
eDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVM
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsm
I3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDIm
Z3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0
Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxjb25maWcuaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW5cKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caW5zcGVjdG9yXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXBwY2FjaGVcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2Zc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGljb25c
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caGlzdG9yeVwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XGNmXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbm90aWZpY2F0aW9uc1wqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjc3NcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNmXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRy
YW5zZm9ybXNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxh
dGZvcm1cZ3JhcGhpY3Ncd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHRcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1xjZlwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdp
blwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxz
cWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
Y2Fpcm9cY2Fpcm9cc3JjXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXGJpbmRpbmdzXGpzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBhZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFn
ZVxhbmltYXRpb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
cGFnZVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYnJp
ZGdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW5c
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHls
ZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxlZGl0aW5nXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbVwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx4bWxcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5cd29ya2Vyc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGlu
Z3MmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZv
cndhcmRpbmdIZWFkZXJzXHBhcnNlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXImcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1
bnRpbWVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVc
Rm9yd2FyZGluZ0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcbWFzbVwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xt
YXNtJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxG
b3J3YXJkaW5nSGVhZGVyc1xwY3JlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBjcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHByb2Zp
bGVyXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3cmVjXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHdy
ZWMmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZv
cndhcmRpbmdIZWFkZXJzXHd0ZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGYmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmlj
b2RlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3Vc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2Fy
ZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcaWN1JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7
bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3Vy
Y2VzXGluc3BlY3RvciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNsdWRlOnhj
b3B5LmV4Y2x1ZGVzICZxdW90OyQoUHJvamVjdERpcilcLi5caW5zcGVjdG9yXGZyb250LWVuZFwq
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xpbnNw
ZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAvcyAvZXhjbHVkZTp4Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4u
XEVuZ2xpc2gubHByb2pcbG9jYWxpemVkU3RyaW5ncy5qcyZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcZW4ubHByb2omcXVvdDsmI3gwRDsmI3gwQTsm
I3gwRDsmI3gwQTtpZiBleGlzdCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQm
cXVvdDsgZGVsICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxidWlsZGZhaWxlZCZxdW90OyYjeDBE
OyYjeDBBOyINCisJCQkJQ29tbWFuZExpbmU9Im1rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05V
TCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBE
OyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZn
dDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyc1xydW50aW1lJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtJnF1
b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtk
aXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3
YXJkaW5nSGVhZGVyc1xwcm9maWxlciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
d3JlYyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7JiN4
MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDIm
Z3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNcd3RmXHVuaWNvZGVcaWN1JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNvbmZpZy5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5
XHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0
b3JcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcHBjYWNo
ZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJj
aGl2ZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJc
YXJjaGl2ZVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxs
b2FkZXJcaWNvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxo
aXN0b3J5XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3Rv
cnlcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caHRtbFwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxub3RpZmljYXRpb25z
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNzc1wqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb25cKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2ZcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcdHJhbnNmb3Jtc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGVcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dFwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx3aW5cKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1wqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3Jr
XGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XG5ldHdvcmtcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXHNxbFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxwbGF0Zm9ybVxjYWlyb1xjYWlyb1xzcmNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5cYmluZGluZ3NcanNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5ccGFnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwYWdlXGFuaW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxwYWdlXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxicmlkZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5ccGx1Z2luc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxw
bHVnaW5zXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxy
ZW5kZXJpbmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccmVu
ZGVyaW5nXHN0eWxlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGVkaXRpbmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cZG9t
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHhtbFwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cc3RvcmFnZVwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx3ZWJzb2NrZXRzXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdvcmtlcnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXGJpbmRpbmdzJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5n
SGVhZGVyc1xydW50aW1lXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXG1hc21cKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNcbWFzbSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccGNyZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVh
ZGVyc1xwcm9maWxlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3JlY1wqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyc1x3cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVy
c1x3dGZcdW5pY29kZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVu
aWNvZGVcaWN1XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYj
eDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2Vi
S2l0LnJlc291cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAvcyAv
ZXhjbHVkZTp4Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4uXGluc3BlY3Rvclxm
cm9udC1lbmRcKiZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNv
dXJjZXNcaW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9q
ZWN0RGlyKVwuLlxFbmdsaXNoLmxwcm9qXGxvY2FsaXplZFN0cmluZ3MuanMmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4
MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7aWYgZXhpc3QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJ1
aWxkZmFpbGVkJnF1b3Q7IGRlbCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQm
cXVvdDsmI3gwRDsmI3gwQTsiDQogCQkJLz4NCiAJCTwvQ29uZmlndXJhdGlvbj4NCiAJCTxDb25m
aWd1cmF0aW9uDQpAQCAtMTIzLDcgKzEyMyw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5h
bWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0ibWtkaXIgMiZndDtO
VUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXGJp
bmRpbmdzJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXImcXVvdDsmI3gw
RDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAy
Jmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzXG1hc20mcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBjcmUmcXVv
dDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyJnF1b3Q7JiN4MEQ7JiN4MEE7
bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyc1x3cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3
dGYmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlJnF1b3Q7JiN4
MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3UmcXVvdDsmI3gwRDsmI3gw
QTsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cY29uZmlnLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxE
ZXJpdmVkU291cmNlc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxhY2Nlc3NpYmlsaXR5XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXGFjY2Vzc2liaWxpdHlcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGluc3BlY3RvclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxsb2FkZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cbG9hZGVyXGFwcGNhY2hlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGxvYWRlclxhcmNoaXZlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGxvYWRlclxpY29uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGhpc3RvcnlcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5caGlzdG9yeVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxodG1sXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXG5vdGlmaWNhdGlvbnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5cY3NzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXGFuaW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxwbGF0Zm9ybVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxwbGF0Zm9ybVxncmFwaGljc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVu
dHlwZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVx0ZXh0XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxuZXR3b3JrXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXG5ldHdvcmtcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cc3FsXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNhaXJvXGNhaXJvXHNyY1wqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xqc1wqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9uXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2Vcd2luXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5bGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5cZWRpdGluZ1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxkb21cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5ceG1sXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2
Z1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxzdG9yYWdlXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdvcmtlcnNcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJz
XGJpbmRpbmdzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hl
YWRlcnNccGFyc2VyJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRp
bmdIZWFkZXJzXG1hc21cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcbWFzbSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccGNyZVwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVyc1xwY3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGlu
Z0hlYWRlcnNcd3JlY1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnNcd3RmJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwu
LlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2Fy
ZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcaWN1XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZx
dW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAvcyAvZXhjbHVkZTp4Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3RE
aXIpXC4uXGluc3BlY3Rvclxmcm9udC1lbmRcKiZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcYmluXFdlYktpdC5yZXNvdXJjZXNcaW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIg
MiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVu
Lmxwcm9qJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhj
bHVkZXMgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxFbmdsaXNoLmxwcm9qXGxvY2FsaXplZFN0cmlu
Z3MuanMmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2Vz
XGVuLmxwcm9qJnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7aWYgZXhpc3QgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGJ1aWxkZmFpbGVkJnF1b3Q7IGRlbCAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcYnVpbGRmYWlsZWQmcXVvdDsmI3gwRDsmI3gwQTsiDQorCQkJCUNvbW1hbmRMaW5lPSJt
a2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDIm
Z3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNcYmluZGluZ3MmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNl
ciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYj
eDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnNcbWFzbSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVM
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnNccGNyZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsm
I3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAy
Jmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNv
ZGUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90
OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
Llxjb25maWcuaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9i
alxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5caW5zcGVjdG9yXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxsb2FkZXJcYXBwY2FjaGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2ZcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGljb25cKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caGlzdG9yeVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5cbm90aWZpY2F0aW9uc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxjc3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9ybXNcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2lu
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdy
YXBoaWNzXG9wZW50eXBlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBsYXRmb3JtXHRleHRcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1xjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdpblwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxzcWxcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2Fpcm9cY2Fpcm9cc3JjXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb25cKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW5cKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZVwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxlZGl0aW5nXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlx4bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5cc3ZnXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHN0b3JhZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cd2Vi
c29ja2V0c1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx3b3Jr
ZXJzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJk
aW5nSGVhZGVyc1xiaW5kaW5nc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccGFy
c2VyXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xy
dW50aW1lJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwu
LlxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXG1hc20mcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHBj
cmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9y
d2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXJcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccHJv
ZmlsZXImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4u
XEZvcndhcmRpbmdIZWFkZXJzXHdyZWNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3JlYyZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3Rm
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3Rm
XHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
XC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdVwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5p
Y29kZVxpY3UmcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcaW5zcGVjdG9yJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7
JChQcm9qZWN0RGlyKVwuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXComcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGluc3BlY3RvciZxdW90OyYjeDBEOyYj
eDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJl
c291cmNlc1xlbi5scHJvaiZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNsdWRl
Onhjb3B5LmV4Y2x1ZGVzICZxdW90OyQoUHJvamVjdERpcilcLi5cRW5nbGlzaC5scHJvalxsb2Nh
bGl6ZWRTdHJpbmdzLmpzJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0
LnJlc291cmNlc1xlbi5scHJvaiZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO2lmIGV4aXN0
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxidWlsZGZhaWxlZCZxdW90OyBkZWwgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGJ1aWxkZmFpbGVkJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KIAkJCS8+DQog
CQk8L0NvbmZpZ3VyYXRpb24+DQogCQk8Q29uZmlndXJhdGlvbg0KQEAgLTE3OCw3ICsxNzgsNyBA
QAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0J
CQkJQ29tbWFuZExpbmU9Im1rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7JiN4
MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBEOyYjeDBBO21rZGly
IDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2Fy
ZGluZ0hlYWRlcnNccGFyc2VyJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xydW50
aW1lJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtJnF1b3Q7JiN4MEQ7JiN4
MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVy
c1xwcm9maWxlciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3JlYyZxdW90OyYj
eDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZn
dDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyc1x3dGZcdW5pY29kZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3Rm
XHVuaWNvZGVcaWN1JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGNvbmZpZy5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XHdpblwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3JcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcHBjYWNoZVwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxjZlwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcaWNvblwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3RvcnlcY2ZcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caHRtbFwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxub3RpZmljYXRpb25zXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNzc1wqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb25cKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2ZcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJh
bnNmb3Jtc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxncmFwaGljc1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1wqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcd2lu
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNx
bFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxj
YWlyb1xjYWlyb1xzcmNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cYmluZGluZ3NcanNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5ccGFnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwYWdl
XGFuaW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxw
YWdlXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxicmlk
Z2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1wq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdpblwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHN0eWxl
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGVkaXRpbmdcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cZG9tXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHhtbFwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5cc3RvcmFnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlx3b3JrZXJzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1wqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5n
cyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9y
d2FyZGluZ0hlYWRlcnNccGFyc2VyXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVu
dGltZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVyc1xydW50aW1lJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXG1h
c20mcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZv
cndhcmRpbmdIZWFkZXJzXHBjcmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccHJvZmls
ZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9y
d2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHdyZWNcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3Jl
YyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9y
d2FyZGluZ0hlYWRlcnNcd3RmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNv
ZGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9y
d2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdVwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3UmcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTtt
a2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJj
ZXNcaW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNv
cHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXCom
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGluc3Bl
Y3RvciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xlbi5scHJvaiZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kIC9zIC9leGNsdWRlOnhjb3B5LmV4Y2x1ZGVzICZxdW90OyQoUHJvamVjdERpcilcLi5c
RW5nbGlzaC5scHJvalxsb2NhbGl6ZWRTdHJpbmdzLmpzJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xlbi5scHJvaiZxdW90OyYjeDBEOyYjeDBBOyYj
eDBEOyYjeDBBO2lmIGV4aXN0ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxidWlsZGZhaWxlZCZx
dW90OyBkZWwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJ1aWxkZmFpbGVkJnF1b3Q7JiN4MEQ7
JiN4MEE7Ig0KKwkJCQlDb21tYW5kTGluZT0ibWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVM
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzJnF1b3Q7JiN4MEQ7
JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0
O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdI
ZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXG1hc20mcXVv
dDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBjcmUmcXVvdDsmI3gwRDsmI3gwQTtta2Rp
ciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXHByb2ZpbGVyJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3
cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGYmcXVvdDsmI3gwRDsmI3gw
QTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
XEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZn
dDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyc1x3dGZcdW5pY29kZVxpY3UmcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cY29uZmlnLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291cmNlc1wqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlc
d2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGluc3BlY3Rv
clwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNhY2hl
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNo
aXZlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxh
cmNoaXZlXGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxv
YWRlclxpY29uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhp
c3RvcnlcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caGlzdG9y
eVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxodG1sXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXG5vdGlmaWNhdGlvbnNc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cY3NzXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGFuaW1hdGlvblwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxjZlwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGlj
c1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxn
cmFwaGljc1x0cmFuc2Zvcm1zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZVwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0XCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpblwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtc
Y2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
bmV0d29ya1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cc3FsXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXGNhaXJvXGNhaXJvXHNyY1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxiaW5kaW5nc1xqc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxwYWdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBhZ2VcYW5pbWF0aW9uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBhZ2Vcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGJyaWRnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
LlxwbHVnaW5zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
dWdpbnNcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJl
bmRlcmluZ1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxyZW5k
ZXJpbmdcc3R5bGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
ZWRpdGluZ1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxkb21c
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ceG1sXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1wqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxzdG9yYWdlXCouaCZxdW90OyAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kg
L2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdlYnNvY2tldHNcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5cd29ya2Vyc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3NcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnNcYmluZGluZ3MmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXImcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdI
ZWFkZXJzXHJ1bnRpbWVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcbWFzbVwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVyc1xtYXNtJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBjcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFk
ZXJzXHByb2ZpbGVyXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3cmVjXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdI
ZWFkZXJzXHdyZWMmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0ZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGYmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJz
XHd0Zlx1bmljb2RlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5p
Y29kZVxpY3VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcaWN1JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4
MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJL
aXQucmVzb3VyY2VzXGluc3BlY3RvciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kIC9zIC9l
eGNsdWRlOnhjb3B5LmV4Y2x1ZGVzICZxdW90OyQoUHJvamVjdERpcilcLi5caW5zcGVjdG9yXGZy
b250LWVuZFwqJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291
cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcZW4ubHByb2omcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAvcyAvZXhjbHVkZTp4Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2pl
Y3REaXIpXC4uXEVuZ2xpc2gubHByb2pcbG9jYWxpemVkU3RyaW5ncy5qcyZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcZW4ubHByb2omcXVvdDsmI3gw
RDsmI3gwQTsmI3gwRDsmI3gwQTtpZiBleGlzdCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVp
bGRmYWlsZWQmcXVvdDsgZGVsICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxidWlsZGZhaWxlZCZx
dW90OyYjeDBEOyYjeDBBOyINCiAJCQkvPg0KIAkJPC9Db25maWd1cmF0aW9uPg0KIAkJPENvbmZp
Z3VyYXRpb24NCkBAIC0yMzMsNyArMjMzLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFt
ZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJta2RpciAyJmd0O05V
TCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmlu
ZGluZ3MmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBE
OyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDIm
Z3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnNcbWFzbSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90
OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTtt
a2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzXHdyZWMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0
ZiZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gw
RDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBB
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjb25maWcuaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERl
cml2ZWRTb3VyY2VzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGFjY2Vzc2liaWxpdHlcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cYWNjZXNzaWJpbGl0eVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5caW5zcGVjdG9yXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGxvYWRlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVc
V2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpciku
Llxsb2FkZXJcYXBwY2FjaGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpLi5cbG9hZGVyXGFyY2hpdmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5cbG9hZGVyXGljb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5caGlzdG9yeVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJv
amVjdERpcikuLlxoaXN0b3J5XGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGh0bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cbm90aWZpY2F0aW9uc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxjc3NcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxh
dGZvcm1cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cYW5pbWF0aW9uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXGdyYXBoaWNzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9ybXNcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50
eXBlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XHRleHRcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXG5ldHdvcmtcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cbmV0d29ya1xjdXJsXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxjYWlyb1xjYWlyb1xzcmNcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYmluZGluZ3NcanNcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXGFuaW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHN0eWxlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGVkaXRpbmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5cZG9tXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHhtbFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxz
dmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cc3RvcmFnZVwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx3b3JrZXJzXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVy
c1xiaW5kaW5nc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdI
ZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJk
aW5nSGVhZGVyc1xtYXNtXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXG1hc20mcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHBjcmVcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hl
YWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRp
bmdIZWFkZXJzXHdyZWNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3JlYyZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXHd0ZiZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilc
Li5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndh
cmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3Um
cXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcaW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9qZWN0
RGlyKVwuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXComcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGluc3BlY3RvciZxdW90OyYjeDBEOyYjeDBBO21rZGly
IDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNlc1xl
bi5scHJvaiZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNsdWRlOnhjb3B5LmV4
Y2x1ZGVzICZxdW90OyQoUHJvamVjdERpcilcLi5cRW5nbGlzaC5scHJvalxsb2NhbGl6ZWRTdHJp
bmdzLmpzJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJlc291cmNl
c1xlbi5scHJvaiZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO2lmIGV4aXN0ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxidWlsZGZhaWxlZCZxdW90OyBkZWwgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGJ1aWxkZmFpbGVkJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KKwkJCQlDb21tYW5kTGluZT0i
bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAy
Jmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzXGJpbmRpbmdzJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJz
ZXImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsm
I3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXG1hc20mcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05V
TCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXHBjcmUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHByb2ZpbGVyJnF1b3Q7
JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIg
MiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1x3dGYmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmlj
b2RlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZVxpY3UmcXVv
dDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cY29uZmlnLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxv
YmpcV2ViQ29yZVxEZXJpdmVkU291cmNlc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGluc3BlY3RvclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXGNmXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxpY29uXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3RvcnlcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5caGlzdG9yeVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxodG1sXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7
JChQcm9qZWN0RGlyKS4uXG5vdGlmaWNhdGlvbnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVv
dDskKFByb2plY3REaXIpLi5cY3NzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXGFuaW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxjZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdp
blwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxn
cmFwaGljc1xvcGVudHlwZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVx0ZXh0XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcY3VybFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdpblwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxzcWxcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2Fpcm9cY2Fpcm9cc3Jj
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpz
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb25cKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW5cKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW5cKi5oJnF1b3Q7ICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29w
eSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZVwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxlZGl0aW5nXCouaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcikuLlx4bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5cc3ZnXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXHN0b3JhZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5c
d2Vic29ja2V0c1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx3
b3JrZXJzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3
YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNc
cGFyc2VyXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
XEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZx
dW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVy
c1xydW50aW1lJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXG1hc20mcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJz
XHBjcmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVc
Rm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXJcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
cHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
XC4uXEZvcndhcmRpbmdIZWFkZXJzXHdyZWNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3JlYyZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNc
d3RmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
d3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3RE
aXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdVwqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZc
dW5pY29kZVxpY3UmcXVvdDsmI3gwRDsmI3gwQTsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNcaW5zcGVjdG9yJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXComcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGluc3BlY3RvciZxdW90OyYjeDBE
OyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0
LnJlc291cmNlc1xlbi5scHJvaiZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kIC9zIC9leGNs
dWRlOnhjb3B5LmV4Y2x1ZGVzICZxdW90OyQoUHJvamVjdERpcilcLi5cRW5nbGlzaC5scHJvalxs
b2NhbGl6ZWRTdHJpbmdzLmpzJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2Vi
S2l0LnJlc291cmNlc1xlbi5scHJvaiZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBBO2lmIGV4
aXN0ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxidWlsZGZhaWxlZCZxdW90OyBkZWwgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGJ1aWxkZmFpbGVkJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KIAkJCS8+
DQogCQk8L0NvbmZpZ3VyYXRpb24+DQogCQk8Q29uZmlndXJhdGlvbg0KQEAgLTI4OSw3ICsyODks
NyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIN
Ci0JCQkJQ29tbWFuZExpbmU9Im1rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7
JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5ncyZxdW90OyYjeDBEOyYjeDBBO21r
ZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9y
d2FyZGluZ0hlYWRlcnNccGFyc2VyJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xy
dW50aW1lJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xtYXNtJnF1b3Q7JiN4MEQ7
JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtO
VUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVyc1xwcm9maWxlciZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3JlYyZxdW90
OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNs
dWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIg
MiZndDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVyc1x3dGZcdW5pY29kZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNc
d3RmXHVuaWNvZGVcaWN1JnF1b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNvbmZpZy5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XHdpblwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3JcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXCouaCZxdW90OyAm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcHBjYWNoZVwqLmgmcXVv
dDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVwqLmgm
cXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBE
OyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxj
ZlwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcaWNv
blwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5XCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4
MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3RvcnlcY2ZcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caHRtbFwqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxub3RpZmljYXRpb25zXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNzc1wqLmgmcXVvdDsgJnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5
IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb25cKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2ZcKi5oJnF1b3Q7ICZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4
Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
dHJhbnNmb3Jtc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVxncmFwaGljc1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGVcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dFwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1wqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXGN1cmxcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29y
a1x3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cc3FsXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXGNhaXJvXGNhaXJvXHNyY1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxiaW5kaW5nc1xqc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwYWdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBhZ2VcYW5pbWF0aW9uXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBhZ2Vcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGJyaWRnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxwbHVn
aW5zXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNc
d2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmlu
Z1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdc
c3R5bGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGlu
Z1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxkb21cKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ceG1sXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcikuLlxzdG9yYWdlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHdvcmtlcnNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDsk
KFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXGJp
bmRpbmdzJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwu
LlxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVy
c1xydW50aW1lXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXG1hc21cKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRl
cnNcbWFzbSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilc
Li5cRm9yd2FyZGluZ0hlYWRlcnNccGNyZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xw
cm9maWxlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9k
ICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3JlY1wqLmgmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVy
c1x3cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwu
LlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZc
dW5pY29kZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29y
ZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95
IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGVc
aWN1XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYj
eDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW5cV2ViS2l0LnJl
c291cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAvcyAvZXhjbHVk
ZTp4Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4uXGluc3BlY3Rvclxmcm9udC1l
bmRcKiZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktpdC5yZXNvdXJjZXNc
aW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4MEQ7JiN4MEE7
eGNvcHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7JChQcm9qZWN0RGly
KVwuLlxFbmdsaXNoLmxwcm9qXGxvY2FsaXplZFN0cmluZ3MuanMmcXVvdDsgJnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7JiN4MEQ7JiN4
MEE7JiN4MEQ7JiN4MEE7aWYgZXhpc3QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJ1aWxkZmFp
bGVkJnF1b3Q7IGRlbCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRmYWlsZWQmcXVvdDsm
I3gwRDsmI3gwQTsiDQorCQkJCUNvbW1hbmRMaW5lPSJta2RpciAyJmd0O05VTCAmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZn
dDtOVUwgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVycyZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MmcXVvdDsm
I3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHBhcnNlciZxdW90OyYjeDBEOyYjeDBBO21rZGly
IDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2Fy
ZGluZ0hlYWRlcnNccnVudGltZSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcbWFz
bSZxdW90OyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGNyZSZxdW90OyYjeDBEOyYjeDBB
O21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVc
Rm9yd2FyZGluZ0hlYWRlcnNccHJvZmlsZXImcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05V
TCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzXHdyZWMmcXVvdDsmI3gwRDsmI3gwQTtta2RpciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0ZiZxdW90OyYjeDBE
OyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdl
YkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmXHVuaWNvZGUmcXVvdDsmI3gwRDsmI3gwQTtta2Rp
ciAyJmd0O05VTCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYjeDBBOyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjb25maWcuaCZxdW90OyAmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkg
L3kgL2QgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2Vz
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxp
dHlcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJp
bGl0eVx3aW5cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5caW5z
cGVjdG9yXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRl
clwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90
OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXBw
Y2FjaGVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUm
cXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVy
XGFyY2hpdmVcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNv
cmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbG9h
ZGVyXGFyY2hpdmVcY2ZcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cbG9hZGVyXGljb25cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5caGlzdG9yeVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2Vi
Q29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxo
aXN0b3J5XGNmXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0
bWxcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVv
dDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cbm90aWZpY2F0
aW9uc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZx
dW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxjc3NcKi5o
JnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gw
RDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9u
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNm
XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdy
YXBoaWNzXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXGdyYXBoaWNzXHRyYW5zZm9ybXNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2Qg
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlXCouaCZxdW90
OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4
MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHRcKi5oJnF1
b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsm
I3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luXCouaCZx
dW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7
JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtc
Ki5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsm
I3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0
d29ya1xjdXJsXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXG5ldHdvcmtcd2luXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXHNxbFwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxjYWlyb1xjYWlyb1xzcmNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5cYmluZGluZ3NcanNcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAm
cXVvdDskKFByb2plY3REaXIpLi5ccGFnZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxwYWdlXGFuaW1hdGlvblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90
OyQoUHJvamVjdERpcikuLlxwYWdlXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcikuLlxicmlkZ2VcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGx1Z2luc1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxwbHVnaW5zXHdpblwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1
ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERp
cikuLlxyZW5kZXJpbmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5ccmVuZGVyaW5nXHN0eWxlXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5j
bHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGVkaXRpbmdcKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIp
Li5cZG9tXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHhtbFwq
LmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYj
eDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcKi5oJnF1b3Q7
ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpLi5cc3RvcmFnZVwqLmgmcXVvdDsgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZSZxdW90OyYjeDBEOyYjeDBBO3hj
b3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcikuLlx3ZWJzb2NrZXRzXCouaCZxdW90OyAmcXVv
dDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlJnF1b3Q7JiN4MEQ7JiN4MEE7eGNv
cHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdvcmtlcnNcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmUmcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAv
eSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXGJpbmRpbmdzXCou
aCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzXGJpbmRpbmdzJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1xwYXJzZXJcKi5oJnF1b3Q7ICZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNccGFyc2Vy
JnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3
YXJkaW5nSGVhZGVyc1xydW50aW1lXCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWUmcXVvdDsmI3gwRDsmI3gw
QTt4Y29weSAveSAvZCAmcXVvdDskKFByb2plY3REaXIpXC4uXEZvcndhcmRpbmdIZWFkZXJzXG1h
c21cKi5oJnF1b3Q7ICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9y
d2FyZGluZ0hlYWRlcnNcbWFzbSZxdW90OyYjeDBEOyYjeDBBO3hjb3B5IC95IC9kICZxdW90OyQo
UHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNccGNyZVwqLmgmcXVvdDsgJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwY3JlJnF1
b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJk
aW5nSGVhZGVyc1xwcm9maWxlclwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwcm9maWxlciZxdW90OyYjeDBEOyYjeDBB
O3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3Jl
Y1wqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3
YXJkaW5nSGVhZGVyc1x3cmVjJnF1b3Q7JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQ
cm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcKi5oJnF1b3Q7ICZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcd3RmJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxGb3J3YXJkaW5n
SGVhZGVyc1x3dGZcdW5pY29kZVwqLmgmcXVvdDsgJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcdW5pY29kZSZxdW90OyYjeDBEOyYj
eDBBO3hjb3B5IC95IC9kICZxdW90OyQoUHJvamVjdERpcilcLi5cRm9yd2FyZGluZ0hlYWRlcnNc
d3RmXHVuaWNvZGVcaWN1XCouaCZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzXHd0Zlx1bmljb2RlXGljdSZxdW90OyYjeDBEOyYj
eDBBOyYjeDBEOyYjeDBBO21rZGlyIDImZ3Q7TlVMICZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxi
aW5cV2ViS2l0LnJlc291cmNlc1xpbnNwZWN0b3ImcXVvdDsmI3gwRDsmI3gwQTt4Y29weSAveSAv
ZCAvcyAvZXhjbHVkZTp4Y29weS5leGNsdWRlcyAmcXVvdDskKFByb2plY3REaXIpXC4uXGluc3Bl
Y3Rvclxmcm9udC1lbmRcKiZxdW90OyAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYmluXFdlYktp
dC5yZXNvdXJjZXNcaW5zcGVjdG9yJnF1b3Q7JiN4MEQ7JiN4MEE7bWtkaXIgMiZndDtOVUwgJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1b3Q7
JiN4MEQ7JiN4MEE7eGNvcHkgL3kgL2QgL3MgL2V4Y2x1ZGU6eGNvcHkuZXhjbHVkZXMgJnF1b3Q7
JChQcm9qZWN0RGlyKVwuLlxFbmdsaXNoLmxwcm9qXGxvY2FsaXplZFN0cmluZ3MuanMmcXVvdDsg
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGJpblxXZWJLaXQucmVzb3VyY2VzXGVuLmxwcm9qJnF1
b3Q7JiN4MEQ7JiN4MEE7JiN4MEQ7JiN4MEE7aWYgZXhpc3QgJnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGJ1aWxkZmFpbGVkJnF1b3Q7IGRlbCAmcXVvdDskKFdlYktpdE91dHB1dERpcilcYnVpbGRm
YWlsZWQmcXVvdDsmI3gwRDsmI3gwQTsiDQogCQkJLz4NCiAJCTwvQ29uZmlndXJhdGlvbj4NCiAJ
PC9Db25maWd1cmF0aW9ucz4NCkBAIC0xNTc0Nyw2ICsxNTc0Nyw1NCBAQAogCQkJCT4NCiAJCQk8
L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilc
b2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNXZWJTb2NrZXQuY3BwIg0KKwkJCQk+DQorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxX
aW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRv
b2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1
Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0K
KwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlO
YW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
DQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQor
CQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJp
dmVkU291cmNlc1xKU1dlYlNvY2tldC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQogCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2
ZWRTb3VyY2VzXEpTV29ya2VyLmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24N
CkBAIC0yMDA2MCw2ICsyMDEwOCwyNiBAQAogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcUmVzb3VyY2VSZXNwb25zZUJhc2UuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0K
KwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXFNvY2tl
dFN0cmVhbUVycm9yQmFzZS5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUN
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xTb2NrZXRTdHJlYW1FcnJv
ckJhc2UuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIg0K
KwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXG5ldHdvcmtcU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oIg0KKwkJCQkJPg0KKwkJ
CQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5l
dHdvcmtcU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4N
CiAJCQkJPEZpbHRlcg0KIAkJCQkJTmFtZT0iY2YiDQogCQkJCQk+DQpAQCAtMjAzNDMsNiArMjA0
MTEsNjYgQEAKIAkJCQkJCQkvPg0KIAkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCQk8
L0ZpbGU+DQorCQkJCQk8RmlsZQ0KKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0
d29ya1xjZlxTb2NrZXRTdHJlYW1FcnJvci5oIg0KKwkJCQkJCT4NCisJCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24NCisJCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2luMzIiDQorCQkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCQk+DQorCQkJCQkJCTxUb29sDQorCQkJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQkvPg0KKwkJCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+DQorCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJCU5hbWU9IlJlbGVhc2Vf
Q2Fpcm98V2luMzIiDQorCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCQk+
DQorCQkJCQkJCTxUb29sDQorCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJ
CQkvPg0KKwkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8L0ZpbGU+DQorCQkJCQk8
RmlsZQ0KKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxTb2NrZXRT
dHJlYW1IYW5kbGUuaCINCisJCQkJCQk+DQorCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJ
CQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSINCisJCQkJCQkJPg0KKwkJCQkJCQk8VG9vbA0KKwkJCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCINCisJCQkJCQkJLz4NCisJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0K
KwkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQkJPg0KKwkJCQkJCQk8VG9v
bA0KKwkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJLz4NCisJCQkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJPC9GaWxlPg0KKwkJCQkJPEZpbGUNCisJCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcU29ja2V0U3RyZWFtSGFuZGxlQ0ZO
ZXQuY3BwIg0KKwkJCQkJCT4NCisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQkJTmFt
ZT0iRGVidWdfQ2Fpcm98V2luMzIiDQorCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0K
KwkJCQkJCQk+DQorCQkJCQkJCTxUb29sDQorCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJCQkvPg0KKwkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQorCQkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQorCQkJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCQk+DQorCQkJCQkJCTxUb29sDQorCQkJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQkvPg0KKwkJCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+DQorCQkJCQk8L0ZpbGU+DQogCQkJCTwvRmlsdGVyPg0KIAkJCQk8RmlsdGVy
DQogCQkJCQlOYW1lPSJ3aW4iDQpAQCAtMjkyODMsNiArMjk0MTEsMTggQEAKIAkJCQkJPg0KIAkJ
CQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpz
XEpTV2ViU29ja2V0Q29uc3RydWN0b3IuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJ
CTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTV2ViU29ja2V0Q29u
c3RydWN0b3IuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1dlYlNvY2tldEN1c3RvbS5jcHAiDQorCQkJCQk+
DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGlu
Z3NcanNcSlNXb3JrZXJDb25zdHJ1Y3Rvci5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkBA
IC0zMTgxMiw2ICszMTk1MiwzOCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4N
CisJCTxGaWx0ZXINCisJCQlOYW1lPSJ3ZWJzb2NrZXRzIg0KKwkJCT4NCisJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0LmNwcCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2Vi
U29ja2V0LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldENoYW5uZWwuY3BwIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2Nr
ZXRDaGFubmVsLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCINCisJCQkJPg0K
KwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNc
V2ViU29ja2V0SGFuZHNoYWtlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0SGFuZHNoYWtlLmgiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQk8L0ZpbHRlcj4NCiAJCTxGaWxlDQogCQkJUmVsYXRpdmVQ
YXRoPSIuLlxjb25maWcuaCINCiAJCQk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlQ29tbW9uLnZzcHJvcHMgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmVDb21tb24udnNwcm9wcwppbmRleCA1ZWRlYWQ0Li44NTIxYWJiIDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmVDb21tb24udnNwcm9wcworKysgYi9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmVDb21tb24udnNwcm9wcwpAQCAtNyw3ICs3LDcgQEAKIAk+CiAJ
PFRvb2wKIAkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz0iJnF1b3Q7JChQcm9qZWN0RGlyKS4uXCZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHkmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGFjY2Vzc2liaWxpdHlcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxicmlkZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVxjJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxjc3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGVkaXRp
bmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZyZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccmVuZGVyaW5nXHN0eWxlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxi
aW5kaW5nc1xqcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZG9tJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxkb21cZGVmYXVsdCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caGlz
dG9yeSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caHRtbCZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5caHRtbFxjYW52YXMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGluc3BlY3Rv
ciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxsb2FkZXJcYXBwY2FjaGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRl
clxhcmNoaXZlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxjZiZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGljb24mcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXG5vdGlmaWNhdGlvbnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2Um
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9uJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxwYWdlXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZv
cm0mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGFuaW1hdGlvbiZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbW9jayZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cc3FsJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx3
aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmsmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcd2luJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVxjZiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZv
cm1cZ3JhcGhpY3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNz
XG9wZW50eXBlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x0
cmFuc2Zvcm1zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0JnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW4mcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHhtbCZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcb2JqXFdl
YkNvcmVcRGVyaXZlZFNvdXJjZXMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnMm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcd2luJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxzdmdcZ3JhcGhpY3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1xn
cmFwaGljc1xmaWx0ZXJzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmcmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHdtbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3RvcmFn
ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cd29ya2VycyZxdW90OzsmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXEphdmFTY3Jp
cHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXHByaXZhdGVcSmF2
YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXEZvcndhcmRpbmdIZWFkZXJz
JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQo
V2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRM
aWJyYXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDsk
KFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxpY3UmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJy
YXJpZXNEaXIpXGluY2x1ZGVcaWNvbnYmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIp
XGluY2x1ZGVccHRocmVhZHMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1
ZGVcc3FsaXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXEphdmFT
Y3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXENvcmVG
b3VuZGF0aW9uXE9TWENvbXBhdGliaWxpdHlIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGli
cmFyaWVzRGlyKVxJbmNsdWRlXENvcmVGb3VuZGF0aW9uXE9TWENvbXBhdGliaWxpdHlIZWFkZXJz
XEdOVUNvbXBhdGliaWxpdHkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1xhbmltYXRp
b24mcXVvdDsiCisJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoUHJvamVj
dERpcikuLlwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxhY2Nlc3NpYmlsaXR5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3Np
YmlsaXR5XHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxicmlkZ2VcYyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cY3Nz
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxlZGl0aW5nJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxyZW5kZXJpbmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xz
dHlsZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYmluZGluZ3NcanMmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGRvbSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZG9tXGRlZmF1
bHQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3RvcnkmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGh0bWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcY2FudmFzJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0b3ImcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGxvYWRlciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFwcGNhY2hl
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZSZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2YmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXGxvYWRlclxpY29uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxub3RpZmljYXRpb25z
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxwYWdlXGFuaW1hdGlvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW4m
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXHNxbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cY2YmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBo
aWNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlw
ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNmb3Jt
cyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dCZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlx4bWwmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERl
cml2ZWRTb3VyY2VzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5cc3ZnXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3Nc
ZmlsdGVycyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlx3bWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2UmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdlYnNvY2tldHMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHdvcmtlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGUmcXVvdDs7
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdl
YktpdE91dHB1dERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVk
ZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZh
dGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1
ZGVcaWN1JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXGljb252JnF1
b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZx
dW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHNxbGl0ZSZxdW90OzsmcXVvdDskKFdl
YktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdl
YktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5
SGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3JlRm91
bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVhZGVyc1xHTlVDb21wYXRpYmlsaXR5JnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxzdmdcYW5pbWF0aW9uJnF1b3Q7IgogCQlQcmVwcm9jZXNzb3JE
ZWZpbml0aW9ucz0iX19XSU4zMl9fO1dFQkNPUkVfQ09OVEVYVF9NRU5VUztFTkFCTEVfQ0hBTk5F
TF9NRVNTQUdJTkc7RU5BQkxFX0RBVEFCQVNFO0VOQUJMRV9EQVRBR1JJRDtFTkFCTEVfREFUQUxJ
U1Q7RU5BQkxFX0RPTV9TVE9SQUdFO0VOQUJMRV9FVkVOVFNPVVJDRTtFTkFCTEVfSUNPTkRBVEFC
QVNFO0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7RU5BQkxFX1JVQlk7RU5BQkxFX1NI
QVJFRF9XT1JLRVJTO0VOQUJMRV9TVkc7RU5BQkxFX1NWR19BTklNQVRJT047RU5BQkxFX1NWR19B
U19JTUFHRTtFTkFCTEVfU1ZHX0ZPTlRTO0VOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Q7RU5BQkxF
X1NWR19VU0U7RU5BQkxFX1dFQl9TT0NLRVRTO0VOQUJMRV9XT1JLRVJTO0VOQUJMRV9YUEFUSDtF
TkFCTEVfWFNMVCIKIAkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCiAJCVByZWNvbXBpbGVkSGVh
ZGVyVGhyb3VnaD0iV2ViQ29yZVByZWZpeC5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA0ZWE0NTM4Li5kY2Q5YzE2IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTQ4LDYgKzk0OCw5IEBACiAJCTUxMEQ0QTM2
MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMwMTAzMTY1RUUwMDQ5
RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCAqLzsgfTsKIAkJNTEwRDRBMzcxMDMx
NjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1NCAv
KiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggKi87IH07CiAJCTUxMEQ0QTM4MTAzMTY1RUUwMDQ5
RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLzsgfTsKKwkJNTEwRDRBNEUxMDMxNzdBMjAwNDlFQTU0
IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEwRDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5u
ZWwuY3BwICovOyB9OworCQk1MTBENEE0RjEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hh
bm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
RDRBNDgxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCAqLzsgfTsKKwkJNTEw
RDRBNTAxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTQ5MTAzMTc3QTIw
MDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggKi87IH07CiAJCTUxMTZEOTc3MENG
MTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRh
YmFzZURldGFpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MTFGMjMxNzBEQzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGMjMxMzBE
QzE2MERBMDA0RjAwMzIgLyogTG9jYWxTdG9yYWdlVGFzay5jcHAgKi87IH07CiAJCTUxMUYyMzE4
MERDMTYwREEwMDRGMDAzMiAvKiBMb2NhbFN0b3JhZ2VUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGMjMxNDBEQzE2MERBMDA0RjAwMzIgLyog
TG9jYWxTdG9yYWdlVGFzay5oICovOyB9OwpAQCAtMTAzNCw2ICsxMDM3LDEwIEBACiAJCTUxQUJB
RTFCMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFMUExMDNDMThGRjAwOEM1MjYw
IC8qIFNvY2tldFN0cmVhbUVycm9yLmggKi87IH07CiAJCTUxQUJBRTFFMTAzQzE5MTMwMDhDNTI2
MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFDMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1I
YW5kbGUuaCAqLzsgfTsKIAkJNTFBQkFFMUYxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVh
bUhhbmRsZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUJBRTFEMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDRk5l
dC5jcHAgKi87IH07CisJCTUxQUJBRTJFMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5k
c2hha2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQUJBRTJDMTAzRDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2VyLmNwcCAqLzsg
fTsKKwkJNTFBQkFFMkYxMDNENEY3NTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTJEMTAz
RDRGNzUwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2VyLmggKi87IH07CisJCTUxQUJBRTQ0
MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFNDIxMDQzQUI0QTAwOEM1MjYw
IC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgKi87IH07CisJCTUxQUJBRTQ1MTA0M0FCNEEwMDhD
NTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTQzMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRI
YW5kc2hha2UuaCAqLzsgfTsKIAkJNTFCMjQxN0IwRDkzMUYzRjAwRTgzRjVDIC8qIExlZ2FjeVdl
YkFyY2hpdmVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUIyNDE3QTBEOTMxRjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSAq
LzsgfTsKIAkJNTFCRTM3RTAwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJFMzdERTBEQUVFMDBF
MDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCAqLzsgfTsKIAkJNTFDMEFBMzkwRjJBQTEwQTAwMTY0
OEMyIC8qIENhY2hlZEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjE1Miw2ICs2
MTU5LDkgQEAKIAkJNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRs
ZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0U3Ry
ZWFtSGFuZGxlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEQ0QTMx
MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEw
RDRBNDcxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0Q2hhbm5lbC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEQ0QTQ4MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2Nr
ZXRDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldENo
YW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwRDRBNDkxMDMxNzdBMjAw
NDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTE2RDk3NTBDRjE3N0JEMDBDMkI4NEQgLyogRGF0YWJhc2VEZXRhaWxzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlRGV0YWlscy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFGMjMxMzBEQzE2MERBMDA0RjAwMzIgLyogTG9j
YWxTdG9yYWdlVGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBM
b2NhbFN0b3JhZ2VUYXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjIz
MTQwREMxNjBEQTAwNEYwMDMyIC8qIExvY2FsU3RvcmFnZVRhc2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxTdG9yYWdlVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNjI0NSw2ICs2MjU1LDEwIEBACiAJCTUxQUJBRTFBMTAzQzE4RkYwMDhDNTI2
MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBTb2NrZXRTdHJlYW1FcnJvci5oOyBwYXRoID0gY2YvU29ja2V0U3RyZWFtRXJyb3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBQkFFMUMxMDNDMTkxMzAwOEM1MjYwIC8qIFNv
Y2tldFN0cmVhbUhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTb2Nr
ZXRTdHJlYW1IYW5kbGUuaDsgcGF0aCA9IGNmL1NvY2tldFN0cmVhbUhhbmRsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUFCQUUxRDEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0
U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOyBwYXRoID0gY2YvU29ja2V0U3RyZWFtSGFu
ZGxlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUFCQUUyQzEwM0Q0
Rjc1MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTFBQkFFMkQxMDNENEY3NTAwOEM1MjYwIC8qIFdlYlNvY2tldEhh
bmRzaGFrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0SGFu
ZHNoYWtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUFCQUU0MjEwNDNBQjRB
MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxQUJBRTQzMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hh
a2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjI0MTdBMEQ5MzFGM0YwMEU4M0Y1
QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFCRTM3REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VBcmVhLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxQzBBQTM4MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRGcmFtZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA3MzEsNiArMTA3NDUsMTEgQEAKIAkJNTE4QTM0QkQx
MDI2QzgzMTAwMUI2ODk2IC8qIHdlYnNvY2tldHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTUxQUJBRTQyMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwICovLAorCQkJCTUxQUJBRTQzMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJT
b2NrZXRIYW5kc2hha2UuaCAqLywKKwkJCQk1MTBENEE0NzEwMzE3N0EyMDA0OUVBNTQgLyogV2Vi
U29ja2V0Q2hhbm5lbC5jcHAgKi8sCisJCQkJNTEwRDRBNDgxMDMxNzdBMjAwNDlFQTU0IC8qIFdl
YlNvY2tldENoYW5uZWwuaCAqLywKKwkJCQk1MTBENEE0OTEwMzE3N0EyMDA0OUVBNTQgLyogV2Vi
U29ja2V0Q2hhbm5lbENsaWVudC5oICovLAogCQkJCTUxOEEzNEJFMTAyNkM4MzEwMDFCNjg5NiAv
KiBXZWJTb2NrZXQuY3BwICovLAogCQkJCTUxOEEzNEJGMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJT
b2NrZXQuaCAqLywKIAkJCQk1MThBMzRDMDEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0Lmlk
bCAqLywKQEAgLTE3Nzk2LDYgKzE3ODE1LDkgQEAKIAkJCQk1OUM3N0YyQjEwNTQ1QjNCMDA1MDYx
MDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4QkYx
NTExMDU4MTNCRjAwQTQwQTA3IC8qIFVzZXJTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzhCRjE1QTEwNTgxNDE4MDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXRUeXBlcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTEwRDRBNEYxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5u
ZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMEQ0QTUwMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUFCQUU0NTEwNDNBQjRB
MDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE5OTMx
LDYgKzE5OTUzLDggQEAKIAkJCQk0OUVFRDE0RjEwNTE5NzFBMDAwOTlGQUIgLyogSlNDYW52YXNS
ZW5kZXJpbmdDb250ZXh0M0RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFRUQxNTAx
MDUxOTcxQTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1OUM3N0YyQTEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25T
ZXJ2aWNlTW9jay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTBENEE0RTEwMzE3N0EyMDA0OUVB
NTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUFCQUU0NDEw
NDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAxNzQ2M2RjLi42
NzdlNjJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAt
NjQsNiArNjQsOSBAQAogI2VuZGlmCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIkpTV2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5oIgorI2lmIEVOQUJM
RShXRUJfU09DS0VUUykKKyNpbmNsdWRlICJKU1dlYlNvY2tldENvbnN0cnVjdG9yLmgiCisjZW5k
aWYKICNpbmNsdWRlICJKU1dvcmtlckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNYTUxIdHRw
UmVxdWVzdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0
b3IuaCIKQEAgLTY5OCw2ICs3MDEsMTMgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2hhcmVkV29y
a2VyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9T
T0NLRVRTKQorSlNWYWx1ZSBKU0RPTVdpbmRvdzo6d2ViU29ja2V0KEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNXZWJTb2NrZXRDb25zdHJ1
Y3Rvcj4oZXhlYywgdGhpcyk7Cit9CisjZW5kaWYKKwogLy8gQ3VzdG9tIGZ1bmN0aW9ucwogCiAv
LyBIZWxwZXIgZm9yIHdpbmRvdy5vcGVuKCkgYW5kIHdpbmRvdy5zaG93TW9kYWxEaWFsb2coKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAKaW5kZXggZWQ4MGQ4MC4uMDQyMWQxMCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCkBAIC03OCw2ICs3OCwxMSBAQAog
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1NPQ0tF
VFMpCisjaW5jbHVkZSAiSlNXZWJTb2NrZXQuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXQuaCIKKyNl
bmRpZgorCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
MzksNiArMTQ0LDExIEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEV2ZW50VGFyZ2V0KiB0YXJnCiAgICAgICAgIHJldHVybiB0
b0pTKGV4ZWMsIG5vdGlmaWNhdGlvbik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKKyAgICBpZiAoV2ViU29ja2V0KiB3ZWJTb2NrZXQgPSB0YXJnZXQtPnRvV2ViU29ja2V0KCkp
CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIHdlYlNvY2tldCk7CisjZW5kaWYKKwogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBqc051bGwoKTsKIH0KQEAgLTE4Myw2ICsx
OTMsMTAgQEAgRXZlbnRUYXJnZXQqIHRvRXZlbnRUYXJnZXQoSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ICAgIENPTlZFUlRfVE9fRVZFTlRfVEFSR0VUKE5vdGlmaWNhdGlvbikKICNlbmRpZgogCisjaWYg
RU5BQkxFKFdFQl9TT0NLRVRTKQorICAgIENPTlZFUlRfVE9fRVZFTlRfVEFSR0VUKFdlYlNvY2tl
dCkKKyNlbmRpZgorCiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCAyZjEz
ZGE4Li42NTI2NDRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysr
IGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC04Myw2ICs4MywxMyBAQCBTVkdFbGVt
ZW50SW5zdGFuY2UqIEV2ZW50VGFyZ2V0Ojp0b1NWR0VsZW1lbnRJbnN0YW5jZSgpCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKK1dlYlNvY2tldCogRXZlbnRUYXJnZXQ6OnRv
V2ViU29ja2V0KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiBNZXNzYWdlUG9ydCog
RXZlbnRUYXJnZXQ6OnRvTWVzc2FnZVBvcnQoKQogewogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgK
aW5kZXggNmQzY2I3Yy4uNmJjYzNmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuaAorKysgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC01MSw2ICs1MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAg
IGNsYXNzIFNoYXJlZFdvcmtlcjsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXJDb250ZXh0OworICAg
IGNsYXNzIFdlYlNvY2tldDsKICAgICBjbGFzcyBXb3JrZXI7CiAgICAgY2xhc3MgWE1MSHR0cFJl
cXVlc3Q7CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3RVcGxvYWQ7CkBAIC03NSwxMSArNzYsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFdvcmtlciogdG9Xb3JrZXIo
KTsKICAgICAgICAgdmlydHVhbCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB0b0RlZGljYXRlZFdv
cmtlckNvbnRleHQoKTsKICNlbmRpZgotCiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogICAg
ICAgICB2aXJ0dWFsIFNoYXJlZFdvcmtlciogdG9TaGFyZWRXb3JrZXIoKTsKICAgICAgICAgdmly
dHVhbCBTaGFyZWRXb3JrZXJDb250ZXh0KiB0b1NoYXJlZFdvcmtlckNvbnRleHQoKTsKICNlbmRp
ZgorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKyAgICAgICAgdmlydHVhbCBXZWJTb2NrZXQqIHRv
V2ViU29ja2V0KCk7CisjZW5kaWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgICAg
ICB2aXJ0dWFsIE5vdGlmaWNhdGlvbiogdG9Ob3RpZmljYXRpb24oKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5k
ZXggYjU3ZDFhZC4uZGNkODNkOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5p
ZGwKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTQ5Niw2ICs0OTYsMTAgQEAg
bW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyXSBTaGFy
ZWRXb3JrZXJDb25zdHJ1Y3RvciBTaGFyZWRXb3JrZXI7IC8vIFVzYWJsZSB3aXRoIHRoZSBuZXcg
b3BlcmF0b3IKICNlbmRpZgogCisjaWYgZGVmaW5lZChFTkFCTEVfV0VCX1NPQ0tFVFMpICYmIEVO
QUJMRV9XRUJfU09DS0VUUworICAgICAgICBhdHRyaWJ1dGUgW0pTQ0N1c3RvbUdldHRlcl0gV2Vi
U29ja2V0Q29uc3RydWN0b3IgV2ViU29ja2V0OyAvLyBVc2FibGUgd2l0aCB0aGUgbmV3IG9wZXJh
dG9yCisjZW5kaWYKKwogICAgICAgICBhdHRyaWJ1dGUgUGx1Z2luQ29uc3RydWN0b3IgUGx1Z2lu
OwogICAgICAgICBhdHRyaWJ1dGUgUGx1Z2luQXJyYXlDb25zdHJ1Y3RvciBQbHVnaW5BcnJheTsK
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCA5OTljMWZmLi44ZjkwYjFjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcApAQCAtMzQsMTMgKzM0LDU4IEBACiAKICNpbmNsdWRlICJXZWJT
b2NrZXQuaCIKIAorI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVk
ZSAiRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAi
V2ViU29ja2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrIDogcHVi
bGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworcHVibGljOgorICAgIHR5cGVkZWYg
dm9pZCAoV2ViU29ja2V0OjoqTWV0aG9kKShFdmVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFByb2Nlc3NXZWJTb2NrZXRFdmVudFRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYlNvY2tldD4g
d2ViU29ja2V0LCBNZXRob2QgbWV0aG9kLCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUHJvY2Vzc1dlYlNvY2tldEV2ZW50VGFzayh3
ZWJTb2NrZXQsIG1ldGhvZCwgZXZlbnQpKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHBlcmZv
cm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQorICAgIHsKKyAgICAgICAgKG1fd2ViU29j
a2V0LmdldCgpLT4qbV9tZXRob2QpKG1fZXZlbnQuZ2V0KCkpOworICAgIH0KKworICBwcml2YXRl
OgorICAgIFByb2Nlc3NXZWJTb2NrZXRFdmVudFRhc2soUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IHdl
YlNvY2tldCwgTWV0aG9kIG1ldGhvZCwgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCisgICAgICAg
IDogbV93ZWJTb2NrZXQod2ViU29ja2V0KQorICAgICAgICAsIG1fbWV0aG9kKG1ldGhvZCkKKyAg
ICAgICAgLCBtX2V2ZW50KGV2ZW50KSB7IH0KKworICAgIFJlZlB0cjxXZWJTb2NrZXQ+IG1fd2Vi
U29ja2V0OworICAgIE1ldGhvZCBtX21ldGhvZDsKKyAgICBSZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7
Cit9OworCitzdGF0aWMgYm9vbCBpc1ZhbGlkUHJvdG9jb2xTdHJpbmcoY29uc3QgV2ViQ29yZTo6
U3RyaW5nJiBwcm90b2NvbCkKK3sKKyAgICBpZiAocHJvdG9jb2wuaXNOdWxsKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGlmIChwcm90b2NvbC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHByb3RvY29sLmNoYXJhY3Rl
cnMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3RvY29sLmxlbmd0aCgpOyBpKysp
IHsKKyAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gPCAweDIxIHx8IGNoYXJhY3RlcnNbaV0gPiAw
eDdFKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogV2ViU29ja2V0OjpXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9zdGF0ZShD
T05ORUNUSU5HKQpAQCAtNTksMzkgKzEwNCw0OSBAQCB2b2lkIFdlYlNvY2tldDo6Y29ubmVjdChj
b25zdCBLVVJMJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiB2b2lkIFdlYlNvY2tldDo6Y29u
bmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNvbm5lY3QgdG8gJXMg
cHJvdG9jb2w9JXMiLCB0aGlzLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcHJvdG9jb2wu
dXRmOCgpLmRhdGEoKSk7CiAgICAgbV91cmwgPSB1cmw7CiAgICAgbV9wcm90b2NvbCA9IHByb3Rv
Y29sOwogCiAgICAgaWYgKCFtX3VybC5wcm90b2NvbElzKCJ3cyIpICYmICFtX3VybC5wcm90b2Nv
bElzKCJ3c3MiKSkgeworICAgICAgICBMT0dfRVJST1IoIkVycm9yOiB3cm9uZyB1cmwgZm9yIFdl
YlNvY2tldCAlcyIsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbV9zdGF0
ZSA9IENMT1NFRDsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGlmICghbV9wcm90b2NvbC5pc051bGwoKSAmJiBtX3Byb3RvY29sLmlzRW1wdHko
KSkgeworICAgIGlmICghaXNWYWxpZFByb3RvY29sU3RyaW5nKG1fcHJvdG9jb2wpKSB7CisgICAg
ICAgIExPR19FUlJPUigiRXJyb3I6IHdyb25nIHByb3RvY29sIGZvciBXZWJTb2NrZXQgJXMiLCBt
X3Byb3RvY29sLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOwogICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgLy8gRklY
TUU6IENoZWNrIHByb3RvY29sIGlzIHZhbGlkIGZvcm0uCi0gICAgLy8gRklYTUU6IENvbm5lY3Qg
V2ViU29ja2V0Q2hhbm5lbC4KKyAgICAvLyBGSVhNRTogaWYgbV91cmwucG9ydCgpIGlzIGJsb2Nr
aW5nIHBvcnQsIHJhaXNlIFNFQ1VSSVRZX0VSUi4KKworICAgIG1fY2hhbm5lbCA9IFdlYlNvY2tl
dENoYW5uZWw6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIG1fdXJsLCBt
X3Byb3RvY29sKTsKKyAgICBtX2NoYW5uZWwtPmNvbm5lY3QoKTsKIH0KIAotYm9vbCBXZWJTb2Nr
ZXQ6OnNlbmQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgZWMpCitib29sIFdlYlNvY2tl
dDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAg
IGlmIChtX3N0YXRlICE9IE9QRU4pIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBz
ZW5kICVzIiwgdGhpcywgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAobV9zdGF0ZSA9
PSBDT05ORUNUSU5HKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgLy8gRklYTUU6IHNlbmQgbWVzc2FnZSBvbiBXZWJT
b2NrZXRDaGFubmVsLgotICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBObyBleGNlcHRpb24gaXMg
cmFpc2VkIGlmIHRoZSBjb25uZWN0aW9uIHdhcyBvbmNlIGVzdGFibGlzaGVkIGJ1dCBoYXMgc3Vi
c2VxdWVudGx5IGJlZW4gY2xvc2VkLgorICAgIGlmIChtX3N0YXRlID09IENMT1NFRCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIC8vIEZJWE1FOiBjaGVjayBtZXNzYWdlIGlzIHZhbGlkIHV0
ZjguCisgICAgcmV0dXJuIG1fY2hhbm5lbC0+c2VuZChtZXNzYWdlKTsKIH0KIAogdm9pZCBXZWJT
b2NrZXQ6OmNsb3NlKCkKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBjbG9zZSIs
IHRoaXMpOwogICAgIGlmIChtX3N0YXRlID09IENMT1NFRCkKICAgICAgICAgcmV0dXJuOwogICAg
IG1fc3RhdGUgPSBDTE9TRUQ7Ci0gICAgLy8gRklYTUU6IGNsb3NlIFdlYlNvY2tldENoYW5uZWwu
CisgICAgbV9jaGFubmVsLT5jbG9zZSgpOwogfQogCiBjb25zdCBLVVJMJiBXZWJTb2NrZXQ6OnVy
bCgpIGNvbnN0CkBAIC0xMDYsNyArMTYxLDggQEAgV2ViU29ja2V0OjpTdGF0ZSBXZWJTb2NrZXQ6
OnJlYWR5U3RhdGUoKSBjb25zdAogCiB1bnNpZ25lZCBsb25nIFdlYlNvY2tldDo6YnVmZmVyZWRB
bW91bnQoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBhc2sgcGxhdGZvcm0gY29kZSB0byBnZXQg
YnVmZmVyZWQgYW1vdW50IHRvIGJlIHNlbnQuCisgICAgaWYgKG1fc3RhdGUgPT0gT1BFTikKKyAg
ICAgICAgcmV0dXJuIG1fY2hhbm5lbC0+YnVmZmVyZWRBbW91bnQoKTsKICAgICByZXR1cm4gMDsK
IH0KIApAQCAtMTE1LDU4ICsxNzEsMTIwIEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFdlYlNv
Y2tldDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIEFjdGl2ZURP
TU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogfQogCi12b2lkIFdlYlNvY2tldDo6
YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+LCBib29sKQordm9pZCBXZWJTb2NrZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0
ZW5lciwgYm9vbCkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisgICAgRXZlbnRM
aXN0ZW5lcnNNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2V2ZW50TGlzdGVuZXJzLmZpbmQoZXZlbnRU
eXBlKTsKKyAgICBpZiAoaXRlciA9PSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpKSB7CisgICAgICAg
IExpc3RlbmVyVmVjdG9yIGxpc3RlbmVyczsKKyAgICAgICAgbGlzdGVuZXJzLmFwcGVuZChldmVu
dExpc3RlbmVyKTsKKyAgICAgICAgbV9ldmVudExpc3RlbmVycy5hZGQoZXZlbnRUeXBlLCBsaXN0
ZW5lcnMpOworICAgIH0gZWxzZSB7CisgICAgICAgIExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMg
PSBpdGVyLT5zZWNvbmQ7CisgICAgICAgIGZvciAoTGlzdGVuZXJWZWN0b3I6Oml0ZXJhdG9yIGxp
c3RlbmVySXRlciA9IGxpc3RlbmVycy5iZWdpbigpOyBsaXN0ZW5lckl0ZXIgIT0gbGlzdGVuZXJz
LmVuZCgpOyArK2xpc3RlbmVySXRlcikKKyAgICAgICAgICAgIGlmICgqbGlzdGVuZXJJdGVyID09
IGV2ZW50TGlzdGVuZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxpc3Rl
bmVycy5hcHBlbmQoZXZlbnRMaXN0ZW5lcik7CisgICAgICAgIG1fZXZlbnRMaXN0ZW5lcnMuYWRk
KGV2ZW50VHlwZSwgbGlzdGVuZXJzKTsKKyAgICB9CiB9CiAKLXZvaWQgV2ViU29ja2V0OjpyZW1v
dmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYsIEV2ZW50TGlzdGVuZXIqLCBib29s
KQordm9pZCBXZWJTb2NrZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGV2ZW50TGlzdGVuZXIsIGJvb2wpCiB7Ci0gICAg
Ly8gRklYTUU6IGltcGxlbWVudCB0aGlzLgorICAgIEV2ZW50TGlzdGVuZXJzTWFwOjppdGVyYXRv
ciBpdGVyID0gbV9ldmVudExpc3RlbmVycy5maW5kKGV2ZW50VHlwZSk7CisgICAgaWYgKGl0ZXIg
PT0gbV9ldmVudExpc3RlbmVycy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTGlzdGVu
ZXJWZWN0b3ImIGxpc3RlbmVycyA9IGl0ZXItPnNlY29uZDsKKyAgICBmb3IgKExpc3RlbmVyVmVj
dG9yOjpjb25zdF9pdGVyYXRvciBsaXN0ZW5lckl0ZXIgPSBsaXN0ZW5lcnMuYmVnaW4oKTsgbGlz
dGVuZXJJdGVyICE9IGxpc3RlbmVycy5lbmQoKTsgKytsaXN0ZW5lckl0ZXIpCisgICAgICAgIGlm
ICgqbGlzdGVuZXJJdGVyID09IGV2ZW50TGlzdGVuZXIpIHsKKyAgICAgICAgICAgIGxpc3RlbmVy
cy5yZW1vdmUobGlzdGVuZXJJdGVyIC0gbGlzdGVuZXJzLmJlZ2luKCkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CiB9CiAKLWJvb2wgV2ViU29ja2V0OjpkaXNwYXRjaEV2ZW50KFBh
c3NSZWZQdHI8RXZlbnQ+LCBFeGNlcHRpb25Db2RlJikKK2Jvb2wgV2ViU29ja2V0OjpkaXNwYXRj
aEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAg
Ly8gRklYTUU6IGltcGxlbWVudCB0aGlzLgotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWV2
dCB8fCBldnQtPnR5cGUoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBFdmVudEV4Y2VwdGlv
bjo6VU5TUEVDSUZJRURfRVZFTlRfVFlQRV9FUlI7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIExpc3RlbmVyVmVjdG9yIGxpc3RlbmVyc0NvcHkgPSBtX2V2ZW50TGlzdGVuZXJz
LmdldChldnQtPnR5cGUoKSk7CisgICAgZm9yIChMaXN0ZW5lclZlY3Rvcjo6Y29uc3RfaXRlcmF0
b3IgbGlzdGVuZXJJdGVyID0gbGlzdGVuZXJzQ29weS5iZWdpbigpOyBsaXN0ZW5lckl0ZXIgIT0g
bGlzdGVuZXJzQ29weS5lbmQoKTsgKytsaXN0ZW5lckl0ZXIpIHsKKyAgICAgICAgZXZ0LT5zZXRU
YXJnZXQodGhpcyk7CisgICAgICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAg
ICAgbGlzdGVuZXJJdGVyLT5nZXQoKS0+aGFuZGxlRXZlbnQoZXZ0LmdldCgpLCBmYWxzZSk7Cisg
ICAgfQorICAgIHJldHVybiAhZXZ0LT5kZWZhdWx0UHJldmVudGVkKCk7CiB9CiAKIHZvaWQgV2Vi
U29ja2V0OjpkaWRDb25uZWN0KCkKIHsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBk
aWRDb25uZWN0IiwgdGhpcyk7CiAgICAgaWYgKG1fc3RhdGUgIT0gQ09OTkVDVElORykgewogICAg
ICAgICBkaWRDbG9zZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fc3RhdGUgPSBP
UEVOOwotICAgIGRpc3BhdGNoT3BlbkV2ZW50KCk7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5wb3N0VGFzayhQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrOjpjcmVhdGUodGhpcywgJldl
YlNvY2tldDo6ZGlzcGF0Y2hPcGVuRXZlbnQsIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm9w
ZW5FdmVudCwgZmFsc2UsIGZhbHNlKSkpOwogfQogCiB2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2
ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtc2cpCiB7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2Nr
ZXQgJXAgZGlkUmVjZWl2ZU1lc3NhZ2UgJXMiLCB0aGlzLCBtc2cudXRmOCgpLmRhdGEoKSk7CiAg
ICAgaWYgKG1fc3RhdGUgIT0gT1BFTikKICAgICAgICAgcmV0dXJuOwotICAgIGRpc3BhdGNoTWVz
c2FnZUV2ZW50KG1zZyk7CisgICAgUmVmUHRyPE1lc3NhZ2VFdmVudD4gZXZ0ID0gTWVzc2FnZUV2
ZW50OjpjcmVhdGUoKTsKKyAgICAvLyBGSVhNRTogb3JpZ2luLCBsYXN0RXZlbnRJZCwgc291cmNl
LCBtZXNzYWdlUG9ydC4KKyAgICBldnQtPmluaXRNZXNzYWdlRXZlbnQoZXZlbnROYW1lcygpLm1l
c3NhZ2VFdmVudCwgZmFsc2UsIGZhbHNlLCBtc2csICIiLCAiIiwgMCwgMCk7CisgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhQcm9jZXNzV2ViU29ja2V0RXZlbnRUYXNrOjpj
cmVhdGUodGhpcywgJldlYlNvY2tldDo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQsIGV2dCkpOwogfQog
CiB2b2lkIFdlYlNvY2tldDo6ZGlkQ2xvc2UoKQogeworICAgIExPRyhOZXR3b3JrLCAiV2ViU29j
a2V0ICVwIGRpZENsb3NlIiwgdGhpcyk7CiAgICAgbV9zdGF0ZSA9IENMT1NFRDsKLSAgICBkaXNw
YXRjaENsb3NlRXZlbnQoKTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNr
KFByb2Nlc3NXZWJTb2NrZXRFdmVudFRhc2s6OmNyZWF0ZSh0aGlzLCAmV2ViU29ja2V0OjpkaXNw
YXRjaENsb3NlRXZlbnQsIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZh
bHNlLCBmYWxzZSkpKTsKIH0KIAotdm9pZCBXZWJTb2NrZXQ6OmRpc3BhdGNoT3BlbkV2ZW50KCkK
K3ZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaE9wZW5FdmVudChFdmVudCogZXZ0KQogewotICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKyAgICBpZiAobV9vbm9wZW4pIHsKKyAgICAgICAgZXZ0
LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsK
KyAgICAgICAgbV9vbm9wZW4tPmhhbmRsZUV2ZW50KGV2dCwgZmFsc2UpOworICAgIH0KKworICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZ0LCBlYyk7CisgICAg
QVNTRVJUKCFlYyk7CiB9CiAKLXZvaWQgV2ViU29ja2V0OjpkaXNwYXRjaE1lc3NhZ2VFdmVudChj
b25zdCBTdHJpbmcmKQordm9pZCBXZWJTb2NrZXQ6OmRpc3BhdGNoTWVzc2FnZUV2ZW50KEV2ZW50
KiBldnQpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgorICAgIGlmIChtX29ubWVz
c2FnZSkgeworICAgICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRD
dXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29ubWVzc2FnZS0+aGFuZGxlRXZlbnQoZXZ0
LCBmYWxzZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlzcGF0
Y2hFdmVudChldnQsIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKIH0KIAotdm9pZCBXZWJTb2NrZXQ6
OmRpc3BhdGNoQ2xvc2VFdmVudCgpCit2b2lkIFdlYlNvY2tldDo6ZGlzcGF0Y2hDbG9zZUV2ZW50
KEV2ZW50KiBldnQpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgorICAgIGlmICht
X29uY2xvc2UpIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2dC0+
c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbmNsb3NlLT5oYW5kbGVFdmVudChl
dnQsIGZhbHNlKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNw
YXRjaEV2ZW50KGV2dCwgZWMpOworICAgIEFTU0VSVCghZWMpOwogfQogCiB9ICAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IDQ4NWUyY2MuLjJiZTM0NDUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTMxLDkzICszMSwxMDQgQEAKICNpZm5kZWYgV2ViU29j
a2V0X2gKICNkZWZpbmUgV2ViU29ja2V0X2gKIAorI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKwog
I2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkF0b21pY1N0cmluZ0hhc2gu
aCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIK
ICNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFN0cmluZzsKKyAgICBjbGFzcyBTdHJpbmc7Cisg
ICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbDsKIAotY2xhc3MgV2ViU29ja2V0IDogcHVibGljIFJl
ZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9N
T2JqZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcg
V2ViU29ja2V0KGNvbnRleHQpKTsgfQotICAgIHZpcnR1YWwgfldlYlNvY2tldCgpOworICAgIGNs
YXNzIFdlYlNvY2tldCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlNvY2tldD4sIHB1YmxpYyBFdmVu
dFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFdlYlNvY2tldENoYW5uZWxD
bGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYlNvY2tldChjb250ZXh0KSk7IH0KKyAgICAgICAgdmlydHVhbCB+V2ViU29ja2V0
KCk7CiAKLSAgICBlbnVtIFN0YXRlIHsKLSAgICAgICAgQ09OTkVDVElORyA9IDAsCi0gICAgICAg
IE9QRU4gPSAxLAotICAgICAgICBDTE9TRUQgPSAyCi0gICAgfTsKKyAgICAgICAgZW51bSBTdGF0
ZSB7CisgICAgICAgICAgICBDT05ORUNUSU5HID0gMCwKKyAgICAgICAgICAgIE9QRU4gPSAxLAor
ICAgICAgICAgICAgQ0xPU0VEID0gMgorICAgICAgICB9OwogCi0gICAgdm9pZCBjb25uZWN0KGNv
bnN0IEtVUkwmIHVybCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgY29ubmVjdChjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAg
ICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIHZv
aWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0aW9u
Q29kZSYpOwogCi0gICAgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9u
Q29kZSYpOworICAgICAgICBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRp
b25Db2RlJik7CiAKLSAgICB2b2lkIGNsb3NlKCk7CisgICAgICAgIHZvaWQgY2xvc2UoKTsKIAot
ICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OwotICAgIFN0YXRlIHJlYWR5U3RhdGUoKSBjb25z
dDsKLSAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CisgICAgICAgIGNv
bnN0IEtVUkwmIHVybCgpIGNvbnN0OworICAgICAgICBTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7
CisgICAgICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKIAotICAgIHZv
aWQgc2V0T25vcGVuKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBt
X29ub3BlbiA9IGV2ZW50TGlzdGVuZXI7IH0KLSAgICBFdmVudExpc3RlbmVyKiBvbm9wZW4oKSBj
b25zdCB7IHJldHVybiBtX29ub3Blbi5nZXQoKTsgfQotICAgIHZvaWQgc2V0T25tZXNzYWdlKFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29ubWVzc2FnZSA9IGV2
ZW50TGlzdGVuZXI7IH0KLSAgICBFdmVudExpc3RlbmVyKiBvbm1lc3NhZ2UoKSBjb25zdCB7IHJl
dHVybiBtX29ubWVzc2FnZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0T25jbG9zZShQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbmNsb3NlID0gZXZlbnRMaXN0ZW5l
cjsgfQotICAgIEV2ZW50TGlzdGVuZXIqIG9uY2xvc2UoKSBjb25zdCB7IHJldHVybiBtX29uY2xv
c2UuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRPbm9wZW4oUGFzc1JlZlB0cjxFdmVudExpc3Rl
bmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25vcGVuID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgICAg
ICBFdmVudExpc3RlbmVyKiBvbm9wZW4oKSBjb25zdCB7IHJldHVybiBtX29ub3Blbi5nZXQoKTsg
fQorICAgICAgICB2b2lkIHNldE9ubWVzc2FnZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2
ZW50TGlzdGVuZXIpIHsgbV9vbm1lc3NhZ2UgPSBldmVudExpc3RlbmVyOyB9CisgICAgICAgIEV2
ZW50TGlzdGVuZXIqIG9ubWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25tZXNzYWdlLmdldCgp
OyB9CisgICAgICAgIHZvaWQgc2V0T25jbG9zZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2
ZW50TGlzdGVuZXIpIHsgbV9vbmNsb3NlID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgICAgICBFdmVu
dExpc3RlbmVyKiBvbmNsb3NlKCkgY29uc3QgeyByZXR1cm4gbV9vbmNsb3NlLmdldCgpOyB9CiAK
LSAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgV2ViU29ja2V0KiB0b1dlYlNvY2tldCgp
IHsgcmV0dXJuIHRoaXM7IH0KKyAgICAgICAgLy8gRXZlbnRUYXJnZXQKKyAgICAgICAgdmlydHVh
bCBXZWJTb2NrZXQqIHRvV2ViU29ja2V0KCkgeyByZXR1cm4gdGhpczsgfQogCi0gICAgdmlydHVh
bCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7
CisgICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJv
b2wgdXNlQ2FwdHVyZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1
cmUpOwotICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBF
eGNlcHRpb25Db2RlJik7CisgICAgICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxFdmVudExpc3Rl
bmVyPiA+IExpc3RlbmVyVmVjdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBMaXN0ZW5lclZlY3Rvcj4gRXZlbnRMaXN0ZW5lcnNNYXA7CiAKLSAgICAvLyBBY3RpdmVE
T01PYmplY3QKLSAgICAvLyB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7
Ci0gICAgLy8gdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKLSAgICAvLyB2aXJ0dWFs
IGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0OwotICAgIC8vIHZpcnR1YWwgdm9pZCBzdXNwZW5kKCk7
Ci0gICAgLy8gdmlydHVhbCB2b2lkIHJlc3VtZSgpOwotICAgIC8vIHZpcnR1YWwgdm9pZCBzdG9w
KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1
cmUpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7Cisg
ICAgICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBFeGNl
cHRpb25Db2RlJik7CisgICAgICAgIEV2ZW50TGlzdGVuZXJzTWFwJiBldmVudExpc3RlbmVycygp
IHsgcmV0dXJuIG1fZXZlbnRMaXN0ZW5lcnM7IH0KIAotICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2Vi
U29ja2V0Pjo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Pjo6ZGVyZWY7Cisg
ICAgICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgICAgICAvLyAgdmlydHVhbCBib29sIGhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0OworICAgICAgICAvLyB2aXJ0dWFsIHZvaWQgY29udGV4dERl
c3Ryb3llZCgpOworICAgICAgICAvLyB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0Owor
ICAgICAgICAvLyB2aXJ0dWFsIHZvaWQgc3VzcGVuZCgpOworICAgICAgICAvLyB2aXJ0dWFsIHZv
aWQgcmVzdW1lKCk7CisgICAgICAgIC8vIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAKLXByaXZhdGU6
Ci0gICAgV2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICAgICAgdXNpbmcg
UmVmQ291bnRlZDxXZWJTb2NrZXQ+OjpyZWY7CisgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2Vi
U29ja2V0Pjo6ZGVyZWY7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJl
ZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0K
KyAgICAgICAgLy8gV2ViU29ja2V0Q2hhbm5lbENsaWVudAorICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ29ubmVjdCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
c3QgU3RyaW5nJiBtc2cpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoKTsKIAotICAg
IC8vIFdlYlNvY2tldENoYW5uZWxDbGllbnQKLSAgICB2b2lkIGRpZENvbm5lY3QoKTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbXNnKTsKLSAgICB2b2lkIGRpZENs
b3NlKCk7CisgICAgcHJpdmF0ZToKKyAgICAgICAgV2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKIAotICAgIHZvaWQgZGlzcGF0Y2hPcGVuRXZlbnQoKTsKLSAgICB2b2lkIGRpc3Bh
dGNoTWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgbXNnKTsKLSAgICB2b2lkIGRpc3BhdGNoQ2xv
c2VFdmVudCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigp
OyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9
CiAKLSAgICAvLyBGSVhNRTogYWRkIFdlYlNvY2tldENoYW5uZWwuCisgICAgICAgIHZvaWQgZGlz
cGF0Y2hPcGVuRXZlbnQoRXZlbnQqKTsKKyAgICAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VFdmVu
dChFdmVudCopOworICAgICAgICB2b2lkIGRpc3BhdGNoQ2xvc2VFdmVudChFdmVudCopOwogCi0g
ICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25vcGVuOwotICAgIFJlZlB0cjxFdmVudExpc3Rl
bmVyPiBtX29ubWVzc2FnZTsKLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbmNsb3NlOwor
ICAgICAgICBSZWZQdHI8V2ViU29ja2V0Q2hhbm5lbD4gbV9jaGFubmVsOwogCi0gICAgU3RhdGUg
bV9zdGF0ZTsKLSAgICBLVVJMIG1fdXJsOwotICAgIFN0cmluZyBtX3Byb3RvY29sOwotfTsKKyAg
ICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25vcGVuOworICAgICAgICBSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gbV9vbm1lc3NhZ2U7CisgICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBt
X29uY2xvc2U7CisgICAgICAgIEV2ZW50TGlzdGVuZXJzTWFwIG1fZXZlbnRMaXN0ZW5lcnM7CisK
KyAgICAgICAgU3RhdGUgbV9zdGF0ZTsKKyAgICAgICAgS1VSTCBtX3VybDsKKyAgICAgICAgU3Ry
aW5nIG1fcHJvdG9jb2w7CisgICAgfTsKIAogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2Vu
ZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKICNlbmRpZiAgLy8gV2ViU29ja2V0X2gKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xNDVjZDM0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0wLDAgKzEsMjQ2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIldlYlNvY2tldENo
YW5uZWwuaCIKKworI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJDb29raWVKYXIuaCIK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgorI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRs
ZS5oIgorI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVs
Q2xpZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworV2ViU29ja2V0Q2hhbm5lbDo6V2ViU29ja2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQor
ICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9oYW5kc2hha2UodXJsLCBwcm90b2NvbCwg
Y29udGV4dCkKKyAgICAsIG1fYnVmZmVyKDApCisgICAgLCBtX2J1ZmZlclNpemUoMCkKKyAgICAs
IG1fdW5oYW5kbGVkQnVmZmVyU2l6ZSgwKQoreworfQorCitXZWJTb2NrZXRDaGFubmVsOjp+V2Vi
U29ja2V0Q2hhbm5lbCgpCit7CisgICAgZmFzdEZyZWUobV9idWZmZXIpOworfQorCit2b2lkIFdl
YlNvY2tldENoYW5uZWw6OmNvbm5lY3QoKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
Q2hhbm5lbCAlcCBjb25uZWN0IiwgdGhpcyk7CisgICAgQVNTRVJUKCFtX2hhbmRsZS5nZXQoKSk7
CisgICAgbV9oYW5kc2hha2UucmVzZXQoKTsKKyAgICBtX2hhbmRsZSA9IFNvY2tldFN0cmVhbUhh
bmRsZTo6Y3JlYXRlKG1faGFuZHNoYWtlLnVybCgpLCB0aGlzKTsKK30KKworYm9vbCBXZWJTb2Nr
ZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbXNnKQoreworICAgIExPRyhOZXR3b3JrLCAi
V2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kICVzIiwgdGhpcywgbXNnLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIFZlY3RvcjxjaGFyPiBidWY7CisgICAgYnVmLmFwcGVuZCgnXDAnKTsgIC8vIGZyYW1lIHR5
cGUKKyAgICBidWYuYXBwZW5kKG1zZy51dGY4KCkuZGF0YSgpLCBtc2cudXRmOCgpLmxlbmd0aCgp
KTsKKyAgICBidWYuYXBwZW5kKCdceGZmJyk7ICAvLyBmcmFtZSBlbmQKKyAgICBpZiAoIW1faGFu
ZGxlLmdldCgpKSB7CisgICAgICAgIG1fdW5oYW5kbGVkQnVmZmVyU2l6ZSArPSBidWYuc2l6ZSgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBtX2hhbmRsZS0+c2Vu
ZChidWYuZGF0YSgpLCBidWYuc2l6ZSgpKTsKK30KKwordW5zaWduZWQgbG9uZyBXZWJTb2NrZXRD
aGFubmVsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0Cit7CisgICAgTE9HKE5ldHdvcmssICJXZWJT
b2NrZXRDaGFubmVsICVwIGJ1ZmZlcmVkQW1vdW50IiwgdGhpcyk7CisgICAgaWYgKCFtX2hhbmRs
ZS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIG1fdW5oYW5kbGVkQnVmZmVyU2l6ZTsKKyAgICByZXR1
cm4gbV9oYW5kbGUtPmJ1ZmZlcmVkQW1vdW50KCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5l
bDo6Y2xvc2UoKQoreworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjbG9z
ZSIsIHRoaXMpOworICAgIGlmIChtX2hhbmRsZS5nZXQoKSkKKyAgICAgICAgbV9oYW5kbGUtPmNs
b3NlKCk7ICAvLyB3aWxsIGNhbGwgZGlkQ2xvc2UoKQorfQorCit2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OndpbGxPcGVuU3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEtVUkwmKQorewor
fQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OndpbGxTZW5kRGF0YShTb2NrZXRTdHJlYW1IYW5k
bGUqLCBjb25zdCBjaGFyKiwgaW50KQoreworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRp
ZE9wZW4oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCit7CisgICAgTE9HKE5ldHdvcmssICJX
ZWJTb2NrZXRDaGFubmVsICVwIGRpZE9wZW4iLCB0aGlzKTsKKyAgICBBU1NFUlQoaGFuZGxlID09
IG1faGFuZGxlLmdldCgpKTsKKyAgICBjb25zdCBDU3RyaW5nJiBoYW5kc2hha2VNZXNzYWdlID0g
bV9oYW5kc2hha2UuY2xpZW50SGFuZHNoYWtlTWVzc2FnZSgpOworICAgIGlmICghaGFuZGxlLT5z
ZW5kKGhhbmRzaGFrZU1lc3NhZ2UuZGF0YSgpLCBoYW5kc2hha2VNZXNzYWdlLmxlbmd0aCgpKSkg
eworICAgICAgICBMT0coTmV0d29yaywgIkVycm9yIGluIHNlbmRpbmcgaGFuZHNoYWtlIG1lc3Nh
Z2UuIik7CisgICAgICAgIGhhbmRsZS0+Y2xvc2UoKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6ZGlkQ2xvc2UoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCit7CisgICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZENsb3NlIiwgdGhpcyk7CisgICAg
QVNTRVJUKGhhbmRsZSA9PSBtX2hhbmRsZS5nZXQoKSB8fCAhbV9oYW5kbGUuZ2V0KCkpOworICAg
IGlmICghbV9oYW5kbGUuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3VuaGFuZGxlZEJ1
ZmZlclNpemUgPSBoYW5kbGUtPmJ1ZmZlcmVkQW1vdW50KCk7CisgICAgV2ViU29ja2V0Q2hhbm5l
bENsaWVudCogY2xpZW50ID0gbV9jbGllbnQ7CisgICAgbV9jbGllbnQgPSAwOworICAgIG1faGFu
ZGxlID0gMDsKKyAgICBjbGllbnQtPmRpZENsb3NlKCk7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6ZGlkUmVjZWl2ZURhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW4pCit7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVs
ICVwIGRpZFJlY2VpdmVEYXRhICVkIiwgdGhpcywgbGVuKTsKKyAgICBBU1NFUlQoaGFuZGxlID09
IG1faGFuZGxlLmdldCgpKTsKKyAgICBpZiAoIWFwcGVuZFRvQnVmZmVyKGRhdGEsIGxlbikpIHsK
KyAgICAgICAgaGFuZGxlLT5jbG9zZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlm
IChtX2hhbmRzaGFrZS5tb2RlKCkgIT0gV2ViU29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQpIHsK
KyAgICAgICAgaW50IGhlYWRlckxlbmd0aCA9IG1faGFuZHNoYWtlLnJlYWRTZXJ2ZXJIYW5kc2hh
a2UobV9idWZmZXIsIG1fYnVmZmVyU2l6ZSk7CisgICAgICAgIGlmIChoZWFkZXJMZW5ndGggPD0g
MCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3dpdGNoIChtX2hhbmRzaGFrZS5tb2Rl
KCkpIHsKKyAgICAgICAgY2FzZSBXZWJTb2NrZXRIYW5kc2hha2U6OkNvbm5lY3RlZDoKKyAgICAg
ICAgICAgIGlmICghbV9oYW5kc2hha2Uuc2VydmVyU2V0Q29va2llKCkuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKG1fY29udGV4dC0+aXNEb2N1bWVudCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9j
b250ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZXNFbmFibGVkKGRvY3VtZW50
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5zZXRDb29raWUobV9oYW5kc2hh
a2Uuc2VydmVyU2V0Q29va2llKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC8vIEZJWE1FOiBoYW5kbGUgc2V0LWNvb2tpZTIuCisgICAgICAgICAgICBM
T0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVjdGVkIiwgdGhpcyk7CisgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlkQ29ubmVjdCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwg
JXAgY29ubmVjdGlvbiBmYWlsZWQiLCB0aGlzKTsKKyAgICAgICAgICAgIGhhbmRsZS0+Y2xvc2Uo
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBza2lwQnVmZmVyKGhl
YWRlckxlbmd0aCk7CisgICAgICAgIGlmICghbV9idWZmZXIpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIExPRyhOZXR3b3JrLCAicmVtYWluaW5nIGluIHJlYWQgYnVmICV1bCIsIG1fYnVm
ZmVyU2l6ZSk7CisgICAgfQorCisgICAgY29uc3QgY2hhciogbmV4dEZyYW1lID0gbV9idWZmZXI7
CisgICAgY29uc3QgY2hhciogcCA9IG1fYnVmZmVyOworICAgIGNvbnN0IGNoYXIqIGVuZCA9IHAg
KyBtX2J1ZmZlclNpemU7CisgICAgd2hpbGUgKHAgPCBlbmQpIHsKKyAgICAgICAgdW5zaWduZWQg
Y2hhciBmcmFtZUJ5dGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqcCsrKTsKKyAgICAg
ICAgaWYgKChmcmFtZUJ5dGUgJiAweDgwKSA9PSAweDgwKSB7CisgICAgICAgICAgICBpbnQgbGVu
Z3RoID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChwIDwgZW5kICYmICgqcCAmIDB4ODApID09IDB4
ODApIHsKKyAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ+OjptYXgoKSAvIDEyOCkgeworICAgICAgICAgICAgICAgICAgICBMT0coTmV0d29yaywgImZy
YW1lIGxlbmd0aCBvdmVyZmxvdyAlZCIsIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIGhh
bmRsZS0+Y2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGggKiAxMjggKyAqcCAmIDB4N2Y7
CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHAg
KyBsZW5ndGggPCBlbmQpIHsKKyAgICAgICAgICAgICAgICBwICs9IGxlbmd0aDsKKyAgICAgICAg
ICAgICAgICBuZXh0RnJhbWUgPSBwOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgY29uc3QgY2hhciogbXNnU3RhcnQgPSBwOworICAgICAgICAgICAgd2hpbGUg
KHAgPCBlbmQgJiYgKnAgIT0gJ1x4ZmYnKQorICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAg
ICAgIGlmIChwIDwgZW5kICYmICpwID09ICdceGZmJykgeworICAgICAgICAgICAgICAgIGlmIChm
cmFtZUJ5dGUgPT0gMHgwMCkKKyAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVNZXNzYWdlKFN0cmluZzo6ZnJvbVVURjgobXNnU3RhcnQsIHAgLSBtc2dTdGFydCkpOworICAg
ICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICBuZXh0RnJhbWUgPSBwOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHNraXBCdWZmZXIobmV4dEZyYW1lIC0gbV9i
dWZmZXIpOworfQorCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZEZhaWwoU29ja2V0U3RyZWFt
SGFuZGxlKiBoYW5kbGUsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJikKK3sKKyAgICBMT0coTmV0
d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkRmFpbCIsIHRoaXMpOworICAgIEFTU0VSVCho
YW5kbGUgPT0gbV9oYW5kbGUuZ2V0KCkgfHwgIW1faGFuZGxlLmdldCgpKTsKKyAgICBoYW5kbGUt
PmNsb3NlKCk7Cit9CisKK2Jvb2wgV2ViU29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIoY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbikKK3sKKyAgICBjaGFyKiBuZXdCdWZmZXIgPSAwOworICAg
IGlmICh0cnlGYXN0TWFsbG9jKG1fYnVmZmVyU2l6ZSArIGxlbikuZ2V0VmFsdWUobmV3QnVmZmVy
KSkgeworICAgICAgICBpZiAobV9idWZmZXIpCisgICAgICAgICAgICBtZW1jcHkobmV3QnVmZmVy
LCBtX2J1ZmZlciwgbV9idWZmZXJTaXplKTsKKyAgICAgICAgbWVtY3B5KG5ld0J1ZmZlciArIG1f
YnVmZmVyU2l6ZSwgZGF0YSwgbGVuKTsKKyAgICAgICAgZmFzdEZyZWUobV9idWZmZXIpOworICAg
ICAgICBtX2J1ZmZlciA9IG5ld0J1ZmZlcjsKKyAgICAgICAgbV9idWZmZXJTaXplICs9IGxlbjsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIExPRyhOZXR3b3JrLCAiVG9vIGxvbmcg
V2ViU29ja2V0IGZyYW1lICVkIiwgbV9idWZmZXJTaXplICsgbGVuKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2tpcEJ1ZmZlcihpbnQgbGVuKQorewor
ICAgIEFTU0VSVChsZW4gPD0gbV9idWZmZXJTaXplKTsKKyAgICBtX2J1ZmZlclNpemUgLT0gbGVu
OworICAgIGlmICghbV9idWZmZXJTaXplKSB7CisgICAgICAgIGZhc3RGcmVlKG1fYnVmZmVyKTsK
KyAgICAgICAgbV9idWZmZXIgPSAwOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1lbW1v
dmUobV9idWZmZXIsIG1fYnVmZmVyICsgbGVuLCBtX2J1ZmZlclNpemUpOworfQorCit9ICAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjc1ZjQxZjYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTb2NrZXRDaGFubmVs
X2gKKyNkZWZpbmUgV2ViU29ja2V0Q2hhbm5lbF9oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMp
CisKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJT
b2NrZXRIYW5kc2hha2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIGNs
YXNzIFN0cmluZzsKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGU7CisgICAgY2xhc3MgU29j
a2V0U3RyZWFtRXJyb3I7CisgICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENsaWVudDsKKworICAg
IGNsYXNzIFdlYlNvY2tldENoYW5uZWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTb2NrZXRDaGFu
bmVsPiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCB7CisgICAgcHVibGljOgorICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIHsgcmV0dXJuIG5ldyBXZWJT
b2NrZXRDaGFubmVsKGNvbnRleHQsIGNsaWVudCwgdXJsLCBwcm90b2NvbCk7IH0KKyAgICAgICAg
dmlydHVhbCB+V2ViU29ja2V0Q2hhbm5lbCgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBjb25u
ZWN0KCk7CisKKyAgICAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtc2cpOwor
ICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKKwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgd2ls
bE9wZW5TdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgS1VSTCYpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFNlbmREYXRhKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IGNoYXIq
LCBpbnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbihTb2NrZXRTdHJlYW1IYW5kbGUq
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKFNvY2tldFN0cmVhbUhhbmRsZSopOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiwg
Y29uc3QgY2hhciosIGludCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFNvY2tldFN0
cmVhbUhhbmRsZSosIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJik7CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOworCisgICAgICAg
IGJvb2wgYXBwZW5kVG9CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbik7CisgICAgICAg
IHZvaWQgc2tpcEJ1ZmZlcihpbnQgbGVuKTsKKworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBtX2NvbnRleHQ7CisgICAgICAgIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIG1fY2xpZW50
OworICAgICAgICBXZWJTb2NrZXRIYW5kc2hha2UgbV9oYW5kc2hha2U7CisgICAgICAgIFJlZlB0
cjxTb2NrZXRTdHJlYW1IYW5kbGU+IG1faGFuZGxlOworICAgICAgICBjaGFyKiBtX2J1ZmZlcjsK
KyAgICAgICAgaW50IG1fYnVmZmVyU2l6ZTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtX3VuaGFu
ZGxlZEJ1ZmZlclNpemU7CisgICAgfTsKKworfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAgLy8gV2ViU29ja2V0Q2hhbm5l
bF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVu
dC5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjNjYWRhCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaApAQCAtMCwwICsxLDUz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViU29ja2V0Q2hhbm5lbENsaWVudF9oCisjZGVmaW5lIFdlYlNvY2tldENo
YW5uZWxDbGllbnRfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKyAgICBjbGFzcyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWxDbGllbnQoKSB7IH0KKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpZENvbm5lY3QoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2xvc2UoKSB7IH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbENs
aWVudCgpIHsgfQorICAgIH07CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAg
Ly8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYgIC8vIFdlYlNvY2tldENoYW5uZWxDbGll
bnRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5j
cHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTFmYTFjCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTAsMCArMSw0NjIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVk
ZSAiV2ViU29ja2V0SGFuZHNoYWtlLmgiCisKKyNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKKyNp
bmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiQ29va2llSmFyLmgiCisjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCisjaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgi
CisjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBjaGFyIHdlYlNvY2tldFNlcnZlckhhbmRz
aGFrZUhlYWRlcltdID0gIkhUVFAvMS4xIDEwMSBXZWIgU29ja2V0IFByb3RvY29sIEhhbmRzaGFr
ZVxyXG4iOworY29uc3QgY2hhciB3ZWJTb2NrZXRVcGdyYWRlSGVhZGVyW10gPSAiVXBncmFkZTog
V2ViU29ja2V0XHJcbiI7Citjb25zdCBjaGFyIHdlYlNvY2tldENvbm5lY3Rpb25IZWFkZXJbXSA9
ICJDb25uZWN0aW9uOiBVcGdyYWRlXHJcbiI7CisKK3N0YXRpYyBTdHJpbmcgZXh0cmFjdFJlc3Bv
bnNlQ29kZShjb25zdCBjaGFyKiBoZWFkZXIsIGludCBsZW4pCit7CisgICAgY29uc3QgY2hhciog
c3BhY2UxID0gMDsKKyAgICBjb25zdCBjaGFyKiBzcGFjZTIgPSAwOworICAgIGNvbnN0IGNoYXIq
IHA7CisgICAgZm9yIChwID0gaGVhZGVyOyBwIC0gaGVhZGVyIDwgbGVuOyBwKyspIHsKKyAgICAg
ICAgaWYgKCpwID09ICcgJykgeworICAgICAgICAgICAgaWYgKCFzcGFjZTEpCisgICAgICAgICAg
ICAgICAgc3BhY2UxID0gcDsKKyAgICAgICAgICAgIGVsc2UgaWYgKCFzcGFjZTIpCisgICAgICAg
ICAgICAgICAgc3BhY2UyID0gcDsKKyAgICAgICAgfSBlbHNlIGlmICgqcCA9PSAnXG4nKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChwIC0gaGVhZGVyID09IGxlbikKKyAgICAg
ICAgcmV0dXJuIFN0cmluZygpOworICAgIGlmICghc3BhY2UxIHx8ICFzcGFjZTIpCisgICAgICAg
IHJldHVybiAiIjsKKyAgICByZXR1cm4gU3RyaW5nKHNwYWNlMSArIDEsIHNwYWNlMiAtIHNwYWNl
MSAtIDEpOworfQorCitXZWJTb2NrZXRIYW5kc2hha2U6OldlYlNvY2tldEhhbmRzaGFrZShjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCisgICAgOiBtX3VybCh1cmwpCisgICAgLCBtX2NsaWVudFByb3RvY29sKHBy
b3RvY29sKQorICAgICwgbV9zZWN1cmUobV91cmwucHJvdG9jb2xJcygid3NzIikpCisgICAgLCBt
X2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fbW9kZShJbmNvbXBsZXRlKQoreworfQorCitXZWJT
b2NrZXRIYW5kc2hha2U6On5XZWJTb2NrZXRIYW5kc2hha2UoKQoreworfQorCitjb25zdCBLVVJM
JiBXZWJTb2NrZXRIYW5kc2hha2U6OnVybCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXJsOwor
fQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkKK3sK
KyAgICBtX3VybCA9IHVybC5jb3B5KCk7Cit9CisKK2NvbnN0IFN0cmluZyBXZWJTb2NrZXRIYW5k
c2hha2U6Omhvc3QoKSBjb25zdAoreworICAgIHJldHVybiBtX3VybC5ob3N0KCkubG93ZXIoKTsK
K30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudFByb3RvY29sKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnRQcm90b2NvbDsKK30KKwordm9pZCBXZWJTb2Nr
ZXRIYW5kc2hha2U6OnNldENsaWVudFByb3RvY29sKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCit7
CisgICAgbV9jbGllbnRQcm90b2NvbCA9IHByb3RvY29sOworfQorCitib29sIFdlYlNvY2tldEhh
bmRzaGFrZTo6c2VjdXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZWN1cmU7Cit9CisKK3Zv
aWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZWN1cmUoYm9vbCBzZWN1cmUpCit7CisgICAgbV9z
ZWN1cmUgPSBzZWN1cmU7Cit9CisKK1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudE9y
aWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+
dG9TdHJpbmcoKTsKK30KKworU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50TG9jYXRp
b24oKSBjb25zdAoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFw
cGVuZChtX3NlY3VyZSA/ICJ3c3MiIDogIndzIik7CisgICAgYnVpbGRlci5hcHBlbmQoIjovLyIp
OworICAgIGJ1aWxkZXIuYXBwZW5kKG1fdXJsLmhvc3QoKS5sb3dlcigpKTsKKyAgICBpZiAobV91
cmwucG9ydCgpKSB7CisgICAgICAgIGlmICgoIW1fc2VjdXJlICYmIG1fdXJsLnBvcnQoKSAhPSA4
MCkgfHwgKG1fc2VjdXJlICYmIG1fdXJsLnBvcnQoKSAhPSA0NDMpKSB7CisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiOiIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpu
dW1iZXIobV91cmwucG9ydCgpKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgYnVpbGRlci5hcHBl
bmQobV91cmwucGF0aCgpKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitD
U3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50SGFuZHNoYWtlTWVzc2FnZSgpIGNvbnN0
Cit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworCisgICAgYnVpbGRlci5hcHBlbmQoIkdF
VCAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChtX3VybC5wYXRoKCkpOworICAgIGlmICghbV91cmwu
cXVlcnkoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIj8iKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQobV91cmwucXVlcnkoKSk7CisgICAgfQorICAgIGJ1aWxkZXIuYXBw
ZW5kKCIgSFRUUC8xLjFcclxuIik7CisgICAgYnVpbGRlci5hcHBlbmQoIlVwZ3JhZGU6IFdlYlNv
Y2tldFxyXG4iKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiQ29ubmVjdGlvbjogVXBncmFkZVxyXG4i
KTsKKyAgICBidWlsZGVyLmFwcGVuZCgiSG9zdDogIik7CisgICAgYnVpbGRlci5hcHBlbmQobV91
cmwuaG9zdCgpLmxvd2VyKCkpOworICAgIGlmIChtX3VybC5wb3J0KCkpIHsKKyAgICAgICAgaWYg
KCghbV9zZWN1cmUgJiYgbV91cmwucG9ydCgpICE9IDgwKSB8fCAobV9zZWN1cmUgJiYgbV91cmwu
cG9ydCgpICE9IDQ0MykpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCI6Iik7CisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihtX3VybC5wb3J0KCkpKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZCgiXHJcbiIpOworICAgIGJ1aWxkZXIu
YXBwZW5kKCJPcmlnaW46ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKGNsaWVudE9yaWdpbigpKTsK
KyAgICBidWlsZGVyLmFwcGVuZCgiXHJcbiIpOworICAgIGlmICghbV9jbGllbnRQcm90b2NvbC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIldlYlNvY2tldC1Qcm90b2NvbDog
Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fY2xpZW50UHJvdG9jb2wpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiXHJcbiIpOworICAgIH0KKyAgICBLVVJMIHVybCA9IGh0dHBVUkxGb3JB
dXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKTsKKyAgICAvLyBGSVhNRTogc2V0IGF1dGhlbnRpY2F0
aW9uIGluZm9ybWF0aW9uIG9yIGNvb2tpZXMgZm9yIHVybC4KKyAgICAvLyBTZXQgIkF1dGhvcml6
YXRpb246IDxjcmVkZW50aWFscz4iIGlmIGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uIGV4aXN0
cyBmb3IgdXJsLgorICAgIGlmIChtX2NvbnRleHQtPmlzRG9jdW1lbnQoKSkgeworICAgICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fY29udGV4dCk7Cisg
ICAgICAgIFN0cmluZyBjb29raWUgPSBjb29raWVzKGRvY3VtZW50LCB1cmwpOworICAgICAgICBp
ZiAoIWNvb2tpZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJDb29r
aWU6ICIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoY29va2llKTsKKyAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisgICAgICAgIH0KKyAgICAgICAgLy8gU2V0ICJDb29r
aWUyOiA8Y29va2llPiIgaWYgY29va2llcyAyIGV4aXN0cyBmb3IgdXJsPworICAgIH0KKyAgICBi
dWlsZGVyLmFwcGVuZCgiXHJcbiIpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCkudXRm
OCgpOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVzZXQoKQoreworICAgIG1fbW9k
ZSA9IEluY29tcGxldGU7CisKKyAgICBtX3dzT3JpZ2luID0gU3RyaW5nKCk7CisgICAgbV93c0xv
Y2F0aW9uID0gU3RyaW5nKCk7CisgICAgbV93c1Byb3RvY29sID0gU3RyaW5nKCk7CisgICAgbV9z
ZXRDb29raWUgPSBTdHJpbmcoKTsKKyAgICBtX3NldENvb2tpZTIgPSBTdHJpbmcoKTsKK30KKwor
aW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZShjb25zdCBjaGFyKiBo
ZWFkZXIsIHNpemVfdCBsZW4pCit7CisgICAgbV9tb2RlID0gSW5jb21wbGV0ZTsKKyAgICBpZiAo
bGVuIDwgc2l6ZW9mKHdlYlNvY2tldFNlcnZlckhhbmRzaGFrZUhlYWRlcikgLSAxKSB7CisgICAg
ICAgIC8vIEp1c3QgaGFzbid0IGJlZW4gcmVjZWl2ZWQgZnVsbHkgeWV0LgorICAgICAgICByZXR1
cm4gLTE7CisgICAgfQorICAgIGlmICghbWVtY21wKGhlYWRlciwgd2ViU29ja2V0U2VydmVySGFu
ZHNoYWtlSGVhZGVyLCBzaXplb2Yod2ViU29ja2V0U2VydmVySGFuZHNoYWtlSGVhZGVyKSAtIDEp
KQorICAgICAgICBtX21vZGUgPSBOb3JtYWw7CisgICAgZWxzZSB7CisgICAgICAgIGNvbnN0IFN0
cmluZyYgY29kZSA9IGV4dHJhY3RSZXNwb25zZUNvZGUoaGVhZGVyLCBsZW4pOworICAgICAgICBp
ZiAoY29kZS5pc051bGwoKSkgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJzaG9ydCBzZXJ2
ZXIgaGFuZHNoYWtlOiAlcyIsIGhlYWRlcik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGNvZGUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBMT0coTmV0
d29yaywgIm5vIHJlc3BvbnNlIGNvZGUgZm91bmQ6ICVzIiwgaGVhZGVyKTsKKyAgICAgICAgICAg
IHJldHVybiBsZW47CisgICAgICAgIH0KKyAgICAgICAgTE9HKE5ldHdvcmssICJyZXNwb25zZSBj
b2RlOiAlcyIsIGNvZGUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGlmIChjb2RlID09ICI0MDEi
KSB7CisgICAgICAgICAgICBMT0coTmV0d29yaywgIkF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkIik7
CisgICAgICAgICAgICByZXR1cm4gbGVuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
TE9HKE5ldHdvcmssICJNaXNtYXRjaCBzZXJ2ZXIgaGFuZHNoYWtlOiAlcyIsIGhlYWRlcik7Cisg
ICAgICAgICAgICByZXR1cm4gbGVuOworICAgICAgICB9CisgICAgfQorICAgIGNvbnN0IGNoYXIq
IHAgPSBoZWFkZXIgKyBzaXplb2Yod2ViU29ja2V0U2VydmVySGFuZHNoYWtlSGVhZGVyKSAtIDE7
CisgICAgY29uc3QgY2hhciogZW5kID0gaGVhZGVyICsgbGVuICsgMTsKKworICAgIGlmIChtX21v
ZGUgPT0gTm9ybWFsKSB7CisgICAgICAgIHNpemVfdCBoZWFkZXJTaXplID0gZW5kIC0gcDsKKyAg
ICAgICAgaWYgKGhlYWRlclNpemUgPCBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRlcikgLSAx
KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChtZW1jbXAocCwgd2ViU29ja2V0
VXBncmFkZUhlYWRlciwgc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVIZWFkZXIpIC0gMSkpIHsKKyAg
ICAgICAgICAgIExPRyhOZXR3b3JrLCAiQmFkIHVwZ3JhZGUgaGVhZGVyOiAlcyIsIHApOworICAg
ICAgICAgICAgcmV0dXJuIHAgLSBoZWFkZXIgKyBzaXplb2Yod2ViU29ja2V0VXBncmFkZUhlYWRl
cikgLSAxOworICAgICAgICB9CisgICAgICAgIHAgKz0gc2l6ZW9mKHdlYlNvY2tldFVwZ3JhZGVI
ZWFkZXIpIC0gMTsKKworICAgICAgICBoZWFkZXJTaXplID0gZW5kIC0gcDsKKyAgICAgICAgaWYg
KGhlYWRlclNpemUgPCBzaXplb2Yod2ViU29ja2V0Q29ubmVjdGlvbkhlYWRlcikgLSAxKQorICAg
ICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAobWVtY21wKHAsIHdlYlNvY2tldENvbm5l
Y3Rpb25IZWFkZXIsIHNpemVvZih3ZWJTb2NrZXRDb25uZWN0aW9uSGVhZGVyKSAtIDEpKSB7Cisg
ICAgICAgICAgICBMT0coTmV0d29yaywgIkJhZCBjb25uZWN0aW9uIGhlYWRlcjogJXMiLCBwKTsK
KyAgICAgICAgICAgIHJldHVybiBwIC0gaGVhZGVyICsgc2l6ZW9mKHdlYlNvY2tldENvbm5lY3Rp
b25IZWFkZXIpIC0gMTsKKyAgICAgICAgfQorICAgICAgICBwICs9IHNpemVvZih3ZWJTb2NrZXRD
b25uZWN0aW9uSGVhZGVyKSAtIDE7CisgICAgfQorCisgICAgaWYgKCFzdHJuc3RyKHAsICJcclxu
XHJcbiIsIGVuZCAtIHApKSB7CisgICAgICAgIC8vIEp1c3QgaGFzbid0IGJlZW4gcmVjZWl2ZWQg
ZnVsbHkgeWV0LgorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIEhUVFBIZWFkZXJNYXAg
aGVhZGVyczsKKyAgICBwID0gcmVhZEhUVFBIZWFkZXJzKHAsIGVuZCwgJmhlYWRlcnMpOworICAg
IGlmICghcCkgeworICAgICAgICBMT0coTmV0d29yaywgInJlYWRIVFRQSGVhZGVycyBmYWlsZWQi
KTsKKyAgICAgICAgbV9tb2RlID0gRmFpbGVkOworICAgICAgICByZXR1cm4gbGVuOworICAgIH0K
KyAgICBpZiAoIXByb2Nlc3NIZWFkZXJzKGhlYWRlcnMpKSB7CisgICAgICAgIExPRyhOZXR3b3Jr
LCAiaGVhZGVyIHByb2Nlc3MgZmFpbGVkIik7CisgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAg
ICAgICAgcmV0dXJuIHAgLSBoZWFkZXI7CisgICAgfQorICAgIHN3aXRjaCAobV9tb2RlKSB7Cisg
ICAgY2FzZSBOb3JtYWw6CisgICAgICAgIGNoZWNrUmVzcG9uc2VIZWFkZXJzKCk7CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIHJldHVybiBwIC0gaGVhZGVyOworfQorCitXZWJTb2NrZXRIYW5k
c2hha2U6Ok1vZGUgV2ViU29ja2V0SGFuZHNoYWtlOjptb2RlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9tb2RlOworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVy
V2ViU29ja2V0T3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93c09yaWdpbjsKK30KKwor
dm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFNlcnZlcldlYlNvY2tldE9yaWdpbihjb25zdCBT
dHJpbmcmIHdlYlNvY2tldE9yaWdpbikKK3sKKyAgICBtX3dzT3JpZ2luID0gd2ViU29ja2V0T3Jp
Z2luOworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyV2ViU29j
a2V0TG9jYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX3dzTG9jYXRpb247Cit9CisKK3Zv
aWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJXZWJTb2NrZXRMb2NhdGlvbihjb25zdCBT
dHJpbmcmIHdlYlNvY2tldExvY2F0aW9uKQoreworICAgIG1fd3NMb2NhdGlvbiA9IHdlYlNvY2tl
dExvY2F0aW9uOworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVy
V2ViU29ja2V0UHJvdG9jb2woKSBjb25zdAoreworICAgIHJldHVybiBtX3dzUHJvdG9jb2w7Cit9
CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbChj
b25zdCBTdHJpbmcmIHdlYlNvY2tldFByb3RvY29sKQoreworICAgIG1fd3NQcm90b2NvbCA9IHdl
YlNvY2tldFByb3RvY29sOworfQorCitjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6
c2VydmVyU2V0Q29va2llKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZXRDb29raWU7Cit9CisK
K3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJTZXRDb29raWUoY29uc3QgU3RyaW5n
JiBzZXRDb29raWUpCit7CisgICAgbV9zZXRDb29raWUgPSBzZXRDb29raWU7Cit9CisKK2NvbnN0
IFN0cmluZyYgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJTZXRDb29raWUyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9zZXRDb29raWUyOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6
c2V0U2VydmVyU2V0Q29va2llMihjb25zdCBTdHJpbmcmIHNldENvb2tpZTIpCit7CisgICAgbV9z
ZXRDb29raWUyID0gc2V0Q29va2llMjsKK30KKworS1VSTCBXZWJTb2NrZXRIYW5kc2hha2U6Omh0
dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAoreworICAgIEtVUkwgdXJs
ID0gbV91cmwuY29weSgpOworICAgIHVybC5zZXRQcm90b2NvbChtX3NlY3VyZSA/ICJodHRwcyIg
OiAiaHR0cCIpOworICAgIHJldHVybiB1cmw7Cit9CisKK2NvbnN0IGNoYXIqIFdlYlNvY2tldEhh
bmRzaGFrZTo6cmVhZEhUVFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBl
bmQsIEhUVFBIZWFkZXJNYXAqIGhlYWRlcnMpCit7CisgICAgVmVjdG9yPGNoYXI+IG5hbWU7Cisg
ICAgVmVjdG9yPGNoYXI+IHZhbHVlOworICAgIGZvciAoY29uc3QgY2hhciogcCA9IHN0YXJ0OyBw
IDwgZW5kOyBwKyspIHsKKyAgICAgICAgbmFtZS5jbGVhcigpOworICAgICAgICB2YWx1ZS5jbGVh
cigpOworCisgICAgICAgIGZvciAoOyBwIDwgZW5kOyBwKyspIHsKKyAgICAgICAgICAgIHN3aXRj
aCAoKnApIHsKKyAgICAgICAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgICAgICAgICBpZiAobmFt
ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHAgKyAxIDwgZW5kICYmICoo
cCArIDEpID09ICdcbicpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcCArIDI7Cisg
ICAgICAgICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiQ1IgZG9lc24ndCBmb2xsb3cgTEYgcD0l
cCBlbmQ9JXAiLCBwLCBlbmQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgTE9HKE5ldHdvcmssICJVbmV4cGVjdGVkIENS
IGluIG5hbWUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGNhc2Ug
J1xuJzoKKyAgICAgICAgICAgICAgICBMT0coTmV0d29yaywgIlVuZXhwZWN0ZWQgTEYgaW4gbmFt
ZSIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgY2FzZSAnOic6Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIGlmICgqcCA+PSAweDQxICYmICpwIDw9IDB4NWEpCisgICAgICAgICAgICAgICAgICAgIG5h
bWUuYXBwZW5kKCpwICsgMHgyMCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBuYW1lLmFwcGVuZCgqcCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoKnAgPT0gJzonKSB7CisgICAgICAgICAgICAgICAg
KytwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgZm9yICg7IHAgPCBlbmQgJiYgKnAgPT0gMHgyMDsgcCsrKSB7IH0KKworICAgICAg
ICBmb3IgKDsgcCA8IGVuZDsgcCsrKSB7CisgICAgICAgICAgICBzd2l0Y2ggKCpwKSB7CisgICAg
ICAgICAgICBjYXNlICdccic6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlICdcbic6CisgICAgICAgICAgICAgICAgTE9HKE5ldHdvcmssICJVbmV4cGVjdGVkIExGIGlu
IHZhbHVlIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIHZhbHVlLmFwcGVuZCgqcCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoKnAgPT0gJ1xyJykgeworICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAocCA+
PSBlbmQgfHwgKnAgIT0gJ1xuJykgeworICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDUiBkb2Vz
bid0IGZvbGxvdyBMRiBhZnRlciB2YWx1ZSBwPSVwIGVuZD0lcCIsIHAsIGVuZCk7CisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBBdG9taWNTdHJpbmcgbmFtZVN0cihT
dHJpbmc6OmZyb21VVEY4KG5hbWUuZGF0YSgpLCBuYW1lLnNpemUoKSkpOworICAgICAgICBTdHJp
bmcgdmFsdWVTdHIgPSBTdHJpbmc6OmZyb21VVEY4KHZhbHVlLmRhdGEoKSwgdmFsdWUuc2l6ZSgp
KTsKKyAgICAgICAgTE9HKE5ldHdvcmssICJuYW1lPSVzIHZhbHVlPSVzIiwgbmFtZVN0ci5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCB2YWx1ZVN0ci51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaGVh
ZGVycy0+YWRkKG5hbWVTdHIsIHZhbHVlU3RyKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgV2ViU29ja2V0SGFuZHNoYWtlOjpwcm9j
ZXNzSGVhZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQoreworICAgIGZvciAoSFRU
UEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJzLmJlZ2luKCk7IGl0ICE9IGhl
YWRlcnMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgc3dpdGNoIChtX21vZGUpIHsKKyAgICAgICAg
Y2FzZSBOb3JtYWw6CisgICAgICAgICAgICBpZiAoaXQtPmZpcnN0ID09ICJ3ZWJzb2NrZXQtb3Jp
Z2luIikKKyAgICAgICAgICAgICAgICBtX3dzT3JpZ2luID0gaXQtPnNlY29uZDsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKGl0LT5maXJzdCA9PSAid2Vic29ja2V0LWxvY2F0aW9uIikKKyAgICAgICAg
ICAgICAgICBtX3dzTG9jYXRpb24gPSBpdC0+c2Vjb25kOworICAgICAgICAgICAgZWxzZSBpZiAo
aXQtPmZpcnN0ID09ICJ3ZWJzb2NrZXQtcHJvdG9jb2wiKQorICAgICAgICAgICAgICAgIG1fd3NQ
cm90b2NvbCA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBlbHNlIGlmIChpdC0+Zmlyc3QgPT0g
InNldC1jb29raWUiKQorICAgICAgICAgICAgICAgIG1fc2V0Q29va2llID0gaXQtPnNlY29uZDsK
KyAgICAgICAgICAgIGVsc2UgaWYgKGl0LT5maXJzdCA9PSAic2V0LWNvb2tpZTIiKQorICAgICAg
ICAgICAgICAgIG1fc2V0Q29va2llMiA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgY2FzZSBJbmNvbXBsZXRlOgorICAgICAgICBjYXNlIEZhaWxlZDoKKyAgICAg
ICAgY2FzZSBDb25uZWN0ZWQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpjaGVja1Jlc3BvbnNlSGVhZGVy
cygpCit7CisgICAgQVNTRVJUKG1fbW9kZSA9PSBOb3JtYWwpOworICAgIG1fbW9kZSA9IEZhaWxl
ZDsKKyAgICBpZiAobV93c09yaWdpbi5pc051bGwoKSB8fCBtX3dzTG9jYXRpb24uaXNOdWxsKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChjbGllbnRPcmlnaW4oKSAhPSBtX3dzT3JpZ2lu
KSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiTWlzbWF0Y2ggb3JpZ2luOiAlcyAhPSAlcyIsIGNs
aWVudE9yaWdpbigpLnV0ZjgoKS5kYXRhKCksIG1fd3NPcmlnaW4udXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGNsaWVudExvY2F0aW9uKCkgIT0gbV93c0xv
Y2F0aW9uKSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiTWlzbWF0Y2ggbG9jYXRpb246ICVzICE9
ICVzIiwgY2xpZW50TG9jYXRpb24oKS51dGY4KCkuZGF0YSgpLCBtX3dzTG9jYXRpb24udXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFtX2NsaWVudFByb3Rv
Y29sLmlzRW1wdHkoKSAmJiBtX2NsaWVudFByb3RvY29sICE9IG1fd3NQcm90b2NvbCkgeworICAg
ICAgICBMT0coTmV0d29yaywgIk1pc21hdGNoIHByb3RvY29sOiAlcyAhPSAlcyIsIG1fY2xpZW50
UHJvdG9jb2wudXRmOCgpLmRhdGEoKSwgbV93c1Byb3RvY29sLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIG1fbW9kZSA9IENvbm5lY3RlZDsKKyAgICByZXR1cm47
Cit9CisKK30gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gRU5BQkxFKFdFQl9T
T0NLRVRTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZS5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1ZGJlNjgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKQEAgLTAsMCArMSwxMTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJTb2NrZXRIYW5kc2hha2VfaAorI2RlZmluZSBXZWJTb2NrZXRIYW5kc2hha2VfaAor
CisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAg
Y2xhc3MgSFRUUEhlYWRlck1hcDsKKworICAgIGNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZSA6IHB1
YmxpYyBOb25jb3B5YWJsZSB7CisgICAgcHVibGljOgorICAgICAgICBlbnVtIE1vZGUgeworICAg
ICAgICAgICAgSW5jb21wbGV0ZSwgTm9ybWFsLCBGYWlsZWQsIENvbm5lY3RlZAorICAgICAgICB9
OworICAgICAgICBXZWJTb2NrZXRIYW5kc2hha2UoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICAgICAgfldlYlNvY2tldEhh
bmRzaGFrZSgpOworCisgICAgICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OworICAgICAgICB2
b2lkIHNldFVSTChjb25zdCBLVVJMJik7CisgICAgICAgIGNvbnN0IFN0cmluZyBob3N0KCkgY29u
c3Q7CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiBjbGllbnRQcm90b2NvbCgpIGNvbnN0OworICAg
ICAgICB2b2lkIHNldENsaWVudFByb3RvY29sKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOworCisg
ICAgICAgIGJvb2wgc2VjdXJlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2VjdXJlKGJvb2wg
c2VjdXJlKTsKKworICAgICAgICBTdHJpbmcgY2xpZW50T3JpZ2luKCkgY29uc3Q7CisgICAgICAg
IFN0cmluZyBjbGllbnRMb2NhdGlvbigpIGNvbnN0OworCisgICAgICAgIENTdHJpbmcgY2xpZW50
SGFuZHNoYWtlTWVzc2FnZSgpIGNvbnN0OworCisgICAgICAgIHZvaWQgcmVzZXQoKTsKKworICAg
ICAgICBpbnQgcmVhZFNlcnZlckhhbmRzaGFrZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBs
ZW4pOworICAgICAgICBNb2RlIG1vZGUoKSBjb25zdDsKKworICAgICAgICBjb25zdCBTdHJpbmcm
IHNlcnZlcldlYlNvY2tldE9yaWdpbigpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNlcnZlcldl
YlNvY2tldE9yaWdpbihjb25zdCBTdHJpbmcmIHdlYlNvY2tldE9yaWdpbik7CisKKyAgICAgICAg
Y29uc3QgU3RyaW5nJiBzZXJ2ZXJXZWJTb2NrZXRMb2NhdGlvbigpIGNvbnN0OworICAgICAgICB2
b2lkIHNldFNlcnZlcldlYlNvY2tldExvY2F0aW9uKGNvbnN0IFN0cmluZyYgd2ViU29ja2V0TG9j
YXRpb24pOworCisgICAgICAgIGNvbnN0IFN0cmluZyYgc2VydmVyV2ViU29ja2V0UHJvdG9jb2wo
KSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbChjb25zdCBT
dHJpbmcmIHdlYlNvY2tldFByb3RvY29sKTsKKworICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZl
clNldENvb2tpZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNlcnZlclNldENvb2tpZShjb25z
dCBTdHJpbmcmIHNldENvb2tpZSk7CisgICAgICAgIGNvbnN0IFN0cmluZyYgc2VydmVyU2V0Q29v
a2llMigpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNlcnZlclNldENvb2tpZTIoY29uc3QgU3Ry
aW5nJiBzZXRDb29raWUyKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIEtVUkwgaHR0cFVSTEZv
ckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0OworCisgICAgICAgIC8vIFJlYWRzIGFs
bCBoZWFkZXJzIGV4Y2VwdCBmb3IgdGhlIHR3byBwcmVkZWZpbmVkIG9uZXMuCisgICAgICAgIGNv
bnN0IGNoYXIqIHJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciog
ZW5kLCBIVFRQSGVhZGVyTWFwKiBoZWFkZXJzKTsKKyAgICAgICAgYm9vbCBwcm9jZXNzSGVhZGVy
cyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKTsKKyAgICAgICAgdm9pZCBjaGVja1Jlc3Bv
bnNlSGVhZGVycygpOworCisgICAgICAgIEtVUkwgbV91cmw7CisgICAgICAgIFN0cmluZyBtX2Ns
aWVudFByb3RvY29sOworICAgICAgICBib29sIG1fc2VjdXJlOworICAgICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CisKKyAgICAgICAgTW9kZSBtX21vZGU7CisKKyAgICAg
ICAgU3RyaW5nIG1fd3NPcmlnaW47CisgICAgICAgIFN0cmluZyBtX3dzTG9jYXRpb247CisgICAg
ICAgIFN0cmluZyBtX3dzUHJvdG9jb2w7CisgICAgICAgIFN0cmluZyBtX3NldENvb2tpZTsKKyAg
ICAgICAgU3RyaW5nIG1fc2V0Q29va2llMjsKKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlmICAvLyBXZWJT
b2NrZXRIYW5kc2hha2VfaApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGZkNjkyOGIuLjhjMGM5N2UgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAwOS0wOS0xMCAgRnVtaXRvc2hpIFVrYWkgIDx1a2FpQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2Vi
Q29yZS93ZWJzb2NrZXRzIGRpcmVjdG9yeSBpbiB3eCBidWlsZCBzeXN0ZW0uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODAzOAorCisgICAgICAgICog
d3gvYnVpbGQvc2V0dGluZ3MucHk6CisKIDIwMDktMDktMDkgIENhbWVyb24gTWNDb3JtYWNrICA8
Y2FtQG1jYy5pZC5hdT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL3d4L2J1aWxkL3NldHRpbmdzLnB5IGIvV2ViS2l0VG9vbHMvd3gv
YnVpbGQvc2V0dGluZ3MucHkKaW5kZXggYmU5MjY2ZS4uNWM3MjEwMSAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvd3gvYnVpbGQvc2V0dGluZ3MucHkKKysrIGIvV2ViS2l0VG9vbHMvd3gvYnVpbGQv
c2V0dGluZ3MucHkKQEAgLTEzNSw2ICsxMzUsNyBAQCB3ZWJjb3JlX2RpcnMgPSBbCiAgICAgJ3Jl
bmRlcmluZycsIAogICAgICdyZW5kZXJpbmcvc3R5bGUnLCAKICAgICAnc3RvcmFnZScsIAorICAg
ICd3ZWJzb2NrZXRzJywgCiAgICAgJ3htbCcKIF0KIApAQCAtMzMwLDcgKzMzMSwzIEBAIGRlZiBj
b21tb25fY29uZmlndXJlKGNvbmYpOgogICAgICAgICAgICAgY29uZi5jaGVja19jZmcocGFja2Fn
ZT0nZ3RrKy0yLjAnLCBhcmdzPSctLWNmbGFncyAtLWxpYnMnLCB1c2VsaWJfc3RvcmU9J1dYJykK
ICAgICAgICAgICAgIGNvbmYuY2hlY2tfY2ZnKHBhY2thZ2U9J3NxbGl0ZTMnLCBhcmdzPSctLWNm
bGFncyAtLWxpYnMnLCB1c2VsaWJfc3RvcmU9J1NRTElURTMnKQogICAgICAgICAgICAgY29uZi5j
aGVja19jZmcocGF0aD0naWN1LWNvbmZpZycsIGFyZ3M9Jy0tY2ZsYWdzIC0tbGRmbGFncycsIHBh
Y2thZ2U9JycsIHVzZWxpYl9zdG9yZT0nSUNVJykKLQotCi0KLQ==
</data>
<flag name="review"
          id="20423"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="20473"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>