<?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>22722</bug_id>
          
          <creation_ts>2008-12-07 03:24:58 -0800</creation_ts>
          <short_desc>Implement ServiceWorkerRegistration.showNotification()</short_desc>
          <delta_ts>2022-03-23 03:04:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P4</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>236545</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>atwilson</cc>
    
    <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>hi</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mkwst</cc>
    
    <cc>nham</cc>
    
    <cc>ntim</cc>
    
    <cc>simon.bluhm</cc>
    
    <cc>tomac</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>101727</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-07 03:24:58 -0800</bug_when>
    <thetext>This is the same as HTML5 Window.showNotification() (which we don&apos;t implement yet): &lt;http://www.whatwg.org/specs/web-apps/current-work/#dom-shownotification&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101739</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-07 03:59:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/6425808&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840657</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-11 20:39:45 -0800</bug_when>
    <thetext>Lets reuse this for the modern bit left that&apos;s not supported yet, that&apos;s about to be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840659</commentid>
    <comment_count>3</comment_count>
      <attachid>451771</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-11 20:56:08 -0800</bug_when>
    <thetext>Created attachment 451771
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840660</commentid>
    <comment_count>4</comment_count>
      <attachid>451772</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-11 21:06:18 -0800</bug_when>
    <thetext>Created attachment 451772
EWS v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840719</commentid>
    <comment_count>5</comment_count>
      <attachid>451789</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-12 11:34:17 -0800</bug_when>
    <thetext>Created attachment 451789
EWS v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840720</commentid>
    <comment_count>6</comment_count>
      <attachid>451790</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-12 12:39:53 -0800</bug_when>
    <thetext>Created attachment 451790
EWS v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840721</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2022-02-12 12:42:22 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840732</commentid>
    <comment_count>8</comment_count>
      <attachid>451794</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-12 14:54:04 -0800</bug_when>
    <thetext>Created attachment 451794
EWS v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840734</commentid>
    <comment_count>9</comment_count>
      <attachid>451795</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-12 15:03:07 -0800</bug_when>
    <thetext>Created attachment 451795
EWS v6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840744</commentid>
    <comment_count>10</comment_count>
      <attachid>451798</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-12 16:57:14 -0800</bug_when>
    <thetext>Created attachment 451798
EWS v7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840748</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-12 17:14:06 -0800</bug_when>
    <thetext>Filed https://bugs.webkit.org/show_bug.cgi?id=236545 to finish this off with getNotifications()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840802</commentid>
    <comment_count>12</comment_count>
      <attachid>451798</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-02-12 19:31:29 -0800</bug_when>
    <thetext>Comment on attachment 451798
EWS v7

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitNotificationProvider.cpp:122
&gt; +        // I won&apos;t make something up for them.

probably not necessary.  Unclear who &quot;I&quot; is to a future reader.

&gt; Source/WebKit/WebProcess/Notifications/WebNotificationManager.cpp:126
&gt; +template&lt;typename U&gt; bool WebNotificationManager::sendNotificationMessage(U&amp;&amp; message, Notification&amp; notification, WebPage* page)

nit: Could we pass in a std::variant&lt;WebPage&amp;, SWContextManager&amp;&gt;? or maybe std::reference_wrapper?

&gt; Tools/WebKitTestRunner/WebNotificationProvider.cpp:158
&gt; +    WKRetain(m_permissions.get());

Where&apos;s the corresponding release?

&gt; Tools/WebKitTestRunner/WebNotificationProvider.h:56
&gt; +    void setPermission(const String&amp; origin, bool allowed);

Can this have a more descriptive name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840811</commentid>
    <comment_count>13</comment_count>
      <attachid>451798</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-12 19:43:57 -0800</bug_when>
    <thetext>Comment on attachment 451798
EWS v7

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

r=me but please add change logs :)

&gt; LayoutTests/http/tests/workers/service/shownotification-allowed.html:2
&gt; +&lt;script src=&quot;/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;

Since you&apos;re not including js-test-post.js, seems you should be including js-test.js, not js-test-pre.js.

&gt; LayoutTests/http/tests/workers/service/shownotification-allowed.html:10
&gt; +        testRunner.notifyDone();

We&apos;re supposed to call finishJSTest() with js-test instead of notifyDone().

&gt; LayoutTests/http/tests/workers/service/shownotification-allowed.html:14
&gt; +    testRunner.waitUntilDone();

Can use `jsTestIsAsync = true;` since this is a js-test.

&gt; LayoutTests/http/tests/workers/service/shownotification-allowed.html:69
&gt; +            testRunner.notifyDone();

ditto about finishJSTest()

&gt; LayoutTests/http/tests/workers/service/shownotification-denied-expected.txt:3
&gt; +On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.

See how we&apos;re missing the &quot;TEST COMPLETE&quot; at the end.

&gt; LayoutTests/http/tests/workers/service/shownotification-denied.html:2
&gt; +&lt;script src=&quot;/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;

Same comments apply to this test too.

&gt; Source/WebCore/Modules/notifications/Notification.cpp:193
&gt; +        auto* context = scriptExecutionContext();

I am not convinced that calling scriptExecutionContext() on the main thread here is really safe given that this is a service worker object.

&gt; Source/WebCore/Modules/notifications/Notification.cpp:198
&gt; +        static_cast&lt;ServiceWorkerGlobalScope*&gt;(context)-&gt;postTaskToFireNotificationEvent(NotificationEventType::Click, *this, { });

should be a downcast&lt;ServiceWorkerGlobalScope&gt;(context). Then you don&apos;t need your RELEASE_ASSERT() above.

&gt; Source/WebCore/Modules/notifications/Notification.cpp:217
&gt; +        static_cast&lt;ServiceWorkerGlobalScope*&gt;(context)-&gt;postTaskToFireNotificationEvent(NotificationEventType::Close, *this, { });

ditto.

&gt; Source/WebCore/Modules/notifications/NotificationEvent.cpp:37
&gt; +    auto* notification = init.notification.get();

Given that it is required and not nullable in the IDL, I think it would be good to assert that it is not null here and pass a C++ reference to the constructor to make it clear it is non-null. Sadly, we need to keep using a RefPtr&lt;&gt; (instead of a Ref&lt;&gt;) in the struct because of bindings generator limitations.

&gt; Source/WebCore/workers/service/ServiceWorkerGlobalScope.cpp:78
&gt; +    });

Not convinced this needed to be on the next line :)

&gt; Source/WebCore/workers/service/ServiceWorkerGlobalScope.cpp:235
&gt; +            auto event = NotificationEvent::create(eventName, protectedNotification.ptr(), action, ExtendableEvent::IsTrusted::Yes);

Ideally we&apos;d pass a C++ reference to create() and drop the `.ptr()` here.

&gt; Source/WebCore/workers/service/ServiceWorkerGlobalScope.cpp:236
&gt; +            static_cast&lt;ServiceWorkerGlobalScope&amp;&gt;(scope).dispatchEvent(event);

downcast&lt;ServiceWorkerGlobalScope&gt;(scope)

&gt; Source/WebCore/workers/service/ServiceWorkerRegistration.cpp:301
&gt; +    promise.reject(Exception { TypeError, &quot;ServiceWorkerRegistration.getNotifications not yet implemented&quot;_s });

NotSupportedError may be more appropriate than TypeError here I think.

&gt; Source/WebCore/workers/service/server/SWServer.cpp:1232
&gt; +        LOG(Push, &quot;ServiceWorker import is complete, can handle push messasge now&quot;);

Typo: messasge

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2257
&gt; +        LOG(Notifications, &quot;NetworkProcess getting pending push messages for session ID %llu&quot;, sessionID.toUInt64());

Aren&apos;t we supposed to use PRIu64 to print uint64s to be nice to our Linux ports?

&gt; Source/WebKit/UIProcess/Notifications/ServiceWorkerNotificationHandler.cpp:36
&gt; +    static ServiceWorkerNotificationHandler&amp; handler = *new ServiceWorkerNotificationHandler;

Seems like what we usually use NeverDestroyed&lt;&gt; for?

Also, we probably want an ASSERT(isMainRunLoop()); in here since this is not thread safe.

&gt; Source/WebKit/UIProcess/Notifications/ServiceWorkerNotificationHandler.cpp:40
&gt; +ServiceWorkerNotificationHandler::ServiceWorkerNotificationHandler()

= default; ?

&gt; Source/WebKit/UIProcess/Notifications/ServiceWorkerNotificationHandler.cpp:64
&gt; +    m_notificationToSessionMap.set(data.notificationID, data.sourceSession);

Can the key already exist in the map? If not, add() would be more efficient.

&gt; Source/WebKit/UIProcess/Notifications/ServiceWorkerNotificationHandler.h:35
&gt; +class ServiceWorkerNotificationHandler : public NotificationManagerMessageHandler {

Class could be marked as final.

&gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp:54
&gt; +    static WebNotificationManagerProxy* sharedManager = new WebNotificationManagerProxy(nullptr);

Could use NeverDestroyed&lt;&gt;

&gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp:135
&gt;      globalNotificationIDs.reserveCapacity(m_globalNotificationMap.size());

reserveInitialCapacity() would be more efficient here since this is a brand new Vector.

&gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp:261
&gt; +    WebProcessPool::sendToAllRemoteWorkerProcesses(Messages::WebNotificationManager::DidUpdateNotificationDecision(origin-&gt;securityOrigin().toString(), allowed));

Don&apos;t you want to only send to ServiceWorker processes? Why send this to Shared Worker processes too?

&gt; Source/WebKit/UIProcess/WebProcessPool.h:838
&gt; +void WebProcessPool::sendToAllRemoteWorkerProcesses(const T&amp; message)

As mentioned above, maybe this should be named sendToAllServiceWorkerProcesses().

&gt; Source/WebKit/UIProcess/WebProcessPool.h:841
&gt; +        if (process.canSendMessage())

And then you could add a `&amp;&amp; process.isRunningServiceWorkers()` check here.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2071
&gt; +    notifications.append(notificationID);

There has got to be a way to initialize the Vector with this notificationID right away, maybe:
Vector&lt;UUID&gt; notification = { notificationID };

Trying to leverage `Vector(std::initializer_list&lt;T&gt; initializerList)`.

&gt; Source/WebKit/WebProcess/Notifications/WebNotificationManager.cpp:128
&gt; +    if (!page &amp;&amp; !notification.scriptExecutionContext())

I am not sure it is safe to call notification.scriptExecutionContext() on the main thread here if we&apos;re on the main thread and this is a Notification from a worker thread.

&gt; Source/WebKit/WebProcess/Notifications/WebNotificationManager.cpp:161
&gt; +    m_notificationIDMap.set(notification.identifier(), &amp;notification);

Can the key be already present in the map (and we need to overwrite)? If not, add() would be more efficient.

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebNotificationClient.cpp:57
&gt; +    callOnMainRunLoopAndWait([&amp;result, protectedNotification = Ref { notification }]() {

Why do we need to wait here? (I&apos;m sure there is a good reason, I&apos;m just curious).

If you do need to wait, not that you could simplify the code by dropping the `if (isMainRunLoop())` check above and only do this callOnMainRunLoopAndWait() call. callOnMainRunLoopAndWait() already calls the lambda synchronously if already on the main run loop.

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebNotificationClient.cpp:70
&gt; +    callOnMainRunLoopAndWait([protectedNotification = Ref { notification }]() {

Same comments as function above.

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebNotificationClient.cpp:85
&gt; +    callOnMainRunLoopAndWait([&amp;notification]() {

Same comments as function above.

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebNotificationClient.cpp:92
&gt; +    callOnMainRunLoop([this] {

Does it need to be asynchronous always? If not, we could call ensureOnMainRunLoop() to call synchronously when already on the main thread.

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebNotificationClient.cpp:121
&gt; +    callOnMainRunLoopAndWait([&amp;resultPermission, origin = origin-&gt;data().toString()] {

Even though it is OK right now due to the implementation of toString(), I think it would be safer / more robust to call isolatedCopy() here. isolatedCopy() is anyway optimized when called on a rvalue reference and the ref count is 1.

&gt; Tools/WebKitTestRunner/WebNotificationProvider.cpp:67
&gt; +    m_permissions = adoptWK(WKMutableDictionaryCreate());

Should be in the initializer list.

&gt; Tools/WebKitTestRunner/WebNotificationProvider.cpp:94
&gt; +        auto context = WKPageGetContext(page);

We probably don&apos;t need this local variable and the curly brackets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840845</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-12 20:14:35 -0800</bug_when>
    <thetext>Most feedback taken in stride.

Some explanation for future posterity


(In reply to Chris Dumez from comment #13)
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp:261
&gt; &gt; +    WebProcessPool::sendToAllRemoteWorkerProcesses(Messages::WebNotificationManager::DidUpdateNotificationDecision(origin-&gt;securityOrigin().toString(), allowed));
&gt; 
&gt; Don&apos;t you want to only send to ServiceWorker processes? Why send this to
&gt; Shared Worker processes too?

There&apos;s zero harm sending this to SharedWorker proceses, and I&apos;d actually made the conscious decision to send to all for general utility going forward.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/Notifications/WebNotificationManager.cpp:128
&gt; &gt; +    if (!page &amp;&amp; !notification.scriptExecutionContext())
&gt; 
&gt; I am not sure it is safe to call notification.scriptExecutionContext() on
&gt; the main thread here if we&apos;re on the main thread and this is a Notification
&gt; from a worker thread.

This function will always be called from the thread where the notification was created and natively lives.

E.g. whether the ScriptExecutionContext is a Document or SWGS, this is the right thread.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/Notifications/WebNotificationManager.cpp:161
&gt; &gt; +    m_notificationIDMap.set(notification.identifier(), &amp;notification);
&gt; 
&gt; Can the key be already present in the map (and we need to overwrite)? If
&gt; not, add() would be more efficient.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebCoreSupport/WebNotificationClient.cpp:57
&gt; &gt; +    callOnMainRunLoopAndWait([&amp;result, protectedNotification = Ref { notification }]() {
&gt; If you do need to wait, not that you could simplify the code by dropping the
&gt; `if (isMainRunLoop())` check above and only do this
&gt; callOnMainRunLoopAndWait() call. callOnMainRunLoopAndWait() already calls
&gt; the lambda synchronously if already on the main run loop.

Not a bad idea, can be used for at least a few of these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840876</commentid>
    <comment_count>15</comment_count>
      <attachid>451802</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-12 20:50:00 -0800</bug_when>
    <thetext>Created attachment 451802
Patch for landing v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841006</commentid>
    <comment_count>16</comment_count>
      <attachid>451802</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-13 08:39:30 -0800</bug_when>
    <thetext>Comment on attachment 451802
Patch for landing v1

These test failures are a general malaise with the bots right now, and not related to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841031</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-13 10:53:23 -0800</bug_when>
    <thetext>Found 5 new test failures: imported/w3c/web-platform-tests/css/css-cascade/layer-counter-style-override.html, imported/w3c/web-platform-tests/css/css-flexbox/overflow-auto-006.html, imported/w3c/web-platform-tests/css/css-flexbox/overflow-auto-008.html, imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-auto-repeat-max-size-001.html, imported/w3c/web-platform-tests/mathml/relations/html5-tree/dynamic-childlist-002.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841032</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-13 11:03:00 -0800</bug_when>
    <thetext>(In reply to EWS from comment #17)
&gt; Found 5 new test failures:
&gt; imported/w3c/web-platform-tests/css/css-cascade/layer-counter-style-override.
&gt; html,
&gt; imported/w3c/web-platform-tests/css/css-flexbox/overflow-auto-006.html,
&gt; imported/w3c/web-platform-tests/css/css-flexbox/overflow-auto-008.html,
&gt; imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-auto-
&gt; repeat-max-size-001.html,
&gt; imported/w3c/web-platform-tests/mathml/relations/html5-tree/dynamic-
&gt; childlist-002.html

There is a general malaise on the bots right now, but these specific failures aren&apos;t part of it.

That said, they also clearly look unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841039</commentid>
    <comment_count>19</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-13 11:32:13 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #18)
&gt; (In reply to EWS from comment #17)
&gt; &gt; Found 5 new test failures:
&gt; &gt; imported/w3c/web-platform-tests/css/css-cascade/layer-counter-style-override.
&gt; &gt; html,
&gt; &gt; imported/w3c/web-platform-tests/css/css-flexbox/overflow-auto-006.html,
&gt; &gt; imported/w3c/web-platform-tests/css/css-flexbox/overflow-auto-008.html,
&gt; &gt; imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-auto-
&gt; &gt; repeat-max-size-001.html,
&gt; &gt; imported/w3c/web-platform-tests/mathml/relations/html5-tree/dynamic-
&gt; &gt; childlist-002.html
&gt; 
&gt; There is a general malaise on the bots right now, but these specific
&gt; failures aren&apos;t part of it.
&gt; 
&gt; That said, they also clearly look unrelated.

Can definitely reproduce locally - rollout also fixes them.

So, a real issue.

Now on to: How the heck...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841042</commentid>
    <comment_count>20</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-13 11:41:49 -0800</bug_when>
    <thetext>*Just* the WKTR changes alone cause this. At least I have that to dig in to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841071</commentid>
    <comment_count>21</comment_count>
      <attachid>451842</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-13 14:11:26 -0800</bug_when>
    <thetext>Created attachment 451842
Patch for landing v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841072</commentid>
    <comment_count>22</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-13 14:13:45 -0800</bug_when>
    <thetext>For posterity: 


WKBundlePagePostSynchronousMessageForTesting has the bizarre and undocumented side effect of *forcing a layout*

So the timing of that call vs when the test harness scripts were included was, in fact, throwing off some CSS tests which were trying to inspect certain layout properties at certain times.

WAY too many tests rely on this layout behavior, so I&apos;m adding a second form that doesn&apos;t do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841073</commentid>
    <comment_count>23</comment_count>
      <attachid>451842</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-13 14:14:12 -0800</bug_when>
    <thetext>Comment on attachment 451842
Patch for landing v2

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

&gt; LayoutTests/http/tests/workers/service/shownotification-allowed-expected.txt:3
&gt; +On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.

Please notice that the tests are still wrong. There is no &quot;TEST COMPLETE&quot; at the end of the test. I explained how to fix this during my earlier review.

&gt; LayoutTests/http/tests/workers/service/shownotification-denied-expected.txt:3
&gt; +On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841081</commentid>
    <comment_count>24</comment_count>
      <attachid>451842</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-13 15:33:12 -0800</bug_when>
    <thetext>Comment on attachment 451842
Patch for landing v2

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

&gt; Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.h:132
&gt;  WK_EXPORT void WKBundlePagePostSynchronousMessageForTesting(WKBundlePageRef page, WKStringRef messageName, WKTypeRef messageBody, WKTypeRef* returnRetainedData);
&gt; +WK_EXPORT void WKBundlePagePostSynchronousMessageForTestingWithoutLayout(WKBundlePageRef page, WKStringRef messageName, WKTypeRef messageBody, WKTypeRef* returnRetainedData);

Ideally we&apos;d reverse the naming `WKBundlePagePostSynchronousMessageForTestingWithLayout` and `WKBundlePagePostSynchronousMessageForTesting`, so we don&apos;t start using the layout version unnecessarily.

There are a relatively low amount of usages for this function:
https://webkit-search.igalia.com/webkit/search?q=WKBundlePagePostSynchronousMessageForTesting&amp;path=&amp;case=false&amp;regexp=false

I think only the InjectedBundle.h one needs a layout, since they are used by EventSender (which is why the layout was introduced). I don&apos;t think InjectedBundle.cpp and TestRunner.cpp need it.

&gt; Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:155
&gt; +template&lt;typename T&gt; static WKRetainPtr&lt;WKTypeRef&gt; postSynchronousPageMessageWithReturnValue(const char* name, const WKRetainPtr&lt;T&gt;&amp; value, WithLayout withLayout = WithLayout::Yes)

I doubt we need the withLayout setting for postSynchronousPageMessageWithReturnValue, it can just be No all the time IMO.

postSynchronousPageMessageWithReturnValue only has 2 usages: postSynchronousPageMessageReturningBoolean and postSynchronousMessageReturningUInt64.

Those 2 functions are not really used for anything layout related:
- https://webkit-search.igalia.com/webkit/search?q=postSynchronousPageMessageReturningUInt64&amp;redirect=false
- https://webkit-search.igalia.com/webkit/search?q=postSynchronousPageMessageReturningBoolean&amp;redirect=false</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841087</commentid>
    <comment_count>25</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-13 17:10:27 -0800</bug_when>
    <thetext>Committed r289721 (247206@main): &lt;https://commits.webkit.org/247206@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451842.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841088</commentid>
    <comment_count>26</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-13 17:12:48 -0800</bug_when>
    <thetext>(In reply to Tim Nguyen (:ntim) from comment #24)
&gt; Comment on attachment 451842 [details]
&gt; Patch for landing v2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451842&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.h:132
&gt; &gt;  WK_EXPORT void WKBundlePagePostSynchronousMessageForTesting(WKBundlePageRef page, WKStringRef messageName, WKTypeRef messageBody, WKTypeRef* returnRetainedData);
&gt; &gt; +WK_EXPORT void WKBundlePagePostSynchronousMessageForTestingWithoutLayout(WKBundlePageRef page, WKStringRef messageName, WKTypeRef messageBody, WKTypeRef* returnRetainedData);
&gt; 
&gt; Ideally we&apos;d reverse the naming
&gt; `WKBundlePagePostSynchronousMessageForTestingWithLayout` and
&gt; `WKBundlePagePostSynchronousMessageForTesting`, so we don&apos;t start using the
&gt; layout version unnecessarily.
&gt; 
&gt; There are a relatively low amount of usages for this function:
&gt; https://webkit-search.igalia.com/webkit/
&gt; search?q=WKBundlePagePostSynchronousMessageForTesting&amp;path=&amp;case=false&amp;regexp
&gt; =false
&gt; 
&gt; I think only the InjectedBundle.h one needs a layout, since they are used by
&gt; EventSender (which is why the layout was introduced). I don&apos;t think
&gt; InjectedBundle.cpp and TestRunner.cpp need it.
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:155
&gt; &gt; +template&lt;typename T&gt; static WKRetainPtr&lt;WKTypeRef&gt; postSynchronousPageMessageWithReturnValue(const char* name, const WKRetainPtr&lt;T&gt;&amp; value, WithLayout withLayout = WithLayout::Yes)
&gt; 
&gt; I doubt we need the withLayout setting for
&gt; postSynchronousPageMessageWithReturnValue, it can just be No all the time
&gt; IMO.
&gt; 
&gt; postSynchronousPageMessageWithReturnValue only has 2 usages:
&gt; postSynchronousPageMessageReturningBoolean and
&gt; postSynchronousMessageReturningUInt64.
&gt; 
&gt; Those 2 functions are not really used for anything layout related:
&gt; -
&gt; https://webkit-search.igalia.com/webkit/
&gt; search?q=postSynchronousPageMessageReturningUInt64&amp;redirect=false
&gt; -
&gt; https://webkit-search.igalia.com/webkit/
&gt; search?q=postSynchronousPageMessageReturningBoolean&amp;redirect=false

When I flipped the switch unconditionally, *TONS* of tests started immediately failing.

MAYBE only the EventSender message needs the layout. But at this point I have a feeling the number of tests that incorrectly *rely* on having the layout is non-zero...

Anyways, a worthwhile endeavor to figure out, but not in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854092</commentid>
    <comment_count>27</comment_count>
      <attachid>451842</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-23 03:04:17 -0700</bug_when>
    <thetext>Comment on attachment 451842
Patch for landing v2

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

&gt; Source/WebCore/Modules/notifications/Notification.cpp:210
&gt; +        ServiceWorkerGlobalScope::ensureOnContextThread(m_contextIdentifier, [this, protectedThis = Ref { *this }](auto&amp; context) {

AIUI, there is no guarantee that the service worker is running at this point.
Spec says to fire a functional event (https://notifications.spec.whatwg.org/#fire-a-service-worker-notification-event), which would guarantee to start the service worker as needed.
We probably need to use the same path as for push events: go from UIProcess to network process and call SWServer::fireFunctionalEvent.
UIProcess would need to provide the notification data and the service worker registration URL so that we can run the corresponding service worker as needed.

I am not clear what we can do if the service worker is broken or takes some time to answer.
Is there a way we could load a page in case service worker is too slow (like we go to network in case of fetch event) from the notification data?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451771</attachid>
            <date>2022-02-11 20:56:08 -0800</date>
            <delta_ts>2022-02-11 21:06:18 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>104143</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjExNjczMDkyNDhiYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcwpAQCAtMCwwICsxLDMwIEBACisKK2xldCBt
ZXNzYWdlQ2xpZW50cyA9IGFzeW5jIGZ1bmN0aW9uKG1zZykgeyAKKyAgICBjb25zdCBhbGxDbGll
bnRzID0gYXdhaXQgY2xpZW50cy5tYXRjaEFsbCh7CisgICAgICAgIGluY2x1ZGVVbmNvbnRyb2xs
ZWQ6IHRydWUKKyAgICB9KTsKKworICAgIGZvciAoY29uc3QgY2xpZW50IG9mIGFsbENsaWVudHMp
CisgICAgICAgIGNsaWVudC5wb3N0TWVzc2FnZShtc2cpOworfQorCitzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ25vdGlmaWNhdGlvbmNsaWNrJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBh
d2FpdCBtZXNzYWdlQ2xpZW50cygiY2xpY2tlZCIpOworICAgIGV2ZW50Lm5vdGlmaWNhdGlvbi5j
bG9zZSgpOworfSk7CisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcignbm90aWZpY2F0aW9uY2xvc2Un
LCBhc3luYyBmdW5jdGlvbihldmVudCkgeworICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJjbG9z
ZWQiKTsKK30pOworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyBmdW5j
dGlvbihldmVudCkgeworICAgIC8vIFJlcGx5IGlmIHRoZSBzaG93IHN1Y2NlZWRlZCBvciBmYWls
ZWQuCisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgcmVnaXN0cmF0aW9uLnNob3dOb3RpZmljYXRp
b24oIlRoaXMgaXMgYSBub3RpZmljYXRpb24iKTsKKyAgICB9IGNhdGNoKGVycm9yKSB7CisgICAg
ICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJzaG93RmFpbGVkIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoInNob3duIik7Cit9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3Rp
ZmljYXRpb24tYWxsb3dlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmFkNTRiMDI0ZDEzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25v
dGlmaWNhdGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRl
c3RzIHRoYXQgYSBub3RpZmljYXRpb24gc2hvd24gYnkgYSBzZXJ2aWNlIHdvcmtlciBjYW4gYmUg
Y2xpY2tlZCBhbmQgY2xvc2VkLCB3aXRoIHRob3NlIGFjdGlvbnMgYmVpbmcgb2JzZXJ2YWJsZSBi
eSB0aGUgc2VydmljZSB3b3JrZXIKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgTm90aWZpY2F0aW9uLnBlcm1pc3Npb24gaXMgImdyYW50ZWQiCitQQVNTIGdvdENsaWNrZWQg
aXMgZmFsc2UKK1BBU1MgZ290Q2xvc2VkIGlzIGZhbHNlCitQQVNTIGdvdENsaWNrZWQgaXMgdHJ1
ZQorUEFTUyBnb3RDbG9zZWQgaXMgZmFsc2UKK1BBU1MgQ2xvc2UgaGFzIGJlZW4gb2JzZXJ2ZWQK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hv
d25vdGlmaWNhdGlvbi1hbGxvd2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFkNGEwMDE1Njc5NQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24t
YWxsb3dlZC5odG1sCkBAIC0wLDAgKzEsNzYgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
bm90aWZpY2F0aW9ucy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlv
biBmYWlsVGhlVGVzdChtc2cpCit7CisgICAgdGVzdEZhaWxlZChtc2cpOworICAgIGlmICh0ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVz
dFJ1bm5lci5ncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24odGVzdFVSTCk7CisgICAgc2V0
VGltZW91dCgiZmFpbFRoZVRlc3QoJ3RpbWVkIG91dCcpIiwgMTUwMDApOworfQorCitkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uIHNob3duIGJ5IGEgc2VydmljZSB3
b3JrZXIgY2FuIGJlIGNsaWNrZWQgYW5kIGNsb3NlZCwgd2l0aCB0aG9zZSBhY3Rpb25zIGJlaW5n
IG9ic2VydmFibGUgYnkgdGhlIHNlcnZpY2Ugd29ya2VyIik7CisKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygiTm90aWZpY2F0aW9uLnBlcm1pc3Npb24iLCAiZ3JhbnRlZCIpOworCithc3luYyBmdW5j
dGlvbiByZWdpc3RlclNlcnZpY2VXb3JrZXIoKSB7CisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3
YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCdyZXNvdXJjZXMvc2hvd25vdGlm
aWNhdGlvbi13b3JrZXIuanMnKTsKKyAgICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAg
ICAgcmV0dXJuIHRlc3RGYWlsZWQoIk5vIHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChy
ZWdpc3RyYXRpb24uYWN0aXZlKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1l
c3NhZ2UoIlN0YXJ0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFs
bGluZ1dvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGlu
Z1dvcmtlcikKKyAgICAgICAgZmFpbFRoZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcg
d29ya2VyIik7CisKKyAgICBpbnN0YWxsaW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRl
Y2hhbmdlIiwgKCkgPT4geworICAgICAgICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0g
ImFjdGl2YXRlZCIpIHsKKyAgICAgICAgICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2Uo
InRyeXNob3ciKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCit2YXIgZ290Q2xpY2tlZCA9IGZh
bHNlOwordmFyIGdvdENsb3NlZCA9IGZhbHNlOworCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5kYXRh
ID09ICJzaG93RmFpbGVkIikgeworICAgICAgICBmYWlsVGhlVGVzdCgiVW5leHBlY3RlZGx5IHJl
Y2VpdmVkIHRoZSBmYWlsZWQtdG8tc2hvdyBtZXNzYWdlIik7CisgICAgfSBlbHNlIGlmIChldmVu
dC5kYXRhID09ICJzaG93biIpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9ucygpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xpY2tlZCIp
IHsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZ290Q2xpY2tlZCIpOworICAgICAgICBzaG91bGRC
ZUZhbHNlKCJnb3RDbG9zZWQiKTsKKyAgICAgICAgZ290Q2xpY2tlZCA9IHRydWU7CisgICAgfSBl
bHNlIGlmIChldmVudC5kYXRhID09ICJjbG9zZWQiKSB7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgi
Z290Q2xpY2tlZCIpCisgICAgICAgIHNob3VsZEJlRmFsc2UoImdvdENsb3NlZCIpCisgICAgICAg
IGdvdENsb3NlZCA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTWVz
c2FnZSByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOworICAgIH0KKyAgICAKKyAgICBpZiAoZ290
Q2xvc2VkKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNsb3NlIGhhcyBiZWVuIG9ic2VydmVkIik7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgIH0KK30pOworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0icmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkiPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5p
ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
c2hvd25vdGlmaWNhdGlvbi1kZW5pZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uMjAxOGE0M2U1ZGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5p
ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgbm90aWZp
Y2F0aW9uIHNob3duIGJ5IGEgc2VydmljZSB3b3JrZXIgY2FuIGJlIGNsaWNrZWQgYW5kIGNsb3Nl
ZCwgd2l0aCB0aG9zZSBhY3Rpb25zIGJlaW5nIG9ic2VydmFibGUgYnkgdGhlIHNlcnZpY2Ugd29y
a2VyCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIE5vdGlmaWNhdGlvbi5w
ZXJtaXNzaW9uIGlzICJkZW5pZWQiCitQQVNTIE5vdGlmaWNhdGlvbiBmYWlsZWQgdG8gc2hvdwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zaG93
bm90aWZpY2F0aW9uLWRlbmllZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5pZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjc3NDZmN2M2NmU0NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tZGVu
aWVkLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy9ub3Rp
ZmljYXRpb25zLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGZh
aWxUaGVUZXN0KG1zZykKK3sKKyAgICB0ZXN0RmFpbGVkKG1zZyk7CisgICAgaWYgKHRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVu
bmVyLmRlbnlXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKHRlc3RVUkwpOworICAgIHNldFRpbWVv
dXQoImZhaWxUaGVUZXN0KCd0aW1lZCBvdXQnKSIsIDE1MDAwKTsKK30KKworZGVzY3JpcHRpb24o
IlRoaXMgdGVzdHMgdGhhdCBhIG5vdGlmaWNhdGlvbiBzaG93biBieSBhIHNlcnZpY2Ugd29ya2Vy
IGNhbiBiZSBjbGlja2VkIGFuZCBjbG9zZWQsIHdpdGggdGhvc2UgYWN0aW9ucyBiZWluZyBvYnNl
cnZhYmxlIGJ5IHRoZSBzZXJ2aWNlIHdvcmtlciIpOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmco
Ik5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIiwgImRlbmllZCIpOworCithc3luYyBmdW5jdGlvbiBy
ZWdpc3RlclNlcnZpY2VXb3JrZXIoKSB7CisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5h
dmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCdyZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlv
bi13b3JrZXIuanMnKTsKKyAgICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAgICAgcmV0
dXJuIHRlc3RGYWlsZWQoIk5vIHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChyZWdpc3Ry
YXRpb24uYWN0aXZlKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1lc3NhZ2Uo
IlN0YXJ0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFsbGluZ1dv
cmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGluZ1dvcmtl
cikKKyAgICAgICAgZmFpbFRoZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcgd29ya2Vy
Iik7CisKKyAgICBpbnN0YWxsaW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRlY2hhbmdl
IiwgKCkgPT4geworICAgICAgICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0gImFjdGl2
YXRlZCIpIHsKKyAgICAgICAgICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2UoInRyeXNo
b3ciKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5kYXRh
ID09ICJzaG93RmFpbGVkIikgeworICAgICAgICB0ZXN0UGFzc2VkKCJOb3RpZmljYXRpb24gZmFp
bGVkIHRvIHNob3ciKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09
ICJzaG93biIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTm90aWZpY2F0aW9uIHNob3duLCBidXQg
c2hvdWxkbid0IGhhdmUgYmVlbiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQo
Ik1lc3NhZ2UgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKKyAgICB9Cit9KTsKKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJlZ2lzdGVyU2VydmljZVdvcmtlcigpIj4KKzwv
Ym9keT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlc0ludGVybmFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2Vi
UHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCmluZGV4IDY1ZGZkNjA2OTliMC4uM2U4ZjE4NzgzM2Mx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXNJbnRlcm5hbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlc0ludGVybmFsLnlhbWwKQEAgLTY0NCw4ICs2NDQsMTAgQEAgTm90aWZpY2F0aW9u
RXZlbnRFbmFibGVkOgogICBjb25kaXRpb246IEVOQUJMRShOT1RJRklDQVRJT05fRVZFTlQpCiAg
IGRlZmF1bHRWYWx1ZToKICAgICBXZWJDb3JlOgorICAgICAgIkVOQUJMRShOT1RJRklDQVRJT05f
RVZFTlQpIjogdHJ1ZQogICAgICAgZGVmYXVsdDogZmFsc2UKICAgICBXZWJLaXQ6CisgICAgICAi
RU5BQkxFKE5PVElGSUNBVElPTl9FVkVOVCkiOiB0cnVlCiAgICAgICBkZWZhdWx0OiBmYWxzZQog
CiBPZmZzY3JlZW5DYW52YXNFbmFibGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCA2ODViMWU0ZDFhM2EuLjA4
ZTJhOGVkOGI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTQwLDcgKzQwLDkgQEAKICNpbmNsdWRlICJKU0RP
TVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgogI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25FdmVudC5o
IgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIgorI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldpbmRvd0V2ZW50TG9vcC5o
IgogI2luY2x1ZGUgIldpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtMTAyLDkgKzEwNCwxOSBAQCB2b2lkIE5vdGlmaWNh
dGlvbjo6c2hvdygpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjbGllbnQtPmNoZWNrUGVy
bWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpICE9IFBlcm1pc3Npb246OkdyYW50ZWQp
IHsKLSAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisgICAgICAgIHN3aXRjaCAobV9ub3Rp
ZmljYXRpb25Tb3VyY2UpIHsKKyAgICAgICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3Vt
ZW50OgorICAgICAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OlNlcnZpY2VXb3JrZXI6CisgICAg
ICAgICAgICAvLyBXZSBkaWQgYSBwZXJtaXNzaW9uIGNoZWNrIHdoZW4gU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbjo6c2hvd05vdGlmaWNhdGlvbigpIHdhcyBjYWxsZWQuCisgICAgICAgICAgICAv
LyBJZiBwZXJtaXNzaW9uIGhhcyBzaW5jZSBiZWVuIHJldm9rZWQsIHRoZW4gc2lsZW50bHkgZmFp
bGluZyBoZXJlIGlzIGV4cGVjdGVkIGJlaGF2aW9yLgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKwogICAgICAgICByZXR1cm47CiAgICAgfQorCiAgICAgaWYgKGNsaWVudC0+c2hvdygq
dGhpcykpCiAgICAgICAgIG1fc3RhdGUgPSBTaG93aW5nOwogfQpAQCAtMTU4LDIwICsxNzAsNTQg
QEAgdm9pZCBOb3RpZmljYXRpb246OmZpbmFsaXplKCkKIAogdm9pZCBOb3RpZmljYXRpb246OmRp
c3BhdGNoU2hvd0V2ZW50KCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
aWYgKG1fbm90aWZpY2F0aW9uU291cmNlICE9IE5vdGlmaWNhdGlvblNvdXJjZTo6RG9jdW1lbnQp
CisgICAgICAgIHJldHVybjsKKwogICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywg
VGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5z
aG93RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykp
OwogfQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbGlja0V2ZW50KCkKIHsKLSAgICBx
dWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFj
dGlvbiwgW3RoaXNdIHsKLSAgICAgICAgV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yIHdpbmRv
d0ZvY3VzQWxsb3dlZDsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKLSAgICB9KTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
c3dpdGNoIChtX25vdGlmaWNhdGlvblNvdXJjZSkgeworICAgIGNhc2UgTm90aWZpY2F0aW9uU291
cmNlOjpEb2N1bWVudDoKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlz
LCBUYXNrU291cmNlOjpVc2VySW50ZXJhY3Rpb24sIFt0aGlzXSB7CisgICAgICAgICAgICBXaW5k
b3dGb2N1c0FsbG93ZWRJbmRpY2F0b3Igd2luZG93Rm9jdXNBbGxvd2VkOworICAgICAgICAgICAg
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgfSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTm90aWZpY2F0aW9uU291cmNlOjpTZXJ2aWNlV29y
a2VyOgorICAgICAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwor
ICAgICAgICBpZiAoIWNvbnRleHQpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBSRUxF
QVNFX0FTU0VSVChjb250ZXh0LT5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKj4oY29udGV4dCktPnBvc3RU
YXNrVG9GaXJlTm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGljaywg
KnRoaXMsIHsgfSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAogdm9pZCBOb3RpZmljYXRp
b246OmRpc3BhdGNoQ2xvc2VFdmVudCgpCiB7Ci0gICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50
KCp0aGlzLCBUYXNrU291cmNlOjpVc2VySW50ZXJhY3Rpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmNsb3NlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxh
YmxlOjpObykpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzd2l0Y2ggKG1f
bm90aWZpY2F0aW9uU291cmNlKSB7CisgICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3Vt
ZW50OgorICAgICAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6
OlVzZXJJbnRlcmFjdGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xvc2VFdmVudCwg
RXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTm90aWZpY2F0aW9uU291cmNlOjpTZXJ2aWNlV29ya2VyOgorICAg
ICAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgICAgICBp
ZiAoIWNvbnRleHQpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBSRUxFQVNFX0FTU0VS
VChjb250ZXh0LT5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKj4oY29udGV4dCktPnBvc3RUYXNrVG9GaXJl
Tm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbG9zZSwgKnRoaXMsIHsg
fSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGZpbmFsaXplKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25F
dmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uRXZlbnQuY3BwCmluZGV4IDU4NzRiNzYxMDJmZi4uZTFkMjk3Yjk2YTEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25FdmVudC5jcHAKQEAgLTMwLDYgKzMwLDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE5vdGlmaWNhdGlvbkV2ZW50KTsKKworUmVmPE5v
dGlmaWNhdGlvbkV2ZW50PiBOb3RpZmljYXRpb25FdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21TdHJp
bmcmIHR5cGUsIEluaXQmJiBpbml0LCBJc1RydXN0ZWQgaXNUcnVzdGVkKQoreworICAgIGF1dG8q
IG5vdGlmaWNhdGlvbiA9IGluaXQubm90aWZpY2F0aW9uLmdldCgpOworICAgIGF1dG8gYWN0aW9u
ID0gaW5pdC5hY3Rpb247CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTm90aWZpY2F0aW9uRXZl
bnQodHlwZSwgV1RGTW92ZShpbml0KSwgbm90aWZpY2F0aW9uLCBhY3Rpb24sIGlzVHJ1c3RlZCkp
OworfQorCitSZWY8Tm90aWZpY2F0aW9uRXZlbnQ+IE5vdGlmaWNhdGlvbkV2ZW50OjpjcmVhdGUo
Y29uc3QgQXRvbVN0cmluZyYgdHlwZSwgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sIGNvbnN0
IFN0cmluZyYgYWN0aW9uLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE5vdGlmaWNhdGlvbkV2ZW50KHR5cGUsIHsgfSwgbm90aWZpY2F0aW9uLCBhY3Rp
b24sIGlzVHJ1c3RlZCkpOworfQorCitOb3RpZmljYXRpb25FdmVudDo6Tm90aWZpY2F0aW9uRXZl
bnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgTm90aWZpY2F0aW9uRXZlbnRJbml0JiYgZXZlbnRJ
bml0LCBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgY29uc3QgU3RyaW5nJiBhY3Rpb24sIElz
VHJ1c3RlZCBpc1RydXN0ZWQpCisgICAgOiBFeHRlbmRhYmxlRXZlbnQodHlwZSwgV1RGTW92ZShl
dmVudEluaXQpLCBpc1RydXN0ZWQpCisgICAgLCBtX25vdGlmaWNhdGlvbihub3RpZmljYXRpb24p
CisgICAgLCBtX2FjdGlvbihhY3Rpb24pCit7Cit9CisKIE5vdGlmaWNhdGlvbkV2ZW50Ojp+Tm90
aWZpY2F0aW9uRXZlbnQoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaAppbmRleCA5MjdlYjUwMWFkOWIu
LmIyMWMyZWQ4NGFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkV2ZW50LmgKQEAgLTMzLDE0ICszMywyNSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0gY2xhc3MgTm90aWZpY2F0aW9uRXZlbnRUeXBlIDog
Ym9vbCB7CisgICAgQ2xpY2ssCisgICAgQ2xvc2UsCit9OworCitzdHJ1Y3QgTm90aWZpY2F0aW9u
RXZlbnRJbml0IDogRXh0ZW5kYWJsZUV2ZW50SW5pdCB7CisgICAgUmVmUHRyPE5vdGlmaWNhdGlv
bj4gbm90aWZpY2F0aW9uOworICAgIFN0cmluZyBhY3Rpb247Cit9OworCiBjbGFzcyBOb3RpZmlj
YXRpb25FdmVudCBmaW5hbCA6IHB1YmxpYyBFeHRlbmRhYmxlRXZlbnQgeworICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoTm90aWZpY2F0aW9uRXZlbnQpOwogcHVibGljOgogICAgIH5Ob3RpZmlj
YXRpb25FdmVudCgpOwogCi0gICAgc3RydWN0IEluaXQgOiBFeHRlbmRhYmxlRXZlbnRJbml0IHsK
LSAgICAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uOwotICAgICAgICBTdHJp
bmcgYWN0aW9uOwotICAgIH07CisgICAgdXNpbmcgSW5pdCA9IE5vdGlmaWNhdGlvbkV2ZW50SW5p
dDsKKworICAgIHN0YXRpYyBSZWY8Tm90aWZpY2F0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
U3RyaW5nJiwgSW5pdCYmLCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsKKyAgICBzdGF0aWMg
UmVmPE5vdGlmaWNhdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYsIE5vdGlmaWNh
dGlvbiosIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsK
IAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gTm90aWZpY2F0aW9uRXZlbnRJbnRlcmZhY2VUeXBlOyB9CiAKQEAgLTQ4LDYgKzU5LDggQEAg
cHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uKCkgeyByZXR1cm4gbV9hY3Rpb247IH0K
IAogcHJpdmF0ZToKKyAgICBOb3RpZmljYXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiwgTm90
aWZpY2F0aW9uRXZlbnRJbml0JiYsIE5vdGlmaWNhdGlvbiosIGNvbnN0IFN0cmluZyYgYWN0aW9u
LCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsKKwogICAgIFJlZlB0cjxOb3RpZmljYXRpb24+
IG1fbm90aWZpY2F0aW9uOwogICAgIFN0cmluZyBtX2FjdGlvbjsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRW1wdHlTY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRW1wdHlTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMjMxYjNiZjFj
YTk4Li43MWM3MmVmOWM5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbXB0eVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRW1wdHlTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTk0LDYgKzk0LDEwIEBAIHByaXZhdGU6CiAKICAgICBj
b25zdCBTZXR0aW5nczo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fc2V0dGluZ3NWYWx1ZXM7IH0KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAg
IE5vdGlmaWNhdGlvbkNsaWVudCogbm90aWZpY2F0aW9uQ2xpZW50KCkgZmluYWwgeyByZXR1cm4g
bnVsbHB0cjsgfQorI2VuZGlmCisKICAgICBjbGFzcyBFbXB0eUV2ZW50TG9vcCBmaW5hbCA6IHB1
YmxpYyBFdmVudExvb3AgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFJlZjxFbXB0eUV2
ZW50TG9vcD4gY3JlYXRlKEpTQzo6Vk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgKaW5kZXggZDAwMGQ1OWQ1YTA1Li4wNzI3YjFmMTRhMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtODAsNiArODAs
MTAgQEAgZW51bSBjbGFzcyBMb2FkZWRGcm9tT3BhcXVlU291cmNlIDogdWludDhfdDsKIGVudW0g
Y2xhc3MgUmVmZXJyZXJQb2xpY3kgOiB1aW50OF90OwogZW51bSBjbGFzcyBUYXNrU291cmNlIDog
dWludDhfdDsKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorY2xhc3MgTm90aWZpY2F0aW9u
Q2xpZW50OworI2VuZGlmCisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiBjbGFzcyBTZXJ2
aWNlV29ya2VyOwogY2xhc3MgU2VydmljZVdvcmtlckNvbnRhaW5lcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggY2JmMjZjYjE1YmQ1Li4zZmU1
MWZkMWU0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oCkBAIC00MDMsNyArNDAzLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5P
VElGSUNBVElPTl9FVkVOVCkKLSAgICBib29sIG1fbm90aWZpY2F0aW9uRXZlbnRFbmFibGVkIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fbm90aWZpY2F0aW9uRXZlbnRFbmFibGVkIHsgdHJ1ZSB9Owog
I2VuZGlmCiAKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNvY29hLm1tCmluZGV4IDI5OWZjNGJkMmViYy4uMTBiZTAwY2NlMDAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTE4Myw3ICsxODMsNyBAQCBSZXRh
aW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9u
KENGU3RyaW5nUmVmIGlkZW50aQogCiAgICAgaWYgKHNob3VsZERpc2FibGVDRlVSTENhY2hlID09
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6U2hvdWxkRGlzYWJsZUNGVVJMQ2FjaGU6Olllcykgewog
I2lmIEhBVkUoQ0ZORVRXT1JLX0RJU0FCTEVfQ0FDSEVfU1BJKQotICAgICAgICBfQ0ZVUkxTdG9y
YWdlU2Vzc2lvbkRpc2FibGVDYWNoZShzdG9yYWdlU2Vzc2lvbi5nZXQoKSk7CisgICAgICAgIC8v
X0NGVVJMU3RvcmFnZVNlc3Npb25EaXNhYmxlQ2FjaGUoc3RvcmFnZVNlc3Npb24uZ2V0KCkpOwog
I2Vsc2UKICAgICAgICAgc2hvdWxkRGlzYWJsZUNGVVJMQ2FjaGUgPSBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OlNob3VsZERpc2FibGVDRlVSTENhY2hlOjpObzsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDFk
OGUzYWQyYWNiOS4uYTBkMTZkNzQ3MDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC05NCw2ICs5NCwxMCBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9p
ZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKKyNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIG5vdGlmaWNhdGlvbkNsaWVudCgp
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgorCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI+IG1fc2NyaXB0OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTY3JpcHRNb2R1bGVMb2FkZXI+IG1fbW9kdWxlTG9hZGVyOwogICAgIFdvcmtl
ck9yV29ya2xldFRocmVhZCogbV90aHJlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuaAppbmRleCBjZjUwYzM2OGFlNzIuLjZjZWJlY2JjNWRlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeS5oIgogI2luY2x1ZGUgIkZldGNoUmVxdWVzdENyZWRlbnRpYWxzLmgiCisjaW5j
bHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbi5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xl
dFRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJU
eXBlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDkwNGQ0ZmM4OGNhYS4uZjMzYjljMDYz
ZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkV2ZW50Lmgi
CiAjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50LmgiCkBAIC02OSw3ICs3MCwxMyBAQCBT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmJiBjbwogewogfQogCi1TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6
On5TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSA9IGRlZmF1bHQ7CitTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU6On5TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKQoreworICAgIC8vIE5vdGlmaWNh
dGlvbkNsaWVudCBtaWdodCBoYXZlIHNvbWUgaW50ZXJhY3Rpb25zIHBlbmRpbmcgd2l0aCB0aGUg
bWFpbiB0aHJlYWQsCisgICAgLy8gc28gaXQgc2hvdWxkIGFsc28gYmUgZGVzdHJveWVkIHRoZXJl
LgorICAgIGNhbGxPbk1haW5UaHJlYWQoW25vdGlmaWNhdGlvbkNsaWVudCA9IFdURk1vdmUobV9u
b3RpZmljYXRpb25DbGllbnQpXSB7CisgICAgfSk7Cit9CiAKIHZvaWQgU2VydmljZVdvcmtlckds
b2JhbFNjb3BlOjpub3RpZnlTZXJ2aWNlV29ya2VyUGFnZU9mQ3JlYXRpb25JZk5lY2Vzc2FyeSgp
CiB7CkBAIC0yMDgsNiArMjE1LDMwIEBAIHZvaWQgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpk
aWRTYXZlU2NyaXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiBzY3JpcHQsIEhhc2hNCiAgICAgfQog
fQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTl9FVkVOVCkKK3ZvaWQgU2VydmljZVdvcmtlckds
b2JhbFNjb3BlOjpwb3N0VGFza1RvRmlyZU5vdGlmaWNhdGlvbkV2ZW50KE5vdGlmaWNhdGlvbkV2
ZW50VHlwZSBldmVudFR5cGUsIE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBjb25zdCBTdHJp
bmcmIGFjdGlvbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgdGhyZWFk
KCkucnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbZXZlbnRUeXBlLCBwcm90ZWN0ZWROb3RpZmlj
YXRpb24gPSBSZWYgeyBub3RpZmljYXRpb24gfSwgYWN0aW9uID0gYWN0aW9uLmlzb2xhdGVkQ29w
eSgpXShhdXRvJiBzY29wZSkgeworICAgICAgICBzY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2so
VGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbJnNjb3BlLCBwcm90ZWN0ZWRTY29wZSA9IFJl
ZiB7IHNjb3BlIH0sIGV2ZW50VHlwZSwgcHJvdGVjdGVkTm90aWZpY2F0aW9uLCBhY3Rpb25dIHsK
KyAgICAgICAgICAgIEF0b21TdHJpbmcgZXZlbnROYW1lOworICAgICAgICAgICAgc3dpdGNoIChl
dmVudFR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGlj
azoKKyAgICAgICAgICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkubm90aWZpY2F0aW9u
Y2xpY2tFdmVudDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTm90
aWZpY2F0aW9uRXZlbnRUeXBlOjpDbG9zZToKKyAgICAgICAgICAgICAgICBldmVudE5hbWUgPSBl
dmVudE5hbWVzKCkubm90aWZpY2F0aW9uY2xvc2VFdmVudDsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byBldmVudCA9IE5vdGlmaWNhdGlv
bkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBwcm90ZWN0ZWROb3RpZmljYXRpb24ucHRyKCksIGFj
dGlvbiwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CisgICAgICAgICAgICBzdGF0
aWNfY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmPihzY29wZSkuZGlzcGF0Y2hFdmVudChl
dmVudCk7CisgICAgICAgIH0pOworICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkp
OworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCAwNzA3OWYxOTUzNDMuLjUx
MGMxYjA3MmI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMzksMTEgKzM5LDE0IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIEV4dGVuZGFibGVF
dmVudDsKIGNsYXNzIFBhZ2U7Ci1zdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGE7CiBjbGFz
cyBTZXJ2aWNlV29ya2VyQ2xpZW50OwogY2xhc3MgU2VydmljZVdvcmtlckNsaWVudHM7CiBjbGFz
cyBTZXJ2aWNlV29ya2VyVGhyZWFkOwogCitlbnVtIGNsYXNzIE5vdGlmaWNhdGlvbkV2ZW50VHlw
ZSA6IGJvb2w7CisKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsKKwogY2xhc3MgU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlIGZpbmFsIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3BlIHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk7CiBw
dWJsaWM6CkBAIC04MCw3ICs4MywxMSBAQCBwdWJsaWM6CiAgICAgRmV0Y2hPcHRpb25zOjpEZXN0
aW5hdGlvbiBkZXN0aW5hdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEZldGNoT3B0aW9uczo6
RGVzdGluYXRpb246OlNlcnZpY2V3b3JrZXI7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2Uq
IHNlcnZpY2VXb3JrZXJQYWdlKCk7Ci0gICAgCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VW
RU5UKQorICAgIHZvaWQgcG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChOb3RpZmljYXRp
b25FdmVudFR5cGUsIE5vdGlmaWNhdGlvbiYsIGNvbnN0IFN0cmluZyYgYWN0aW9uKTsKKyNlbmRp
ZgorCiBwcml2YXRlOgogICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmJiwgU2VydmljZVdvcmtlckRhdGEmJiwgY29uc3QgV29ya2VyUGFyYW1ldGVy
cyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgU2VydmljZVdvcmtlclRocmVhZCYsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Kiwg
U29ja2V0UHJvdmlkZXIqLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiYmLCBQ
QUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBub3RpZnlTZXJ2aWNlV29ya2VyUGFnZU9mQ3JlYXRp
b25JZk5lY2Vzc2FyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDUwMTc4MWY3MGQ1
Zi4uMTVmMmI2YmNmNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0zMCwxMCArMzAs
MTMgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25QcmVsb2FkTWFuYWdlci5oIgorI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb24u
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNv
bnRhaW5lci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgpAQCAtMjY0LDIwICsy
NjcsMzggQEAgTmF2aWdhdGlvblByZWxvYWRNYW5hZ2VyJiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uOjpuYXZpZ2F0aW9uUHJlbG9hZCgpCiB9CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VW
RU5UKQotdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBOb3RpZmlj
YXRpb25PcHRpb25zJiBvcHRpb25zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNl
KQordm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE5v
dGlmaWNhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsKLSAgICBVTlVTRURfUEFSQU0ob3B0
aW9ucyk7CisgICAgaWYgKCFtX2FjdGl2ZVdvcmtlcikgeworICAgICAgICBwcm9taXNlLnJlamVj
dChFeGNlcHRpb24geyBUeXBlRXJyb3IsICJSZWdpc3RyYXRpb24gZG9lcyBub3QgaGF2ZSBhbiBh
Y3RpdmUgd29ya2VyIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byog
Y2xpZW50ID0gY29udGV4dC5ub3RpZmljYXRpb25DbGllbnQoKTsKKyAgICBpZiAoIWNsaWVudCkg
eworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsICJSZWdpc3Ry
YXRpb24gbm90IGFjdGl2ZSJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIHBy
b21pc2UucmVqZWN0KCk7CisgICAgaWYgKGNsaWVudC0+Y2hlY2tQZXJtaXNzaW9uKCZjb250ZXh0
KSAhPSBOb3RpZmljYXRpb25QZXJtaXNzaW9uOjpHcmFudGVkKSB7CisgICAgICAgIHByb21pc2Uu
cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlJlZ2lzdHJhdGlvbiBkb2VzIG5vdCBoYXZl
IHBlcm1pc3Npb24gdG8gc2hvdyBub3RpZmljYXRpb25zIl9zIH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gVGhlIE5vdGlmaWNhdGlvbiBpcyBrZXB0IGFsaXZlIGJ5IHZpcnR1
ZSBvZiBiZWluZyBzaG93KCknbiBzb29uLgorICAgIC8vIEZJWE1FOiBXaGVuIGltcGxlbWVudGlu
ZyBnZXROb3RpZmljYXRpb25zKCksIHN0b3JlIHRoaXMgTm90aWZpY2F0aW9uIGluIHRoZSByZWdp
c3RyYXRpb24ncyBub3RpZmljYXRpb24gbGlzdC4KKyAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IE5v
dGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnRleHQsIHRpdGxlLCBvcHRpb25zKTsKKworICAgIGNvbnRl
eHQuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgpIG11dGFibGUgeworICAgICAgICBwcm9taXNlLnJl
c29sdmUoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpn
ZXROb3RpZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBHZXROb3RpZmlj
YXRpb25PcHRpb25zJiBmaWx0ZXIsIERPTVByb21pc2VEZWZlcnJlZDxJRExTZXF1ZW5jZTxJRExE
T01TdHJpbmc+PiBwcm9taXNlKQogewogICAgIFVOVVNFRF9QQVJBTShmaWx0ZXIpOwogCi0gICAg
cHJvbWlzZS5yZWplY3QoKTsKLQorICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciwgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uZ2V0Tm90aWZpY2F0aW9ucyBub3QgeWV0
IGltcGxlbWVudGVkIl9zIH0pOwogfQogI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05fRVZF
TlQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBjMGUwMzYzNmIxODkuLjAwYzA0MmQ0ZmYwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFF1
ZXJ5T3B0aW9ucy5oIgpAQCAtNzAsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsK
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCA9IDA7CisgICAg
ICAgIHZpcnR1YWwgUGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIoKSBjb25zdCA9IDAgOwog
CiAgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc2VkOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggOGM4MWM3YjEwN2VjLi5lMmU0MDhiMTA5
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0yNzksNiArMjc5LDEwIEBAIHZv
aWQgU2VydmljZVdvcmtlclRocmVhZDo6c3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
LCBib29sKT4mJiBjYWxsYmFjaykKICAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7CiAKICAgICBX
b3JrZXJUaHJlYWQ6OnN0YXJ0KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XShhdXRvJiBlcnJvck1lc3NhZ2UpIG11dGFibGUgeworI2lm
bmRlZiBOREVCVUcKKyAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciB0aHJlYWQgZmFpbGVkIHRv
IHN0YXJ0OiAlcyIsIGVycm9yTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgogICAgICAg
ICBib29sIGRvZXNIYW5kbGVGZXRjaCA9IHRydWU7CiAgICAgICAgIGlmICh3ZWFrVGhpcykgewog
ICAgICAgICAgICAgd2Vha1RoaXMtPmZpbmlzaGVkU3RhcnRpbmcoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmgKaW5kZXggMGE0YmM3ZmY0OTQyLi5lNWNiNWMxZGQxNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIENh
Y2hlU3RvcmFnZVByb3ZpZGVyOwogY2xhc3MgRmV0Y2hMb2FkZXI7CiBjbGFzcyBGZXRjaExvYWRl
ckNsaWVudDsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOworY2xhc3MgTm90aWZpY2F0aW9uQ2xp
ZW50OwogY2xhc3MgU2VydmljZVdvcmtlckluc3BlY3RvclByb3h5Owogc3RydWN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTsKIGVudW0gY2xhc3MgV29ya2VyVGhyZWFkTW9kZSA6IGJvb2w7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
CmluZGV4IDM5ZmUxYjc4N2RhNy4uOGUyYmE4OTRiOWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTYzLDYgKzE2Myw3
IEBAIHZvaWQgU1dTZXJ2ZXI6OndoZW5JbXBvcnRJc0NvbXBsZXRlZElmTmVlZGVkKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjCiAKIHZvaWQgU1dTZXJ2ZXI6OnJlZ2lzdHJhdGlv
blN0b3JlRGF0YWJhc2VGYWlsZWRUb09wZW4oKQogeworICAgIExPRyhTZXJ2aWNlV29ya2VyLCAi
RmFpbGVkIHRvIG9wZW4gU1cgcmVnaXN0cmF0aW9uIGRhdGFiYXNlIik7CiAgICAgQVNTRVJUKCFt
X2ltcG9ydENvbXBsZXRlZCk7CiAgICAgaWYgKCFtX2ltcG9ydENvbXBsZXRlZCkKICAgICAgICAg
cmVnaXN0cmF0aW9uU3RvcmVJbXBvcnRDb21wbGV0ZSgpOwpAQCAtMTczLDYgKzE3NCw4IEBAIHZv
aWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmJiBkYXRhKQogICAgIC8vIFBhZ2VzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFibGUgdG8g
bWFrZSBhIG5ldyByZWdpc3RyYXRpb24gdG8gdGhpcyBrZXkgd2hpbGUgdGhlIGltcG9ydCB3YXMg
c3RpbGwgdGFraW5nIHBsYWNlLgogICAgIEFTU0VSVCghbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFw
LmNvbnRhaW5zKGRhdGEucmVnaXN0cmF0aW9uLmtleSkpOwogCisgICAgTE9HKFNlcnZpY2VXb3Jr
ZXIsICJBZGRpbmcgcmVnaXN0cmF0aW9uIGZyb20gc3RvcmUgZm9yICVzIiwgZGF0YS5yZWdpc3Ry
YXRpb24ua2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIGF1dG8gcmVn
aXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbihkYXRhLnNjcmlwdFVS
TCk7CiAgICAgdmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4ocmVnaXN0cmFibGVEb21haW4sIFNl
cnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlciwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSAoYm9vbCBpc1ZhbGlkKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTE5OCw2ICsyMDEsOCBAQCB2b2lkIFNXU2VydmVy
OjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySQogCiB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVf
cHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJhdGlvbikKIHsKKyAgICBMT0coU2Vy
dmljZVdvcmtlciwgIkFkZGluZyByZWdpc3RyYXRpb24gbGl2ZSBmb3IgJXMiLCByZWdpc3RyYXRp
b24tPmtleSgpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIGlmICghbV9z
Y29wZVRvUmVnaXN0cmF0aW9uTWFwLmNvbnRhaW5zKHJlZ2lzdHJhdGlvbi0+a2V5KCkpICYmICFT
ZWN1cml0eU9yaWdpbjo6aXNMb2NhbEhvc3RPckxvb3BiYWNrSVBBZGRyZXNzKHJlZ2lzdHJhdGlv
bi0+a2V5KCkudG9wT3JpZ2luKCkuaG9zdCkpCiAgICAgICAgIG1fdW5pcXVlUmVnaXN0cmF0aW9u
Q291bnQrKzsKIApAQCAtMTIyNCwyMCArMTIyOSwyNCBAQCB2b2lkIFNXU2VydmVyOjpzb2Z0VXBk
YXRlKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCiB2b2lkIFNXU2VydmVyOjpw
cm9jZXNzUHVzaE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYgZGF0YSwg
VVJMJiYgcmVnaXN0cmF0aW9uVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNh
bGxiYWNrKQogewogICAgIHdoZW5JbXBvcnRJc0NvbXBsZXRlZElmTmVlZGVkKFt0aGlzLCB3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgcmVnaXN0cmF0
aW9uVVJMID0gV1RGTW92ZShyZWdpc3RyYXRpb25VUkwpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBMT0coUHVzaCwgIlNlcnZpY2VXb3JrZXIgaW1w
b3J0IGlzIGNvbXBsZXRlLCBjYW4gaGFuZGxlIHB1c2ggbWVzc2FzZ2Ugbm93Iik7CiAgICAgICAg
IGlmICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQorCiAgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tVVJMKHJlZ2lzdHJhdGlvblVSTCk7CiAgICAgICAgIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0aW9uS2V5IHsgV1RGTW92ZShvcmlnaW4pLCBXVEZN
b3ZlKHJlZ2lzdHJhdGlvblVSTCkgfTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBtX3Nj
b3BlVG9SZWdpc3RyYXRpb25NYXAuZ2V0KHJlZ2lzdHJhdGlvbktleSk7CiAgICAgICAgIGlmICgh
cmVnaXN0cmF0aW9uKSB7CisgICAgICAgICAgICBMT0coUHVzaCwgIkNhbm5vdCBwcm9jZXNzIHB1
c2ggbWVzc2FzZ2U6IEZhaWxlZCB0byBmaW5kIFNXIHJlZ2lzdHJhdGlvbiBmb3IgcmVnaXN0cmF0
aW9uIGtleSAlcyIsIHJlZ2lzdHJhdGlvbktleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCiAgICAgICAgIGF1dG8qIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi0+YWN0aXZlV29y
a2VyKCk7CiAgICAgICAgIGlmICghd29ya2VyKSB7CisgICAgICAgICAgICBMT0coUHVzaCwgIkNh
bm5vdCBwcm9jZXNzIHB1c2ggbWVzc2FzZ2U6IE5vIGFjdGl2ZSB3b3JrZXIgZm9yIHJlZ2lzdHJh
dGlvbiBrZXkgJXMiLCByZWdpc3RyYXRpb25LZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTEyNTMsNyArMTI2Miw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnByb2Nlc3NQdXNo
TWVzc2FnZShzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiBkYXRhLCBVUkwmJiByCiAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlRlcm1pbmF0
aW5nIHNlcnZpY2Ugd29ya2VyIGFzIHByb2Nlc3NpbmcgcHVzaCBldmVudCB0b29rIHRvbyBtdWNo
IHRpbWUiKTsKICAgICAgICAgICAgICAgICB3b3JrZXItPnRlcm1pbmF0ZSgpOwogICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVXb3JrZXJUaW1lci0+c3RhcnRPbmVTaG90KHdl
YWtUaGlzICYmIHdlYWtUaGlzLT5tX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID8g
ZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgOiAyX3MpOworICAgICAgICAgICAgLy90ZXJtaW5hdGVX
b3JrZXJUaW1lci0+c3RhcnRPbmVTaG90KHdlYWtUaGlzICYmIHdlYWtUaGlzLT5tX2lzUHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID8gZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgOiAyX3Mp
OwogICAgICAgICAgICAgY29ubmVjdGlvbk9yU3RhdHVzLnZhbHVlKCktPmZpcmVQdXNoRXZlbnQo
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIGRhdGEsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCB0ZXJtaW5hdGVXb3JrZXJUaW1lciA9IFdURk1vdmUodGVybWluYXRlV29ya2VyVGltZXIp
XShib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRlcm1pbmF0
ZVdvcmtlclRpbWVyLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hdGVX
b3JrZXJUaW1lci0+c3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAppbmRleCA3Yzc5ZTJhMjA5NzYuLjBmYjBkMTI4NzljNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIz
MjAsMTcgKzIzMjAsMjIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UGVuZGluZ1B1c2hNZXNz
YWdlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb24KIHsKICNpZiBFTkFCTEUo
QlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJOZXR3b3Jr
UHJvY2VzcyBnZXR0aW5nIHBlbmRpbmcgcHVzaCBtZXNzYWdlcyBmb3Igc2Vzc2lvbiBJRCAlbGx1
Iiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwogICAgICAgICBzZXNzaW9uLT5ub3RpZmljYXRpb25N
YW5hZ2VyKCkuZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIExPRyhOb3RpZmljYXRpb25z
LCAiTmV0d29ya1Byb2Nlc3MgY291bGQgbm90IGZpbmQgc2Vzc2lvbiBmb3IgSUQgJWxsdSB0byBn
ZXQgcGVuZGluZyBwdXNoIG1lc3NhZ2VzIiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwogI2VuZGlm
CiAgICAgY2FsbGJhY2soeyB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1
c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiBwdXNo
TWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKLSAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIExP
RyhQdXNoLCAiTmV0d29ya2luZyBwcm9jZXNzIGhhbmRsaW5nIGEgcHVzaCBtZXNzYWdlIGZyb20g
VUkgcHJvY2VzcyBpbiBzZXNzaW9uICVsbHUiLCBzZXNzaW9uSUQudG9VSW50NjQoKSk7CiAgICAg
ICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkucHJvY2Vzc1B1c2hNZXNzYWdlKFdURk1vdmUo
cHVzaE1lc3NhZ2UucHVzaERhdGEpLCBXVEZNb3ZlKHB1c2hNZXNzYWdlLnJlZ2lzdHJhdGlvblVS
TCksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICB9IGVsc2UKKyAgICAgICAgTE9HKFB1c2gsICJO
ZXR3b3JraW5nIHByb2Nlc3MgYXNrZWQgdG8gaGFuZGxlIGEgcHVzaCBtZXNzYWdlIGZyb20gVUkg
cHJvY2VzcyBpbiBzZXNzaW9uICVsbHUsIGJ1dCB0aGF0IHNlc3Npb24gZG9lc24ndCBleGlzdCIs
IHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0
aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmlu
ZGV4IDE3Y2VmOTE0YWI4Ni4uNDg2Y2I1YjNkZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTkzLDEzICs5MywxNCBAQCB2b2lkIE5ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25Q
ZXJtaXNzaW9ucyhDbwogdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Z2V0UGVuZGlu
Z1B1c2hNZXNzYWdlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNo
TWVzc2FnZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4mJik+IHJlcGx5SGFuZGxlciA9IFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVjdG9yPFdlYlB1c2hN
ZXNzYWdlPiYmIG1lc3NhZ2VzKSBtdXRhYmxlIHsKKyAgICAgICAgTE9HKFB1c2gsICJEb25lIGdl
dHRpbmcgcHVzaCBtZXNzYWdlcyIpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KG1lc3NhZ2VzKSk7CiAgICAgfTsKIAogICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PFdlYlB1c2hE
OjpNZXNzYWdlVHlwZTo6R2V0UGVuZGluZ1B1c2hNZXNzYWdlcz4oV1RGTW92ZShyZXBseUhhbmRs
ZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvd05vdGlmaWNh
dGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikKK3ZvaWQgTmV0d29ya05vdGlm
aWNhdGlvbk1hbmFnZXI6OnNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
LmgKaW5kZXggYTkyYmQyZjViZDE3Li41MmE2Mzg0YmFiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9O
ZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAg
ICAgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJp
bmcmIHdlYlB1c2hNYWNoU2VydmljZU5hbWUpOwogCiAgICAgdm9pZCByZXF1ZXN0U3lzdGVtTm90
aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7Ci0gICAgdm9pZCBzaG93Tm90aWZpY2F0aW9u
KGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHNob3dO
b3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGF0YSYpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5v
dGlmaWNhdGlvbklEKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBW
ZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7CiAgICAgdm9pZCBkaWREZXN0cm95
Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9Mb2dnaW5nLmgKaW5kZXggMWM0MmQwNDBjMWE5Li41ZmNjY2RhYjI0YjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vTG9nZ2luZy5oCkBAIC04MCw2ICs4MCw3IEBAIGV4dGVybiAiQyIgewogICAgIE0o
TmV0d29ya0NhY2hlU3RvcmFnZSkgXAogICAgIE0oTmV0d29ya1NjaGVkdWxpbmcpIFwKICAgICBN
KE5ldHdvcmtTZXNzaW9uKSBcCisgICAgTShOb3RpZmljYXRpb25zKSBcCiAgICAgTShQZXJmb3Jt
YW5jZUxvZ2dpbmcpIFwKICAgICBNKFBsdWdpbnMpIFwKICAgICBNKFByaW50aW5nKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAppbmRleCBhN2UzNmNkY2ExODEu
LjlmOTk2YWExMzZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ci5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBzZWN1cml0eU9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlm
aWNhdGlvbklEcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9u
KGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluCmluZGV4IDQ4OWIwYjZhZDBm
Ny4uMzdjY2RkZjFmYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBAQAogCiBtZXNzYWdlcyAt
PiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIgTm90UmVmQ291bnRlZCB7CiAgICAg
UmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oU3RyaW5nIG9yaWdpbklkZW50aWZp
ZXIpIC0+IChib29sIGFsbG93ZWQpIEFzeW5jCi0gICAgU2hvd05vdGlmaWNhdGlvbihzdHJ1Y3Qg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSBub3RpZmljYXRpb25EYXRhKQorICAgIFNob3dOb3Rp
ZmljYXRpb24oc3RydWN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEgbm90aWZpY2F0aW9uRGF0
YSkgV2FudHNDb25uZWN0aW9uCiAgICAgQ2FuY2VsTm90aWZpY2F0aW9uKFVVSUQgbm90aWZpY2F0
aW9uSUQpCiAgICAgQ2xlYXJOb3RpZmljYXRpb25zKFZlY3RvcjxVVUlEPiBub3RpZmljYXRpb25J
RHMpCiAgICAgRGlkRGVzdHJveU5vdGlmaWNhdGlvbihVVUlEIG5vdGlmaWNhdGlvbklEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKaW5kZXggNTdlZjNiMTRlYWYyLi43N2JlMDRkMWM1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAt
NTc0LDYgKzU3NCw3IEBAIFVJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRy
YXRvclByb3h5LmNwcAogVUlQcm9jZXNzL01lZGlhL01lZGlhVXNhZ2VNYW5hZ2VyLmNwcAogVUlQ
cm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwCiAKK1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmNw
cAogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcAogVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAog
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5vdGlmaWNhdGlvblBy
b3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTm90aWZpY2F0aW9uUHJv
dmlkZXIuaAppbmRleCBjNDgxM2FhNTE2NTAuLmY3M2M1ODhmNjU0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAg
LTQyLDcgKzQyLDcgQEAgY2xhc3MgTm90aWZpY2F0aW9uUHJvdmlkZXIgewogcHVibGljOgogICAg
IHZpcnR1YWwgfk5vdGlmaWNhdGlvblByb3ZpZGVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVh
bCB2b2lkIHNob3coV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlv
biYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzaG93KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKFdlYktp
dDo6V2ViTm90aWZpY2F0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lOb3Rp
ZmljYXRpb24oV2ViS2l0OjpXZWJOb3RpZmljYXRpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIC8qbm90aWZpY2F0aW9u
SURzKi8pIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tO
b3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggODJiYjk1MWU1YzFlLi5kNTM4ZGI1NDA3Nzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9u
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcApAQCAtNzgsMyArNzgsOCBAQCB2b2lkIFdLTm90aWZpY2F0aW9uTWFu
YWdlclByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoV0tOb3RpZmljYXRpb25N
YQogewogICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRp
b25Qb2xpY2llcyh0b0ltcGwob3JpZ2lucykpOwogfQorCitXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYgV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlv
bk1hbmFnZXIoKQoreworICAgIHJldHVybiB0b0FQSSgmV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKaW5kZXggNzll
ZGJmNThjZTQzLi4zNGJiNWVjMGIxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC00Myw2ICs0Myw4IEBAIFdL
X0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmlj
YXRpb25zKFdLTm90aWZpY2F0aW9uCiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJQcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFn
ZXJSZWYgbWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGJvb2wgYWxsb3dl
ZCk7CiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFJlbW92
ZU5vdGlmaWNhdGlvblBvbGljaWVzKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVm
LCBXS0FycmF5UmVmIG9yaWdpbnMpOwogCitXS19FWFBPUlQgV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UmVmIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b25NYW5hZ2VyKCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bQppbmRleCBmOTEzNDgzZGVkYTAuLmVhYTJhZDYyMTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0z
OCw2ICszOCw3IEBACiAjaW1wb3J0ICJXS1NlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhUmVjb3JkSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQdXNoTWVzc2FnZS5oIgogI2ltcG9ydCAi
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCkBAIC02NTksNiArNjYwLDEyIEBAIHN0
YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9XZWJzaXRlRGF0YVJlY29y
ZHMoTlNBcnJheSAqZGF0YVJlY29yCiAgICAgcmV0dXJuIHdyYXBwZXIoX3dlYnNpdGVEYXRhU3Rv
cmUtPmNvbmZpZ3VyYXRpb24oKS5jb3B5KCkpOwogfQogCisrIChXS05vdGlmaWNhdGlvbk1hbmFn
ZXJSZWYpX3NoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyCit7CisgICAgTE9H
KFB1c2gsICJBY2Nlc3NpbmcgX3NoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2Vy
Iik7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpKTsKK30KKwogLSAodm9pZClf
YWxsb3dUTFNDZXJ0aWZpY2F0ZUNoYWluOihOU0FycmF5ICopY2VydGlmaWNhdGVDaGFpbiBmb3JI
b3N0OihOU1N0cmluZyAqKWhvc3QKIHsKICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+YWxsb3dTcGVj
aWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbygoX19i
cmlkZ2UgQ0ZBcnJheVJlZiljZXJ0aWZpY2F0ZUNoYWluKSwgaG9zdCk7CkBAIC03NzEsMTIgKzc3
OCwxNSBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0
ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogCiAtKHZvaWQpX2dldFBlbmRpbmdQdXNo
TWVzc2FnZXM6KHZvaWQoXikoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyAgICBMT0coUHVzaCwgIkdldHRpbmcgcGVuZGluZyBwdXNoIG1lc3NhZ2VzIik7
CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5l
dHdvcmtQcm9jZXNzKCkuZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhfd2Vic2l0ZURhdGFTdG9yZS0+
c2Vzc2lvbklEKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildIChjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQdXNoTWVzc2FnZT4mIG1lc3NhZ2Vz
KSB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5Om1lc3NhZ2VzLnNpemUoKV0pOwogICAgICAgICBmb3IgKGF1dG8m
IG1lc3NhZ2UgOiBtZXNzYWdlcykKICAgICAgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0Om1lc3Nh
Z2UudG9EaWN0aW9uYXJ5KCldOwogCisgICAgICAgIExPRyhQdXNoLCAiR2l2aW5nIGFwcGxpY2F0
aW9uICV1IHBlbmRpbmcgcHVzaCBtZXNzYWdlcyIsIG1lc3NhZ2VzLnNpemUoKSk7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdC5nZXQoKSk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTc4
NywxMSArNzk3LDE0IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4g
dG9XZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIGF1dG8gcHVzaE1lc3NhZ2UgPSBXZWJLaXQ6OldlYlB1c2hNZXNzYWdl
Ojpmcm9tRGljdGlvbmFyeShwdXNoTWVzc2FnZURpY3Rpb25hcnkpOwogICAgIGlmICghcHVzaE1l
c3NhZ2UpIHsKKyAgICAgICAgTE9HKFB1c2gsICJBc2tlZCB0byBoYW5kbGUgYW4gaW52YWxpZCBw
dXNoIG1lc3NhZ2UiKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCisgICAgTE9HKFB1c2gsICJTZW5kaW5nIHB1c2ggbWVzc2FnZSB0
byBuZXR3b3JrIHByb2Nlc3MgdG8gaGFuZGxlIik7CiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5l
dHdvcmtQcm9jZXNzKCkucHJvY2Vzc1B1c2hNZXNzYWdlKF93ZWJzaXRlRGF0YVN0b3JlLT5zZXNz
aW9uSUQoKSwgKnB1c2hNZXNzYWdlLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCB3YXNQcm9jZXNzZWQpIHsKKyAgICAgICAgTE9HKFB1
c2gsICJQdXNoIG1lc3NhZ2UgcHJvY2Vzc2luZyBjb21wbGV0ZS4gQ2FsbGJhY2sgcmVzdWx0OiAl
aSIsIHdhc1Byb2Nlc3NlZCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdhc1Byb2Nlc3Nl
ZCk7CiAgICAgfSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDMxYTg1
NDA3NDE0ZC4uYzM2ZTExMzFmMDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTk2
LDYgKzk2LDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRh
U3RvcmVGZXRjaE9wdGlvbnMpIHsKIEBwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21pYywgd2Vh
aykgaWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4gX2RlbGVnYXRlIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5LCBjb3B5KSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqX2NvbmZpZ3Vy
YXRpb247CiAKKysgKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZilfc2hhcmVkU2VydmljZVdvcmtl
ck5vdGlmaWNhdGlvbk1hbmFnZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfdGVybWluYXRlTmV0d29ya1Byb2Nlc3MgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3NlbmROZXR3
b3JrUHJvY2Vzc1ByZXBhcmVUb1N1c3BlbmQ6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRs
ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3Nl
bmROZXR3b3JrUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEyLjApLCBpb3MoMTUuMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb25IYW5kbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjM2M2Q4YzEyNDI3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuY3BwCkBAIC0w
LDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCIKKworI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRhdGEuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyJiBTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMg
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXImIGhhbmRsZXIgPSAqbmV3IFNlcnZpY2VX
b3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOworICAgIHJldHVybiBoYW5kbGVyOworfQorCitTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhh
bmRsZXIoKQoreworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOjpy
ZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK1dlYnNpdGVEYXRhU3RvcmUqIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25I
YW5kbGVyOjpkYXRhU3RvcmVGb3JOb3RpZmljYXRpb25JRChjb25zdCBVVUlEJiBub3RpZmljYXRp
b25JRCkKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9ub3RpZmljYXRpb25Ub1Nlc3Npb25NYXAu
ZmluZChub3RpZmljYXRpb25JRCk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fbm90aWZpY2F0aW9u
VG9TZXNzaW9uTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChpdGVyYXRv
ci0+dmFsdWUpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOjpz
aG93Tm90aWZpY2F0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSkKK3sKKyAgICBhdXRvKiBkYXRhU3RvcmUgPSBXZWJz
aXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChkYXRhLnNvdXJjZVNl
c3Npb24pOworICAgIGlmICghZGF0YVN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX25v
dGlmaWNhdGlvblRvU2Vzc2lvbk1hcC5zZXQoZGF0YS5ub3RpZmljYXRpb25JRCwgZGF0YS5zb3Vy
Y2VTZXNzaW9uKTsKKyAgICBkYXRhU3RvcmUtPnNob3dTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
KGNvbm5lY3Rpb24sIGRhdGEpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25I
YW5kbGVyOjpjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit7
CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IGRhdGFTdG9yZUZvck5vdGlmaWNhdGlvbklEKG5v
dGlmaWNhdGlvbklEKSkKKyAgICAgICAgZGF0YVN0b3JlLT5jYW5jZWxTZXJ2aWNlV29ya2VyTm90
aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyTm90aWZp
Y2F0aW9uSGFuZGxlcjo6Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90
aWZpY2F0aW9uSURzKQoreworICAgIGZvciAoYXV0byYgbm90aWZpY2F0aW9uSUQgOiBub3RpZmlj
YXRpb25JRHMpIHsKKyAgICAgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IGRhdGFTdG9yZUZvck5v
dGlmaWNhdGlvbklEKG5vdGlmaWNhdGlvbklEKSkKKyAgICAgICAgICAgIGRhdGFTdG9yZS0+Y2xl
YXJTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKTsKKyAgICB9Cit9CisK
K3ZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OmRpZERlc3Ryb3lOb3RpZmlj
YXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit7CisgICAgaWYgKGF1dG8qIGRhdGFT
dG9yZSA9IGRhdGFTdG9yZUZvck5vdGlmaWNhdGlvbklEKG5vdGlmaWNhdGlvbklEKSkKKyAgICAg
ICAgZGF0YVN0b3JlLT5kaWREZXN0cm95U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihub3RpZmlj
YXRpb25JRCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
SGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNl
V29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZWQ1MTIwYzk2NTU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxl
ci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNlcnZpY2VX
b3JrZXJOb3RpZmljYXRpb25IYW5kbGVyIDogcHVibGljIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b25IYW5kbGVyJiBzaW5nbGV0b24oKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBTZXJ2aWNl
V29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcigpOworCisgICAgdm9pZCByZXF1ZXN0U3lzdGVtTm90
aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpIGZpbmFsOworICAgIHZvaWQg
Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKyAg
ICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlv
bklEcykgZmluYWw7CisgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQm
IG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKworICAgIFdlYnNpdGVEYXRhU3RvcmUqIGRhdGFTdG9y
ZUZvck5vdGlmaWNhdGlvbklEKGNvbnN0IFVVSUQmKTsKKworICAgIEhhc2hNYXA8VVVJRCwgUEFM
OjpTZXNzaW9uSUQ+IG1fbm90aWZpY2F0aW9uVG9TZXNzaW9uTWFwOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHAKaW5kZXggYjhkYTcxYmIwZmQ2Li5iOTAxODQy
MTEyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVdlYk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKGNvbnN0IFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlk
ZW50aWZpZXIpCitXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3Jl
OjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVu
dGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIHNvdXJjZUNvbm5lY3Rpb24pCiAgICAgOiBtX3RpdGxl
KGRhdGEudGl0bGUpCiAgICAgLCBtX2JvZHkoZGF0YS5ib2R5KQogICAgICwgbV9pY29uVVJMKGRh
dGEuaWNvblVSTCkKQEAgLTQwLDYgKzQwLDcgQEAgV2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmlj
YXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVAKICAg
ICAsIG1fb3JpZ2luKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoZGF0YS5v
cmlnaW5TdHJpbmcpKQogICAgICwgbV9jb3JlTm90aWZpY2F0aW9uSUQoZGF0YS5ub3RpZmljYXRp
b25JRCkKICAgICAsIG1fcGFnZUlkZW50aWZpZXIocGFnZUlkZW50aWZpZXIpCisgICAgLCBtX3Nv
dXJjZUNvbm5lY3Rpb24oc291cmNlQ29ubmVjdGlvbikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmgKaW5k
ZXggYmM3ODJmYmVmZmYzLi5lODk0MjYzM2Q0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJU2VjdXJpdHlP
cmlnaW4uaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgpAQCAtNDEsOSArNDIsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
V2ViTm90aWZpY2F0aW9uIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6Tm90aWZpY2F0aW9uPiwgcHVibGljIElkZW50aWZpZWQ8V2ViTm90aWZpY2F0aW9uPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBXZWJD
b3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
ZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8V2ViTm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJiBzb3VyY2VDb25uZWN0aW9uKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTm90aWZpY2F0aW9uKGRhdGEsIHBhZ2VJ
ZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk5vdGlmaWNhdGlv
bihkYXRhLCBwYWdlSWRlbnRpZmllciwgc291cmNlQ29ubmVjdGlvbikpOwogICAgIH0KIAogICAg
IGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9CkBAIC01OCw5
ICs1OSwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVVJRCYgY29yZU5vdGlmaWNhdGlvbklEKCkg
Y29uc3QgeyByZXR1cm4gbV9jb3JlTm90aWZpY2F0aW9uSUQ7IH0KIAogICAgIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJZGVudGlm
aWVyOyB9CisgICAgSVBDOjpDb25uZWN0aW9uKiBzb3VyY2VDb25uZWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VDb25uZWN0aW9uLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViTm90
aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmLCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyKTsKKyAgICBXZWJOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0
aW9uRGF0YSYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYpOwogCiAg
ICAgU3RyaW5nIG1fdGl0bGU7CiAgICAgU3RyaW5nIG1fYm9keTsKQEAgLTcyLDYgKzc0LDcgQEAg
cHJpdmF0ZToKICAgICBVVUlEIG1fY29yZU5vdGlmaWNhdGlvbklEOwogCiAgICAgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBtX3BhZ2VJZGVudGlmaWVyOworICAgIFdlYWtQdHI8SVBDOjpDb25uZWN0
aW9uPiBtX3NvdXJjZUNvbm5lY3Rpb247CiB9OwogCiBpbmxpbmUgYm9vbCBpc05vdGlmaWNhdGlv
bklEVmFsaWQodWludDY0X3QgaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlci5jcHAKaW5kZXggZDA2N2NlZjA5NjRhLi40YzY4NGQ5YzlkMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ci5jcHAKQEAgLTQwLDkgKzQwLDkgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2Fn
ZUhhbmRsZXI6OnJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGMKICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlcjo6c2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmlj
YXRpb25EYXRhJiBkYXRhKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRs
ZXI6OnNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhKQogewotICAgIG1fd2ViUGFnZVByb3h5LnNo
b3dOb3RpZmljYXRpb24oZGF0YSk7CisgICAgbV93ZWJQYWdlUHJveHkuc2hvd05vdGlmaWNhdGlv
bihjb25uZWN0aW9uLCBkYXRhKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXI6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25J
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5o
CmluZGV4IGE2ZGIwMzM3YjdlNS4uNTI1MDVlOWQyNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHJp
dmF0ZToKICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIo
V2ViUGFnZVByb3h5Jik7CiAKICAgICB2b2lkIHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJt
aXNzaW9uKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZp
bmFsOwotICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRp
b25EYXRhJikgZmluYWw7CisgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKElQQzo6Q29ubmVjdGlv
biYsIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIGNh
bmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkgZmluYWw7CiAgICAg
dm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25J
RHMpIGZpbmFsOwogICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBu
b3RpZmljYXRpb25JRCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eS5jcHAKaW5kZXggZDEzYTU4ODM4ZWM2Li44NWE5YzU4NDMwMTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTQ5LDYgKzQ5LDEyIEBAIFJlZjxXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk+IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRl
KFdlYlByb2Nlc3NQCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5KHByb2Nlc3NQb29sKSk7CiB9CiAKK1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eSYgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdl
cigpCit7CisgICAgc3RhdGljIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSogc2hhcmVkTWFu
YWdlciA9IG5ldyBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkobnVsbHB0cik7CisgICAgcmV0
dXJuICpzaGFyZWRNYW5hZ2VyOworfQorCiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAg
ICAgOiBXZWJDb250ZXh0U3VwcGxlbWVudChwcm9jZXNzUG9vbCkKICAgICAsIG1fcHJvdmlkZXIo
bWFrZVVuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPigpKQpAQCAtODgsMjEgKzk0LDI4
IEBAIEhhc2hNYXA8U3RyaW5nLCBib29sPiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6Om5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKCkKICAgICByZXR1cm4gbV9wcm92aWRlci0+bm90aWZpY2F0
aW9uUGVybWlzc2lvbnMoKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6
OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25E
YXRhJiBub3RpZmljYXRpb25EYXRhKQorc3RhdGljIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgaWRl
bnRpZmllckZvclBhZ2VQb2ludGVyKFdlYlBhZ2VQcm94eSogd2ViUGFnZSkKIHsKLSAgICBhdXRv
IG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlmaWNhdGlvbjo6Y3JlYXRlKG5vdGlmaWNhdGlvbkRhdGEs
IHdlYlBhZ2UtPmlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIHdlYlBhZ2UgPyB3ZWJQYWdlLT5p
ZGVudGlmaWVyKCkgOiBXZWJQYWdlUHJveHlJZGVudGlmaWVyKCk7Cit9CisKK3ZvaWQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBu
b3RpZmljYXRpb25EYXRhKQoreworICAgIExPRyhOb3RpZmljYXRpb25zLCAiV2ViUGFnZVByb3h5
ICglcCkgYXNraW5nIHRvIHNob3cgbm90aWZpY2F0aW9uICglcykiLCB3ZWJQYWdlLCBub3RpZmlj
YXRpb25EYXRhLm5vdGlmaWNhdGlvbklELnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAg
ICBhdXRvIG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlmaWNhdGlvbjo6Y3JlYXRlKG5vdGlmaWNhdGlv
bkRhdGEsIGlkZW50aWZpZXJGb3JQYWdlUG9pbnRlcih3ZWJQYWdlKSwgY29ubmVjdGlvbik7CiAg
ICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2V0KG5vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9u
SUQoKSwgbm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9uSUQoKSk7CiAgICAgbV9ub3RpZmlj
YXRpb25zLnNldChub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpLCBub3RpZmljYXRp
b24pOwotICAgIG1fcHJvdmlkZXItPnNob3coKndlYlBhZ2UsIG5vdGlmaWNhdGlvbi5nZXQoKSk7
CisgICAgbV9wcm92aWRlci0+c2hvdyh3ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0KCkpOwogfQog
Ci12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKFdlYlBhZ2VQcm94eSog
d2ViUGFnZSwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbChXZWJQYWdlUHJveHkqLCBjb25zdCBVVUlEJiBwYWdl
Tm90aWZpY2F0aW9uSUQpCiB7CiAgICAgaWYgKGF1dG8gd2ViTm90aWZpY2F0aW9uID0gbV9ub3Rp
ZmljYXRpb25zLmdldChwYWdlTm90aWZpY2F0aW9uSUQpKQogICAgICAgICBtX3Byb3ZpZGVyLT5j
YW5jZWwoKndlYk5vdGlmaWNhdGlvbik7CiB9CiAgICAgCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBhZ2Us
IGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSosIGNvbnN0IFVV
SUQmIHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKICAgICBpZiAoYXV0byB3ZWJOb3RpZmljYXRpb24g
PSBtX25vdGlmaWNhdGlvbnMudGFrZShwYWdlTm90aWZpY2F0aW9uSUQpKSB7CiAgICAgICAgIG1f
Z2xvYmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZSh3ZWJOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlv
bklEKCkpOwpAQCAtMTEwLDM3ICsxMjMsMjYgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLAogICAg
IH0KIH0KIAotc3RhdGljIGJvb2wgcGFnZUlEc01hdGNoKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlELCBjb25zdCBVVUlEJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFnZUlE
LCBjb25zdCBWZWN0b3I8VVVJRD4mKQotewotICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBh
Z2VJRDsKLX0KLQotc3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPFVVSUQ+
JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcykKLXsKLSAgICByZXR1cm4gcGFnZUlEID09IGRl
c2lyZWRQYWdlSUQgJiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMuY29udGFpbnMocGFnZU5v
dGlmaWNhdGlvbklEKTsKLX0KLQogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNs
ZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UpCiB7Ci0gICAgY2xlYXJOb3Rp
ZmljYXRpb25zKHdlYlBhZ2UsIFZlY3RvcjxVVUlEPigpLCBwYWdlSURzTWF0Y2gpOworICAgIEFT
U0VSVCh3ZWJQYWdlKTsKKyAgICBjbGVhck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgeyB9KTsKIH0K
IAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhX
ZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlv
bklEcykKIHsKLSAgICBjbGVhck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgcGFnZU5vdGlmaWNhdGlv
bklEcywgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKTsKLX0KLQotdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBh
Z2UsIGNvbnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9u
RmlsdGVyRnVuY3Rpb24gZmlsdGVyRnVuY3Rpb24pCi17Ci0gICAgYXV0byB0YXJnZXRQYWdlUHJv
eHlJRCA9IHdlYlBhZ2UtPmlkZW50aWZpZXIoKTsKLQogICAgIFZlY3Rvcjx1aW50NjRfdD4gZ2xv
YmFsTm90aWZpY2F0aW9uSURzOwogICAgIGdsb2JhbE5vdGlmaWNhdGlvbklEcy5yZXNlcnZlQ2Fw
YWNpdHkobV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2l6ZSgpKTsKIAorICAgIC8vIFdlIGFsd2F5
cyBjaGVjayBwYWdlIGlkZW50aXR5LgorICAgIC8vIElmIHRoZSBzZXQgb2Ygbm90aWZpY2F0aW9u
IElEcyBpcyBub24tZW1wdHksIHdlIGFsc28gY2hlY2sgdGhhdC4KKyAgICBhdXRvIHRhcmdldFBh
Z2VJZGVudGlmaWVyID0gaWRlbnRpZmllckZvclBhZ2VQb2ludGVyKHdlYlBhZ2UpOworICAgIGJv
b2wgY2hlY2tOb3RpZmljYXRpb25JRHMgPSAhcGFnZU5vdGlmaWNhdGlvbklEcy5pc0VtcHR5KCk7
CisKICAgICBmb3IgKGF1dG8gbm90aWZpY2F0aW9uIDogbV9ub3RpZmljYXRpb25zLnZhbHVlcygp
KSB7Ci0gICAgICAgIGF1dG8gcGFnZVByb3h5SUQgPSBub3RpZmljYXRpb24tPnBhZ2VJZGVudGlm
aWVyKCk7Ci0gICAgICAgIGF1dG8gY29yZU5vdGlmaWNhdGlvbklEID0gbm90aWZpY2F0aW9uLT5j
b3JlTm90aWZpY2F0aW9uSUQoKTsKLSAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbihwYWdlUHJv
eHlJRCwgY29yZU5vdGlmaWNhdGlvbklELCB0YXJnZXRQYWdlUHJveHlJRCwgcGFnZU5vdGlmaWNh
dGlvbklEcykpCisgICAgICAgIGlmIChjaGVja05vdGlmaWNhdGlvbklEcyAmJiAhcGFnZU5vdGlm
aWNhdGlvbklEcy5jb250YWlucyhub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAodGFyZ2V0UGFnZUlkZW50aWZpZXIg
IT0gbm90aWZpY2F0aW9uLT5wYWdlSWRlbnRpZmllcigpKQogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgdWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBub3RpZmljYXRpb24t
Pm5vdGlmaWNhdGlvbklEKCk7CkBAIC0xNjcsNDggKzE2OSw0NiBAQCB2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IGds
b2JhbE5vdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byogd2ViUGFnZSA9IFdl
YlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3RpZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCkpOwot
ICAgIGlmICghd2ViUGFnZSkKKyAgICBMT0coTm90aWZpY2F0aW9ucywgIlByb3ZpZGVyIGRpZCBz
aG93IG5vdGlmaWNhdGlvbiAoJXMpIiwgbm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9uSUQo
KS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgYXV0byogY29ubmVjdGlvbiA9IG5v
dGlmaWNhdGlvbi0+c291cmNlQ29ubmVjdGlvbigpOworICAgIGlmICghY29ubmVjdGlvbikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFNob3dOb3RpZmljYXRpb24oaXQtPnZhbHVlKSwgMCk7
CisgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
RGlkU2hvd05vdGlmaWNhdGlvbihpdC0+dmFsdWUpLCAwKTsKIH0KIAotdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qg
Z2xvYmFsTm90aWZpY2F0aW9uSUQpCitzdGF0aWMgdm9pZCBkaXNwYXRjaERpZENsaWNrTm90aWZp
Y2F0aW9uKFdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIGF1dG8gaXQgPSBt
X2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5maW5kKGdsb2JhbE5vdGlmaWNhdGlvbklEKTsKLSAgICBp
ZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCi0gICAgICAgIHJldHVybjsK
KyAgICBMT0coTm90aWZpY2F0aW9ucywgIlByb3ZpZGVyIGRpZCBjbGljayBub3RpZmljYXRpb24g
KCVzKSIsIG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCkudG9TdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKIAotICAgIGF1dG8gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdl
dChpdC0+dmFsdWUpOwotICAgIGlmICghbm90aWZpY2F0aW9uKSB7Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIGlmICghbm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47Ci0g
ICAgfQogCi0gICAgYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3Rp
ZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCkpOwotICAgIGlmICghd2ViUGFnZSkKKyAgICBhdXRv
KiBjb25uZWN0aW9uID0gbm90aWZpY2F0aW9uLT5zb3VyY2VDb25uZWN0aW9uKCk7CisgICAgaWYg
KCFjb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmljYXRp
b24oaXQtPnZhbHVlKSwgMCk7CisgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLT5jb3Jl
Tm90aWZpY2F0aW9uSUQoKSksIDApOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBjb3JlTm90aWZp
Y2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRD
bGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCkKIHsKLSAgICBh
dXRvIG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy5nZXQoY29yZU5vdGlmaWNhdGlvbklE
KTsKLSAgICBpZiAoIW5vdGlmaWNhdGlvbikKKyAgICBhdXRvIGl0ID0gbV9nbG9iYWxOb3RpZmlj
YXRpb25NYXAuZmluZChnbG9iYWxOb3RpZmljYXRpb25JRCk7CisgICAgaWYgKGl0ID09IG1fZ2xv
YmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvKiB3
ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKG5vdGlmaWNhdGlvbi0+cGFnZUlkZW50
aWZpZXIoKSk7Ci0gICAgaWYgKCF3ZWJQYWdlKQotICAgICAgICByZXR1cm47CisgICAgZGlzcGF0
Y2hEaWRDbGlja05vdGlmaWNhdGlvbihtX25vdGlmaWNhdGlvbnMuZ2V0KGl0LT52YWx1ZSkpOwor
fQogCi0gICAgd2ViUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlv
bk1hbmFnZXI6OkRpZENsaWNrTm90aWZpY2F0aW9uKGNvcmVOb3RpZmljYXRpb25JRCksIDApOwor
dm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmlj
YXRpb24oY29uc3QgVVVJRCYgY29yZU5vdGlmaWNhdGlvbklEKQoreworICAgIGRpc3BhdGNoRGlk
Q2xpY2tOb3RpZmljYXRpb24obV9ub3RpZmljYXRpb25zLmdldChjb3JlTm90aWZpY2F0aW9uSUQp
KTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xv
c2VOb3RpZmljYXRpb25zKEFQSTo6QXJyYXkqIGdsb2JhbE5vdGlmaWNhdGlvbklEcykKIHsKLSAg
ICBIYXNoTWFwPFdlYlBhZ2VQcm94eSosIFZlY3RvcjxVVUlEPj4gcGFnZU5vdGlmaWNhdGlvbklE
czsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+IGNsb3NlZE5vdGlmaWNhdGlv
bnM7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGdsb2JhbE5vdGlmaWNhdGlvbklEcy0+c2l6ZSgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CkBAIC0yNDEsMjYgKzI0MSwy
NSBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5v
dGlmaWNhdGlvbnMoQVBJOjpBcnJheSogZ2xvYgogICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbikK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChXZWJQYWdlUHJveHkqIHdlYlBh
Z2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uobm90aWZpY2F0aW9uLT5wYWdlSWRlbnRpZmll
cigpKSkgewotICAgICAgICAgICAgYXV0byBwYWdlSXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmZp
bmQod2ViUGFnZSk7Ci0gICAgICAgICAgICBpZiAocGFnZUl0ID09IHBhZ2VOb3RpZmljYXRpb25J
RHMuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8VVVJRD4gbmV3VmVjdG9yOwotICAg
ICAgICAgICAgICAgIG5ld1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwotICAg
ICAgICAgICAgICAgIHBhZ2VJdCA9IHBhZ2VOb3RpZmljYXRpb25JRHMuYWRkKHdlYlBhZ2UsIFdU
Rk1vdmUobmV3VmVjdG9yKSkuaXRlcmF0b3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IHBhZ2VJdC0+dmFsdWUuYXBwZW5kKG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCkp
OwotICAgICAgICB9Ci0KICAgICAgICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAucmVtb3ZlKG5v
dGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uSUQoKSk7CisgICAgICAgIGNsb3NlZE5vdGlmaWNhdGlv
bnMuYXBwZW5kKFdURk1vdmUobm90aWZpY2F0aW9uKSk7CiAgICAgfQogCi0gICAgZm9yIChhdXRv
IGl0ID0gcGFnZU5vdGlmaWNhdGlvbklEcy5iZWdpbigpLCBlbmQgPSBwYWdlTm90aWZpY2F0aW9u
SURzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGl0LT5rZXktPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbG9zZU5vdGlmaWNhdGlv
bnMoaXQtPnZhbHVlKSwgMCk7CisgICAgZm9yIChhdXRvJiBub3RpZmljYXRpb24gOiBjbG9zZWRO
b3RpZmljYXRpb25zKSB7CisgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbm90aWZpY2F0
aW9uLT5zb3VyY2VDb25uZWN0aW9uKCkpIHsKKyAgICAgICAgICAgIExPRyhOb3RpZmljYXRpb25z
LCAiUHJvdmlkZXIgZGlkIGNsb3NlIG5vdGlmaWNhdGlvbiAoJXMpIiwgbm90aWZpY2F0aW9uLT5j
b3JlTm90aWZpY2F0aW9uSUQoKS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAg
ICAgVmVjdG9yPFVVSUQ+IG5vdGlmaWNhdGlvbklEcyA9IHsgbm90aWZpY2F0aW9uLT5jb3JlTm90
aWZpY2F0aW9uSUQoKSB9OworICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xvc2VOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlv
bklEcyksIDApOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6cHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xpY3koY29uc3QgQVBJ
OjpTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBib29sIGFsbG93ZWQpCiB7CisgICAgTE9HKE5vdGlm
aWNhdGlvbnMsICJQcm92aWRlciBkaWQgdXBkYXRlIG5vdGlmaWNhdGlvbiBwb2xpY3kgZm9yIG9y
aWdpbiAlcyB0byAlaSIsIG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpLnV0Zjgo
KS5kYXRhKCksIGFsbG93ZWQpOworCisgICAgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFVw
ZGF0ZU5vdGlmaWNhdGlvbkRlY2lzaW9uKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmlu
ZygpLCBhbGxvd2VkKSk7CisKICAgICBpZiAoIXByb2Nlc3NQb29sKCkpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMjgxLDcgKzI4MCwxMSBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyhBUEk6OkFycgogICAgIAog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBvcmlnaW5TdHJp
bmdzLmFwcGVuZChvcmlnaW5zLT5hdDxBUEk6OlNlY3VyaXR5T3JpZ2luPihpKS0+c2VjdXJpdHlP
cmlnaW4oKS50b1N0cmluZygpKTsKLSAgICAKKworICAgIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9B
bGxTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpEaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMob3JpZ2luU3RyaW5ncykpOworCisgICAg
aWYgKCFwcm9jZXNzUG9vbCgpKQorICAgICAgICByZXR1cm47CiAgICAgcHJvY2Vzc1Bvb2woKS0+
c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRS
ZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMob3JpZ2luU3RyaW5ncykpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCBjNmQzNWQ4NjIyYjguLmU4N2RiMTBm
NTFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC01NywxMCAr
NTcsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCopOwogCisgICAgc3RhdGljIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eSYgc2hhcmVkU2VydmljZVdvcmtlck1hbmFnZXIoKTsKKwogICAgIHZv
aWQgc2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+
JiYpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBub3RpZmljYXRpb25QZXJtaXNzaW9ucygp
OwogCi0gICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkRhdGEmKTsKKyAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5KiwgSVBDOjpDb25uZWN0aW9u
JiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpOwogICAgIHZvaWQgY2FuY2VsKFdl
YlBhZ2VQcm94eSosIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCk7CiAgICAgdm9pZCBj
bGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5Kik7CiAgICAgdm9pZCBjbGVhck5vdGlmaWNh
dGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZpY2F0aW9u
SURzKTsKQEAgLTc5LDkgKzgxLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHR5cGVk
ZWYgYm9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKShXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJRCwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3RvcjxVVUlEPiYgZGVzaXJlZFBhZ2VO
b3RpZmljYXRpb25JRHMpOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94
eSosIGNvbnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9u
RmlsdGVyRnVuY3Rpb24pOwotCiAgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKICAgICB2b2lk
IHByb2Nlc3NQb29sRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWZXZWJDb250ZXh0
U3VwcGxlbWVudCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcApp
bmRleCAyNjVjMTU5ZDlkNzkuLjg1OGQ3NjQ2MmZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Q
cm92aWRlci5jcHAKQEAgLTQyLDEyICs0MiwxMiBAQCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIoY29uc3QgV0tOb3RpZmljYXRpb25Qcm92aWRlckJhcwog
ICAgIGluaXRpYWxpemUocHJvdmlkZXIpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyOjpzaG93KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViTm90aWZpY2F0aW9uJiBub3RpZmljYXRp
b24pCit2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzaG93KFdlYlBhZ2VQcm94eSogcGFn
ZSwgV2ViTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCiB7CiAgICAgaWYgKCFtX2NsaWVudC5z
aG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5zaG93KHRvQVBJKCZwYWdlKSwg
dG9BUEkoJm5vdGlmaWNhdGlvbiksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgbV9j
bGllbnQuc2hvdyh0b0FQSShwYWdlKSwgdG9BUEkoJm5vdGlmaWNhdGlvbiksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OmNhbmNl
bChXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlk
ZXIuaAppbmRleCA3YjJlOWNlMWM1YTYuLmMxYjBhOWQ0ZWFlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXIuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBXZWJOb3RpZmljYXRpb25Qcm92
aWRlciA6IHB1YmxpYyBBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyLCBwdWJsaWMgQVBJOjpDbAog
cHVibGljOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyKGNvbnN0IFdLTm90
aWZpY2F0aW9uUHJvdmlkZXJCYXNlKik7CiAKLSAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5Jiwg
V2ViTm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSos
IFdlYk5vdGlmaWNhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuY2VsKFdlYk5vdGlmaWNh
dGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJOb3Rp
ZmljYXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBW
ZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNjFhODkyMDBiYjA5Li44MGNkZWRjYzQ5
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODgyNyw5
ICs4ODI3LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNz
aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb20KICAgICBtX3VpQ2xpZW50LT5kZWNp
ZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCgqdGhpcywgb3JpZ2luLmdl
dCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIG5vdGlm
aWNhdGlvbkRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd05vdGlmaWNhdGlvbihJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIG5v
dGlmaWNhdGlvbkRhdGEpCiB7Ci0gICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnN1cHBsZW1l
bnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5zaG93KHRoaXMsIG5vdGlmaWNhdGlv
bkRhdGEpOworICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+c2hvdyh0aGlzLCBjb25uZWN0aW9uLCBub3RpZmljYXRp
b25EYXRhKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25z
dCBVVUlEJiBub3RpZmljYXRpb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggYTQ0N2M3MGMwODQwLi5iY2EzMzVjNWVlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMDUwLDcgKzIwNTAsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc1F1YXJhbnRpbmVkQW5kTm90VXNlckFwcHJvdmVkKGNvbnN0IFN0cmluZyYpOwogI2VuZGlm
CiAKLSAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGF0YSYpOworICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJik7CiAgICAgdm9pZCBjYW5jZWxOb3RpZmljYXRp
b24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRp
b25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGRpZERl
c3Ryb3lOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGFmYzIzZWU1M2YxMi4uODI4
OTdjYmVjNTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CkBAIC01ODksNyArNTg5LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXQKICAgICBBU1NFUlQo
IXNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5jb250YWlucygqc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eSkpOwogICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkpOwogCi0gICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNo
U2VydmljZVdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclByZWZlcmVu
Y2VzID8gcHJvY2Vzc1Bvb2wtPm1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBw
cm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJl
Z2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzU3RvcmUgPSBwcm9jZXNzUG9v
bC0+bV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29y
a2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAt
PnByZWZlcmVuY2VzKCkuc3RvcmUoKTsKKyAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5l
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcmVmZXJlbmNlc1N0b3JlLCByZWdpc3RyYWJs
ZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50
LmlzTnVsbCgpKQogICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRTZXJ2aWNl
V29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZWI2NmQ4OTQ5
MGRmLi4xZTU5MGNmYTQ5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaApAQCAtMjAzLDYgKzIwMyw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiB2b2lkIHNlbmRUb0FsbFByb2Nlc3Nlcyhjb25zdCBUJiBtZXNzYWdlKTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRUb0FsbFByb2Nlc3Nlc0ZvclNlc3Npb24oY29uc3QgVCYg
bWVzc2FnZSwgUEFMOjpTZXNzaW9uSUQpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Rh
dGljIHZvaWQgc2VuZFRvQWxsU2VydmljZVdvcmtlclByb2Nlc3Nlcyhjb25zdCBUJiBtZXNzYWdl
KTsKKwogICAgIHZvaWQgcHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyhXZWJQcm9jZXNzUHJveHkm
KTsKIAogICAgIFdlYlByb2Nlc3NDYWNoZSYgd2ViUHJvY2Vzc0NhY2hlKCkgeyByZXR1cm4gbV93
ZWJQcm9jZXNzQ2FjaGUuZ2V0KCk7IH0KQEAgLTgzMSw0ICs4MzMsMTMgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2VuZFRvQWxsUHJvY2Vzc2VzRm9yU2Vzc2lvbihjb25zdCBUJiBtZXNzYWdlLCBQ
QUw6OlNlc3Npb24KICAgICB9CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZW5kVG9BbGxTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKGNvbnN0IFQmIG1lc3Nh
Z2UpCit7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogc2VydmljZVdvcmtlclByb2Nlc3Nlcygp
KSB7CisgICAgICAgIGlmIChwcm9jZXNzLmNhblNlbmRNZXNzYWdlKCkpCisgICAgICAgICAgICBw
cm9jZXNzLnNlbmQoVChtZXNzYWdlKSwgMCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4
IDA1N2Q0OTkyNDE4YS4uZTk2YjI1OTk4ZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJMb2FkUGFy
YW1ldGVycy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQcm92aXNpb25hbFBh
Z2VQcm94eS5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmgi
CiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2luY2x1
ZGUgIlNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuaCIK
ICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5h
Z2VyTWVzc2FnZXMuaCIKQEAgLTE5NzcsNiArMTk3OCw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpkaXNhYmxlU2VydmljZVdvcmtlcnMoKQogICAgICAgICByZXR1cm47CiAKICAgICBXRUJQUk9D
RVNTUFJPWFlfUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgImRpc2FibGVTZXJ2aWNlV29ya2Vy
czoiKTsKKworICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Tm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uLT5yZW1vdGVXb3JrZXJQYWdlSUQpOwogICAgIG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uID0geyB9OwogICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1Rp
bWVyKCk7CiAKQEAgLTIwMjAsNiArMjAyMyw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFi
bGVTZXJ2aWNlV29ya2Vycyhjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyCiAg
ICAgICAgIG51bGxwdHIsCiAgICAgICAgIHsgfQogICAgIH07CisKKyAgICBhZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2Vy
UGFnZUlELCBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6c2luZ2xldG9uKCkpOwor
CiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMDhjZWNmZWJmZTBkLi4wYWQzODhjNmVhMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRD
YWNoZS5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldl
YktpdDJJbml0aWFsaXplLmgiCisjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NhY2hl
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCkBAIC0yMDU0LDQgKzIwNTUsMjYg
QEAgYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpzaG91bGRNYWtlTmV4dE5ldHdvcmtQcm9jZXNzTGF1
bmNoRmFpbEZvclRlc3RpbmcoKQogICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG5leHROZXR3b3Jr
UHJvY2Vzc0xhdW5jaFNob3VsZEZhaWxGb3JUZXN0aW5nLCBmYWxzZSk7CiB9CiAKK3ZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6c2hvd1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBub3RpZmlj
YXRpb25EYXRhKQoreworICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hhcmVkU2Vy
dmljZVdvcmtlck1hbmFnZXIoKS5zaG93KG51bGxwdHIsIGNvbm5lY3Rpb24sIG5vdGlmaWNhdGlv
bkRhdGEpOworfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmNhbmNlbFNlcnZpY2VXb3JrZXJO
b3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit7CisgICAgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpLmNhbmNlbChu
dWxscHRyLCBub3RpZmljYXRpb25JRCk7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Y2xl
YXJTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQor
eworICAgIFZlY3RvcjxVVUlEPiBub3RpZmljYXRpb25zOworICAgIG5vdGlmaWNhdGlvbnMuYXBw
ZW5kKG5vdGlmaWNhdGlvbklEKTsKKyAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNo
YXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkuY2xlYXJOb3RpZmljYXRpb25zKG51bGxwdHIsIG5v
dGlmaWNhdGlvbnMpOworfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmRpZERlc3Ryb3lTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQoreworICAg
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hhcmVkU2VydmljZVdvcmtlck1hbmFnZXIo
KS5kaWREZXN0cm95Tm90aWZpY2F0aW9uKG51bGxwdHIsIG5vdGlmaWNhdGlvbklEKTsKK30KKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCmluZGV4IDZiYzY5MzY5YzMzOC4uZjQyYTIwMGI3OTc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oCkBAIC03OCw2ICs3OCw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgTG9jYWxX
ZWJMb2NrUmVnaXN0cnk7CiAKIHN0cnVjdCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uOworc3RydWN0IE5vdGlmaWNhdGlvbkRhdGE7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtMzY5LDYgKzM3MCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvdW50Tm9uRGVmYXVsdFNl
c3Npb25TZXRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90KT4mJik7CiAKKyAgICB2b2lk
IHNob3dTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKTsKKyAgICB2b2lkIGNhbmNlbFNlcnZpY2VXb3JrZXJO
b3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgY2xlYXJT
ZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKTsKKyAg
ICB2b2lkIGRpZERlc3Ryb3lTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5v
dGlmaWNhdGlvbklEKTsKKwogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIEZvcmNlUmVpbml0aWFs
aXphdGlvbiA6IGJvb2wgeyBObywgWWVzIH07CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggODI3OGU1MDI3NGU1Li5lYTM0NmQyOWEyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTg3LDYgKzk4Nyw3IEBACiAJCTUxNUJF
MUI1MUQ1OTE3RkYwMEREN0M2OCAvKiBVSUdhbWVwYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUJFMUFEMUQ1NTVDNTEwMEREN0M2OCAvKiBVSUdh
bWVwYWQuaCAqLzsgfTsKIAkJNTE2MzE5OTQxNjI4OUE2MDAwRTIyRjAwIC8qIE5ldHdvcmtQcm9j
ZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQUNDOTM0MTYyODA2NDgwMDM0MjU1MCAvKiBOZXR3b3JrUHJvY2Vzc01l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxNjMxOTk1MTYyODlBNjMwMEUyMkYwMCAvKiBO
ZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUFDQzkzNTE2MjgwNjQ4MDAzNDI1NTAgLyogTmV0d29ya1Byb2Nlc3NN
ZXNzYWdlcy5oICovOyB9OworCQk1MTY0NjU4MDI3QTlDNzc0MDBFMUYyQkEgLyogU2VydmljZVdv
cmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNjQ2NTdGMjdBOUM3NjcwMEUxRjJCQSAvKiBTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9uSGFuZGxlci5oICovOyB9OwogCQk1MTZBNEE1RDEyMEEyQ0NEMDBDMDVCN0Yg
LyogQVBJRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNkE0QTVCMTIwQTJDQ0QwMEMwNUI3RiAvKiBBUElFcnJvci5oICovOyB9OwogCQk1MTc5
NTU2QTE2Mjg3NkYzMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMENDN0UwMTYxMzhFMjkwMEQwM0VEMyAv
KiBOZXR3b3JrUHJvY2Vzcy5oICovOyB9OwogCQk1MTc5NTU2RTE2Mjg3N0IzMDBGQTQzQjYgLyog
TmV0d29ya1Byb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwQ0M3RUIxNjEzOEU3MjAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzUHJv
eHkuaCAqLzsgfTsKQEAgLTQ0NDEsNiArNDQ0Miw4IEBACiAJCTUxNjBFOTU4Mjc0QzBEODgwMDU2
NzM4OCAvKiBQdXNoQXBwQnVuZGxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUHVzaEFwcEJ1bmRsZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE2MEU5NUMyNzRDMkEwMzAwNTY3Mzg4IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQXBwQnVuZGxlUmVnaXN0cnkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2MEU5NUYyNzRDMkEzRjAwNTY3Mzg4IC8qIE1v
Y2tBcHBCdW5kbGVSZWdpc3RyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTE2NDY1N0UyN0E5Qzc2NTAwRTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b25IYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b25IYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE2NDY1N0YyN0E5
Qzc2NzAwRTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxNjRDMDk0MUIwNUI3NTcwMDRGMTAyQSAvKiBBdXhpbGlhcnlQ
cm9jZXNzLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1eGlsaWFyeVByb2Nl
c3MubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNkE0QTVCMTIw
QTJDQ0QwMEMwNUI3RiAvKiBBUElFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBUElFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdBMzNCMzEz
MEIzMDhDMDBGODBDQjUgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2MDMsNiArODYwNiw4IEBACiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTMxQTJFQzUzMTQ4OTk4MjUwMDgx
MEQ3MSAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oICovLAorCQkJCTUxNjQ2NTdF
MjdBOUM3NjUwMEUxRjJCQSAvKiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5jcHAg
Ki8sCisJCQkJNTE2NDY1N0YyN0E5Qzc2NzAwRTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb25IYW5kbGVyLmggKi8sCiAJCQkJMzFBMkVDNDExNDg5OTdCRTAwODEwRDcxIC8qIFdlYk5v
dGlmaWNhdGlvbi5jcHAgKi8sCiAJCQkJMzFBMkVDNDIxNDg5OTdCRTAwODEwRDcxIC8qIFdlYk5v
dGlmaWNhdGlvbi5oICovLAogCQkJCTUxNDUyNzA2MjcxRkJFQzEwMDA0NjdCNiAvKiBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwICovLApAQCAtMTM3ODUsNiArMTM3OTAs
NyBAQAogCQkJCUJDNEE2Mjk3MTQ3MzEzQTAwMDZDNjgxQSAvKiBXS0Nvbm5lY3Rpb25SZWYuaCBp
biBIZWFkZXJzICovLAogCQkJCUU1OTZERDZBMjUxRTcxRDQwMEMyNzVBNyAvKiBXS0NvbnRhY3RQ
aWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NjU0MUU3MjM1QjEwMDk0RkRDOCAvKiBX
S0NvbnRlbnRSdWxlTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE2NDY1ODAyN0E5Qzc3NDAw
RTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1Q0QyODY1NTFFNzIzNUI4MDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3RJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1MTM5REIyNTkyN0Q4MDAwOUMzRTMwIC8qIFdL
Q29udGVudFJ1bGVMaXN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg2NTExRTcy
MzU5OTAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA5YzFjMTJkODg1NTQuLjY5YjYz
YzZjNmJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRs
ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVy
LmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIK
QEAgLTQ1LDYgKzQ2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXR0aW5ncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1dDb250ZXh0TWFuYWdlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNlbmRpZgogCkBAIC0x
MjEsMjUgKzEyMyw0MyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnJlbW92ZUFsbFBl
cm1pc3Npb25zRm9yVGVzdGluZygpCiB9CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLXRl
bXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UoV2ViUHJvY2Vz
cyYgcHJvY2VzcywgVSYmIG1lc3NhZ2UsIFdlYlBhZ2UmIHBhZ2UpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBib29sIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnNlbmROb3RpZmljYXRpb25NZXNzYWdl
KFUmJiBtZXNzYWdlLCBOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkK
IHsKKyAgICBpZiAoIXBhZ2UgJiYgIW5vdGlmaWNhdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklD
QVRJT05TKQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LmJ1aWx0SW5Ob3RpZmljYXRpb25zRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gcHJvY2Vzcy5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChXVEZNb3Zl
KG1lc3NhZ2UpLCBwYWdlLnNlc3Npb25JRCgpLnRvVUludDY0KCkpOworICAgICAgICByZXR1cm4g
bV9wcm9jZXNzLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kKFdURk1vdmUobWVzc2FnZSksIG5vdGlmaWNhdGlvbi5kYXRhKCkuc291cmNlU2Vzc2lvbi50
b1VJbnQ2NCgpKTsKICNlbmRpZgotICAgIHJldHVybiBwcm9jZXNzLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgcGFnZS5pZGVudGlmaWVyKCkpOworCisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlkZW50aWZpZXI7
CisgICAgaWYgKHBhZ2UpCisgICAgICAgIHBhZ2VJZGVudGlmaWVyID0gcGFnZS0+aWRlbnRpZmll
cigpOworICAgIGVsc2UgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS5jb25uZWN0aW9uKCkpIHsKKyAgICAgICAgLy8gUGFnZWxlc3Mgbm90aWZpY2F0
aW9uIG1lc3NhZ2VzIGFyZSwgYnkgZGVmYXVsdCwgb24gYmVoYWxmIG9mIGEgc2VydmljZSB3b3Jr
ZXIuCisgICAgICAgIC8vIFNvIHVzZSB0aGUgc2VydmljZSB3b3JrZXIgY29ubmVjdGlvbidzIHBh
Z2UgaWRlbnRpZmllci4KKyAgICAgICAgcGFnZUlkZW50aWZpZXIgPSBjb25uZWN0aW9uLT5wYWdl
SWRlbnRpZmllcigpOworICAgIH0KKworICAgIEFTU0VSVChwYWdlSWRlbnRpZmllcik7CisKKyAg
ICByZXR1cm4gbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoV1RGTW92
ZShtZXNzYWdlKSwgKnBhZ2VJZGVudGlmaWVyKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKIAogYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlv
biYgbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogeworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICBpZiAocGFnZSAmJiAhcGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5u
b3RpZmljYXRpb25zRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKLSAgICBpZiAoIXBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCku
bm90aWZpY2F0aW9uc0VuYWJsZWQoKSkKKyAgICBpZiAoIXNlbmROb3RpZmljYXRpb25NZXNzYWdl
KE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OlNob3dOb3RpZmlj
YXRpb24obm90aWZpY2F0aW9uLmRhdGEoKSksIG5vdGlmaWNhdGlvbiwgcGFnZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIG1fbm90aWZpY2F0aW9uSURNYXAuc2V0KG5vdGlmaWNhdGlv
bi5pZGVudGlmaWVyKCksICZub3RpZmljYXRpb24pOwotCi0gICAgc2VuZE5vdGlmaWNhdGlvbk1l
c3NhZ2UobV9wcm9jZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5k
bGVyOjpTaG93Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5kYXRhKCkpLCAqcGFnZSk7CiAgICAg
cmV0dXJuIHRydWU7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwpAQCAt
MTUwLDE2ICsxNzAsMTYgQEAgYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KE5vdGlm
aWNhdGlvbiYgbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogCiB2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXI6OmNhbmNlbChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSog
cGFnZSkKIHsKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBpZiAoIXBhZ2UtPmNvcmVQ
YWdlKCktPnNldHRpbmdzKCkubm90aWZpY2F0aW9uc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJu
OworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKICAgICBhdXRvIG1hcHBlZE5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAuZ2V0
KG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgIGlmICghbWFwcGVkTm90aWZpY2F0aW9u
KQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1hcHBlZE5vdGlmaWNhdGlvbiA9PSAmbm90
aWZpY2F0aW9uKTsKIAotICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKG1fcHJvY2VzcywgTWVz
c2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6Q2FuY2VsTm90aWZpY2F0
aW9uKG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpLCAqcGFnZSk7CisgICAgaWYgKCFzZW5kTm90
aWZpY2F0aW9uTWVzc2FnZShNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5k
bGVyOjpDYW5jZWxOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmlkZW50aWZpZXIoKSksIG5vdGlm
aWNhdGlvbiwgcGFnZSkpCisgICAgICAgIHJldHVybjsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KG5vdGlmaWNhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwpAQCAtMTY4LDYgKzE4OCw4
IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsKE5vdGlmaWNhdGlvbiYgbm90
aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6
OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sIFdlYlBh
Z2UqIHBhZ2UpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQogICAgIFJlZiBwcm90ZWN0ZWROb3RpZmljYXRpb24geyBub3RpZmljYXRp
b24gfTsKIApAQCAtMTc2LDcgKzE5OCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwKICAgICAg
ICAgcmV0dXJuOwogICAgIEFTU0VSVCh0YWtlbk5vdGlmaWNhdGlvbiA9PSAmbm90aWZpY2F0aW9u
KTsKIAotICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKG1fcHJvY2VzcywgTWVzc2FnZXM6Ok5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6RGlkRGVzdHJveU5vdGlmaWNhdGlvbihu
b3RpZmljYXRpb24uaWRlbnRpZmllcigpKSwgKnBhZ2UpOworICAgIHNlbmROb3RpZmljYXRpb25N
ZXNzYWdlKE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OkRpZERl
c3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmlkZW50aWZpZXIoKSksIG5vdGlmaWNhdGlv
biwgcGFnZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwogICAgIFVO
VVNFRF9QQVJBTShwYWdlKTsKQEAgLTE4NSw2ICsyMDcsOCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uJiBub3RpZmljYXRp
b24sCiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbihj
b25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4g
bm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQpOwog
ICAgIGlmICghbm90aWZpY2F0aW9uKQpAQCAtMTk4LDYgKzIyMiw4IEBAIHZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRp
b25JRCkKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbGlja05vdGlmaWNhdGlv
bihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlv
bj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQp
OwogICAgIGlmICghbm90aWZpY2F0aW9uKQpAQCAtMjEzLDYgKzIzOSw4IEBAIHZvaWQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZp
Y2F0aW9uSUQpCiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xvc2VOb3RpZmlj
YXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKQogeworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBzaXpl
X3QgY291bnQgPSBub3RpZmljYXRpb25JRHMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IGU2
MzUxZmRmOTYxNi4uNDllYTcxODQ1NWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5o
CkBAIC04MSw2ICs4MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDbG9zZU5vdGlmaWNhdGlv
bnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpOwogICAgIHZvaWQgZGlkUmVt
b3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcmlnaW5TdHJp
bmdzKTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZE5vdGlmaWNhdGlvbk1l
c3NhZ2UoVSYmIG1lc3NhZ2UsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiYsIFdlYlBhZ2UqKTsKKwog
ICAgIFdlYlByb2Nlc3MmIG1fcHJvY2VzczsKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggYzFlZGQ5ZjBhMmVjLi4xZTMxNDBm
NjgyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtNjYsNiArNjYsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsOwogCisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BhZ2VJRDsgfQorCiBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAKaW5kZXggYzI0ZWQzN2Q3
NmVmLi40YTM2ZThmYmU4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuY3BwCkBA
IC00MCwzNCArNDAsNjYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJOb3RpZmljYXRp
b25DbGllbnQ6OldlYk5vdGlmaWNhdGlvbkNsaWVudChXZWJQYWdlKiBwYWdlKQogICAgIDogbV9w
YWdlKHBhZ2UpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIH0KIAogV2ViTm90aWZp
Y2F0aW9uQ2xpZW50Ojp+V2ViTm90aWZpY2F0aW9uQ2xpZW50KCkKIHsKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogfQogCiBib29sIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6c2hvdyhOb3Rp
ZmljYXRpb24mIG5vdGlmaWNhdGlvbikKIHsKLSAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5zaG93KG5vdGlmaWNh
dGlvbiwgbV9wYWdlKTsKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpCisgICAgICAgIHJldHVybiBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+
KCktPnNob3cobm90aWZpY2F0aW9uLCBtX3BhZ2UpOworCisgICAgYm9vbCByZXN1bHQ7CisgICAg
Y2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZyZXN1bHQsIHByb3RlY3RlZE5vdGlmaWNhdGlvbiA9
IFJlZiB7IG5vdGlmaWNhdGlvbiB9XSgpIHsKKyAgICAgICAgcmVzdWx0ID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5zaG93KHBy
b3RlY3RlZE5vdGlmaWNhdGlvbi5nZXQoKSwgbnVsbHB0cik7CisgICAgfSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNhbmNlbChOb3RpZmlj
YXRpb24mIG5vdGlmaWNhdGlvbikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBw
bGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmNhbmNlbChub3RpZmljYXRpb24sIG1f
cGFnZSk7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+Y2FuY2VsKG5v
dGlmaWNhdGlvbiwgbV9wYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhbGxP
bk1haW5UaHJlYWRBbmRXYWl0KFtwcm90ZWN0ZWROb3RpZmljYXRpb24gPSBSZWYgeyBub3RpZmlj
YXRpb24gfV0oKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8
V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+Y2FuY2VsKHByb3RlY3RlZE5vdGlmaWNhdGlvbi5n
ZXQoKSwgbnVsbHB0cik7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50
Ojpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24p
CiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRp
b25NYW5hZ2VyPigpLT5kaWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgbV9wYWdl
KTsKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5kaWREZXN0cm95Tm90
aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgbV9wYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIE1ha2Ugc3VyZSB0aGlzIE5vdGlmaWNhdGlvbiBvYmplY3QgaXMgZGVhbGxvY2F0
ZWQgb24gdGhpcyB0aHJlYWQgYnkgaG9sZGluZyBvbmUgbGFzdCByZWYoKSB0byBpdCBoZXJlCisg
ICAgYXV0byBsYXN0Tm90aWZpY2F0aW9uUmVmID0gUmVmIHsgbm90aWZpY2F0aW9uIH07CisKKyAg
ICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJm5vdGlmaWNhdGlvbl0oKSB7CisgICAgICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4o
KS0+ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIG51bGxwdHIpOworICAgIH0p
OwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uQ29udHJvbGxl
ckRlc3Ryb3llZCgpCiB7Ci0gICAgZGVsZXRlIHRoaXM7CisgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpc10geworICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJOb3Rp
ZmljYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFBlcm1pc3Npb25IYW5kbGVyJiYgcGVybWlzc2lvbkhhbmRsZXIpCiB7CisgICAg
Ly8gT25seSBXaW5kb3cgY2xpZW50cyBjYW4gcmVxdWVzdCBwZXJtaXNzaW9uCisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9wYWdlKTsKKwogICAgIGF1dG8qIHNlY3Vy
aXR5T3JpZ2luID0gY29udGV4dC5zZWN1cml0eU9yaWdpbigpOwogICAgIGlmICghc2VjdXJpdHlP
cmlnaW4pCiAgICAgICAgIHJldHVybiBwZXJtaXNzaW9uSGFuZGxlcihOb3RpZmljYXRpb25DbGll
bnQ6OlBlcm1pc3Npb246OkRlbmllZCk7CkBAIC03Niw5ICsxMDgsMjAgQEAgdm9pZCBXZWJOb3Rp
ZmljYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFAKIAogTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIFdlYk5vdGlmaWNh
dGlvbkNsaWVudDo6Y2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiB7Ci0gICAgaWYgKCFjb250ZXh0IHx8ICFjb250ZXh0LT5pc0RvY3VtZW50KCkgfHwgIWNv
bnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpCisgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1
cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uOjpEZW5pZWQ7Ci0gICAgcmV0dXJuIG1f
cGFnZS0+bm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCktPnBlcm1pc3Npb25M
ZXZlbChjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCkpOworICAgIGlmICghY29udGV4
dC0+aXNEb2N1bWVudCgpICYmICFjb250ZXh0LT5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgp
KQorICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uOjpEZW5pZWQ7
CisKKyAgICBhdXRvKiBvcmlnaW4gPSBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpOworICAgIGlm
ICghb3JpZ2luKQorICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9u
OjpEZW5pZWQ7CisKKyAgICBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gcmVzdWx0UGVy
bWlzc2lvbjsKKyAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJnJlc3VsdFBlcm1pc3Npb24s
IG9yaWdpbiA9IG9yaWdpbi0+ZGF0YSgpLnRvU3RyaW5nKCldIHsKKyAgICAgICAgcmVzdWx0UGVy
bWlzc2lvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0
aW9uTWFuYWdlcj4oKS0+cG9saWN5Rm9yT3JpZ2luKG9yaWdpbik7CisgICAgfSk7CisgICAgcmV0
dXJuIHJlc3VsdFBlcm1pc3Npb247CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggOGRlNjgxYjIyMjQxLi5kZDM5NzYzYWM1MTIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMjA4LDYgKzIwOCw3IEBAIGludGVyZmFjZSBUZXN0
UnVubmVyIHsKICAgICB1bmRlZmluZWQgZGVueVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oRE9N
U3RyaW5nIG9yaWdpbik7CiAgICAgdW5kZWZpbmVkIHJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBl
cm1pc3Npb25zKCk7CiAgICAgdW5kZWZpbmVkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2so
b2JqZWN0IG5vdGlmaWNhdGlvbik7CisgICAgdW5kZWZpbmVkIHNpbXVsYXRlV2ViTm90aWZpY2F0
aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpOwogCiAgICAgLy8gR2VvbG9j
YXRpb24KICAgICB1bmRlZmluZWQgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2xlYW4gdmFs
dWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAzM2U3MGFmMzJhNmQuLjBkMGQxZmZiNjAwMiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAKQEAgLTY2OCw2ICs2NjgsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6
cG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklE
KQogICAgIHBvc3RQYWdlTWVzc2FnZSgiU2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayIsIG5v
dGlmaWNhdGlvbklEKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNpbXVsYXRlV2Vi
Tm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpCit7CisgICAg
cG9zdFBhZ2VNZXNzYWdlKCJTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdv
cmtlck5vdGlmaWNhdGlvbnMiKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNldEFk
ZHNWaXNpdGVkTGlua3MoYm9vbCBhZGRzVmlzaXRlZExpbmtzKQogewogICAgIHBvc3RQYWdlTWVz
c2FnZSgiU2V0QWRkc1Zpc2l0ZWRMaW5rcyIsIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGFkZHNW
aXNpdGVkTGlua3MpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggYmMxNDc1Y2FmN2ZhLi4wYTg1OTk1ODBm
YWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmgKQEAgLTk1LDYgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcG9z
dFNldFdpbmRvd0lzS2V5KGJvb2wpOwogICAgIHZvaWQgcG9zdFNldFZpZXdTaXplKGRvdWJsZSB3
aWR0aCwgZG91YmxlIGhlaWdodCk7CiAgICAgdm9pZCBwb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRp
b25DbGljayhXS0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgcG9zdFNpbXVsYXRl
V2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpOwogICAg
IHZvaWQgcG9zdFNldEFkZHNWaXNpdGVkTGlua3MoYm9vbCk7CiAKICAgICAvLyBHZW9sb2NhdGlv
bi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCmluZGV4IDc4MWI4MTY5MWFmYy4uMjRhOWE4NWQwN2JhIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAg
LTg2NywxMSArODY3LDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogdm9pZCBUZXN0UnVubmVyOjpncmFudFdlYk5v
dGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYgb3JpZ2luKQogewogICAgIFdLQnVuZGxl
U2V0V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCku
YnVuZGxlKCksIHBhZ2UoKSwgdG9XSyhvcmlnaW4pLmdldCgpLCB0cnVlKTsKKyAgICBwb3N0U3lu
Y2hyb25vdXNQYWdlTWVzc2FnZVJldHVybmluZ0Jvb2xlYW4oIkdyYW50Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbiIsIG9yaWdpbik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6ZGVueVdlYk5vdGlmaWNh
dGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYgb3JpZ2luKQogewogICAgIFdLQnVuZGxlU2V0V2Vi
Tm90aWZpY2F0aW9uUGVybWlzc2lvbihJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxl
KCksIHBhZ2UoKSwgdG9XSyhvcmlnaW4pLmdldCgpLCBmYWxzZSk7CisgICAgcG9zdFN5bmNocm9u
b3VzUGFnZU1lc3NhZ2VSZXR1cm5pbmdCb29sZWFuKCJEZW55Tm90aWZpY2F0aW9uUGVybWlzc2lv
biIsIG9yaWdpbik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsV2ViTm90aWZpY2F0
aW9uUGVybWlzc2lvbnMoKQpAQCAtODg3LDYgKzg4OSwxMSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNp
bXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pCiAgICAg
aW5qZWN0ZWRCdW5kbGUucG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2sobm90aWZpY2F0
aW9uSUQuZ2V0KCkpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0
aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpCit7CisgICAgSW5qZWN0ZWRC
dW5kbGU6OnNpbmdsZXRvbigpLnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2Vy
dmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpzZXRHZW9s
b2NhdGlvblBlcm1pc3Npb24oYm9vbCBlbmFibGVkKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSBkb25lIGJ5IGZyYW1lLgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAyYjc4YzFkYTk2YjEuLjkwZjVlZTQ4MWY0
NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKQEAgLTI5NCw2ICsyOTQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGVu
eVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYgb3JpZ2luKTsKICAgICBzdGF0
aWMgdm9pZCByZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwogICAgIHN0YXRp
YyB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soSlNWYWx1ZVJlZiBub3RpZmljYXRp
b24pOworICAgIHN0YXRpYyB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9ucygpOwogCiAgICAgLy8gR2VvbG9jYXRpb24uCiAgICAgdm9p
ZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDI3MDUwOWNlOTRjOS4uYzg3YTRiMGIzM2Q1IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNjkwLDYgKzY5MCw3
IEBAIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVyOjpn
ZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvCiAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVm
IG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBXS0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5hZ2VyKG1f
Y29udGV4dC5nZXQoKSk7CiAgICAgV0tOb3RpZmljYXRpb25Qcm92aWRlclYwIG5vdGlmaWNhdGlv
bktpdCA9IG1fd2ViTm90aWZpY2F0aW9uUHJvdmlkZXIucHJvdmlkZXIoKTsKICAgICBXS05vdGlm
aWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihub3RpZmljYXRpb25NYW5hZ2VyLCAmbm90aWZpY2F0
aW9uS2l0LmJhc2UpOworICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKFdLTm90
aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2Vy
KCksICZub3RpZmljYXRpb25LaXQuYmFzZSk7CiAKICAgICBpZiAodGVzdFBsdWdpbkRpcmVjdG9y
eSgpKQogICAgICAgICBXS0NvbnRleHRTZXRBZGRpdGlvbmFsUGx1Z2luc0RpcmVjdG9yeShtX2Nv
bnRleHQuZ2V0KCksIHRlc3RQbHVnaW5EaXJlY3RvcnkoKSk7CkBAIC03MTEsNiArNzEyLDI0IEBA
IFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVyOjpnZW5l
cmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvCiAgICAgcmV0dXJuIHBhZ2VDb25maWd1cmF0aW9uOwog
fQogCitib29sIFRlc3RDb250cm9sbGVyOjpncmFudE5vdGlmaWNhdGlvblBlcm1pc3Npb24oV0tT
dHJpbmdSZWYgb3JpZ2luU3RyaW5nKQoreworICAgIG1fd2ViTm90aWZpY2F0aW9uUHJvdmlkZXIu
c2V0UGVybWlzc2lvbih0b1dURlN0cmluZyhvcmlnaW5TdHJpbmcpLCB0cnVlKTsKKworICAgIGF1
dG8gb3JpZ2luID0gYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbVN0cmluZyhvcmln
aW5TdHJpbmcpKTsKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFVwZGF0ZU5v
dGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9uTWFuYWdlcigpLCBvcmlnaW4uZ2V0KCksIHRydWUpOworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIFRlc3RDb250cm9sbGVyOjpkZW55Tm90aWZpY2F0aW9uUGVybWlz
c2lvbihXS1N0cmluZ1JlZiBvcmlnaW5TdHJpbmcpCit7CisgICAgbV93ZWJOb3RpZmljYXRpb25Q
cm92aWRlci5zZXRQZXJtaXNzaW9uKHRvV1RGU3RyaW5nKG9yaWdpblN0cmluZyksIGZhbHNlKTsK
KworICAgIGF1dG8gb3JpZ2luID0gYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbVN0
cmluZyhvcmlnaW5TdHJpbmcpKTsKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRp
ZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRT
ZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpLCBvcmlnaW4uZ2V0KCksIGZhbHNlKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmll
d1dpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIGF1dG8gYXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gb3B0aW9ucy5hcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoKTsKQEAgLTIzNTEsNiArMjM3MCwxMSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzaW11
bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLRGF0YVJlZiBub3RpZmljYXRpb25JRCkKICAgICBt
X3dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2sobWFp
bldlYlZpZXcoKS0+cGFnZSgpLCBub3RpZmljYXRpb25JRCk7CiB9CiAKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZp
Y2F0aW9ucygpCit7CisgICAgbV93ZWJOb3RpZmljYXRpb25Qcm92aWRlci5zaW11bGF0ZVdlYk5v
dGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKK30KKwogdm9p
ZCBUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgZW5hYmxlZCkK
IHsKICAgICBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0ID0gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBiNTJhZjY2NTU1MmIuLmUyNGFjMzIwMzRh
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMTI3LDYgKzEy
Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJlZm9yZVVubG9hZFJldHVyblZhbHVlKGJvb2wg
dmFsdWUpIHsgbV9iZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZSA9IHZhbHVlOyB9CiAKICAgICB2b2lk
IHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKTsK
KyAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90
aWZpY2F0aW9ucygpOwogCiAgICAgLy8gR2VvbG9jYXRpb24uCiAgICAgdm9pZCBzZXRHZW9sb2Nh
dGlvblBlcm1pc3Npb24oYm9vbCk7CkBAIC0zNzMsNiArMzc0LDkgQEAgcHVibGljOgogCiAgICAg
V0tQcmVmZXJlbmNlc1JlZiBwbGF0Zm9ybVByZWZlcmVuY2VzKCk7CiAKKyAgICBib29sIGdyYW50
Tm90aWZpY2F0aW9uUGVybWlzc2lvbihXS1N0cmluZ1JlZiBvcmlnaW4pOworICAgIGJvb2wgZGVu
eU5vdGlmaWNhdGlvblBlcm1pc3Npb24oV0tTdHJpbmdSZWYgb3JpZ2luKTsKKwogcHJpdmF0ZToK
ICAgICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZVBhZ2VDb25m
aWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJik7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0
Q29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbihjb25zdCBUZXN0
T3B0aW9ucyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cAppbmRleCAyY2E0MmMzZWU1YzMuLjZhOTAwM2JjYjgzMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTM5Niw2ICszOTYsMTEgQEAgdm9pZCBUZXN0SW52
b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYg
bWVzc2FnZU5hbWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2ltdWxhdGVXZWJOb3RpZmljYXRpb25D
bGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25zIikpIHsKKyAgICAgICAgVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNl
V29ya2VyTm90aWZpY2F0aW9ucygpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRBZGRzVmlzaXRl
ZExpbmtzIikpIHsKICAgICAgICAgV0tQYWdlU2V0QWRkc1Zpc2l0ZWRMaW5rcyhUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBib29sZWFuVmFsdWUobWVz
c2FnZUJvZHkpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTAyNSw2ICsxMDMwLDEyIEBAIFdLUmV0
YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBhZG9wdFdLKFdLVUludDY0Q3JlYXRl
KGNvdW50KSk7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
bWVzc2FnZU5hbWUsICJHcmFudE5vdGlmaWNhdGlvblBlcm1pc3Npb24iKSkKKyAgICAgICAgcmV0
dXJuIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5n
cmFudE5vdGlmaWNhdGlvblBlcm1pc3Npb24oc3RyaW5nVmFsdWUobWVzc2FnZUJvZHkpKSkpOwor
CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJEZW55
Tm90aWZpY2F0aW9uUGVybWlzc2lvbiIpKQorICAgICAgICByZXR1cm4gYWRvcHRXSyhXS0Jvb2xl
YW5DcmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmRlbnlOb3RpZmljYXRpb25QZXJt
aXNzaW9uKHN0cmluZ1ZhbHVlKG1lc3NhZ2VCb2R5KSkpKTsKKyAgICAgICAgCiAgICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJJc0RvaW5nTWVkaWFDYXB0
dXJlIikpCiAgICAgICAgIHJldHVybiBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkuaXNEb2luZ01lZGlhQ2FwdHVyZSgpKSk7CiAgICAgCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4
IGM4OGYyZTlmOGRiMi4uYzUxYjlhYWNkOWM0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcApAQCAtNjQsNiArNjQsNyBAQCBzdGF0
aWMgV0tEaWN0aW9uYXJ5UmVmIG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCiAKIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpXZWJOb3RpZmljYXRpb25Qcm92
aWRlcigpCiB7CisgICAgbV9wZXJtaXNzaW9ucyA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFy
eUNyZWF0ZSgpKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6On5XZWJOb3RpZmljYXRp
b25Qcm92aWRlcigpCkBAIC04NywxMCArODgsMTkgQEAgV0tOb3RpZmljYXRpb25Qcm92aWRlclYw
IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpwcm92aWRlcigpCiAgICAgcmV0dXJuIG5vdGlmaWNh
dGlvblByb3ZpZGVyOwogfQogCitzdGF0aWMgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG5vdGlm
aWNhdGlvbk1hbmFnZXJGb3JQYWdlKFdLUGFnZVJlZiBwYWdlKQoreworICAgIGlmIChwYWdlKSB7
CisgICAgICAgIGF1dG8gY29udGV4dCA9IFdLUGFnZUdldENvbnRleHQocGFnZSk7CisgICAgICAg
IHJldHVybiBXS0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5hZ2VyKGNvbnRleHQpOworICAgIH0K
KworICAgIHJldHVybiBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9uTWFuYWdlcigpOworfQorCiB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
OjpzaG93V2ViTm90aWZpY2F0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS05vdGlmaWNhdGlvblJlZiBu
b3RpZmljYXRpb24pCiB7Ci0gICAgYXV0byBjb250ZXh0ID0gV0tQYWdlR2V0Q29udGV4dChwYWdl
KTsKLSAgICBhdXRvIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBXS0NvbnRleHRHZXROb3RpZmljYXRp
b25NYW5hZ2VyKGNvbnRleHQpOworICAgIGF1dG8gbm90aWZpY2F0aW9uTWFuYWdlciA9IG5vdGlm
aWNhdGlvbk1hbmFnZXJGb3JQYWdlKHBhZ2UpOwogICAgIEFTU0VSVChtX2tub3duTWFuYWdlcnMu
Y29udGFpbnMobm90aWZpY2F0aW9uTWFuYWdlcikpOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmll
ciA9IFdLTm90aWZpY2F0aW9uR2V0SUQobm90aWZpY2F0aW9uKTsKQEAgLTExOCw3ICsxMjgsNyBA
QCB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpjbG9zZVdlYk5vdGlmaWNhdGlvbihXS05v
dGlmaWNhdGlvblJlZiBub3RpZmljYXRpbwogCiB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
OjphZGROb3RpZmljYXRpb25NYW5hZ2VyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2Vy
KQogewotICAgIEFTU0VSVCghbV9rbm93bk1hbmFnZXJzLmNvbnRhaW5zKG1hbmFnZXIpKTsKKyAg
ICBBU1NFUlQoIW1fa25vd25NYW5hZ2Vycy5jb250YWlucyhtYW5hZ2VyKSB8fCBtYW5hZ2VyID09
IFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25N
YW5hZ2VyKCkpOwogICAgIG1fa25vd25NYW5hZ2Vycy5hZGQobWFuYWdlcik7CiB9CiAKQEAgLTE0
NSw4ICsxNTUsMTQgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cmVtb3ZlTm90aWZp
Y2F0aW9uTWFuYWdlcihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYKIAogV0tEaWN0aW9uYXJ5UmVm
IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucygpCiB7Ci0g
ICAgLy8gSW5pdGlhbCBwZXJtaXNzaW9ucyBhcmUgYWx3YXlzIGVtcHR5LgotICAgIHJldHVybiBX
S011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCk7CisgICAgV0tSZXRhaW4obV9wZXJtaXNzaW9ucy5n
ZXQoKSk7CisgICAgcmV0dXJuIG1fcGVybWlzc2lvbnMuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXI6OnNldFBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGJv
b2wgYWxsb3dlZCkKK3sKKyAgICBhdXRvIHdrQWxsb3dlZCA9IGFkb3B0V0soV0tCb29sZWFuQ3Jl
YXRlKGFsbG93ZWQpKTsKKyAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKG1fcGVybWlzc2lvbnMuZ2V0
KCksIHRvV0sob3JpZ2luKS5nZXQoKSwgd2tBbGxvd2VkLmdldCgpKTsKIH0KIAogdm9pZCBXZWJO
b3RpZmljYXRpb25Qcm92aWRlcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS1BhZ2VS
ZWYsIFdLRGF0YVJlZiBub3RpZmljYXRpb25JRCkKQEAgLTE1Nyw2ICsxNzMsMTYgQEAgdm9pZCBX
ZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS1Bh
Z2VSZWYsIFdLRGF0YVJlZgogICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xp
Y2tOb3RpZmljYXRpb25fYihtX293bmluZ01hbmFnZXIuZ2V0KGlkZW50aWZpZXIpLCBub3RpZmlj
YXRpb25JRCk7CiB9CiAKK3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNpbXVsYXRlV2Vi
Tm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpCit7CisgICAg
YXV0byBzaGFyZWRNYW5hZ2VyID0gV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2Vydmlj
ZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFnZXIoKTsKKyAgICBmb3IgKGF1dG8mIGl0ZXJhdG9yIDog
bV9vd25pbmdNYW5hZ2VyKSB7CisgICAgICAgIGlmIChpdGVyYXRvci52YWx1ZSAhPSBzaGFyZWRN
YW5hZ2VyKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFdLTm90aWZpY2F0aW9uTWFu
YWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25fYihzaGFyZWRNYW5hZ2VyLCB1dWlkVG9E
YXRhKGl0ZXJhdG9yLmtleSkuZ2V0KCkpOworICAgIH0KK30KKwogdm9pZCBXZWJOb3RpZmljYXRp
b25Qcm92aWRlcjo6cmVzZXQoKQogewogICAgIGZvciAoYXV0byBpdGVyYXRvciA6IG1fb3duaW5n
TWFuYWdlcikgewpAQCAtMTY2LDYgKzE5Miw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlk
ZXI6OnJlc2V0KCkKICAgICB9CiAKICAgICBtX293bmluZ01hbmFnZXIuY2xlYXIoKTsKKyAgICBt
X3Blcm1pc3Npb25zID0gYWRvcHRXSyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXIuaAppbmRleCAwYzM4N2E2ZTZiNTUuLjU3YjZjZmFhNTEyZSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaApA
QCAtNDksMTEgKzQ5LDE2IEBAIHB1YmxpYzoKICAgICBXS0RpY3Rpb25hcnlSZWYgbm90aWZpY2F0
aW9uUGVybWlzc2lvbnMoKTsKIAogICAgIHZvaWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlj
ayhXS1BhZ2VSZWYsIFdLRGF0YVJlZiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBzaW11bGF0
ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKKwog
ICAgIHZvaWQgcmVzZXQoKTsKIAorICAgIHZvaWQgc2V0UGVybWlzc2lvbihjb25zdCBTdHJpbmcm
IG9yaWdpbiwgYm9vbCBhbGxvd2VkKTsKKwogcHJpdmF0ZToKICAgICBIYXNoU2V0PFdLUmV0YWlu
UHRyPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4+IG1fa25vd25NYW5hZ2VyczsKICAgICBIYXNo
TWFwPFVVSUQsIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4gbV9vd25pbmdNYW5hZ2VyOworICAg
IFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1fcGVybWlzc2lvbnM7CiB9Owog
CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451772</attachid>
            <date>2022-02-11 21:06:18 -0800</date>
            <delta_ts>2022-02-12 11:34:17 -0800</delta_ts>
            <desc>EWS v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>104243</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjExNjczMDkyNDhiYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcwpAQCAtMCwwICsxLDMwIEBACisKK2xldCBt
ZXNzYWdlQ2xpZW50cyA9IGFzeW5jIGZ1bmN0aW9uKG1zZykgeyAKKyAgICBjb25zdCBhbGxDbGll
bnRzID0gYXdhaXQgY2xpZW50cy5tYXRjaEFsbCh7CisgICAgICAgIGluY2x1ZGVVbmNvbnRyb2xs
ZWQ6IHRydWUKKyAgICB9KTsKKworICAgIGZvciAoY29uc3QgY2xpZW50IG9mIGFsbENsaWVudHMp
CisgICAgICAgIGNsaWVudC5wb3N0TWVzc2FnZShtc2cpOworfQorCitzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ25vdGlmaWNhdGlvbmNsaWNrJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBh
d2FpdCBtZXNzYWdlQ2xpZW50cygiY2xpY2tlZCIpOworICAgIGV2ZW50Lm5vdGlmaWNhdGlvbi5j
bG9zZSgpOworfSk7CisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcignbm90aWZpY2F0aW9uY2xvc2Un
LCBhc3luYyBmdW5jdGlvbihldmVudCkgeworICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJjbG9z
ZWQiKTsKK30pOworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyBmdW5j
dGlvbihldmVudCkgeworICAgIC8vIFJlcGx5IGlmIHRoZSBzaG93IHN1Y2NlZWRlZCBvciBmYWls
ZWQuCisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgcmVnaXN0cmF0aW9uLnNob3dOb3RpZmljYXRp
b24oIlRoaXMgaXMgYSBub3RpZmljYXRpb24iKTsKKyAgICB9IGNhdGNoKGVycm9yKSB7CisgICAg
ICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJzaG93RmFpbGVkIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoInNob3duIik7Cit9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3Rp
ZmljYXRpb24tYWxsb3dlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmFkNTRiMDI0ZDEzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25v
dGlmaWNhdGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRl
c3RzIHRoYXQgYSBub3RpZmljYXRpb24gc2hvd24gYnkgYSBzZXJ2aWNlIHdvcmtlciBjYW4gYmUg
Y2xpY2tlZCBhbmQgY2xvc2VkLCB3aXRoIHRob3NlIGFjdGlvbnMgYmVpbmcgb2JzZXJ2YWJsZSBi
eSB0aGUgc2VydmljZSB3b3JrZXIKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgTm90aWZpY2F0aW9uLnBlcm1pc3Npb24gaXMgImdyYW50ZWQiCitQQVNTIGdvdENsaWNrZWQg
aXMgZmFsc2UKK1BBU1MgZ290Q2xvc2VkIGlzIGZhbHNlCitQQVNTIGdvdENsaWNrZWQgaXMgdHJ1
ZQorUEFTUyBnb3RDbG9zZWQgaXMgZmFsc2UKK1BBU1MgQ2xvc2UgaGFzIGJlZW4gb2JzZXJ2ZWQK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hv
d25vdGlmaWNhdGlvbi1hbGxvd2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFkNGEwMDE1Njc5NQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24t
YWxsb3dlZC5odG1sCkBAIC0wLDAgKzEsNzYgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
bm90aWZpY2F0aW9ucy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlv
biBmYWlsVGhlVGVzdChtc2cpCit7CisgICAgdGVzdEZhaWxlZChtc2cpOworICAgIGlmICh0ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVz
dFJ1bm5lci5ncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24odGVzdFVSTCk7CisgICAgc2V0
VGltZW91dCgiZmFpbFRoZVRlc3QoJ3RpbWVkIG91dCcpIiwgMTUwMDApOworfQorCitkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uIHNob3duIGJ5IGEgc2VydmljZSB3
b3JrZXIgY2FuIGJlIGNsaWNrZWQgYW5kIGNsb3NlZCwgd2l0aCB0aG9zZSBhY3Rpb25zIGJlaW5n
IG9ic2VydmFibGUgYnkgdGhlIHNlcnZpY2Ugd29ya2VyIik7CisKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygiTm90aWZpY2F0aW9uLnBlcm1pc3Npb24iLCAiZ3JhbnRlZCIpOworCithc3luYyBmdW5j
dGlvbiByZWdpc3RlclNlcnZpY2VXb3JrZXIoKSB7CisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3
YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCdyZXNvdXJjZXMvc2hvd25vdGlm
aWNhdGlvbi13b3JrZXIuanMnKTsKKyAgICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAg
ICAgcmV0dXJuIHRlc3RGYWlsZWQoIk5vIHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChy
ZWdpc3RyYXRpb24uYWN0aXZlKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1l
c3NhZ2UoIlN0YXJ0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFs
bGluZ1dvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGlu
Z1dvcmtlcikKKyAgICAgICAgZmFpbFRoZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcg
d29ya2VyIik7CisKKyAgICBpbnN0YWxsaW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRl
Y2hhbmdlIiwgKCkgPT4geworICAgICAgICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0g
ImFjdGl2YXRlZCIpIHsKKyAgICAgICAgICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2Uo
InRyeXNob3ciKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCit2YXIgZ290Q2xpY2tlZCA9IGZh
bHNlOwordmFyIGdvdENsb3NlZCA9IGZhbHNlOworCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5kYXRh
ID09ICJzaG93RmFpbGVkIikgeworICAgICAgICBmYWlsVGhlVGVzdCgiVW5leHBlY3RlZGx5IHJl
Y2VpdmVkIHRoZSBmYWlsZWQtdG8tc2hvdyBtZXNzYWdlIik7CisgICAgfSBlbHNlIGlmIChldmVu
dC5kYXRhID09ICJzaG93biIpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9ucygpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xpY2tlZCIp
IHsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZ290Q2xpY2tlZCIpOworICAgICAgICBzaG91bGRC
ZUZhbHNlKCJnb3RDbG9zZWQiKTsKKyAgICAgICAgZ290Q2xpY2tlZCA9IHRydWU7CisgICAgfSBl
bHNlIGlmIChldmVudC5kYXRhID09ICJjbG9zZWQiKSB7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgi
Z290Q2xpY2tlZCIpCisgICAgICAgIHNob3VsZEJlRmFsc2UoImdvdENsb3NlZCIpCisgICAgICAg
IGdvdENsb3NlZCA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTWVz
c2FnZSByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOworICAgIH0KKyAgICAKKyAgICBpZiAoZ290
Q2xvc2VkKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNsb3NlIGhhcyBiZWVuIG9ic2VydmVkIik7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgIH0KK30pOworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0icmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkiPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5p
ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
c2hvd25vdGlmaWNhdGlvbi1kZW5pZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uMjAxOGE0M2U1ZGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5p
ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgbm90aWZp
Y2F0aW9uIHNob3duIGJ5IGEgc2VydmljZSB3b3JrZXIgY2FuIGJlIGNsaWNrZWQgYW5kIGNsb3Nl
ZCwgd2l0aCB0aG9zZSBhY3Rpb25zIGJlaW5nIG9ic2VydmFibGUgYnkgdGhlIHNlcnZpY2Ugd29y
a2VyCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIE5vdGlmaWNhdGlvbi5w
ZXJtaXNzaW9uIGlzICJkZW5pZWQiCitQQVNTIE5vdGlmaWNhdGlvbiBmYWlsZWQgdG8gc2hvdwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zaG93
bm90aWZpY2F0aW9uLWRlbmllZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5pZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjc3NDZmN2M2NmU0NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tZGVu
aWVkLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy9ub3Rp
ZmljYXRpb25zLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGZh
aWxUaGVUZXN0KG1zZykKK3sKKyAgICB0ZXN0RmFpbGVkKG1zZyk7CisgICAgaWYgKHRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVu
bmVyLmRlbnlXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKHRlc3RVUkwpOworICAgIHNldFRpbWVv
dXQoImZhaWxUaGVUZXN0KCd0aW1lZCBvdXQnKSIsIDE1MDAwKTsKK30KKworZGVzY3JpcHRpb24o
IlRoaXMgdGVzdHMgdGhhdCBhIG5vdGlmaWNhdGlvbiBzaG93biBieSBhIHNlcnZpY2Ugd29ya2Vy
IGNhbiBiZSBjbGlja2VkIGFuZCBjbG9zZWQsIHdpdGggdGhvc2UgYWN0aW9ucyBiZWluZyBvYnNl
cnZhYmxlIGJ5IHRoZSBzZXJ2aWNlIHdvcmtlciIpOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmco
Ik5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIiwgImRlbmllZCIpOworCithc3luYyBmdW5jdGlvbiBy
ZWdpc3RlclNlcnZpY2VXb3JrZXIoKSB7CisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5h
dmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCdyZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlv
bi13b3JrZXIuanMnKTsKKyAgICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAgICAgcmV0
dXJuIHRlc3RGYWlsZWQoIk5vIHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChyZWdpc3Ry
YXRpb24uYWN0aXZlKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1lc3NhZ2Uo
IlN0YXJ0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFsbGluZ1dv
cmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGluZ1dvcmtl
cikKKyAgICAgICAgZmFpbFRoZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcgd29ya2Vy
Iik7CisKKyAgICBpbnN0YWxsaW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRlY2hhbmdl
IiwgKCkgPT4geworICAgICAgICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0gImFjdGl2
YXRlZCIpIHsKKyAgICAgICAgICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2UoInRyeXNo
b3ciKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5kYXRh
ID09ICJzaG93RmFpbGVkIikgeworICAgICAgICB0ZXN0UGFzc2VkKCJOb3RpZmljYXRpb24gZmFp
bGVkIHRvIHNob3ciKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09
ICJzaG93biIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTm90aWZpY2F0aW9uIHNob3duLCBidXQg
c2hvdWxkbid0IGhhdmUgYmVlbiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQo
Ik1lc3NhZ2UgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKKyAgICB9Cit9KTsKKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJlZ2lzdGVyU2VydmljZVdvcmtlcigpIj4KKzwv
Ym9keT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlc0ludGVybmFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2Vi
UHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCmluZGV4IDhkM2VlZDEzOTU0Zi4uMDFiMmY1ZTZiODFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXNJbnRlcm5hbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlc0ludGVybmFsLnlhbWwKQEAgLTY0NCw4ICs2NDQsMTAgQEAgTm90aWZpY2F0aW9u
RXZlbnRFbmFibGVkOgogICBjb25kaXRpb246IEVOQUJMRShOT1RJRklDQVRJT05fRVZFTlQpCiAg
IGRlZmF1bHRWYWx1ZToKICAgICBXZWJDb3JlOgorICAgICAgIkVOQUJMRShOT1RJRklDQVRJT05f
RVZFTlQpIjogdHJ1ZQogICAgICAgZGVmYXVsdDogZmFsc2UKICAgICBXZWJLaXQ6CisgICAgICAi
RU5BQkxFKE5PVElGSUNBVElPTl9FVkVOVCkiOiB0cnVlCiAgICAgICBkZWZhdWx0OiBmYWxzZQog
CiBPZmZzY3JlZW5DYW52YXNFbmFibGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCA2ODViMWU0ZDFhM2EuLjA4
ZTJhOGVkOGI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTQwLDcgKzQwLDkgQEAKICNpbmNsdWRlICJKU0RP
TVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgogI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25FdmVudC5o
IgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIgorI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldpbmRvd0V2ZW50TG9vcC5o
IgogI2luY2x1ZGUgIldpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtMTAyLDkgKzEwNCwxOSBAQCB2b2lkIE5vdGlmaWNh
dGlvbjo6c2hvdygpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjbGllbnQtPmNoZWNrUGVy
bWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpICE9IFBlcm1pc3Npb246OkdyYW50ZWQp
IHsKLSAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisgICAgICAgIHN3aXRjaCAobV9ub3Rp
ZmljYXRpb25Tb3VyY2UpIHsKKyAgICAgICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3Vt
ZW50OgorICAgICAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OlNlcnZpY2VXb3JrZXI6CisgICAg
ICAgICAgICAvLyBXZSBkaWQgYSBwZXJtaXNzaW9uIGNoZWNrIHdoZW4gU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbjo6c2hvd05vdGlmaWNhdGlvbigpIHdhcyBjYWxsZWQuCisgICAgICAgICAgICAv
LyBJZiBwZXJtaXNzaW9uIGhhcyBzaW5jZSBiZWVuIHJldm9rZWQsIHRoZW4gc2lsZW50bHkgZmFp
bGluZyBoZXJlIGlzIGV4cGVjdGVkIGJlaGF2aW9yLgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKwogICAgICAgICByZXR1cm47CiAgICAgfQorCiAgICAgaWYgKGNsaWVudC0+c2hvdygq
dGhpcykpCiAgICAgICAgIG1fc3RhdGUgPSBTaG93aW5nOwogfQpAQCAtMTU4LDIwICsxNzAsNTQg
QEAgdm9pZCBOb3RpZmljYXRpb246OmZpbmFsaXplKCkKIAogdm9pZCBOb3RpZmljYXRpb246OmRp
c3BhdGNoU2hvd0V2ZW50KCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
aWYgKG1fbm90aWZpY2F0aW9uU291cmNlICE9IE5vdGlmaWNhdGlvblNvdXJjZTo6RG9jdW1lbnQp
CisgICAgICAgIHJldHVybjsKKwogICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywg
VGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5z
aG93RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykp
OwogfQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbGlja0V2ZW50KCkKIHsKLSAgICBx
dWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFj
dGlvbiwgW3RoaXNdIHsKLSAgICAgICAgV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yIHdpbmRv
d0ZvY3VzQWxsb3dlZDsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKLSAgICB9KTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
c3dpdGNoIChtX25vdGlmaWNhdGlvblNvdXJjZSkgeworICAgIGNhc2UgTm90aWZpY2F0aW9uU291
cmNlOjpEb2N1bWVudDoKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlz
LCBUYXNrU291cmNlOjpVc2VySW50ZXJhY3Rpb24sIFt0aGlzXSB7CisgICAgICAgICAgICBXaW5k
b3dGb2N1c0FsbG93ZWRJbmRpY2F0b3Igd2luZG93Rm9jdXNBbGxvd2VkOworICAgICAgICAgICAg
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgfSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTm90aWZpY2F0aW9uU291cmNlOjpTZXJ2aWNlV29y
a2VyOgorICAgICAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwor
ICAgICAgICBpZiAoIWNvbnRleHQpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBSRUxF
QVNFX0FTU0VSVChjb250ZXh0LT5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKj4oY29udGV4dCktPnBvc3RU
YXNrVG9GaXJlTm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGljaywg
KnRoaXMsIHsgfSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAogdm9pZCBOb3RpZmljYXRp
b246OmRpc3BhdGNoQ2xvc2VFdmVudCgpCiB7Ci0gICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50
KCp0aGlzLCBUYXNrU291cmNlOjpVc2VySW50ZXJhY3Rpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmNsb3NlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxh
YmxlOjpObykpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzd2l0Y2ggKG1f
bm90aWZpY2F0aW9uU291cmNlKSB7CisgICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3Vt
ZW50OgorICAgICAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6
OlVzZXJJbnRlcmFjdGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xvc2VFdmVudCwg
RXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTm90aWZpY2F0aW9uU291cmNlOjpTZXJ2aWNlV29ya2VyOgorICAg
ICAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgICAgICBp
ZiAoIWNvbnRleHQpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBSRUxFQVNFX0FTU0VS
VChjb250ZXh0LT5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKj4oY29udGV4dCktPnBvc3RUYXNrVG9GaXJl
Tm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbG9zZSwgKnRoaXMsIHsg
fSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGZpbmFsaXplKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25F
dmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uRXZlbnQuY3BwCmluZGV4IDU4NzRiNzYxMDJmZi4uZTFkMjk3Yjk2YTEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25FdmVudC5jcHAKQEAgLTMwLDYgKzMwLDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE5vdGlmaWNhdGlvbkV2ZW50KTsKKworUmVmPE5v
dGlmaWNhdGlvbkV2ZW50PiBOb3RpZmljYXRpb25FdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21TdHJp
bmcmIHR5cGUsIEluaXQmJiBpbml0LCBJc1RydXN0ZWQgaXNUcnVzdGVkKQoreworICAgIGF1dG8q
IG5vdGlmaWNhdGlvbiA9IGluaXQubm90aWZpY2F0aW9uLmdldCgpOworICAgIGF1dG8gYWN0aW9u
ID0gaW5pdC5hY3Rpb247CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTm90aWZpY2F0aW9uRXZl
bnQodHlwZSwgV1RGTW92ZShpbml0KSwgbm90aWZpY2F0aW9uLCBhY3Rpb24sIGlzVHJ1c3RlZCkp
OworfQorCitSZWY8Tm90aWZpY2F0aW9uRXZlbnQ+IE5vdGlmaWNhdGlvbkV2ZW50OjpjcmVhdGUo
Y29uc3QgQXRvbVN0cmluZyYgdHlwZSwgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sIGNvbnN0
IFN0cmluZyYgYWN0aW9uLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE5vdGlmaWNhdGlvbkV2ZW50KHR5cGUsIHsgfSwgbm90aWZpY2F0aW9uLCBhY3Rp
b24sIGlzVHJ1c3RlZCkpOworfQorCitOb3RpZmljYXRpb25FdmVudDo6Tm90aWZpY2F0aW9uRXZl
bnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgTm90aWZpY2F0aW9uRXZlbnRJbml0JiYgZXZlbnRJ
bml0LCBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgY29uc3QgU3RyaW5nJiBhY3Rpb24sIElz
VHJ1c3RlZCBpc1RydXN0ZWQpCisgICAgOiBFeHRlbmRhYmxlRXZlbnQodHlwZSwgV1RGTW92ZShl
dmVudEluaXQpLCBpc1RydXN0ZWQpCisgICAgLCBtX25vdGlmaWNhdGlvbihub3RpZmljYXRpb24p
CisgICAgLCBtX2FjdGlvbihhY3Rpb24pCit7Cit9CisKIE5vdGlmaWNhdGlvbkV2ZW50Ojp+Tm90
aWZpY2F0aW9uRXZlbnQoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaAppbmRleCA5MjdlYjUwMWFkOWIu
LmIyMWMyZWQ4NGFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkV2ZW50LmgKQEAgLTMzLDE0ICszMywyNSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0gY2xhc3MgTm90aWZpY2F0aW9uRXZlbnRUeXBlIDog
Ym9vbCB7CisgICAgQ2xpY2ssCisgICAgQ2xvc2UsCit9OworCitzdHJ1Y3QgTm90aWZpY2F0aW9u
RXZlbnRJbml0IDogRXh0ZW5kYWJsZUV2ZW50SW5pdCB7CisgICAgUmVmUHRyPE5vdGlmaWNhdGlv
bj4gbm90aWZpY2F0aW9uOworICAgIFN0cmluZyBhY3Rpb247Cit9OworCiBjbGFzcyBOb3RpZmlj
YXRpb25FdmVudCBmaW5hbCA6IHB1YmxpYyBFeHRlbmRhYmxlRXZlbnQgeworICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoTm90aWZpY2F0aW9uRXZlbnQpOwogcHVibGljOgogICAgIH5Ob3RpZmlj
YXRpb25FdmVudCgpOwogCi0gICAgc3RydWN0IEluaXQgOiBFeHRlbmRhYmxlRXZlbnRJbml0IHsK
LSAgICAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uOwotICAgICAgICBTdHJp
bmcgYWN0aW9uOwotICAgIH07CisgICAgdXNpbmcgSW5pdCA9IE5vdGlmaWNhdGlvbkV2ZW50SW5p
dDsKKworICAgIHN0YXRpYyBSZWY8Tm90aWZpY2F0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
U3RyaW5nJiwgSW5pdCYmLCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsKKyAgICBzdGF0aWMg
UmVmPE5vdGlmaWNhdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYsIE5vdGlmaWNh
dGlvbiosIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsK
IAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gTm90aWZpY2F0aW9uRXZlbnRJbnRlcmZhY2VUeXBlOyB9CiAKQEAgLTQ4LDYgKzU5LDggQEAg
cHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uKCkgeyByZXR1cm4gbV9hY3Rpb247IH0K
IAogcHJpdmF0ZToKKyAgICBOb3RpZmljYXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiwgTm90
aWZpY2F0aW9uRXZlbnRJbml0JiYsIE5vdGlmaWNhdGlvbiosIGNvbnN0IFN0cmluZyYgYWN0aW9u
LCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsKKwogICAgIFJlZlB0cjxOb3RpZmljYXRpb24+
IG1fbm90aWZpY2F0aW9uOwogICAgIFN0cmluZyBtX2FjdGlvbjsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRW1wdHlTY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRW1wdHlTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMjMxYjNiZjFj
YTk4Li43MWM3MmVmOWM5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbXB0eVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRW1wdHlTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTk0LDYgKzk0LDEwIEBAIHByaXZhdGU6CiAKICAgICBj
b25zdCBTZXR0aW5nczo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fc2V0dGluZ3NWYWx1ZXM7IH0KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAg
IE5vdGlmaWNhdGlvbkNsaWVudCogbm90aWZpY2F0aW9uQ2xpZW50KCkgZmluYWwgeyByZXR1cm4g
bnVsbHB0cjsgfQorI2VuZGlmCisKICAgICBjbGFzcyBFbXB0eUV2ZW50TG9vcCBmaW5hbCA6IHB1
YmxpYyBFdmVudExvb3AgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFJlZjxFbXB0eUV2
ZW50TG9vcD4gY3JlYXRlKEpTQzo6Vk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgKaW5kZXggZDAwMGQ1OWQ1YTA1Li4wNzI3YjFmMTRhMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtODAsNiArODAs
MTAgQEAgZW51bSBjbGFzcyBMb2FkZWRGcm9tT3BhcXVlU291cmNlIDogdWludDhfdDsKIGVudW0g
Y2xhc3MgUmVmZXJyZXJQb2xpY3kgOiB1aW50OF90OwogZW51bSBjbGFzcyBUYXNrU291cmNlIDog
dWludDhfdDsKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorY2xhc3MgTm90aWZpY2F0aW9u
Q2xpZW50OworI2VuZGlmCisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiBjbGFzcyBTZXJ2
aWNlV29ya2VyOwogY2xhc3MgU2VydmljZVdvcmtlckNvbnRhaW5lcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggY2JmMjZjYjE1YmQ1Li4zZmU1
MWZkMWU0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oCkBAIC00MDMsNyArNDAzLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5P
VElGSUNBVElPTl9FVkVOVCkKLSAgICBib29sIG1fbm90aWZpY2F0aW9uRXZlbnRFbmFibGVkIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fbm90aWZpY2F0aW9uRXZlbnRFbmFibGVkIHsgdHJ1ZSB9Owog
I2VuZGlmCiAKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNvY29hLm1tCmluZGV4IDI5OWZjNGJkMmViYy4uMTBiZTAwY2NlMDAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTE4Myw3ICsxODMsNyBAQCBSZXRh
aW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9u
KENGU3RyaW5nUmVmIGlkZW50aQogCiAgICAgaWYgKHNob3VsZERpc2FibGVDRlVSTENhY2hlID09
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6U2hvdWxkRGlzYWJsZUNGVVJMQ2FjaGU6Olllcykgewog
I2lmIEhBVkUoQ0ZORVRXT1JLX0RJU0FCTEVfQ0FDSEVfU1BJKQotICAgICAgICBfQ0ZVUkxTdG9y
YWdlU2Vzc2lvbkRpc2FibGVDYWNoZShzdG9yYWdlU2Vzc2lvbi5nZXQoKSk7CisgICAgICAgIC8v
X0NGVVJMU3RvcmFnZVNlc3Npb25EaXNhYmxlQ2FjaGUoc3RvcmFnZVNlc3Npb24uZ2V0KCkpOwog
I2Vsc2UKICAgICAgICAgc2hvdWxkRGlzYWJsZUNGVVJMQ2FjaGUgPSBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OlNob3VsZERpc2FibGVDRlVSTENhY2hlOjpObzsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDFk
OGUzYWQyYWNiOS4uYTBkMTZkNzQ3MDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC05NCw2ICs5NCwxMCBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9p
ZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKKyNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIG5vdGlmaWNhdGlvbkNsaWVudCgp
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgorCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI+IG1fc2NyaXB0OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTY3JpcHRNb2R1bGVMb2FkZXI+IG1fbW9kdWxlTG9hZGVyOwogICAgIFdvcmtl
ck9yV29ya2xldFRocmVhZCogbV90aHJlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuaAppbmRleCBiNGY3Njk0YzZiMWUuLmRjOTc3NGU5MmU3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeS5oIgogI2luY2x1ZGUgIkZldGNoUmVxdWVzdENyZWRlbnRpYWxzLmgiCisjaW5j
bHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbi5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xl
dFRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJU
eXBlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDkwNGQ0ZmM4OGNhYS4uZjMzYjljMDYz
ZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkV2ZW50Lmgi
CiAjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50LmgiCkBAIC02OSw3ICs3MCwxMyBAQCBT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmJiBjbwogewogfQogCi1TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6
On5TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSA9IGRlZmF1bHQ7CitTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU6On5TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKQoreworICAgIC8vIE5vdGlmaWNh
dGlvbkNsaWVudCBtaWdodCBoYXZlIHNvbWUgaW50ZXJhY3Rpb25zIHBlbmRpbmcgd2l0aCB0aGUg
bWFpbiB0aHJlYWQsCisgICAgLy8gc28gaXQgc2hvdWxkIGFsc28gYmUgZGVzdHJveWVkIHRoZXJl
LgorICAgIGNhbGxPbk1haW5UaHJlYWQoW25vdGlmaWNhdGlvbkNsaWVudCA9IFdURk1vdmUobV9u
b3RpZmljYXRpb25DbGllbnQpXSB7CisgICAgfSk7Cit9CiAKIHZvaWQgU2VydmljZVdvcmtlckds
b2JhbFNjb3BlOjpub3RpZnlTZXJ2aWNlV29ya2VyUGFnZU9mQ3JlYXRpb25JZk5lY2Vzc2FyeSgp
CiB7CkBAIC0yMDgsNiArMjE1LDMwIEBAIHZvaWQgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpk
aWRTYXZlU2NyaXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiBzY3JpcHQsIEhhc2hNCiAgICAgfQog
fQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTl9FVkVOVCkKK3ZvaWQgU2VydmljZVdvcmtlckds
b2JhbFNjb3BlOjpwb3N0VGFza1RvRmlyZU5vdGlmaWNhdGlvbkV2ZW50KE5vdGlmaWNhdGlvbkV2
ZW50VHlwZSBldmVudFR5cGUsIE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBjb25zdCBTdHJp
bmcmIGFjdGlvbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgdGhyZWFk
KCkucnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbZXZlbnRUeXBlLCBwcm90ZWN0ZWROb3RpZmlj
YXRpb24gPSBSZWYgeyBub3RpZmljYXRpb24gfSwgYWN0aW9uID0gYWN0aW9uLmlzb2xhdGVkQ29w
eSgpXShhdXRvJiBzY29wZSkgeworICAgICAgICBzY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2so
VGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbJnNjb3BlLCBwcm90ZWN0ZWRTY29wZSA9IFJl
ZiB7IHNjb3BlIH0sIGV2ZW50VHlwZSwgcHJvdGVjdGVkTm90aWZpY2F0aW9uLCBhY3Rpb25dIHsK
KyAgICAgICAgICAgIEF0b21TdHJpbmcgZXZlbnROYW1lOworICAgICAgICAgICAgc3dpdGNoIChl
dmVudFR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGlj
azoKKyAgICAgICAgICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkubm90aWZpY2F0aW9u
Y2xpY2tFdmVudDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTm90
aWZpY2F0aW9uRXZlbnRUeXBlOjpDbG9zZToKKyAgICAgICAgICAgICAgICBldmVudE5hbWUgPSBl
dmVudE5hbWVzKCkubm90aWZpY2F0aW9uY2xvc2VFdmVudDsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byBldmVudCA9IE5vdGlmaWNhdGlv
bkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBwcm90ZWN0ZWROb3RpZmljYXRpb24ucHRyKCksIGFj
dGlvbiwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CisgICAgICAgICAgICBzdGF0
aWNfY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmPihzY29wZSkuZGlzcGF0Y2hFdmVudChl
dmVudCk7CisgICAgICAgIH0pOworICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkp
OworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCAwNzA3OWYxOTUzNDMuLjUx
MGMxYjA3MmI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMzksMTEgKzM5LDE0IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIEV4dGVuZGFibGVF
dmVudDsKIGNsYXNzIFBhZ2U7Ci1zdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGE7CiBjbGFz
cyBTZXJ2aWNlV29ya2VyQ2xpZW50OwogY2xhc3MgU2VydmljZVdvcmtlckNsaWVudHM7CiBjbGFz
cyBTZXJ2aWNlV29ya2VyVGhyZWFkOwogCitlbnVtIGNsYXNzIE5vdGlmaWNhdGlvbkV2ZW50VHlw
ZSA6IGJvb2w7CisKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsKKwogY2xhc3MgU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlIGZpbmFsIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3BlIHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk7CiBw
dWJsaWM6CkBAIC04MCw3ICs4MywxMSBAQCBwdWJsaWM6CiAgICAgRmV0Y2hPcHRpb25zOjpEZXN0
aW5hdGlvbiBkZXN0aW5hdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEZldGNoT3B0aW9uczo6
RGVzdGluYXRpb246OlNlcnZpY2V3b3JrZXI7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2Uq
IHNlcnZpY2VXb3JrZXJQYWdlKCk7Ci0gICAgCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VW
RU5UKQorICAgIHZvaWQgcG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChOb3RpZmljYXRp
b25FdmVudFR5cGUsIE5vdGlmaWNhdGlvbiYsIGNvbnN0IFN0cmluZyYgYWN0aW9uKTsKKyNlbmRp
ZgorCiBwcml2YXRlOgogICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmJiwgU2VydmljZVdvcmtlckRhdGEmJiwgY29uc3QgV29ya2VyUGFyYW1ldGVy
cyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgU2VydmljZVdvcmtlclRocmVhZCYsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Kiwg
U29ja2V0UHJvdmlkZXIqLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiYmLCBQ
QUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBub3RpZnlTZXJ2aWNlV29ya2VyUGFnZU9mQ3JlYXRp
b25JZk5lY2Vzc2FyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDUwMTc4MWY3MGQ1
Zi4uMTVmMmI2YmNmNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0zMCwxMCArMzAs
MTMgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25QcmVsb2FkTWFuYWdlci5oIgorI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb24u
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNv
bnRhaW5lci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgpAQCAtMjY0LDIwICsy
NjcsMzggQEAgTmF2aWdhdGlvblByZWxvYWRNYW5hZ2VyJiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uOjpuYXZpZ2F0aW9uUHJlbG9hZCgpCiB9CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VW
RU5UKQotdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBOb3RpZmlj
YXRpb25PcHRpb25zJiBvcHRpb25zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNl
KQordm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE5v
dGlmaWNhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsKLSAgICBVTlVTRURfUEFSQU0ob3B0
aW9ucyk7CisgICAgaWYgKCFtX2FjdGl2ZVdvcmtlcikgeworICAgICAgICBwcm9taXNlLnJlamVj
dChFeGNlcHRpb24geyBUeXBlRXJyb3IsICJSZWdpc3RyYXRpb24gZG9lcyBub3QgaGF2ZSBhbiBh
Y3RpdmUgd29ya2VyIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byog
Y2xpZW50ID0gY29udGV4dC5ub3RpZmljYXRpb25DbGllbnQoKTsKKyAgICBpZiAoIWNsaWVudCkg
eworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsICJSZWdpc3Ry
YXRpb24gbm90IGFjdGl2ZSJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIHBy
b21pc2UucmVqZWN0KCk7CisgICAgaWYgKGNsaWVudC0+Y2hlY2tQZXJtaXNzaW9uKCZjb250ZXh0
KSAhPSBOb3RpZmljYXRpb25QZXJtaXNzaW9uOjpHcmFudGVkKSB7CisgICAgICAgIHByb21pc2Uu
cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlJlZ2lzdHJhdGlvbiBkb2VzIG5vdCBoYXZl
IHBlcm1pc3Npb24gdG8gc2hvdyBub3RpZmljYXRpb25zIl9zIH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gVGhlIE5vdGlmaWNhdGlvbiBpcyBrZXB0IGFsaXZlIGJ5IHZpcnR1
ZSBvZiBiZWluZyBzaG93KCknbiBzb29uLgorICAgIC8vIEZJWE1FOiBXaGVuIGltcGxlbWVudGlu
ZyBnZXROb3RpZmljYXRpb25zKCksIHN0b3JlIHRoaXMgTm90aWZpY2F0aW9uIGluIHRoZSByZWdp
c3RyYXRpb24ncyBub3RpZmljYXRpb24gbGlzdC4KKyAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IE5v
dGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnRleHQsIHRpdGxlLCBvcHRpb25zKTsKKworICAgIGNvbnRl
eHQuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgpIG11dGFibGUgeworICAgICAgICBwcm9taXNlLnJl
c29sdmUoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpn
ZXROb3RpZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBHZXROb3RpZmlj
YXRpb25PcHRpb25zJiBmaWx0ZXIsIERPTVByb21pc2VEZWZlcnJlZDxJRExTZXF1ZW5jZTxJRExE
T01TdHJpbmc+PiBwcm9taXNlKQogewogICAgIFVOVVNFRF9QQVJBTShmaWx0ZXIpOwogCi0gICAg
cHJvbWlzZS5yZWplY3QoKTsKLQorICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciwgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uZ2V0Tm90aWZpY2F0aW9ucyBub3QgeWV0
IGltcGxlbWVudGVkIl9zIH0pOwogfQogI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05fRVZF
TlQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBjMGUwMzYzNmIxODkuLjAwYzA0MmQ0ZmYwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFF1
ZXJ5T3B0aW9ucy5oIgpAQCAtNzAsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsK
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCA9IDA7CisgICAg
ICAgIHZpcnR1YWwgUGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIoKSBjb25zdCA9IDAgOwog
CiAgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc2VkOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggOGM4MWM3YjEwN2VjLi5lMmU0MDhiMTA5
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0yNzksNiArMjc5LDEwIEBAIHZv
aWQgU2VydmljZVdvcmtlclRocmVhZDo6c3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
LCBib29sKT4mJiBjYWxsYmFjaykKICAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7CiAKICAgICBX
b3JrZXJUaHJlYWQ6OnN0YXJ0KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XShhdXRvJiBlcnJvck1lc3NhZ2UpIG11dGFibGUgeworI2lm
bmRlZiBOREVCVUcKKyAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciB0aHJlYWQgZmFpbGVkIHRv
IHN0YXJ0OiAlcyIsIGVycm9yTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgogICAgICAg
ICBib29sIGRvZXNIYW5kbGVGZXRjaCA9IHRydWU7CiAgICAgICAgIGlmICh3ZWFrVGhpcykgewog
ICAgICAgICAgICAgd2Vha1RoaXMtPmZpbmlzaGVkU3RhcnRpbmcoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmgKaW5kZXggMGE0YmM3ZmY0OTQyLi5lNWNiNWMxZGQxNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIENh
Y2hlU3RvcmFnZVByb3ZpZGVyOwogY2xhc3MgRmV0Y2hMb2FkZXI7CiBjbGFzcyBGZXRjaExvYWRl
ckNsaWVudDsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOworY2xhc3MgTm90aWZpY2F0aW9uQ2xp
ZW50OwogY2xhc3MgU2VydmljZVdvcmtlckluc3BlY3RvclByb3h5Owogc3RydWN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTsKIGVudW0gY2xhc3MgV29ya2VyVGhyZWFkTW9kZSA6IGJvb2w7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
CmluZGV4IDM5ZmUxYjc4N2RhNy4uOGUyYmE4OTRiOWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTYzLDYgKzE2Myw3
IEBAIHZvaWQgU1dTZXJ2ZXI6OndoZW5JbXBvcnRJc0NvbXBsZXRlZElmTmVlZGVkKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjCiAKIHZvaWQgU1dTZXJ2ZXI6OnJlZ2lzdHJhdGlv
blN0b3JlRGF0YWJhc2VGYWlsZWRUb09wZW4oKQogeworICAgIExPRyhTZXJ2aWNlV29ya2VyLCAi
RmFpbGVkIHRvIG9wZW4gU1cgcmVnaXN0cmF0aW9uIGRhdGFiYXNlIik7CiAgICAgQVNTRVJUKCFt
X2ltcG9ydENvbXBsZXRlZCk7CiAgICAgaWYgKCFtX2ltcG9ydENvbXBsZXRlZCkKICAgICAgICAg
cmVnaXN0cmF0aW9uU3RvcmVJbXBvcnRDb21wbGV0ZSgpOwpAQCAtMTczLDYgKzE3NCw4IEBAIHZv
aWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmJiBkYXRhKQogICAgIC8vIFBhZ2VzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFibGUgdG8g
bWFrZSBhIG5ldyByZWdpc3RyYXRpb24gdG8gdGhpcyBrZXkgd2hpbGUgdGhlIGltcG9ydCB3YXMg
c3RpbGwgdGFraW5nIHBsYWNlLgogICAgIEFTU0VSVCghbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFw
LmNvbnRhaW5zKGRhdGEucmVnaXN0cmF0aW9uLmtleSkpOwogCisgICAgTE9HKFNlcnZpY2VXb3Jr
ZXIsICJBZGRpbmcgcmVnaXN0cmF0aW9uIGZyb20gc3RvcmUgZm9yICVzIiwgZGF0YS5yZWdpc3Ry
YXRpb24ua2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIGF1dG8gcmVn
aXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbihkYXRhLnNjcmlwdFVS
TCk7CiAgICAgdmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4ocmVnaXN0cmFibGVEb21haW4sIFNl
cnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlciwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSAoYm9vbCBpc1ZhbGlkKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTE5OCw2ICsyMDEsOCBAQCB2b2lkIFNXU2VydmVy
OjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySQogCiB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVf
cHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJhdGlvbikKIHsKKyAgICBMT0coU2Vy
dmljZVdvcmtlciwgIkFkZGluZyByZWdpc3RyYXRpb24gbGl2ZSBmb3IgJXMiLCByZWdpc3RyYXRp
b24tPmtleSgpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIGlmICghbV9z
Y29wZVRvUmVnaXN0cmF0aW9uTWFwLmNvbnRhaW5zKHJlZ2lzdHJhdGlvbi0+a2V5KCkpICYmICFT
ZWN1cml0eU9yaWdpbjo6aXNMb2NhbEhvc3RPckxvb3BiYWNrSVBBZGRyZXNzKHJlZ2lzdHJhdGlv
bi0+a2V5KCkudG9wT3JpZ2luKCkuaG9zdCkpCiAgICAgICAgIG1fdW5pcXVlUmVnaXN0cmF0aW9u
Q291bnQrKzsKIApAQCAtMTIyNCwyMCArMTIyOSwyNCBAQCB2b2lkIFNXU2VydmVyOjpzb2Z0VXBk
YXRlKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCiB2b2lkIFNXU2VydmVyOjpw
cm9jZXNzUHVzaE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYgZGF0YSwg
VVJMJiYgcmVnaXN0cmF0aW9uVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNh
bGxiYWNrKQogewogICAgIHdoZW5JbXBvcnRJc0NvbXBsZXRlZElmTmVlZGVkKFt0aGlzLCB3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgcmVnaXN0cmF0
aW9uVVJMID0gV1RGTW92ZShyZWdpc3RyYXRpb25VUkwpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBMT0coUHVzaCwgIlNlcnZpY2VXb3JrZXIgaW1w
b3J0IGlzIGNvbXBsZXRlLCBjYW4gaGFuZGxlIHB1c2ggbWVzc2FzZ2Ugbm93Iik7CiAgICAgICAg
IGlmICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQorCiAgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tVVJMKHJlZ2lzdHJhdGlvblVSTCk7CiAgICAgICAgIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0aW9uS2V5IHsgV1RGTW92ZShvcmlnaW4pLCBXVEZN
b3ZlKHJlZ2lzdHJhdGlvblVSTCkgfTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBtX3Nj
b3BlVG9SZWdpc3RyYXRpb25NYXAuZ2V0KHJlZ2lzdHJhdGlvbktleSk7CiAgICAgICAgIGlmICgh
cmVnaXN0cmF0aW9uKSB7CisgICAgICAgICAgICBMT0coUHVzaCwgIkNhbm5vdCBwcm9jZXNzIHB1
c2ggbWVzc2FzZ2U6IEZhaWxlZCB0byBmaW5kIFNXIHJlZ2lzdHJhdGlvbiBmb3IgcmVnaXN0cmF0
aW9uIGtleSAlcyIsIHJlZ2lzdHJhdGlvbktleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCiAgICAgICAgIGF1dG8qIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi0+YWN0aXZlV29y
a2VyKCk7CiAgICAgICAgIGlmICghd29ya2VyKSB7CisgICAgICAgICAgICBMT0coUHVzaCwgIkNh
bm5vdCBwcm9jZXNzIHB1c2ggbWVzc2FzZ2U6IE5vIGFjdGl2ZSB3b3JrZXIgZm9yIHJlZ2lzdHJh
dGlvbiBrZXkgJXMiLCByZWdpc3RyYXRpb25LZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTEyNTMsNyArMTI2Miw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnByb2Nlc3NQdXNo
TWVzc2FnZShzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiBkYXRhLCBVUkwmJiByCiAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlRlcm1pbmF0
aW5nIHNlcnZpY2Ugd29ya2VyIGFzIHByb2Nlc3NpbmcgcHVzaCBldmVudCB0b29rIHRvbyBtdWNo
IHRpbWUiKTsKICAgICAgICAgICAgICAgICB3b3JrZXItPnRlcm1pbmF0ZSgpOwogICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVXb3JrZXJUaW1lci0+c3RhcnRPbmVTaG90KHdl
YWtUaGlzICYmIHdlYWtUaGlzLT5tX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID8g
ZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgOiAyX3MpOworICAgICAgICAgICAgLy90ZXJtaW5hdGVX
b3JrZXJUaW1lci0+c3RhcnRPbmVTaG90KHdlYWtUaGlzICYmIHdlYWtUaGlzLT5tX2lzUHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID8gZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgOiAyX3Mp
OwogICAgICAgICAgICAgY29ubmVjdGlvbk9yU3RhdHVzLnZhbHVlKCktPmZpcmVQdXNoRXZlbnQo
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIGRhdGEsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCB0ZXJtaW5hdGVXb3JrZXJUaW1lciA9IFdURk1vdmUodGVybWluYXRlV29ya2VyVGltZXIp
XShib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRlcm1pbmF0
ZVdvcmtlclRpbWVyLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hdGVX
b3JrZXJUaW1lci0+c3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAppbmRleCAxNzViZDM4MTY0NzQuLmVjNzM1MmQ4MTIwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIy
NTQsMTcgKzIyNTQsMjIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UGVuZGluZ1B1c2hNZXNz
YWdlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb24KIHsKICNpZiBFTkFCTEUo
QlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJOZXR3b3Jr
UHJvY2VzcyBnZXR0aW5nIHBlbmRpbmcgcHVzaCBtZXNzYWdlcyBmb3Igc2Vzc2lvbiBJRCAlbGx1
Iiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwogICAgICAgICBzZXNzaW9uLT5ub3RpZmljYXRpb25N
YW5hZ2VyKCkuZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIExPRyhOb3RpZmljYXRpb25z
LCAiTmV0d29ya1Byb2Nlc3MgY291bGQgbm90IGZpbmQgc2Vzc2lvbiBmb3IgSUQgJWxsdSB0byBn
ZXQgcGVuZGluZyBwdXNoIG1lc3NhZ2VzIiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwogI2VuZGlm
CiAgICAgY2FsbGJhY2soeyB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1
c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiBwdXNo
TWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKLSAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIExP
RyhQdXNoLCAiTmV0d29ya2luZyBwcm9jZXNzIGhhbmRsaW5nIGEgcHVzaCBtZXNzYWdlIGZyb20g
VUkgcHJvY2VzcyBpbiBzZXNzaW9uICVsbHUiLCBzZXNzaW9uSUQudG9VSW50NjQoKSk7CiAgICAg
ICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkucHJvY2Vzc1B1c2hNZXNzYWdlKFdURk1vdmUo
cHVzaE1lc3NhZ2UucHVzaERhdGEpLCBXVEZNb3ZlKHB1c2hNZXNzYWdlLnJlZ2lzdHJhdGlvblVS
TCksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICB9IGVsc2UKKyAgICAgICAgTE9HKFB1c2gsICJO
ZXR3b3JraW5nIHByb2Nlc3MgYXNrZWQgdG8gaGFuZGxlIGEgcHVzaCBtZXNzYWdlIGZyb20gVUkg
cHJvY2VzcyBpbiBzZXNzaW9uICVsbHUsIGJ1dCB0aGF0IHNlc3Npb24gZG9lc24ndCBleGlzdCIs
IHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0
aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmlu
ZGV4IDE3Y2VmOTE0YWI4Ni4uNDg2Y2I1YjNkZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTkzLDEzICs5MywxNCBAQCB2b2lkIE5ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25Q
ZXJtaXNzaW9ucyhDbwogdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Z2V0UGVuZGlu
Z1B1c2hNZXNzYWdlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNo
TWVzc2FnZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4mJik+IHJlcGx5SGFuZGxlciA9IFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVjdG9yPFdlYlB1c2hN
ZXNzYWdlPiYmIG1lc3NhZ2VzKSBtdXRhYmxlIHsKKyAgICAgICAgTE9HKFB1c2gsICJEb25lIGdl
dHRpbmcgcHVzaCBtZXNzYWdlcyIpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KG1lc3NhZ2VzKSk7CiAgICAgfTsKIAogICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PFdlYlB1c2hE
OjpNZXNzYWdlVHlwZTo6R2V0UGVuZGluZ1B1c2hNZXNzYWdlcz4oV1RGTW92ZShyZXBseUhhbmRs
ZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvd05vdGlmaWNh
dGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikKK3ZvaWQgTmV0d29ya05vdGlm
aWNhdGlvbk1hbmFnZXI6OnNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
LmgKaW5kZXggYTkyYmQyZjViZDE3Li41MmE2Mzg0YmFiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9O
ZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAg
ICAgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJp
bmcmIHdlYlB1c2hNYWNoU2VydmljZU5hbWUpOwogCiAgICAgdm9pZCByZXF1ZXN0U3lzdGVtTm90
aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7Ci0gICAgdm9pZCBzaG93Tm90aWZpY2F0aW9u
KGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHNob3dO
b3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGF0YSYpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5v
dGlmaWNhdGlvbklEKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBW
ZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7CiAgICAgdm9pZCBkaWREZXN0cm95
Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9Mb2dnaW5nLmgKaW5kZXggZGUzMmY4MTcxNzE1Li43MzZjZjZjZWZhN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vTG9nZ2luZy5oCkBAIC04MCw2ICs4MCw3IEBAIGV4dGVybiAiQyIgewogICAgIE0o
TmV0d29ya0NhY2hlU3RvcmFnZSkgXAogICAgIE0oTmV0d29ya1NjaGVkdWxpbmcpIFwKICAgICBN
KE5ldHdvcmtTZXNzaW9uKSBcCisgICAgTShOb3RpZmljYXRpb25zKSBcCiAgICAgTShQZXJmb3Jt
YW5jZUxvZ2dpbmcpIFwKICAgICBNKFBsdWdpbnMpIFwKICAgICBNKFByaW50aW5nKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAppbmRleCBhN2UzNmNkY2ExODEu
LjlmOTk2YWExMzZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ci5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBzZWN1cml0eU9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlm
aWNhdGlvbklEcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9u
KGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluCmluZGV4IDQ4OWIwYjZhZDBm
Ny4uMzdjY2RkZjFmYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBAQAogCiBtZXNzYWdlcyAt
PiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIgTm90UmVmQ291bnRlZCB7CiAgICAg
UmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oU3RyaW5nIG9yaWdpbklkZW50aWZp
ZXIpIC0+IChib29sIGFsbG93ZWQpIEFzeW5jCi0gICAgU2hvd05vdGlmaWNhdGlvbihzdHJ1Y3Qg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSBub3RpZmljYXRpb25EYXRhKQorICAgIFNob3dOb3Rp
ZmljYXRpb24oc3RydWN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEgbm90aWZpY2F0aW9uRGF0
YSkgV2FudHNDb25uZWN0aW9uCiAgICAgQ2FuY2VsTm90aWZpY2F0aW9uKFVVSUQgbm90aWZpY2F0
aW9uSUQpCiAgICAgQ2xlYXJOb3RpZmljYXRpb25zKFZlY3RvcjxVVUlEPiBub3RpZmljYXRpb25J
RHMpCiAgICAgRGlkRGVzdHJveU5vdGlmaWNhdGlvbihVVUlEIG5vdGlmaWNhdGlvbklEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKaW5kZXggMDY3NzBkMGRmYzdkLi5mMzhiM2VkNzAxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAt
NTg1LDYgKzU4NSw3IEBAIFVJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRy
YXRvclByb3h5LmNwcAogVUlQcm9jZXNzL01lZGlhL01lZGlhVXNhZ2VNYW5hZ2VyLmNwcAogVUlQ
cm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwCiAKK1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmNw
cAogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcAogVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAog
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5vdGlmaWNhdGlvblBy
b3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTm90aWZpY2F0aW9uUHJv
dmlkZXIuaAppbmRleCBjNDgxM2FhNTE2NTAuLmY3M2M1ODhmNjU0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAg
LTQyLDcgKzQyLDcgQEAgY2xhc3MgTm90aWZpY2F0aW9uUHJvdmlkZXIgewogcHVibGljOgogICAg
IHZpcnR1YWwgfk5vdGlmaWNhdGlvblByb3ZpZGVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVh
bCB2b2lkIHNob3coV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlv
biYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzaG93KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKFdlYktp
dDo6V2ViTm90aWZpY2F0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lOb3Rp
ZmljYXRpb24oV2ViS2l0OjpXZWJOb3RpZmljYXRpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIC8qbm90aWZpY2F0aW9u
SURzKi8pIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tO
b3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggODJiYjk1MWU1YzFlLi5kNTM4ZGI1NDA3Nzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9u
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcApAQCAtNzgsMyArNzgsOCBAQCB2b2lkIFdLTm90aWZpY2F0aW9uTWFu
YWdlclByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoV0tOb3RpZmljYXRpb25N
YQogewogICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRp
b25Qb2xpY2llcyh0b0ltcGwob3JpZ2lucykpOwogfQorCitXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYgV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlv
bk1hbmFnZXIoKQoreworICAgIHJldHVybiB0b0FQSSgmV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKaW5kZXggNzll
ZGJmNThjZTQzLi4zNGJiNWVjMGIxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC00Myw2ICs0Myw4IEBAIFdL
X0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmlj
YXRpb25zKFdLTm90aWZpY2F0aW9uCiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJQcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFn
ZXJSZWYgbWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGJvb2wgYWxsb3dl
ZCk7CiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFJlbW92
ZU5vdGlmaWNhdGlvblBvbGljaWVzKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVm
LCBXS0FycmF5UmVmIG9yaWdpbnMpOwogCitXS19FWFBPUlQgV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UmVmIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b25NYW5hZ2VyKCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bQppbmRleCBmOTEzNDgzZGVkYTAuLmVhYTJhZDYyMTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0z
OCw2ICszOCw3IEBACiAjaW1wb3J0ICJXS1NlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhUmVjb3JkSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQdXNoTWVzc2FnZS5oIgogI2ltcG9ydCAi
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCkBAIC02NTksNiArNjYwLDEyIEBAIHN0
YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9XZWJzaXRlRGF0YVJlY29y
ZHMoTlNBcnJheSAqZGF0YVJlY29yCiAgICAgcmV0dXJuIHdyYXBwZXIoX3dlYnNpdGVEYXRhU3Rv
cmUtPmNvbmZpZ3VyYXRpb24oKS5jb3B5KCkpOwogfQogCisrIChXS05vdGlmaWNhdGlvbk1hbmFn
ZXJSZWYpX3NoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyCit7CisgICAgTE9H
KFB1c2gsICJBY2Nlc3NpbmcgX3NoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2Vy
Iik7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpKTsKK30KKwogLSAodm9pZClf
YWxsb3dUTFNDZXJ0aWZpY2F0ZUNoYWluOihOU0FycmF5ICopY2VydGlmaWNhdGVDaGFpbiBmb3JI
b3N0OihOU1N0cmluZyAqKWhvc3QKIHsKICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+YWxsb3dTcGVj
aWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbygoX19i
cmlkZ2UgQ0ZBcnJheVJlZiljZXJ0aWZpY2F0ZUNoYWluKSwgaG9zdCk7CkBAIC03NzEsMTIgKzc3
OCwxNSBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0
ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogCiAtKHZvaWQpX2dldFBlbmRpbmdQdXNo
TWVzc2FnZXM6KHZvaWQoXikoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyAgICBMT0coUHVzaCwgIkdldHRpbmcgcGVuZGluZyBwdXNoIG1lc3NhZ2VzIik7
CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5l
dHdvcmtQcm9jZXNzKCkuZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhfd2Vic2l0ZURhdGFTdG9yZS0+
c2Vzc2lvbklEKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildIChjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQdXNoTWVzc2FnZT4mIG1lc3NhZ2Vz
KSB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5Om1lc3NhZ2VzLnNpemUoKV0pOwogICAgICAgICBmb3IgKGF1dG8m
IG1lc3NhZ2UgOiBtZXNzYWdlcykKICAgICAgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0Om1lc3Nh
Z2UudG9EaWN0aW9uYXJ5KCldOwogCisgICAgICAgIExPRyhQdXNoLCAiR2l2aW5nIGFwcGxpY2F0
aW9uICV1IHBlbmRpbmcgcHVzaCBtZXNzYWdlcyIsIG1lc3NhZ2VzLnNpemUoKSk7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdC5nZXQoKSk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTc4
NywxMSArNzk3LDE0IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4g
dG9XZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIGF1dG8gcHVzaE1lc3NhZ2UgPSBXZWJLaXQ6OldlYlB1c2hNZXNzYWdl
Ojpmcm9tRGljdGlvbmFyeShwdXNoTWVzc2FnZURpY3Rpb25hcnkpOwogICAgIGlmICghcHVzaE1l
c3NhZ2UpIHsKKyAgICAgICAgTE9HKFB1c2gsICJBc2tlZCB0byBoYW5kbGUgYW4gaW52YWxpZCBw
dXNoIG1lc3NhZ2UiKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCisgICAgTE9HKFB1c2gsICJTZW5kaW5nIHB1c2ggbWVzc2FnZSB0
byBuZXR3b3JrIHByb2Nlc3MgdG8gaGFuZGxlIik7CiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5l
dHdvcmtQcm9jZXNzKCkucHJvY2Vzc1B1c2hNZXNzYWdlKF93ZWJzaXRlRGF0YVN0b3JlLT5zZXNz
aW9uSUQoKSwgKnB1c2hNZXNzYWdlLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCB3YXNQcm9jZXNzZWQpIHsKKyAgICAgICAgTE9HKFB1
c2gsICJQdXNoIG1lc3NhZ2UgcHJvY2Vzc2luZyBjb21wbGV0ZS4gQ2FsbGJhY2sgcmVzdWx0OiAl
aSIsIHdhc1Byb2Nlc3NlZCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdhc1Byb2Nlc3Nl
ZCk7CiAgICAgfSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDMxYTg1
NDA3NDE0ZC4uYzM2ZTExMzFmMDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTk2
LDYgKzk2LDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRh
U3RvcmVGZXRjaE9wdGlvbnMpIHsKIEBwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21pYywgd2Vh
aykgaWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4gX2RlbGVnYXRlIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5LCBjb3B5KSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqX2NvbmZpZ3Vy
YXRpb247CiAKKysgKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZilfc2hhcmVkU2VydmljZVdvcmtl
ck5vdGlmaWNhdGlvbk1hbmFnZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfdGVybWluYXRlTmV0d29ya1Byb2Nlc3MgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3NlbmROZXR3
b3JrUHJvY2Vzc1ByZXBhcmVUb1N1c3BlbmQ6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRs
ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3Nl
bmROZXR3b3JrUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEyLjApLCBpb3MoMTUuMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb25IYW5kbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjM2M2Q4YzEyNDI3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuY3BwCkBAIC0w
LDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCIKKworI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRhdGEuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyJiBTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMg
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXImIGhhbmRsZXIgPSAqbmV3IFNlcnZpY2VX
b3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOworICAgIHJldHVybiBoYW5kbGVyOworfQorCitTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhh
bmRsZXIoKQoreworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOjpy
ZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK1dlYnNpdGVEYXRhU3RvcmUqIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25I
YW5kbGVyOjpkYXRhU3RvcmVGb3JOb3RpZmljYXRpb25JRChjb25zdCBVVUlEJiBub3RpZmljYXRp
b25JRCkKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9ub3RpZmljYXRpb25Ub1Nlc3Npb25NYXAu
ZmluZChub3RpZmljYXRpb25JRCk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fbm90aWZpY2F0aW9u
VG9TZXNzaW9uTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChpdGVyYXRv
ci0+dmFsdWUpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOjpz
aG93Tm90aWZpY2F0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSkKK3sKKyAgICBhdXRvKiBkYXRhU3RvcmUgPSBXZWJz
aXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChkYXRhLnNvdXJjZVNl
c3Npb24pOworICAgIGlmICghZGF0YVN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX25v
dGlmaWNhdGlvblRvU2Vzc2lvbk1hcC5zZXQoZGF0YS5ub3RpZmljYXRpb25JRCwgZGF0YS5zb3Vy
Y2VTZXNzaW9uKTsKKyAgICBkYXRhU3RvcmUtPnNob3dTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
KGNvbm5lY3Rpb24sIGRhdGEpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25I
YW5kbGVyOjpjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit7
CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IGRhdGFTdG9yZUZvck5vdGlmaWNhdGlvbklEKG5v
dGlmaWNhdGlvbklEKSkKKyAgICAgICAgZGF0YVN0b3JlLT5jYW5jZWxTZXJ2aWNlV29ya2VyTm90
aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyTm90aWZp
Y2F0aW9uSGFuZGxlcjo6Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90
aWZpY2F0aW9uSURzKQoreworICAgIGZvciAoYXV0byYgbm90aWZpY2F0aW9uSUQgOiBub3RpZmlj
YXRpb25JRHMpIHsKKyAgICAgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IGRhdGFTdG9yZUZvck5v
dGlmaWNhdGlvbklEKG5vdGlmaWNhdGlvbklEKSkKKyAgICAgICAgICAgIGRhdGFTdG9yZS0+Y2xl
YXJTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKTsKKyAgICB9Cit9CisK
K3ZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OmRpZERlc3Ryb3lOb3RpZmlj
YXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit7CisgICAgaWYgKGF1dG8qIGRhdGFT
dG9yZSA9IGRhdGFTdG9yZUZvck5vdGlmaWNhdGlvbklEKG5vdGlmaWNhdGlvbklEKSkKKyAgICAg
ICAgZGF0YVN0b3JlLT5kaWREZXN0cm95U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihub3RpZmlj
YXRpb25JRCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
SGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNl
V29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZWQ1MTIwYzk2NTU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxl
ci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNlcnZpY2VX
b3JrZXJOb3RpZmljYXRpb25IYW5kbGVyIDogcHVibGljIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b25IYW5kbGVyJiBzaW5nbGV0b24oKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBTZXJ2aWNl
V29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcigpOworCisgICAgdm9pZCByZXF1ZXN0U3lzdGVtTm90
aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpIGZpbmFsOworICAgIHZvaWQg
Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKyAg
ICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlv
bklEcykgZmluYWw7CisgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQm
IG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKworICAgIFdlYnNpdGVEYXRhU3RvcmUqIGRhdGFTdG9y
ZUZvck5vdGlmaWNhdGlvbklEKGNvbnN0IFVVSUQmKTsKKworICAgIEhhc2hNYXA8VVVJRCwgUEFM
OjpTZXNzaW9uSUQ+IG1fbm90aWZpY2F0aW9uVG9TZXNzaW9uTWFwOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHAKaW5kZXggYjhkYTcxYmIwZmQ2Li5iOTAxODQy
MTEyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVdlYk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKGNvbnN0IFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlk
ZW50aWZpZXIpCitXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3Jl
OjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVu
dGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIHNvdXJjZUNvbm5lY3Rpb24pCiAgICAgOiBtX3RpdGxl
KGRhdGEudGl0bGUpCiAgICAgLCBtX2JvZHkoZGF0YS5ib2R5KQogICAgICwgbV9pY29uVVJMKGRh
dGEuaWNvblVSTCkKQEAgLTQwLDYgKzQwLDcgQEAgV2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmlj
YXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVAKICAg
ICAsIG1fb3JpZ2luKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoZGF0YS5v
cmlnaW5TdHJpbmcpKQogICAgICwgbV9jb3JlTm90aWZpY2F0aW9uSUQoZGF0YS5ub3RpZmljYXRp
b25JRCkKICAgICAsIG1fcGFnZUlkZW50aWZpZXIocGFnZUlkZW50aWZpZXIpCisgICAgLCBtX3Nv
dXJjZUNvbm5lY3Rpb24oc291cmNlQ29ubmVjdGlvbikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmgKaW5k
ZXggYmM3ODJmYmVmZmYzLi5lODk0MjYzM2Q0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJU2VjdXJpdHlP
cmlnaW4uaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgpAQCAtNDEsOSArNDIsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
V2ViTm90aWZpY2F0aW9uIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6Tm90aWZpY2F0aW9uPiwgcHVibGljIElkZW50aWZpZWQ8V2ViTm90aWZpY2F0aW9uPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBXZWJD
b3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
ZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8V2ViTm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJiBzb3VyY2VDb25uZWN0aW9uKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTm90aWZpY2F0aW9uKGRhdGEsIHBhZ2VJ
ZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk5vdGlmaWNhdGlv
bihkYXRhLCBwYWdlSWRlbnRpZmllciwgc291cmNlQ29ubmVjdGlvbikpOwogICAgIH0KIAogICAg
IGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9CkBAIC01OCw5
ICs1OSwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVVJRCYgY29yZU5vdGlmaWNhdGlvbklEKCkg
Y29uc3QgeyByZXR1cm4gbV9jb3JlTm90aWZpY2F0aW9uSUQ7IH0KIAogICAgIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJZGVudGlm
aWVyOyB9CisgICAgSVBDOjpDb25uZWN0aW9uKiBzb3VyY2VDb25uZWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VDb25uZWN0aW9uLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViTm90
aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmLCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyKTsKKyAgICBXZWJOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0
aW9uRGF0YSYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYpOwogCiAg
ICAgU3RyaW5nIG1fdGl0bGU7CiAgICAgU3RyaW5nIG1fYm9keTsKQEAgLTcyLDYgKzc0LDcgQEAg
cHJpdmF0ZToKICAgICBVVUlEIG1fY29yZU5vdGlmaWNhdGlvbklEOwogCiAgICAgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBtX3BhZ2VJZGVudGlmaWVyOworICAgIFdlYWtQdHI8SVBDOjpDb25uZWN0
aW9uPiBtX3NvdXJjZUNvbm5lY3Rpb247CiB9OwogCiBpbmxpbmUgYm9vbCBpc05vdGlmaWNhdGlv
bklEVmFsaWQodWludDY0X3QgaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlci5jcHAKaW5kZXggZDA2N2NlZjA5NjRhLi40YzY4NGQ5YzlkMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ci5jcHAKQEAgLTQwLDkgKzQwLDkgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2Fn
ZUhhbmRsZXI6OnJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGMKICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlcjo6c2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmlj
YXRpb25EYXRhJiBkYXRhKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRs
ZXI6OnNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhKQogewotICAgIG1fd2ViUGFnZVByb3h5LnNo
b3dOb3RpZmljYXRpb24oZGF0YSk7CisgICAgbV93ZWJQYWdlUHJveHkuc2hvd05vdGlmaWNhdGlv
bihjb25uZWN0aW9uLCBkYXRhKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXI6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25J
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5o
CmluZGV4IGE2ZGIwMzM3YjdlNS4uNTI1MDVlOWQyNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHJp
dmF0ZToKICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIo
V2ViUGFnZVByb3h5Jik7CiAKICAgICB2b2lkIHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJt
aXNzaW9uKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZp
bmFsOwotICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRp
b25EYXRhJikgZmluYWw7CisgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKElQQzo6Q29ubmVjdGlv
biYsIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIGNh
bmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkgZmluYWw7CiAgICAg
dm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25J
RHMpIGZpbmFsOwogICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBu
b3RpZmljYXRpb25JRCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eS5jcHAKaW5kZXggZDEzYTU4ODM4ZWM2Li44NWE5YzU4NDMwMTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTQ5LDYgKzQ5LDEyIEBAIFJlZjxXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk+IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRl
KFdlYlByb2Nlc3NQCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5KHByb2Nlc3NQb29sKSk7CiB9CiAKK1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eSYgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdl
cigpCit7CisgICAgc3RhdGljIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSogc2hhcmVkTWFu
YWdlciA9IG5ldyBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkobnVsbHB0cik7CisgICAgcmV0
dXJuICpzaGFyZWRNYW5hZ2VyOworfQorCiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAg
ICAgOiBXZWJDb250ZXh0U3VwcGxlbWVudChwcm9jZXNzUG9vbCkKICAgICAsIG1fcHJvdmlkZXIo
bWFrZVVuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPigpKQpAQCAtODgsMjEgKzk0LDI4
IEBAIEhhc2hNYXA8U3RyaW5nLCBib29sPiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6Om5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKCkKICAgICByZXR1cm4gbV9wcm92aWRlci0+bm90aWZpY2F0
aW9uUGVybWlzc2lvbnMoKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6
OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25E
YXRhJiBub3RpZmljYXRpb25EYXRhKQorc3RhdGljIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgaWRl
bnRpZmllckZvclBhZ2VQb2ludGVyKFdlYlBhZ2VQcm94eSogd2ViUGFnZSkKIHsKLSAgICBhdXRv
IG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlmaWNhdGlvbjo6Y3JlYXRlKG5vdGlmaWNhdGlvbkRhdGEs
IHdlYlBhZ2UtPmlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIHdlYlBhZ2UgPyB3ZWJQYWdlLT5p
ZGVudGlmaWVyKCkgOiBXZWJQYWdlUHJveHlJZGVudGlmaWVyKCk7Cit9CisKK3ZvaWQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBu
b3RpZmljYXRpb25EYXRhKQoreworICAgIExPRyhOb3RpZmljYXRpb25zLCAiV2ViUGFnZVByb3h5
ICglcCkgYXNraW5nIHRvIHNob3cgbm90aWZpY2F0aW9uICglcykiLCB3ZWJQYWdlLCBub3RpZmlj
YXRpb25EYXRhLm5vdGlmaWNhdGlvbklELnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAg
ICBhdXRvIG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlmaWNhdGlvbjo6Y3JlYXRlKG5vdGlmaWNhdGlv
bkRhdGEsIGlkZW50aWZpZXJGb3JQYWdlUG9pbnRlcih3ZWJQYWdlKSwgY29ubmVjdGlvbik7CiAg
ICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2V0KG5vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9u
SUQoKSwgbm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9uSUQoKSk7CiAgICAgbV9ub3RpZmlj
YXRpb25zLnNldChub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpLCBub3RpZmljYXRp
b24pOwotICAgIG1fcHJvdmlkZXItPnNob3coKndlYlBhZ2UsIG5vdGlmaWNhdGlvbi5nZXQoKSk7
CisgICAgbV9wcm92aWRlci0+c2hvdyh3ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0KCkpOwogfQog
Ci12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKFdlYlBhZ2VQcm94eSog
d2ViUGFnZSwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbChXZWJQYWdlUHJveHkqLCBjb25zdCBVVUlEJiBwYWdl
Tm90aWZpY2F0aW9uSUQpCiB7CiAgICAgaWYgKGF1dG8gd2ViTm90aWZpY2F0aW9uID0gbV9ub3Rp
ZmljYXRpb25zLmdldChwYWdlTm90aWZpY2F0aW9uSUQpKQogICAgICAgICBtX3Byb3ZpZGVyLT5j
YW5jZWwoKndlYk5vdGlmaWNhdGlvbik7CiB9CiAgICAgCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBhZ2Us
IGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSosIGNvbnN0IFVV
SUQmIHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKICAgICBpZiAoYXV0byB3ZWJOb3RpZmljYXRpb24g
PSBtX25vdGlmaWNhdGlvbnMudGFrZShwYWdlTm90aWZpY2F0aW9uSUQpKSB7CiAgICAgICAgIG1f
Z2xvYmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZSh3ZWJOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlv
bklEKCkpOwpAQCAtMTEwLDM3ICsxMjMsMjYgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLAogICAg
IH0KIH0KIAotc3RhdGljIGJvb2wgcGFnZUlEc01hdGNoKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlELCBjb25zdCBVVUlEJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFnZUlE
LCBjb25zdCBWZWN0b3I8VVVJRD4mKQotewotICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBh
Z2VJRDsKLX0KLQotc3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPFVVSUQ+
JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcykKLXsKLSAgICByZXR1cm4gcGFnZUlEID09IGRl
c2lyZWRQYWdlSUQgJiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMuY29udGFpbnMocGFnZU5v
dGlmaWNhdGlvbklEKTsKLX0KLQogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNs
ZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UpCiB7Ci0gICAgY2xlYXJOb3Rp
ZmljYXRpb25zKHdlYlBhZ2UsIFZlY3RvcjxVVUlEPigpLCBwYWdlSURzTWF0Y2gpOworICAgIEFT
U0VSVCh3ZWJQYWdlKTsKKyAgICBjbGVhck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgeyB9KTsKIH0K
IAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhX
ZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlv
bklEcykKIHsKLSAgICBjbGVhck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgcGFnZU5vdGlmaWNhdGlv
bklEcywgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKTsKLX0KLQotdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBh
Z2UsIGNvbnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9u
RmlsdGVyRnVuY3Rpb24gZmlsdGVyRnVuY3Rpb24pCi17Ci0gICAgYXV0byB0YXJnZXRQYWdlUHJv
eHlJRCA9IHdlYlBhZ2UtPmlkZW50aWZpZXIoKTsKLQogICAgIFZlY3Rvcjx1aW50NjRfdD4gZ2xv
YmFsTm90aWZpY2F0aW9uSURzOwogICAgIGdsb2JhbE5vdGlmaWNhdGlvbklEcy5yZXNlcnZlQ2Fw
YWNpdHkobV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2l6ZSgpKTsKIAorICAgIC8vIFdlIGFsd2F5
cyBjaGVjayBwYWdlIGlkZW50aXR5LgorICAgIC8vIElmIHRoZSBzZXQgb2Ygbm90aWZpY2F0aW9u
IElEcyBpcyBub24tZW1wdHksIHdlIGFsc28gY2hlY2sgdGhhdC4KKyAgICBhdXRvIHRhcmdldFBh
Z2VJZGVudGlmaWVyID0gaWRlbnRpZmllckZvclBhZ2VQb2ludGVyKHdlYlBhZ2UpOworICAgIGJv
b2wgY2hlY2tOb3RpZmljYXRpb25JRHMgPSAhcGFnZU5vdGlmaWNhdGlvbklEcy5pc0VtcHR5KCk7
CisKICAgICBmb3IgKGF1dG8gbm90aWZpY2F0aW9uIDogbV9ub3RpZmljYXRpb25zLnZhbHVlcygp
KSB7Ci0gICAgICAgIGF1dG8gcGFnZVByb3h5SUQgPSBub3RpZmljYXRpb24tPnBhZ2VJZGVudGlm
aWVyKCk7Ci0gICAgICAgIGF1dG8gY29yZU5vdGlmaWNhdGlvbklEID0gbm90aWZpY2F0aW9uLT5j
b3JlTm90aWZpY2F0aW9uSUQoKTsKLSAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbihwYWdlUHJv
eHlJRCwgY29yZU5vdGlmaWNhdGlvbklELCB0YXJnZXRQYWdlUHJveHlJRCwgcGFnZU5vdGlmaWNh
dGlvbklEcykpCisgICAgICAgIGlmIChjaGVja05vdGlmaWNhdGlvbklEcyAmJiAhcGFnZU5vdGlm
aWNhdGlvbklEcy5jb250YWlucyhub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAodGFyZ2V0UGFnZUlkZW50aWZpZXIg
IT0gbm90aWZpY2F0aW9uLT5wYWdlSWRlbnRpZmllcigpKQogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgdWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBub3RpZmljYXRpb24t
Pm5vdGlmaWNhdGlvbklEKCk7CkBAIC0xNjcsNDggKzE2OSw0NiBAQCB2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IGds
b2JhbE5vdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byogd2ViUGFnZSA9IFdl
YlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3RpZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCkpOwot
ICAgIGlmICghd2ViUGFnZSkKKyAgICBMT0coTm90aWZpY2F0aW9ucywgIlByb3ZpZGVyIGRpZCBz
aG93IG5vdGlmaWNhdGlvbiAoJXMpIiwgbm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9uSUQo
KS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgYXV0byogY29ubmVjdGlvbiA9IG5v
dGlmaWNhdGlvbi0+c291cmNlQ29ubmVjdGlvbigpOworICAgIGlmICghY29ubmVjdGlvbikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFNob3dOb3RpZmljYXRpb24oaXQtPnZhbHVlKSwgMCk7
CisgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
RGlkU2hvd05vdGlmaWNhdGlvbihpdC0+dmFsdWUpLCAwKTsKIH0KIAotdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qg
Z2xvYmFsTm90aWZpY2F0aW9uSUQpCitzdGF0aWMgdm9pZCBkaXNwYXRjaERpZENsaWNrTm90aWZp
Y2F0aW9uKFdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIGF1dG8gaXQgPSBt
X2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5maW5kKGdsb2JhbE5vdGlmaWNhdGlvbklEKTsKLSAgICBp
ZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCi0gICAgICAgIHJldHVybjsK
KyAgICBMT0coTm90aWZpY2F0aW9ucywgIlByb3ZpZGVyIGRpZCBjbGljayBub3RpZmljYXRpb24g
KCVzKSIsIG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCkudG9TdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKIAotICAgIGF1dG8gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdl
dChpdC0+dmFsdWUpOwotICAgIGlmICghbm90aWZpY2F0aW9uKSB7Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIGlmICghbm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47Ci0g
ICAgfQogCi0gICAgYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3Rp
ZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCkpOwotICAgIGlmICghd2ViUGFnZSkKKyAgICBhdXRv
KiBjb25uZWN0aW9uID0gbm90aWZpY2F0aW9uLT5zb3VyY2VDb25uZWN0aW9uKCk7CisgICAgaWYg
KCFjb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmljYXRp
b24oaXQtPnZhbHVlKSwgMCk7CisgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLT5jb3Jl
Tm90aWZpY2F0aW9uSUQoKSksIDApOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBjb3JlTm90aWZp
Y2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRD
bGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCkKIHsKLSAgICBh
dXRvIG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy5nZXQoY29yZU5vdGlmaWNhdGlvbklE
KTsKLSAgICBpZiAoIW5vdGlmaWNhdGlvbikKKyAgICBhdXRvIGl0ID0gbV9nbG9iYWxOb3RpZmlj
YXRpb25NYXAuZmluZChnbG9iYWxOb3RpZmljYXRpb25JRCk7CisgICAgaWYgKGl0ID09IG1fZ2xv
YmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvKiB3
ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKG5vdGlmaWNhdGlvbi0+cGFnZUlkZW50
aWZpZXIoKSk7Ci0gICAgaWYgKCF3ZWJQYWdlKQotICAgICAgICByZXR1cm47CisgICAgZGlzcGF0
Y2hEaWRDbGlja05vdGlmaWNhdGlvbihtX25vdGlmaWNhdGlvbnMuZ2V0KGl0LT52YWx1ZSkpOwor
fQogCi0gICAgd2ViUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlv
bk1hbmFnZXI6OkRpZENsaWNrTm90aWZpY2F0aW9uKGNvcmVOb3RpZmljYXRpb25JRCksIDApOwor
dm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmlj
YXRpb24oY29uc3QgVVVJRCYgY29yZU5vdGlmaWNhdGlvbklEKQoreworICAgIGRpc3BhdGNoRGlk
Q2xpY2tOb3RpZmljYXRpb24obV9ub3RpZmljYXRpb25zLmdldChjb3JlTm90aWZpY2F0aW9uSUQp
KTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xv
c2VOb3RpZmljYXRpb25zKEFQSTo6QXJyYXkqIGdsb2JhbE5vdGlmaWNhdGlvbklEcykKIHsKLSAg
ICBIYXNoTWFwPFdlYlBhZ2VQcm94eSosIFZlY3RvcjxVVUlEPj4gcGFnZU5vdGlmaWNhdGlvbklE
czsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+IGNsb3NlZE5vdGlmaWNhdGlv
bnM7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGdsb2JhbE5vdGlmaWNhdGlvbklEcy0+c2l6ZSgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CkBAIC0yNDEsMjYgKzI0MSwy
NSBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5v
dGlmaWNhdGlvbnMoQVBJOjpBcnJheSogZ2xvYgogICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbikK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChXZWJQYWdlUHJveHkqIHdlYlBh
Z2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uobm90aWZpY2F0aW9uLT5wYWdlSWRlbnRpZmll
cigpKSkgewotICAgICAgICAgICAgYXV0byBwYWdlSXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmZp
bmQod2ViUGFnZSk7Ci0gICAgICAgICAgICBpZiAocGFnZUl0ID09IHBhZ2VOb3RpZmljYXRpb25J
RHMuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8VVVJRD4gbmV3VmVjdG9yOwotICAg
ICAgICAgICAgICAgIG5ld1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwotICAg
ICAgICAgICAgICAgIHBhZ2VJdCA9IHBhZ2VOb3RpZmljYXRpb25JRHMuYWRkKHdlYlBhZ2UsIFdU
Rk1vdmUobmV3VmVjdG9yKSkuaXRlcmF0b3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IHBhZ2VJdC0+dmFsdWUuYXBwZW5kKG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCkp
OwotICAgICAgICB9Ci0KICAgICAgICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAucmVtb3ZlKG5v
dGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uSUQoKSk7CisgICAgICAgIGNsb3NlZE5vdGlmaWNhdGlv
bnMuYXBwZW5kKFdURk1vdmUobm90aWZpY2F0aW9uKSk7CiAgICAgfQogCi0gICAgZm9yIChhdXRv
IGl0ID0gcGFnZU5vdGlmaWNhdGlvbklEcy5iZWdpbigpLCBlbmQgPSBwYWdlTm90aWZpY2F0aW9u
SURzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGl0LT5rZXktPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbG9zZU5vdGlmaWNhdGlv
bnMoaXQtPnZhbHVlKSwgMCk7CisgICAgZm9yIChhdXRvJiBub3RpZmljYXRpb24gOiBjbG9zZWRO
b3RpZmljYXRpb25zKSB7CisgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbm90aWZpY2F0
aW9uLT5zb3VyY2VDb25uZWN0aW9uKCkpIHsKKyAgICAgICAgICAgIExPRyhOb3RpZmljYXRpb25z
LCAiUHJvdmlkZXIgZGlkIGNsb3NlIG5vdGlmaWNhdGlvbiAoJXMpIiwgbm90aWZpY2F0aW9uLT5j
b3JlTm90aWZpY2F0aW9uSUQoKS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAg
ICAgVmVjdG9yPFVVSUQ+IG5vdGlmaWNhdGlvbklEcyA9IHsgbm90aWZpY2F0aW9uLT5jb3JlTm90
aWZpY2F0aW9uSUQoKSB9OworICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xvc2VOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlv
bklEcyksIDApOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6cHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xpY3koY29uc3QgQVBJ
OjpTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBib29sIGFsbG93ZWQpCiB7CisgICAgTE9HKE5vdGlm
aWNhdGlvbnMsICJQcm92aWRlciBkaWQgdXBkYXRlIG5vdGlmaWNhdGlvbiBwb2xpY3kgZm9yIG9y
aWdpbiAlcyB0byAlaSIsIG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpLnV0Zjgo
KS5kYXRhKCksIGFsbG93ZWQpOworCisgICAgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFVw
ZGF0ZU5vdGlmaWNhdGlvbkRlY2lzaW9uKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmlu
ZygpLCBhbGxvd2VkKSk7CisKICAgICBpZiAoIXByb2Nlc3NQb29sKCkpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMjgxLDcgKzI4MCwxMSBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyhBUEk6OkFycgogICAgIAog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBvcmlnaW5TdHJp
bmdzLmFwcGVuZChvcmlnaW5zLT5hdDxBUEk6OlNlY3VyaXR5T3JpZ2luPihpKS0+c2VjdXJpdHlP
cmlnaW4oKS50b1N0cmluZygpKTsKLSAgICAKKworICAgIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9B
bGxTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpEaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMob3JpZ2luU3RyaW5ncykpOworCisgICAg
aWYgKCFwcm9jZXNzUG9vbCgpKQorICAgICAgICByZXR1cm47CiAgICAgcHJvY2Vzc1Bvb2woKS0+
c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRS
ZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMob3JpZ2luU3RyaW5ncykpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCBjNmQzNWQ4NjIyYjguLmU4N2RiMTBm
NTFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC01NywxMCAr
NTcsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCopOwogCisgICAgc3RhdGljIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eSYgc2hhcmVkU2VydmljZVdvcmtlck1hbmFnZXIoKTsKKwogICAgIHZv
aWQgc2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+
JiYpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBub3RpZmljYXRpb25QZXJtaXNzaW9ucygp
OwogCi0gICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkRhdGEmKTsKKyAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5KiwgSVBDOjpDb25uZWN0aW9u
JiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpOwogICAgIHZvaWQgY2FuY2VsKFdl
YlBhZ2VQcm94eSosIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCk7CiAgICAgdm9pZCBj
bGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5Kik7CiAgICAgdm9pZCBjbGVhck5vdGlmaWNh
dGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZpY2F0aW9u
SURzKTsKQEAgLTc5LDkgKzgxLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHR5cGVk
ZWYgYm9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKShXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJRCwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3RvcjxVVUlEPiYgZGVzaXJlZFBhZ2VO
b3RpZmljYXRpb25JRHMpOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94
eSosIGNvbnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9u
RmlsdGVyRnVuY3Rpb24pOwotCiAgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKICAgICB2b2lk
IHByb2Nlc3NQb29sRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWZXZWJDb250ZXh0
U3VwcGxlbWVudCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcApp
bmRleCAyNjVjMTU5ZDlkNzkuLjg1OGQ3NjQ2MmZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Q
cm92aWRlci5jcHAKQEAgLTQyLDEyICs0MiwxMiBAQCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIoY29uc3QgV0tOb3RpZmljYXRpb25Qcm92aWRlckJhcwog
ICAgIGluaXRpYWxpemUocHJvdmlkZXIpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyOjpzaG93KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViTm90aWZpY2F0aW9uJiBub3RpZmljYXRp
b24pCit2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzaG93KFdlYlBhZ2VQcm94eSogcGFn
ZSwgV2ViTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCiB7CiAgICAgaWYgKCFtX2NsaWVudC5z
aG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5zaG93KHRvQVBJKCZwYWdlKSwg
dG9BUEkoJm5vdGlmaWNhdGlvbiksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgbV9j
bGllbnQuc2hvdyh0b0FQSShwYWdlKSwgdG9BUEkoJm5vdGlmaWNhdGlvbiksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OmNhbmNl
bChXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlk
ZXIuaAppbmRleCA3YjJlOWNlMWM1YTYuLmMxYjBhOWQ0ZWFlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXIuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBXZWJOb3RpZmljYXRpb25Qcm92
aWRlciA6IHB1YmxpYyBBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyLCBwdWJsaWMgQVBJOjpDbAog
cHVibGljOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyKGNvbnN0IFdLTm90
aWZpY2F0aW9uUHJvdmlkZXJCYXNlKik7CiAKLSAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5Jiwg
V2ViTm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSos
IFdlYk5vdGlmaWNhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuY2VsKFdlYk5vdGlmaWNh
dGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJOb3Rp
ZmljYXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBW
ZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOWU2ZTUyYWZhMDQ2Li44NjBhNDUwNjI0
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODg3NCw5
ICs4ODc0LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNz
aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb20KICAgICBtX3VpQ2xpZW50LT5kZWNp
ZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCgqdGhpcywgb3JpZ2luLmdl
dCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIG5vdGlm
aWNhdGlvbkRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd05vdGlmaWNhdGlvbihJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIG5v
dGlmaWNhdGlvbkRhdGEpCiB7Ci0gICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnN1cHBsZW1l
bnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5zaG93KHRoaXMsIG5vdGlmaWNhdGlv
bkRhdGEpOworICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+c2hvdyh0aGlzLCBjb25uZWN0aW9uLCBub3RpZmljYXRp
b25EYXRhKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25z
dCBVVUlEJiBub3RpZmljYXRpb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggNWJjYTgyNjViNjcyLi40MDBmOTQwNDlkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMDU0LDcgKzIwNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc1F1YXJhbnRpbmVkQW5kTm90VXNlckFwcHJvdmVkKGNvbnN0IFN0cmluZyYpOwogI2VuZGlm
CiAKLSAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGF0YSYpOworICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJik7CiAgICAgdm9pZCBjYW5jZWxOb3RpZmljYXRp
b24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRp
b25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGRpZERl
c3Ryb3lOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDZkODgyOGYyZTRkMS4uZjYw
ZDNlY2QyY2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CkBAIC01ODgsNyArNTg4LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWcKIAogICAgIHJlbW90
ZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7CiAKLSAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4
dChwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5t
X3JlbW90ZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0
UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICBhdXRvIHByZWZlcmVuY2VzU3RvcmUgPSBwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJQcmVm
ZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkg
OiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCk7
CisgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNv
bnRleHQocHJlZmVyZW5jZXNTdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGlmICghcHJv
Y2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQogICAgICAgICBzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bv
b2wtPm1fcmVtb3RlV29ya2VyVXNlckFnZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCmluZGV4IGUyNTNhNWU3M2E0OC4uZjUxYWNiNzFjNDU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTIwMyw2ICsyMDMsOCBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kVG9BbGxQcm9jZXNzZXMo
Y29uc3QgVCYgbWVzc2FnZSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kVG9B
bGxQcm9jZXNzZXNGb3JTZXNzaW9uKGNvbnN0IFQmIG1lc3NhZ2UsIFBBTDo6U2Vzc2lvbklEKTsK
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIHNlbmRUb0FsbFNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMoY29uc3QgVCYgbWVzc2FnZSk7CisKICAgICB2b2lkIHByb2Nlc3NEaWRG
aW5pc2hMYXVuY2hpbmcoV2ViUHJvY2Vzc1Byb3h5Jik7CiAKICAgICBXZWJQcm9jZXNzQ2FjaGUm
IHdlYlByb2Nlc3NDYWNoZSgpIHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0NhY2hlLmdldCgpOyB9CkBA
IC04MzIsNCArODM0LDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFByb2Nlc3Nl
c0ZvclNlc3Npb24oY29uc3QgVCYgbWVzc2FnZSwgUEFMOjpTZXNzaW9uCiAgICAgfQogfQogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvQWxsU2Vydmlj
ZVdvcmtlclByb2Nlc3Nlcyhjb25zdCBUJiBtZXNzYWdlKQoreworICAgIGZvciAoYXV0byYgcHJv
Y2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKSkgeworICAgICAgICBpZiAocHJvY2Vzcy5j
YW5TZW5kTWVzc2FnZSgpKQorICAgICAgICAgICAgcHJvY2Vzcy5zZW5kKFQobWVzc2FnZSksIDAp
OworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyYzBhODAzMDAzMTQuLjI0ZWFjODA2Y2Rl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRp
b25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VzLmgiCkBAIC0yMDE1LDYg
KzIwMTYsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVJlbW90ZVdvcmtlcnMoT3B0
aW9uU2V0PFJlbW90ZVdvcmtlclR5cGU+IHdvcmtlclR5cAogCiAgICAgV0VCUFJPQ0VTU1BST1hZ
X1JFTEVBU0VfTE9HKFByb2Nlc3MsICJkaXNhYmxlV29ya2VyczogRGlzYWJsaW5nIHdvcmtlcnMg
KFNoYXJlZFdvcmtlcnM9JWQsIFNlcnZpY2VXb3JrZXJzPSVkKSIsIHdvcmtlclR5cGUuY29udGFp
bnMoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSwgd29ya2VyVHlwZS5jb250YWlucyhS
ZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSk7CiAKKyAgICByZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2Vy
UGFnZUlEKTsKKyAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKwogICAgIHVw
ZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAKICAgICBpZiAoIWlzUnVubmlu
Z1dvcmtlcnMoKSkKQEAgLTIwNjQsNiArMjA2OCw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpl
bmFibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29uc3QgVXNl
CiAgICAgICAgIG51bGxwdHIsCiAgICAgICAgIHsgfQogICAgIH07CisKKyAgICBhZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29y
a2VyUGFnZUlELCBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6c2luZ2xldG9uKCkp
OworCiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAogICAgIHVw
ZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24od29ya2VyVHlwZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCmluZGV4IDEzMjkwNTU3MmY0Yi4uMmM3YTZjNjljNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApA
QCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkQ2FjaGUuaCIKICNpbmNs
dWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6
ZS5oIgorI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDYWNoZS5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtMjA1NCw0ICsyMDU1LDI2IEBAIGJvb2wgV2Vic2l0
ZURhdGFTdG9yZTo6c2hvdWxkTWFrZU5leHROZXR3b3JrUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0
aW5nKCkKICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShuZXh0TmV0d29ya1Byb2Nlc3NMYXVuY2hT
aG91bGRGYWlsRm9yVGVzdGluZywgZmFsc2UpOwogfQogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnNob3dTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgbm90aWZpY2F0aW9uRGF0YSkKK3sK
KyAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5h
Z2VyKCkuc2hvdyhudWxscHRyLCBjb25uZWN0aW9uLCBub3RpZmljYXRpb25EYXRhKTsKK30KKwor
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpjYW5jZWxTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKGNv
bnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQoreworICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6c2hhcmVkU2VydmljZVdvcmtlck1hbmFnZXIoKS5jYW5jZWwobnVsbHB0ciwgbm90aWZp
Y2F0aW9uSUQpOworfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmNsZWFyU2VydmljZVdvcmtl
ck5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKK3sKKyAgICBWZWN0b3I8
VVVJRD4gbm90aWZpY2F0aW9uczsKKyAgICBub3RpZmljYXRpb25zLmFwcGVuZChub3RpZmljYXRp
b25JRCk7CisgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29y
a2VyTWFuYWdlcigpLmNsZWFyTm90aWZpY2F0aW9ucyhudWxscHRyLCBub3RpZmljYXRpb25zKTsK
K30KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkaWREZXN0cm95U2VydmljZVdvcmtlck5vdGlm
aWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKK3sKKyAgICBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkuZGlkRGVzdHJveU5v
dGlmaWNhdGlvbihudWxscHRyLCBub3RpZmljYXRpb25JRCk7Cit9CisKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApp
bmRleCA4NWVlMzFlMTM4M2QuLjQ2YWYwZWY1OWViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtNzgsNiAr
NzgsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIExvY2FsV2ViTG9ja1JlZ2lzdHJ5
OwogCiBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKK3N0cnVjdCBO
b3RpZmljYXRpb25EYXRhOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM3MCw2ICszNzEs
MTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb3VudE5vbkRlZmF1bHRTZXNzaW9uU2V0cyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHNpemVfdCk+JiYpOwogCisgICAgdm9pZCBzaG93U2VydmljZVdv
cmtlck5vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpOb3RpZmlj
YXRpb25EYXRhJik7CisgICAgdm9pZCBjYW5jZWxTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKGNv
bnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIGNsZWFyU2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBkaWREZXN0
cm95U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7
CisKIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBGb3JjZVJlaW5pdGlhbGl6YXRpb24gOiBib29s
IHsgTm8sIFllcyB9OwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY3YmVlNTQzY2Uw
Zi4uYzE1ZTFiMWRkZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTk5Niw2ICs5OTYsNyBAQAogCQk1MTVCRTFCNTFENTkxN0ZGMDBE
RDdDNjggLyogVUlHYW1lcGFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTVCRTFBRDFENTU1QzUxMDBERDdDNjggLyogVUlHYW1lcGFkLmggKi87IH07
CiAJCTUxNjMxOTk0MTYyODlBNjAwMEUyMkYwMCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUFDQzkzNDE2MjgwNjQ4MDAzNDI1NTAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OwogCQk1MTYzMTk5NTE2Mjg5QTYzMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nlc3NN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFBQ0M5MzUxNjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCAqLzsg
fTsKKwkJNTE2NDY1ODAyN0E5Qzc3NDAwRTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b25IYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTY0NjU3RjI3QTlDNzY3MDBFMUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhh
bmRsZXIuaCAqLzsgfTsKIAkJNTE2QTRBNUQxMjBBMkNDRDAwQzA1QjdGIC8qIEFQSUVycm9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZBNEE1QjEy
MEEyQ0NEMDBDMDVCN0YgLyogQVBJRXJyb3IuaCAqLzsgfTsKIAkJNTE3OTU1NkExNjI4NzZGMzAw
RkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTBDQzdFMDE2MTM4RTI5MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nl
c3MuaCAqLzsgfTsKIAkJNTE3OTU1NkUxNjI4NzdCMzAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNz
UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MENDN0VCMTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmggKi87IH07CkBA
IC00NDgxLDYgKzQ0ODIsOCBAQAogCQk1MTYwRTk1ODI3NEMwRDg4MDA1NjczODggLyogUHVzaEFw
cEJ1bmRsZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFB1c2hB
cHBCdW5kbGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjBFOTVDMjc0QzJB
MDMwMDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNjBFOTVGMjc0QzJBM0YwMDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVn
aXN0cnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNb2NrQXBw
QnVuZGxlUmVnaXN0cnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjQ2NTdF
MjdBOUM3NjUwMEUxRjJCQSAvKiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjQ2NTdGMjdBOUM3NjcwMEUxRjJCQSAv
KiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTY0QzA5NDFCMDVCNzU3MDA0RjEwMkEgLyogQXV4aWxpYXJ5UHJvY2Vzcy5tZXNzYWdl
cy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdXhpbGlhcnlQcm9jZXNzLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0Yg
LyogQVBJRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRXJyb3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QTMzQjMxMzBCMzA4QzAwRjgwQ0I1
IC8qIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC04Njc1LDYgKzg2NzgsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkzMUEyRUM1MzE0ODk5ODI1MDA4MTBENzEgLyogTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCAqLywKKwkJCQk1MTY0NjU3RTI3QTlDNzY1MDBFMUYy
QkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuY3BwICovLAorCQkJCTUxNjQ2
NTdGMjdBOUM3NjcwMEUxRjJCQSAvKiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5o
ICovLAogCQkJCTMxQTJFQzQxMTQ4OTk3QkUwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb24uY3Bw
ICovLAogCQkJCTMxQTJFQzQyMTQ4OTk3QkUwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb24uaCAq
LywKIAkJCQk1MTQ1MjcwNjI3MUZCRUMxMDAwNDY3QjYgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VIYW5kbGVyLmNwcCAqLywKQEAgLTEzOTE5LDYgKzEzOTI0LDcgQEAKIAkJCQlCQzRB
NjI5NzE0NzMxM0EwMDA2QzY4MUEgLyogV0tDb25uZWN0aW9uUmVmLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNTk2REQ2QTI1MUU3MUQ0MDBDMjc1QTcgLyogV0tDb250YWN0UGlja2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0QyODY1NDFFNzIzNUIxMDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxp
c3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNjQ2NTgwMjdBOUM3NzQwMEUxRjJCQSAvKiBTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg2
NTUxRTcyMzVCODAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDNTEzOURCMjU5MjdEODAwMDlDM0UzMCAvKiBXS0NvbnRlbnRSdWxlTGlz
dFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NjUxMUU3MjM1OTkwMDk0RkRDOCAv
KiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlci5jcHAKaW5kZXggOWMxYzEyZDg4NTU0Li42OWI2M2M2YzZiYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIgogI2luY2x1ZGUg
IldlYk5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCkBAIC00NSw2ICs0Niw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3Mu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NXQ29udGV4dE1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjZW5kaWYKIApAQCAtMTIxLDI1ICsxMjMsNDMg
QEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpyZW1vdmVBbGxQZXJtaXNzaW9uc0ZvclRl
c3RpbmcoKQogfQogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBib29sIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKFdlYlByb2Nlc3MmIHByb2Nlc3MsIFUm
JiBtZXNzYWdlLCBXZWJQYWdlJiBwYWdlKQordGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShVJiYgbWVzc2FnZSwg
Tm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiB7CisgICAgaWYgKCFw
YWdlICYmICFub3RpZmljYXRpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKICNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKICAgICBp
ZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5idWlsdEluTm90aWZp
Y2F0aW9uc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIHByb2Nlc3MuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgcGFn
ZS5zZXNzaW9uSUQoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcmV0dXJuIG1fcHJvY2Vzcy5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1l
c3NhZ2UpLCBub3RpZmljYXRpb24uZGF0YSgpLnNvdXJjZVNlc3Npb24udG9VSW50NjQoKSk7CiAj
ZW5kaWYKLSAgICByZXR1cm4gcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KFdURk1vdmUobWVzc2FnZSksIHBhZ2UuaWRlbnRpZmllcigpKTsKKworICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJZGVudGlmaWVyOworICAgIGlmIChwYWdl
KQorICAgICAgICBwYWdlSWRlbnRpZmllciA9IHBhZ2UtPmlkZW50aWZpZXIoKTsKKyAgICBlbHNl
IGlmIChhdXRvKiBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29u
bmVjdGlvbigpKSB7CisgICAgICAgIC8vIFBhZ2VsZXNzIG5vdGlmaWNhdGlvbiBtZXNzYWdlcyBh
cmUsIGJ5IGRlZmF1bHQsIG9uIGJlaGFsZiBvZiBhIHNlcnZpY2Ugd29ya2VyLgorICAgICAgICAv
LyBTbyB1c2UgdGhlIHNlcnZpY2Ugd29ya2VyIGNvbm5lY3Rpb24ncyBwYWdlIGlkZW50aWZpZXIu
CisgICAgICAgIHBhZ2VJZGVudGlmaWVyID0gY29ubmVjdGlvbi0+cGFnZUlkZW50aWZpZXIoKTsK
KyAgICB9CisKKyAgICBBU1NFUlQocGFnZUlkZW50aWZpZXIpOworCisgICAgcmV0dXJuIG1fcHJv
Y2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKFdURk1vdmUobWVzc2FnZSksICpw
YWdlSWRlbnRpZmllcik7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCiAKIGJv
b2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlv
biwgV2ViUGFnZSogcGFnZSkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
aWYgKHBhZ2UgJiYgIXBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkubm90aWZpY2F0aW9uc0Vu
YWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCi0gICAgaWYgKCFwYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLm5vdGlmaWNhdGlvbnNF
bmFibGVkKCkpCisgICAgaWYgKCFzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShNZXNzYWdlczo6Tm90
aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpTaG93Tm90aWZpY2F0aW9uKG5vdGlmaWNh
dGlvbi5kYXRhKCkpLCBub3RpZmljYXRpb24sIHBhZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBtX25vdGlmaWNhdGlvbklETWFwLnNldChub3RpZmljYXRpb24uaWRlbnRpZmllcigp
LCAmbm90aWZpY2F0aW9uKTsKLQotICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKG1fcHJvY2Vz
cywgTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6U2hvd05vdGlm
aWNhdGlvbihub3RpZmljYXRpb24uZGF0YSgpKSwgKnBhZ2UpOwogICAgIHJldHVybiB0cnVlOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKQEAgLTE1MCwxNiArMTcwLDE2
IEBAIGJvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24mIG5vdGlm
aWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpj
YW5jZWwoTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiB7Ci0jaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgaWYgKCFwYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5n
cygpLm5vdGlmaWNhdGlvbnNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgYXV0byBt
YXBwZWROb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRpb24u
aWRlbnRpZmllcigpKTsKICAgICBpZiAoIW1hcHBlZE5vdGlmaWNhdGlvbikKICAgICAgICAgcmV0
dXJuOwogICAgIEFTU0VSVChtYXBwZWROb3RpZmljYXRpb24gPT0gJm5vdGlmaWNhdGlvbik7CiAK
LSAgICBzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShtX3Byb2Nlc3MsIE1lc3NhZ2VzOjpOb3RpZmlj
YXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OkNhbmNlbE5vdGlmaWNhdGlvbihub3RpZmljYXRp
b24uaWRlbnRpZmllcigpKSwgKnBhZ2UpOworICAgIGlmICghc2VuZE5vdGlmaWNhdGlvbk1lc3Nh
Z2UoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6Q2FuY2VsTm90
aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpLCBub3RpZmljYXRpb24sIHBhZ2Up
KQorICAgICAgICByZXR1cm47CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24p
OwogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKQEAgLTE2OCw2ICsxODgsOCBAQCB2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2Vi
UGFnZSogcGFnZSkKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90
aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
ICAgICBSZWYgcHJvdGVjdGVkTm90aWZpY2F0aW9uIHsgbm90aWZpY2F0aW9uIH07CiAKQEAgLTE3
Niw3ICsxOTgsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3Rp
ZmljYXRpb24oTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sCiAgICAgICAgIHJldHVybjsKICAg
ICBBU1NFUlQodGFrZW5Ob3RpZmljYXRpb24gPT0gJm5vdGlmaWNhdGlvbik7CiAKLSAgICBzZW5k
Tm90aWZpY2F0aW9uTWVzc2FnZShtX3Byb2Nlc3MsIE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXI6OkRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmlk
ZW50aWZpZXIoKSksICpwYWdlKTsKKyAgICBzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShNZXNzYWdl
czo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpEaWREZXN0cm95Tm90aWZpY2F0
aW9uKG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpLCBub3RpZmljYXRpb24sIHBhZ2UpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0ocGFn
ZSk7CkBAIC0xODUsNiArMjA3LDggQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRE
ZXN0cm95Tm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLAogCiB2b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZFNob3dOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90
aWZpY2F0aW9uSUQpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQogICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9
IG1fbm90aWZpY2F0aW9uSURNYXAuZ2V0KG5vdGlmaWNhdGlvbklEKTsKICAgICBpZiAoIW5vdGlm
aWNhdGlvbikKQEAgLTE5OCw2ICsyMjIsOCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6
OmRpZFNob3dOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCiAKIHZvaWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgVVVJRCYg
bm90aWZpY2F0aW9uSUQpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQogICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlv
biA9IG1fbm90aWZpY2F0aW9uSURNYXAuZ2V0KG5vdGlmaWNhdGlvbklEKTsKICAgICBpZiAoIW5v
dGlmaWNhdGlvbikKQEAgLTIxMyw2ICsyMzksOCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQogCiB2
b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsb3NlTm90aWZpY2F0aW9ucyhjb25zdCBW
ZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgc2l6ZV90IGNvdW50ID0gbm90
aWZpY2F0aW9uSURzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyAr
K2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCBlNjM1MWZkZjk2MTYuLjQ5
ZWE3MTg0NTViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaApAQCAtODEsNiArODEs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rv
cjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGRpZFJlbW92ZU5vdGlmaWNhdGlv
bkRlY2lzaW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3JpZ2luU3RyaW5ncyk7CiAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKFUmJiBtZXNz
YWdlLCBXZWJDb3JlOjpOb3RpZmljYXRpb24mLCBXZWJQYWdlKik7CisKICAgICBXZWJQcm9jZXNz
JiBtX3Byb2Nlc3M7CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oCmluZGV4IGMxZWRkOWYwYTJlYy4uMWUzMTQwZjY4MmVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTY2LDYgKzY2LDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBmaW5hbDsKIAorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHVw
ZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZp
Y2F0aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJOb3RpZmljYXRpb25DbGllbnQuY3BwCmluZGV4IGMyNGVkMzdkNzZlZi4uNGEzNmU4ZmJl
OGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcApAQCAtNDAsMzQgKzQwLDY2
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpXZWJO
b3RpZmljYXRpb25DbGllbnQoV2ViUGFnZSogcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQogewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6
fldlYk5vdGlmaWNhdGlvbkNsaWVudCgpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IH0KIAogYm9vbCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OnNob3coTm90aWZpY2F0aW9uJiBub3Rp
ZmljYXRpb24pCiB7Ci0gICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1l
bnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+c2hvdyhub3RpZmljYXRpb24sIG1fcGFnZSk7
CisgICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgICAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5zaG93KG5vdGlm
aWNhdGlvbiwgbV9wYWdlKTsKKworICAgIGJvb2wgcmVzdWx0OworICAgIGNhbGxPbk1haW5UaHJl
YWRBbmRXYWl0KFsmcmVzdWx0LCBwcm90ZWN0ZWROb3RpZmljYXRpb24gPSBSZWYgeyBub3RpZmlj
YXRpb24gfV0oKSB7CisgICAgICAgIHJlc3VsdCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1
cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+c2hvdyhwcm90ZWN0ZWROb3RpZmlj
YXRpb24uZ2V0KCksIG51bGxwdHIpOworICAgIH0pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IHZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjYW5jZWwoTm90aWZpY2F0aW9uJiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyPigpLT5jYW5jZWwobm90aWZpY2F0aW9uLCBtX3BhZ2UpOworICAgIGlm
IChpc01haW5UaHJlYWQoKSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBw
bGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmNhbmNlbChub3RpZmljYXRpb24sIG1f
cGFnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYWxsT25NYWluVGhyZWFkQW5k
V2FpdChbcHJvdGVjdGVkTm90aWZpY2F0aW9uID0gUmVmIHsgbm90aWZpY2F0aW9uIH1dKCkgewor
ICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXI+KCktPmNhbmNlbChwcm90ZWN0ZWROb3RpZmljYXRpb24uZ2V0KCksIG51bGxwdHIp
OworICAgIH0pOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9u
T2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQogewotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+
ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIG1fcGFnZSk7CisgICAgaWYgKGlz
TWFpblRocmVhZCgpKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1l
bnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3Rp
ZmljYXRpb24sIG1fcGFnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBNYWtl
IHN1cmUgdGhpcyBOb3RpZmljYXRpb24gb2JqZWN0IGlzIGRlYWxsb2NhdGVkIG9uIHRoaXMgdGhy
ZWFkIGJ5IGhvbGRpbmcgb25lIGxhc3QgcmVmKCkgdG8gaXQgaGVyZQorICAgIGF1dG8gbGFzdE5v
dGlmaWNhdGlvblJlZiA9IFJlZiB7IG5vdGlmaWNhdGlvbiB9OworCisgICAgY2FsbE9uTWFpblRo
cmVhZEFuZFdhaXQoWyZub3RpZmljYXRpb25dKCkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmRpZERlc3Ryb3lO
b3RpZmljYXRpb24obm90aWZpY2F0aW9uLCBudWxscHRyKTsKKyAgICB9KTsKIH0KIAogdm9pZCBX
ZWJOb3RpZmljYXRpb25DbGllbnQ6Om5vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKQog
ewotICAgIGRlbGV0ZSB0aGlzOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXNdIHsKKyAgICAg
ICAgZGVsZXRlIHRoaXM7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50
OjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQZXJt
aXNzaW9uSGFuZGxlciYmIHBlcm1pc3Npb25IYW5kbGVyKQogeworICAgIC8vIE9ubHkgV2luZG93
IGNsaWVudHMgY2FuIHJlcXVlc3QgcGVybWlzc2lvbgorICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKG1fcGFnZSk7CisKICAgICBhdXRvKiBzZWN1cml0eU9yaWdpbiA9IGNv
bnRleHQuc2VjdXJpdHlPcmlnaW4oKTsKICAgICBpZiAoIXNlY3VyaXR5T3JpZ2luKQogICAgICAg
ICByZXR1cm4gcGVybWlzc2lvbkhhbmRsZXIoTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9u
OjpEZW5pZWQpOwpAQCAtNzYsOSArMTA4LDIwIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50
OjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQCiAK
IE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNo
ZWNrUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIGlm
ICghY29udGV4dCB8fCAhY29udGV4dC0+aXNEb2N1bWVudCgpIHx8ICFjb250ZXh0LT5zZWN1cml0
eU9yaWdpbigpKQorICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlv
bkNsaWVudDo6UGVybWlzc2lvbjo6RGVuaWVkOwotICAgIHJldHVybiBtX3BhZ2UtPm5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLT5wZXJtaXNzaW9uTGV2ZWwoY29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpKTsKKyAgICBpZiAoIWNvbnRleHQtPmlzRG9jdW1lbnQo
KSAmJiAhY29udGV4dC0+aXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkKKyAgICAgICAgcmV0
dXJuIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbjo6RGVuaWVkOworCisgICAgYXV0byog
b3JpZ2luID0gY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBpZiAoIW9yaWdpbikKKyAg
ICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbjo6RGVuaWVkOworCisg
ICAgTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIHJlc3VsdFBlcm1pc3Npb247CisgICAg
Y2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZyZXN1bHRQZXJtaXNzaW9uLCBvcmlnaW4gPSBvcmln
aW4tPmRhdGEoKS50b1N0cmluZygpXSB7CisgICAgICAgIHJlc3VsdFBlcm1pc3Npb24gPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCkt
PnBvbGljeUZvck9yaWdpbihvcmlnaW4pOworICAgIH0pOworICAgIHJldHVybiByZXN1bHRQZXJt
aXNzaW9uOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsCmluZGV4IDhkZTY4MWIyMjI0MS4uZGQzOTc2M2FjNTEyIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKQEAgLTIwOCw2ICsyMDgsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAg
dW5kZWZpbmVkIGRlbnlXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKERPTVN0cmluZyBvcmlnaW4p
OwogICAgIHVuZGVmaW5lZCByZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwog
ICAgIHVuZGVmaW5lZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKG9iamVjdCBub3RpZmlj
YXRpb24pOworICAgIHVuZGVmaW5lZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2Vy
dmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKIAogICAgIC8vIEdlb2xvY2F0aW9uCiAgICAgdW5k
ZWZpbmVkIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sZWFuIHZhbHVlKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKaW5kZXggMzNlNzBhZjMyYTZkLi4wZDBkMWZmYjYwMDIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CkBAIC02NjgsNiArNjY4LDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RTaW11bGF0ZVdl
Yk5vdGlmaWNhdGlvbkNsaWNrKFdLRGF0YVJlZiBub3RpZmljYXRpb25JRCkKICAgICBwb3N0UGFn
ZU1lc3NhZ2UoIlNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2siLCBub3RpZmljYXRpb25JRCk7
CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNs
aWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKQoreworICAgIHBvc3RQYWdlTWVzc2Fn
ZSgiU2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b25zIik7Cit9CisKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RTZXRBZGRzVmlzaXRlZExpbmtz
KGJvb2wgYWRkc1Zpc2l0ZWRMaW5rcykKIHsKICAgICBwb3N0UGFnZU1lc3NhZ2UoIlNldEFkZHNW
aXNpdGVkTGlua3MiLCBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShhZGRzVmlzaXRlZExpbmtzKSkp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oCmluZGV4IGJjMTQ3NWNhZjdmYS4uMGE4NTk5NTgwZmFjIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5oCkBAIC05NSw2ICs5NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RTZXRXaW5kb3dJc0tl
eShib29sKTsKICAgICB2b2lkIHBvc3RTZXRWaWV3U2l6ZShkb3VibGUgd2lkdGgsIGRvdWJsZSBo
ZWlnaHQpOwogICAgIHZvaWQgcG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tEYXRh
UmVmIG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIHBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlv
bkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKICAgICB2b2lkIHBvc3RTZXRB
ZGRzVmlzaXRlZExpbmtzKGJvb2wpOwogCiAgICAgLy8gR2VvbG9jYXRpb24uCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRl
eCA3ODFiODE2OTFhZmMuLjI0YTlhODVkMDdiYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC04NjcsMTEgKzg2Nywx
MyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KGJvb2wgZW5hYmxlZCkKIHZvaWQgVGVzdFJ1bm5lcjo6Z3JhbnRXZWJOb3RpZmljYXRpb25QZXJt
aXNzaW9uKEpTU3RyaW5nUmVmIG9yaWdpbikKIHsKICAgICBXS0J1bmRsZVNldFdlYk5vdGlmaWNh
dGlvblBlcm1pc3Npb24oSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBwYWdl
KCksIHRvV0sob3JpZ2luKS5nZXQoKSwgdHJ1ZSk7CisgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1l
c3NhZ2VSZXR1cm5pbmdCb29sZWFuKCJHcmFudE5vdGlmaWNhdGlvblBlcm1pc3Npb24iLCBvcmln
aW4pOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OmRlbnlXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9u
KEpTU3RyaW5nUmVmIG9yaWdpbikKIHsKICAgICBXS0J1bmRsZVNldFdlYk5vdGlmaWNhdGlvblBl
cm1pc3Npb24oSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBwYWdlKCksIHRv
V0sob3JpZ2luKS5nZXQoKSwgZmFsc2UpOworICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdl
UmV0dXJuaW5nQm9vbGVhbigiRGVueU5vdGlmaWNhdGlvblBlcm1pc3Npb24iLCBvcmlnaW4pOwog
fQogCiB2b2lkIFRlc3RSdW5uZXI6OnJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25z
KCkKQEAgLTg4Nyw2ICs4ODksMTEgQEAgdm9pZCBUZXN0UnVubmVyOjpzaW11bGF0ZVdlYk5vdGlm
aWNhdGlvbkNsaWNrKEpTVmFsdWVSZWYgbm90aWZpY2F0aW9uKQogICAgIGluamVjdGVkQnVuZGxl
LnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKG5vdGlmaWNhdGlvbklELmdldCgpKTsK
IH0KIAordm9pZCBUZXN0UnVubmVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2Vy
dmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKQoreworICAgIEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5wb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3Rp
ZmljYXRpb25zKCk7Cit9CisKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNz
aW9uKGJvb2wgZW5hYmxlZCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBi
eSBmcmFtZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmgKaW5kZXggMmI3OGMxZGE5NmIxLi45MGY1ZWU0ODFmNDUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0y
OTQsNiArMjk0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRlbnlXZWJOb3RpZmljYXRp
b25QZXJtaXNzaW9uKEpTU3RyaW5nUmVmIG9yaWdpbik7CiAgICAgc3RhdGljIHZvaWQgcmVtb3Zl
QWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKTsKICAgICBzdGF0aWMgdm9pZCBzaW11bGF0
ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKEpTVmFsdWVSZWYgbm90aWZpY2F0aW9uKTsKKyAgICBzdGF0
aWMgdm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlm
aWNhdGlvbnMoKTsKIAogICAgIC8vIEdlb2xvY2F0aW9uLgogICAgIHZvaWQgc2V0R2VvbG9jYXRp
b25QZXJtaXNzaW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAppbmRleCA0ZDZlOTA5YWJkMmEuLjUwMGM3MWQ1YTRhMSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTY5Niw2ICs2OTYsNyBAQCBXS1JldGFpblB0
cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29u
ZmlndXJhdGlvbihjbwogICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBub3RpZmljYXRpb25N
YW5hZ2VyID0gV0tDb250ZXh0R2V0Tm90aWZpY2F0aW9uTWFuYWdlcihtX2NvbnRleHQuZ2V0KCkp
OwogICAgIFdLTm90aWZpY2F0aW9uUHJvdmlkZXJWMCBub3RpZmljYXRpb25LaXQgPSBtX3dlYk5v
dGlmaWNhdGlvblByb3ZpZGVyLnByb3ZpZGVyKCk7CiAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2Vy
U2V0UHJvdmlkZXIobm90aWZpY2F0aW9uTWFuYWdlciwgJm5vdGlmaWNhdGlvbktpdC5iYXNlKTsK
KyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihXS05vdGlmaWNhdGlvbk1hbmFn
ZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpLCAmbm90aWZpY2F0
aW9uS2l0LmJhc2UpOwogCiAgICAgaWYgKHRlc3RQbHVnaW5EaXJlY3RvcnkoKSkKICAgICAgICAg
V0tDb250ZXh0U2V0QWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcnkobV9jb250ZXh0LmdldCgpLCB0
ZXN0UGx1Z2luRGlyZWN0b3J5KCkpOwpAQCAtNzE3LDYgKzcxOCwyNCBAQCBXS1JldGFpblB0cjxX
S1BhZ2VDb25maWd1cmF0aW9uUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmln
dXJhdGlvbihjbwogICAgIHJldHVybiBwYWdlQ29uZmlndXJhdGlvbjsKIH0KIAorYm9vbCBUZXN0
Q29udHJvbGxlcjo6Z3JhbnROb3RpZmljYXRpb25QZXJtaXNzaW9uKFdLU3RyaW5nUmVmIG9yaWdp
blN0cmluZykKK3sKKyAgICBtX3dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLnNldFBlcm1pc3Npb24o
dG9XVEZTdHJpbmcob3JpZ2luU3RyaW5nKSwgdHJ1ZSk7CisKKyAgICBhdXRvIG9yaWdpbiA9IGFk
b3B0V0soV0tTZWN1cml0eU9yaWdpbkNyZWF0ZUZyb21TdHJpbmcob3JpZ2luU3RyaW5nKSk7Cisg
ICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xp
Y3koV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlv
bk1hbmFnZXIoKSwgb3JpZ2luLmdldCgpLCB0cnVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBUZXN0Q29udHJvbGxlcjo6ZGVueU5vdGlmaWNhdGlvblBlcm1pc3Npb24oV0tTdHJpbmdS
ZWYgb3JpZ2luU3RyaW5nKQoreworICAgIG1fd2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuc2V0UGVy
bWlzc2lvbih0b1dURlN0cmluZyhvcmlnaW5TdHJpbmcpLCBmYWxzZSk7CisKKyAgICBhdXRvIG9y
aWdpbiA9IGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNyZWF0ZUZyb21TdHJpbmcob3JpZ2luU3Ry
aW5nKSk7CisgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRVcGRhdGVOb3RpZmlj
YXRpb25Qb2xpY3koV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbk1hbmFnZXIoKSwgb3JpZ2luLmdldCgpLCBmYWxzZSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhj
b25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvIGFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllciA9IG9wdGlvbnMuYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CkBAIC0y
MzU5LDYgKzIzNzgsMTEgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2ltdWxhdGVXZWJOb3RpZmlj
YXRpb25DbGljayhXS0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpCiAgICAgbV93ZWJOb3RpZmljYXRp
b25Qcm92aWRlci5zaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKG1haW5XZWJWaWV3KCktPnBh
Z2UoKSwgbm90aWZpY2F0aW9uSUQpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzaW11bGF0
ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKQorewor
ICAgIG1fd2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlj
a0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25zKCk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGVuYWJsZWQpCiB7CiAgICAgbV9pc0dl
b2xvY2F0aW9uUGVybWlzc2lvblNldCA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmgKaW5kZXggYjUyYWY2NjU1NTJiLi5lMjRhYzMyMDM0YWQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRCZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZShib29sIHZhbHVlKSB7IG1fYmVm
b3JlVW5sb2FkUmV0dXJuVmFsdWUgPSB2YWx1ZTsgfQogCiAgICAgdm9pZCBzaW11bGF0ZVdlYk5v
dGlmaWNhdGlvbkNsaWNrKFdLRGF0YVJlZiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBzaW11
bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsK
IAogICAgIC8vIEdlb2xvY2F0aW9uLgogICAgIHZvaWQgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9u
KGJvb2wpOwpAQCAtMzczLDYgKzM3NCw5IEBAIHB1YmxpYzoKIAogICAgIFdLUHJlZmVyZW5jZXNS
ZWYgcGxhdGZvcm1QcmVmZXJlbmNlcygpOwogCisgICAgYm9vbCBncmFudE5vdGlmaWNhdGlvblBl
cm1pc3Npb24oV0tTdHJpbmdSZWYgb3JpZ2luKTsKKyAgICBib29sIGRlbnlOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uKFdLU3RyaW5nUmVmIG9yaWdpbik7CisKIHByaXZhdGU6CiAgICAgV0tSZXRhaW5Q
dHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjb25z
dCBUZXN0T3B0aW9ucyYpOwogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25S
ZWY+IGdlbmVyYXRlQ29udGV4dENvbmZpZ3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnMmKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMmNhNDJj
M2VlNWMzLi42YTkwMDNiY2I4MzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwCkBAIC0zOTYsNiArMzk2LDExIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIlNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNl
V29ya2VyTm90aWZpY2F0aW9ucyIpKSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5zaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNh
dGlvbnMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0QWRkc1Zpc2l0ZWRMaW5rcyIpKSB7CiAg
ICAgICAgIFdLUGFnZVNldEFkZHNWaXNpdGVkTGlua3MoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgYm9vbGVhblZhbHVlKG1lc3NhZ2VCb2R5KSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTEwMjUsNiArMTAzMCwxMiBAQCBXS1JldGFpblB0cjxXS1R5cGVS
ZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQgogICAgICAgICByZXR1cm4gYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShjb3VudCkpOwogICAg
IH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
R3JhbnROb3RpZmljYXRpb25QZXJtaXNzaW9uIikpCisgICAgICAgIHJldHVybiBhZG9wdFdLKFdL
Qm9vbGVhbkNyZWF0ZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuZ3JhbnROb3RpZmljYXRp
b25QZXJtaXNzaW9uKHN0cmluZ1ZhbHVlKG1lc3NhZ2VCb2R5KSkpKTsKKworICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRGVueU5vdGlmaWNhdGlvblBl
cm1pc3Npb24iKSkKKyAgICAgICAgcmV0dXJuIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKFRlc3RD
b250cm9sbGVyOjpzaW5nbGV0b24oKS5kZW55Tm90aWZpY2F0aW9uUGVybWlzc2lvbihzdHJpbmdW
YWx1ZShtZXNzYWdlQm9keSkpKSk7CisgICAgICAgIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiSXNEb2luZ01lZGlhQ2FwdHVyZSIpKQogICAgICAg
ICByZXR1cm4gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLmlzRG9pbmdNZWRpYUNhcHR1cmUoKSkpOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAppbmRleCBjODhmMmU5ZjhkYjIu
LmM1MWI5YWFjZDljNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgc3RhdGljIFdLRGljdGlvbmFy
eVJlZiBub3RpZmljYXRpb25QZXJtaXNzaW9ucyhjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogCiBX
ZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIoKQogeworICAg
IG1fcGVybWlzc2lvbnMgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CiB9
CiAKIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjp+V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIoKQpA
QCAtODcsMTAgKzg4LDE5IEBAIFdLTm90aWZpY2F0aW9uUHJvdmlkZXJWMCBXZWJOb3RpZmljYXRp
b25Qcm92aWRlcjo6cHJvdmlkZXIoKQogICAgIHJldHVybiBub3RpZmljYXRpb25Qcm92aWRlcjsK
IH0KIAorc3RhdGljIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBub3RpZmljYXRpb25NYW5hZ2Vy
Rm9yUGFnZShXS1BhZ2VSZWYgcGFnZSkKK3sKKyAgICBpZiAocGFnZSkgeworICAgICAgICBhdXRv
IGNvbnRleHQgPSBXS1BhZ2VHZXRDb250ZXh0KHBhZ2UpOworICAgICAgICByZXR1cm4gV0tDb250
ZXh0R2V0Tm90aWZpY2F0aW9uTWFuYWdlcihjb250ZXh0KTsKKyAgICB9CisKKyAgICByZXR1cm4g
V0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbk1h
bmFnZXIoKTsKK30KKwogdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2hvd1dlYk5vdGlm
aWNhdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKQog
ewotICAgIGF1dG8gY29udGV4dCA9IFdLUGFnZUdldENvbnRleHQocGFnZSk7Ci0gICAgYXV0byBu
b3RpZmljYXRpb25NYW5hZ2VyID0gV0tDb250ZXh0R2V0Tm90aWZpY2F0aW9uTWFuYWdlcihjb250
ZXh0KTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBub3RpZmljYXRpb25NYW5hZ2Vy
Rm9yUGFnZShwYWdlKTsKICAgICBBU1NFUlQobV9rbm93bk1hbmFnZXJzLmNvbnRhaW5zKG5vdGlm
aWNhdGlvbk1hbmFnZXIpKTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIgPSBXS05vdGlmaWNh
dGlvbkdldElEKG5vdGlmaWNhdGlvbik7CkBAIC0xMTgsNyArMTI4LDcgQEAgdm9pZCBXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlcjo6Y2xvc2VXZWJOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25SZWYg
bm90aWZpY2F0aW8KIAogdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6YWRkTm90aWZpY2F0
aW9uTWFuYWdlcihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlcikKIHsKLSAgICBBU1NF
UlQoIW1fa25vd25NYW5hZ2Vycy5jb250YWlucyhtYW5hZ2VyKSk7CisgICAgQVNTRVJUKCFtX2tu
b3duTWFuYWdlcnMuY29udGFpbnMobWFuYWdlcikgfHwgbWFuYWdlciA9PSBXS05vdGlmaWNhdGlv
bk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpKTsKICAg
ICBtX2tub3duTWFuYWdlcnMuYWRkKG1hbmFnZXIpOwogfQogCkBAIC0xNDUsOCArMTU1LDE0IEBA
IHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIo
V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmCiAKIFdLRGljdGlvbmFyeVJlZiBXZWJOb3RpZmljYXRp
b25Qcm92aWRlcjo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogewotICAgIC8vIEluaXRpYWwg
cGVybWlzc2lvbnMgYXJlIGFsd2F5cyBlbXB0eS4KLSAgICByZXR1cm4gV0tNdXRhYmxlRGljdGlv
bmFyeUNyZWF0ZSgpOworICAgIFdLUmV0YWluKG1fcGVybWlzc2lvbnMuZ2V0KCkpOworICAgIHJl
dHVybiBtX3Blcm1pc3Npb25zLmdldCgpOworfQorCit2b2lkIFdlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyOjpzZXRQZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGFsbG93ZWQpCit7
CisgICAgYXV0byB3a0FsbG93ZWQgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShhbGxvd2VkKSk7
CisgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShtX3Blcm1pc3Npb25zLmdldCgpLCB0b1dLKG9yaWdp
bikuZ2V0KCksIHdrQWxsb3dlZC5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tQYWdlUmVmLCBXS0RhdGFSZWYg
bm90aWZpY2F0aW9uSUQpCkBAIC0xNTcsNiArMTczLDE2IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tQYWdlUmVmLCBXS0RhdGFS
ZWYKICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9u
X2IobV9vd25pbmdNYW5hZ2VyLmdldChpZGVudGlmaWVyKSwgbm90aWZpY2F0aW9uSUQpOwogfQog
Cit2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNs
aWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKQoreworICAgIGF1dG8gc2hhcmVkTWFu
YWdlciA9IFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb25NYW5hZ2VyKCk7CisgICAgZm9yIChhdXRvJiBpdGVyYXRvciA6IG1fb3duaW5nTWFuYWdl
cikgeworICAgICAgICBpZiAoaXRlcmF0b3IudmFsdWUgIT0gc2hhcmVkTWFuYWdlcikKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRp
ZENsaWNrTm90aWZpY2F0aW9uX2Ioc2hhcmVkTWFuYWdlciwgdXVpZFRvRGF0YShpdGVyYXRvci5r
ZXkpLmdldCgpKTsKKyAgICB9Cit9CisKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJl
c2V0KCkKIHsKICAgICBmb3IgKGF1dG8gaXRlcmF0b3IgOiBtX293bmluZ01hbmFnZXIpIHsKQEAg
LTE2Niw2ICsxOTIsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZXNldCgpCiAg
ICAgfQogCiAgICAgbV9vd25pbmdNYW5hZ2VyLmNsZWFyKCk7CisgICAgbV9wZXJtaXNzaW9ucyA9
IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlv
blByb3ZpZGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyLmgKaW5kZXggMGMzODdhNmU2YjU1Li41N2I2Y2ZhYTUxMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAgLTQ5LDExICs0OSwx
NiBAQCBwdWJsaWM6CiAgICAgV0tEaWN0aW9uYXJ5UmVmIG5vdGlmaWNhdGlvblBlcm1pc3Npb25z
KCk7CiAKICAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tQYWdlUmVmLCBX
S0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgc2ltdWxhdGVXZWJOb3RpZmljYXRp
b25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25zKCk7CisKICAgICB2b2lkIHJlc2V0
KCk7CiAKKyAgICB2b2lkIHNldFBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGJvb2wg
YWxsb3dlZCk7CisKIHByaXZhdGU6CiAgICAgSGFzaFNldDxXS1JldGFpblB0cjxXS05vdGlmaWNh
dGlvbk1hbmFnZXJSZWY+PiBtX2tub3duTWFuYWdlcnM7CiAgICAgSGFzaE1hcDxVVUlELCBXS05v
dGlmaWNhdGlvbk1hbmFnZXJSZWY+IG1fb3duaW5nTWFuYWdlcjsKKyAgICBXS1JldGFpblB0cjxX
S011dGFibGVEaWN0aW9uYXJ5UmVmPiBtX3Blcm1pc3Npb25zOwogfTsKIAogfQo=
</data>
<flag name="commit-queue"
          id="478615"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451789</attachid>
            <date>2022-02-12 11:34:17 -0800</date>
            <delta_ts>2022-02-12 12:39:53 -0800</delta_ts>
            <desc>EWS v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>104238</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjExNjczMDkyNDhiYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcwpAQCAtMCwwICsxLDMwIEBACisKK2xldCBt
ZXNzYWdlQ2xpZW50cyA9IGFzeW5jIGZ1bmN0aW9uKG1zZykgeyAKKyAgICBjb25zdCBhbGxDbGll
bnRzID0gYXdhaXQgY2xpZW50cy5tYXRjaEFsbCh7CisgICAgICAgIGluY2x1ZGVVbmNvbnRyb2xs
ZWQ6IHRydWUKKyAgICB9KTsKKworICAgIGZvciAoY29uc3QgY2xpZW50IG9mIGFsbENsaWVudHMp
CisgICAgICAgIGNsaWVudC5wb3N0TWVzc2FnZShtc2cpOworfQorCitzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ25vdGlmaWNhdGlvbmNsaWNrJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBh
d2FpdCBtZXNzYWdlQ2xpZW50cygiY2xpY2tlZCIpOworICAgIGV2ZW50Lm5vdGlmaWNhdGlvbi5j
bG9zZSgpOworfSk7CisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcignbm90aWZpY2F0aW9uY2xvc2Un
LCBhc3luYyBmdW5jdGlvbihldmVudCkgeworICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJjbG9z
ZWQiKTsKK30pOworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyBmdW5j
dGlvbihldmVudCkgeworICAgIC8vIFJlcGx5IGlmIHRoZSBzaG93IHN1Y2NlZWRlZCBvciBmYWls
ZWQuCisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgcmVnaXN0cmF0aW9uLnNob3dOb3RpZmljYXRp
b24oIlRoaXMgaXMgYSBub3RpZmljYXRpb24iKTsKKyAgICB9IGNhdGNoKGVycm9yKSB7CisgICAg
ICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJzaG93RmFpbGVkIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoInNob3duIik7Cit9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3Rp
ZmljYXRpb24tYWxsb3dlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmFkNTRiMDI0ZDEzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25v
dGlmaWNhdGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRl
c3RzIHRoYXQgYSBub3RpZmljYXRpb24gc2hvd24gYnkgYSBzZXJ2aWNlIHdvcmtlciBjYW4gYmUg
Y2xpY2tlZCBhbmQgY2xvc2VkLCB3aXRoIHRob3NlIGFjdGlvbnMgYmVpbmcgb2JzZXJ2YWJsZSBi
eSB0aGUgc2VydmljZSB3b3JrZXIKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgTm90aWZpY2F0aW9uLnBlcm1pc3Npb24gaXMgImdyYW50ZWQiCitQQVNTIGdvdENsaWNrZWQg
aXMgZmFsc2UKK1BBU1MgZ290Q2xvc2VkIGlzIGZhbHNlCitQQVNTIGdvdENsaWNrZWQgaXMgdHJ1
ZQorUEFTUyBnb3RDbG9zZWQgaXMgZmFsc2UKK1BBU1MgQ2xvc2UgaGFzIGJlZW4gb2JzZXJ2ZWQK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hv
d25vdGlmaWNhdGlvbi1hbGxvd2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFkNGEwMDE1Njc5NQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24t
YWxsb3dlZC5odG1sCkBAIC0wLDAgKzEsNzYgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
bm90aWZpY2F0aW9ucy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlv
biBmYWlsVGhlVGVzdChtc2cpCit7CisgICAgdGVzdEZhaWxlZChtc2cpOworICAgIGlmICh0ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVz
dFJ1bm5lci5ncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24odGVzdFVSTCk7CisgICAgc2V0
VGltZW91dCgiZmFpbFRoZVRlc3QoJ3RpbWVkIG91dCcpIiwgMTUwMDApOworfQorCitkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uIHNob3duIGJ5IGEgc2VydmljZSB3
b3JrZXIgY2FuIGJlIGNsaWNrZWQgYW5kIGNsb3NlZCwgd2l0aCB0aG9zZSBhY3Rpb25zIGJlaW5n
IG9ic2VydmFibGUgYnkgdGhlIHNlcnZpY2Ugd29ya2VyIik7CisKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygiTm90aWZpY2F0aW9uLnBlcm1pc3Npb24iLCAiZ3JhbnRlZCIpOworCithc3luYyBmdW5j
dGlvbiByZWdpc3RlclNlcnZpY2VXb3JrZXIoKSB7CisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3
YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCdyZXNvdXJjZXMvc2hvd25vdGlm
aWNhdGlvbi13b3JrZXIuanMnKTsKKyAgICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAg
ICAgcmV0dXJuIHRlc3RGYWlsZWQoIk5vIHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChy
ZWdpc3RyYXRpb24uYWN0aXZlKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1l
c3NhZ2UoIlN0YXJ0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFs
bGluZ1dvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGlu
Z1dvcmtlcikKKyAgICAgICAgZmFpbFRoZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcg
d29ya2VyIik7CisKKyAgICBpbnN0YWxsaW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRl
Y2hhbmdlIiwgKCkgPT4geworICAgICAgICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0g
ImFjdGl2YXRlZCIpIHsKKyAgICAgICAgICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2Uo
InRyeXNob3ciKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCit2YXIgZ290Q2xpY2tlZCA9IGZh
bHNlOwordmFyIGdvdENsb3NlZCA9IGZhbHNlOworCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5kYXRh
ID09ICJzaG93RmFpbGVkIikgeworICAgICAgICBmYWlsVGhlVGVzdCgiVW5leHBlY3RlZGx5IHJl
Y2VpdmVkIHRoZSBmYWlsZWQtdG8tc2hvdyBtZXNzYWdlIik7CisgICAgfSBlbHNlIGlmIChldmVu
dC5kYXRhID09ICJzaG93biIpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9ucygpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xpY2tlZCIp
IHsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZ290Q2xpY2tlZCIpOworICAgICAgICBzaG91bGRC
ZUZhbHNlKCJnb3RDbG9zZWQiKTsKKyAgICAgICAgZ290Q2xpY2tlZCA9IHRydWU7CisgICAgfSBl
bHNlIGlmIChldmVudC5kYXRhID09ICJjbG9zZWQiKSB7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgi
Z290Q2xpY2tlZCIpCisgICAgICAgIHNob3VsZEJlRmFsc2UoImdvdENsb3NlZCIpCisgICAgICAg
IGdvdENsb3NlZCA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTWVz
c2FnZSByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOworICAgIH0KKyAgICAKKyAgICBpZiAoZ290
Q2xvc2VkKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNsb3NlIGhhcyBiZWVuIG9ic2VydmVkIik7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgIH0KK30pOworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0icmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkiPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5p
ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
c2hvd25vdGlmaWNhdGlvbi1kZW5pZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uMjAxOGE0M2U1ZGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5p
ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgbm90aWZp
Y2F0aW9uIHNob3duIGJ5IGEgc2VydmljZSB3b3JrZXIgY2FuIGJlIGNsaWNrZWQgYW5kIGNsb3Nl
ZCwgd2l0aCB0aG9zZSBhY3Rpb25zIGJlaW5nIG9ic2VydmFibGUgYnkgdGhlIHNlcnZpY2Ugd29y
a2VyCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIE5vdGlmaWNhdGlvbi5w
ZXJtaXNzaW9uIGlzICJkZW5pZWQiCitQQVNTIE5vdGlmaWNhdGlvbiBmYWlsZWQgdG8gc2hvdwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zaG93
bm90aWZpY2F0aW9uLWRlbmllZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5pZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjc3NDZmN2M2NmU0NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tZGVu
aWVkLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy9ub3Rp
ZmljYXRpb25zLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGZh
aWxUaGVUZXN0KG1zZykKK3sKKyAgICB0ZXN0RmFpbGVkKG1zZyk7CisgICAgaWYgKHRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVu
bmVyLmRlbnlXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKHRlc3RVUkwpOworICAgIHNldFRpbWVv
dXQoImZhaWxUaGVUZXN0KCd0aW1lZCBvdXQnKSIsIDE1MDAwKTsKK30KKworZGVzY3JpcHRpb24o
IlRoaXMgdGVzdHMgdGhhdCBhIG5vdGlmaWNhdGlvbiBzaG93biBieSBhIHNlcnZpY2Ugd29ya2Vy
IGNhbiBiZSBjbGlja2VkIGFuZCBjbG9zZWQsIHdpdGggdGhvc2UgYWN0aW9ucyBiZWluZyBvYnNl
cnZhYmxlIGJ5IHRoZSBzZXJ2aWNlIHdvcmtlciIpOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmco
Ik5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIiwgImRlbmllZCIpOworCithc3luYyBmdW5jdGlvbiBy
ZWdpc3RlclNlcnZpY2VXb3JrZXIoKSB7CisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5h
dmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCdyZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlv
bi13b3JrZXIuanMnKTsKKyAgICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAgICAgcmV0
dXJuIHRlc3RGYWlsZWQoIk5vIHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChyZWdpc3Ry
YXRpb24uYWN0aXZlKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1lc3NhZ2Uo
IlN0YXJ0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFsbGluZ1dv
cmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGluZ1dvcmtl
cikKKyAgICAgICAgZmFpbFRoZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcgd29ya2Vy
Iik7CisKKyAgICBpbnN0YWxsaW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRlY2hhbmdl
IiwgKCkgPT4geworICAgICAgICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0gImFjdGl2
YXRlZCIpIHsKKyAgICAgICAgICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2UoInRyeXNo
b3ciKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5kYXRh
ID09ICJzaG93RmFpbGVkIikgeworICAgICAgICB0ZXN0UGFzc2VkKCJOb3RpZmljYXRpb24gZmFp
bGVkIHRvIHNob3ciKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09
ICJzaG93biIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTm90aWZpY2F0aW9uIHNob3duLCBidXQg
c2hvdWxkbid0IGhhdmUgYmVlbiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQo
Ik1lc3NhZ2UgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKKyAgICB9Cit9KTsKKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJlZ2lzdGVyU2VydmljZVdvcmtlcigpIj4KKzwv
Ym9keT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlc0ludGVybmFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2Vi
UHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCmluZGV4IDhkM2VlZDEzOTU0Zi4uMDFiMmY1ZTZiODFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXNJbnRlcm5hbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlc0ludGVybmFsLnlhbWwKQEAgLTY0NCw4ICs2NDQsMTAgQEAgTm90aWZpY2F0aW9u
RXZlbnRFbmFibGVkOgogICBjb25kaXRpb246IEVOQUJMRShOT1RJRklDQVRJT05fRVZFTlQpCiAg
IGRlZmF1bHRWYWx1ZToKICAgICBXZWJDb3JlOgorICAgICAgIkVOQUJMRShOT1RJRklDQVRJT05f
RVZFTlQpIjogdHJ1ZQogICAgICAgZGVmYXVsdDogZmFsc2UKICAgICBXZWJLaXQ6CisgICAgICAi
RU5BQkxFKE5PVElGSUNBVElPTl9FVkVOVCkiOiB0cnVlCiAgICAgICBkZWZhdWx0OiBmYWxzZQog
CiBPZmZzY3JlZW5DYW52YXNFbmFibGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCA2ODViMWU0ZDFhM2EuLjA4
ZTJhOGVkOGI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTQwLDcgKzQwLDkgQEAKICNpbmNsdWRlICJKU0RP
TVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgogI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25FdmVudC5o
IgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIgorI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldpbmRvd0V2ZW50TG9vcC5o
IgogI2luY2x1ZGUgIldpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtMTAyLDkgKzEwNCwxOSBAQCB2b2lkIE5vdGlmaWNh
dGlvbjo6c2hvdygpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjbGllbnQtPmNoZWNrUGVy
bWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpICE9IFBlcm1pc3Npb246OkdyYW50ZWQp
IHsKLSAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisgICAgICAgIHN3aXRjaCAobV9ub3Rp
ZmljYXRpb25Tb3VyY2UpIHsKKyAgICAgICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3Vt
ZW50OgorICAgICAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OlNlcnZpY2VXb3JrZXI6CisgICAg
ICAgICAgICAvLyBXZSBkaWQgYSBwZXJtaXNzaW9uIGNoZWNrIHdoZW4gU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbjo6c2hvd05vdGlmaWNhdGlvbigpIHdhcyBjYWxsZWQuCisgICAgICAgICAgICAv
LyBJZiBwZXJtaXNzaW9uIGhhcyBzaW5jZSBiZWVuIHJldm9rZWQsIHRoZW4gc2lsZW50bHkgZmFp
bGluZyBoZXJlIGlzIGV4cGVjdGVkIGJlaGF2aW9yLgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKwogICAgICAgICByZXR1cm47CiAgICAgfQorCiAgICAgaWYgKGNsaWVudC0+c2hvdygq
dGhpcykpCiAgICAgICAgIG1fc3RhdGUgPSBTaG93aW5nOwogfQpAQCAtMTU4LDIwICsxNzAsNTQg
QEAgdm9pZCBOb3RpZmljYXRpb246OmZpbmFsaXplKCkKIAogdm9pZCBOb3RpZmljYXRpb246OmRp
c3BhdGNoU2hvd0V2ZW50KCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
aWYgKG1fbm90aWZpY2F0aW9uU291cmNlICE9IE5vdGlmaWNhdGlvblNvdXJjZTo6RG9jdW1lbnQp
CisgICAgICAgIHJldHVybjsKKwogICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywg
VGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5z
aG93RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykp
OwogfQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbGlja0V2ZW50KCkKIHsKLSAgICBx
dWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFj
dGlvbiwgW3RoaXNdIHsKLSAgICAgICAgV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yIHdpbmRv
d0ZvY3VzQWxsb3dlZDsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKLSAgICB9KTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
c3dpdGNoIChtX25vdGlmaWNhdGlvblNvdXJjZSkgeworICAgIGNhc2UgTm90aWZpY2F0aW9uU291
cmNlOjpEb2N1bWVudDoKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlz
LCBUYXNrU291cmNlOjpVc2VySW50ZXJhY3Rpb24sIFt0aGlzXSB7CisgICAgICAgICAgICBXaW5k
b3dGb2N1c0FsbG93ZWRJbmRpY2F0b3Igd2luZG93Rm9jdXNBbGxvd2VkOworICAgICAgICAgICAg
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgfSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTm90aWZpY2F0aW9uU291cmNlOjpTZXJ2aWNlV29y
a2VyOgorICAgICAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwor
ICAgICAgICBpZiAoIWNvbnRleHQpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBSRUxF
QVNFX0FTU0VSVChjb250ZXh0LT5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKj4oY29udGV4dCktPnBvc3RU
YXNrVG9GaXJlTm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGljaywg
KnRoaXMsIHsgfSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAogdm9pZCBOb3RpZmljYXRp
b246OmRpc3BhdGNoQ2xvc2VFdmVudCgpCiB7Ci0gICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50
KCp0aGlzLCBUYXNrU291cmNlOjpVc2VySW50ZXJhY3Rpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmNsb3NlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxh
YmxlOjpObykpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzd2l0Y2ggKG1f
bm90aWZpY2F0aW9uU291cmNlKSB7CisgICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3Vt
ZW50OgorICAgICAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6
OlVzZXJJbnRlcmFjdGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xvc2VFdmVudCwg
RXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTm90aWZpY2F0aW9uU291cmNlOjpTZXJ2aWNlV29ya2VyOgorICAg
ICAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgICAgICBp
ZiAoIWNvbnRleHQpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBSRUxFQVNFX0FTU0VS
VChjb250ZXh0LT5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKj4oY29udGV4dCktPnBvc3RUYXNrVG9GaXJl
Tm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbG9zZSwgKnRoaXMsIHsg
fSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGZpbmFsaXplKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25F
dmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uRXZlbnQuY3BwCmluZGV4IDU4NzRiNzYxMDJmZi4uZTFkMjk3Yjk2YTEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25FdmVudC5jcHAKQEAgLTMwLDYgKzMwLDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE5vdGlmaWNhdGlvbkV2ZW50KTsKKworUmVmPE5v
dGlmaWNhdGlvbkV2ZW50PiBOb3RpZmljYXRpb25FdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21TdHJp
bmcmIHR5cGUsIEluaXQmJiBpbml0LCBJc1RydXN0ZWQgaXNUcnVzdGVkKQoreworICAgIGF1dG8q
IG5vdGlmaWNhdGlvbiA9IGluaXQubm90aWZpY2F0aW9uLmdldCgpOworICAgIGF1dG8gYWN0aW9u
ID0gaW5pdC5hY3Rpb247CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTm90aWZpY2F0aW9uRXZl
bnQodHlwZSwgV1RGTW92ZShpbml0KSwgbm90aWZpY2F0aW9uLCBhY3Rpb24sIGlzVHJ1c3RlZCkp
OworfQorCitSZWY8Tm90aWZpY2F0aW9uRXZlbnQ+IE5vdGlmaWNhdGlvbkV2ZW50OjpjcmVhdGUo
Y29uc3QgQXRvbVN0cmluZyYgdHlwZSwgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sIGNvbnN0
IFN0cmluZyYgYWN0aW9uLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE5vdGlmaWNhdGlvbkV2ZW50KHR5cGUsIHsgfSwgbm90aWZpY2F0aW9uLCBhY3Rp
b24sIGlzVHJ1c3RlZCkpOworfQorCitOb3RpZmljYXRpb25FdmVudDo6Tm90aWZpY2F0aW9uRXZl
bnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgTm90aWZpY2F0aW9uRXZlbnRJbml0JiYgZXZlbnRJ
bml0LCBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgY29uc3QgU3RyaW5nJiBhY3Rpb24sIElz
VHJ1c3RlZCBpc1RydXN0ZWQpCisgICAgOiBFeHRlbmRhYmxlRXZlbnQodHlwZSwgV1RGTW92ZShl
dmVudEluaXQpLCBpc1RydXN0ZWQpCisgICAgLCBtX25vdGlmaWNhdGlvbihub3RpZmljYXRpb24p
CisgICAgLCBtX2FjdGlvbihhY3Rpb24pCit7Cit9CisKIE5vdGlmaWNhdGlvbkV2ZW50Ojp+Tm90
aWZpY2F0aW9uRXZlbnQoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaAppbmRleCA5MjdlYjUwMWFkOWIu
LmIyMWMyZWQ4NGFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkV2ZW50LmgKQEAgLTMzLDE0ICszMywyNSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0gY2xhc3MgTm90aWZpY2F0aW9uRXZlbnRUeXBlIDog
Ym9vbCB7CisgICAgQ2xpY2ssCisgICAgQ2xvc2UsCit9OworCitzdHJ1Y3QgTm90aWZpY2F0aW9u
RXZlbnRJbml0IDogRXh0ZW5kYWJsZUV2ZW50SW5pdCB7CisgICAgUmVmUHRyPE5vdGlmaWNhdGlv
bj4gbm90aWZpY2F0aW9uOworICAgIFN0cmluZyBhY3Rpb247Cit9OworCiBjbGFzcyBOb3RpZmlj
YXRpb25FdmVudCBmaW5hbCA6IHB1YmxpYyBFeHRlbmRhYmxlRXZlbnQgeworICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoTm90aWZpY2F0aW9uRXZlbnQpOwogcHVibGljOgogICAgIH5Ob3RpZmlj
YXRpb25FdmVudCgpOwogCi0gICAgc3RydWN0IEluaXQgOiBFeHRlbmRhYmxlRXZlbnRJbml0IHsK
LSAgICAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uOwotICAgICAgICBTdHJp
bmcgYWN0aW9uOwotICAgIH07CisgICAgdXNpbmcgSW5pdCA9IE5vdGlmaWNhdGlvbkV2ZW50SW5p
dDsKKworICAgIHN0YXRpYyBSZWY8Tm90aWZpY2F0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
U3RyaW5nJiwgSW5pdCYmLCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsKKyAgICBzdGF0aWMg
UmVmPE5vdGlmaWNhdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYsIE5vdGlmaWNh
dGlvbiosIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsK
IAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gTm90aWZpY2F0aW9uRXZlbnRJbnRlcmZhY2VUeXBlOyB9CiAKQEAgLTQ4LDYgKzU5LDggQEAg
cHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uKCkgeyByZXR1cm4gbV9hY3Rpb247IH0K
IAogcHJpdmF0ZToKKyAgICBOb3RpZmljYXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiwgTm90
aWZpY2F0aW9uRXZlbnRJbml0JiYsIE5vdGlmaWNhdGlvbiosIGNvbnN0IFN0cmluZyYgYWN0aW9u
LCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsKKwogICAgIFJlZlB0cjxOb3RpZmljYXRpb24+
IG1fbm90aWZpY2F0aW9uOwogICAgIFN0cmluZyBtX2FjdGlvbjsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRW1wdHlTY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRW1wdHlTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMjMxYjNiZjFj
YTk4Li43MWM3MmVmOWM5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbXB0eVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRW1wdHlTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTk0LDYgKzk0LDEwIEBAIHByaXZhdGU6CiAKICAgICBj
b25zdCBTZXR0aW5nczo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fc2V0dGluZ3NWYWx1ZXM7IH0KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAg
IE5vdGlmaWNhdGlvbkNsaWVudCogbm90aWZpY2F0aW9uQ2xpZW50KCkgZmluYWwgeyByZXR1cm4g
bnVsbHB0cjsgfQorI2VuZGlmCisKICAgICBjbGFzcyBFbXB0eUV2ZW50TG9vcCBmaW5hbCA6IHB1
YmxpYyBFdmVudExvb3AgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFJlZjxFbXB0eUV2
ZW50TG9vcD4gY3JlYXRlKEpTQzo6Vk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgKaW5kZXggZDAwMGQ1OWQ1YTA1Li4wNzI3YjFmMTRhMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtODAsNiArODAs
MTAgQEAgZW51bSBjbGFzcyBMb2FkZWRGcm9tT3BhcXVlU291cmNlIDogdWludDhfdDsKIGVudW0g
Y2xhc3MgUmVmZXJyZXJQb2xpY3kgOiB1aW50OF90OwogZW51bSBjbGFzcyBUYXNrU291cmNlIDog
dWludDhfdDsKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorY2xhc3MgTm90aWZpY2F0aW9u
Q2xpZW50OworI2VuZGlmCisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiBjbGFzcyBTZXJ2
aWNlV29ya2VyOwogY2xhc3MgU2VydmljZVdvcmtlckNvbnRhaW5lcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggY2JmMjZjYjE1YmQ1Li4zZmU1
MWZkMWU0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oCkBAIC00MDMsNyArNDAzLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5P
VElGSUNBVElPTl9FVkVOVCkKLSAgICBib29sIG1fbm90aWZpY2F0aW9uRXZlbnRFbmFibGVkIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fbm90aWZpY2F0aW9uRXZlbnRFbmFibGVkIHsgdHJ1ZSB9Owog
I2VuZGlmCiAKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNvY29hLm1tCmluZGV4IDI5OWZjNGJkMmViYy4uMTBiZTAwY2NlMDAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTE4Myw3ICsxODMsNyBAQCBSZXRh
aW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9u
KENGU3RyaW5nUmVmIGlkZW50aQogCiAgICAgaWYgKHNob3VsZERpc2FibGVDRlVSTENhY2hlID09
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6U2hvdWxkRGlzYWJsZUNGVVJMQ2FjaGU6Olllcykgewog
I2lmIEhBVkUoQ0ZORVRXT1JLX0RJU0FCTEVfQ0FDSEVfU1BJKQotICAgICAgICBfQ0ZVUkxTdG9y
YWdlU2Vzc2lvbkRpc2FibGVDYWNoZShzdG9yYWdlU2Vzc2lvbi5nZXQoKSk7CisgICAgICAgIC8v
X0NGVVJMU3RvcmFnZVNlc3Npb25EaXNhYmxlQ2FjaGUoc3RvcmFnZVNlc3Npb24uZ2V0KCkpOwog
I2Vsc2UKICAgICAgICAgc2hvdWxkRGlzYWJsZUNGVVJMQ2FjaGUgPSBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OlNob3VsZERpc2FibGVDRlVSTENhY2hlOjpObzsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDFk
OGUzYWQyYWNiOS4uYTBkMTZkNzQ3MDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC05NCw2ICs5NCwxMCBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9p
ZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKKyNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIG5vdGlmaWNhdGlvbkNsaWVudCgp
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgorCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI+IG1fc2NyaXB0OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTY3JpcHRNb2R1bGVMb2FkZXI+IG1fbW9kdWxlTG9hZGVyOwogICAgIFdvcmtl
ck9yV29ya2xldFRocmVhZCogbV90aHJlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuaAppbmRleCBiNGY3Njk0YzZiMWUuLmRjOTc3NGU5MmU3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeS5oIgogI2luY2x1ZGUgIkZldGNoUmVxdWVzdENyZWRlbnRpYWxzLmgiCisjaW5j
bHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbi5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xl
dFRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJU
eXBlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDkwNGQ0ZmM4OGNhYS4uZjMzYjljMDYz
ZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkV2ZW50Lmgi
CiAjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50LmgiCkBAIC02OSw3ICs3MCwxMyBAQCBT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmJiBjbwogewogfQogCi1TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6
On5TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSA9IGRlZmF1bHQ7CitTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU6On5TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKQoreworICAgIC8vIE5vdGlmaWNh
dGlvbkNsaWVudCBtaWdodCBoYXZlIHNvbWUgaW50ZXJhY3Rpb25zIHBlbmRpbmcgd2l0aCB0aGUg
bWFpbiB0aHJlYWQsCisgICAgLy8gc28gaXQgc2hvdWxkIGFsc28gYmUgZGVzdHJveWVkIHRoZXJl
LgorICAgIGNhbGxPbk1haW5UaHJlYWQoW25vdGlmaWNhdGlvbkNsaWVudCA9IFdURk1vdmUobV9u
b3RpZmljYXRpb25DbGllbnQpXSB7CisgICAgfSk7Cit9CiAKIHZvaWQgU2VydmljZVdvcmtlckds
b2JhbFNjb3BlOjpub3RpZnlTZXJ2aWNlV29ya2VyUGFnZU9mQ3JlYXRpb25JZk5lY2Vzc2FyeSgp
CiB7CkBAIC0yMDgsNiArMjE1LDMwIEBAIHZvaWQgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpk
aWRTYXZlU2NyaXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiBzY3JpcHQsIEhhc2hNCiAgICAgfQog
fQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTl9FVkVOVCkKK3ZvaWQgU2VydmljZVdvcmtlckds
b2JhbFNjb3BlOjpwb3N0VGFza1RvRmlyZU5vdGlmaWNhdGlvbkV2ZW50KE5vdGlmaWNhdGlvbkV2
ZW50VHlwZSBldmVudFR5cGUsIE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBjb25zdCBTdHJp
bmcmIGFjdGlvbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgdGhyZWFk
KCkucnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbZXZlbnRUeXBlLCBwcm90ZWN0ZWROb3RpZmlj
YXRpb24gPSBSZWYgeyBub3RpZmljYXRpb24gfSwgYWN0aW9uID0gYWN0aW9uLmlzb2xhdGVkQ29w
eSgpXShhdXRvJiBzY29wZSkgeworICAgICAgICBzY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2so
VGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbJnNjb3BlLCBwcm90ZWN0ZWRTY29wZSA9IFJl
ZiB7IHNjb3BlIH0sIGV2ZW50VHlwZSwgcHJvdGVjdGVkTm90aWZpY2F0aW9uLCBhY3Rpb25dIHsK
KyAgICAgICAgICAgIEF0b21TdHJpbmcgZXZlbnROYW1lOworICAgICAgICAgICAgc3dpdGNoIChl
dmVudFR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGlj
azoKKyAgICAgICAgICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkubm90aWZpY2F0aW9u
Y2xpY2tFdmVudDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTm90
aWZpY2F0aW9uRXZlbnRUeXBlOjpDbG9zZToKKyAgICAgICAgICAgICAgICBldmVudE5hbWUgPSBl
dmVudE5hbWVzKCkubm90aWZpY2F0aW9uY2xvc2VFdmVudDsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byBldmVudCA9IE5vdGlmaWNhdGlv
bkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBwcm90ZWN0ZWROb3RpZmljYXRpb24ucHRyKCksIGFj
dGlvbiwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CisgICAgICAgICAgICBzdGF0
aWNfY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmPihzY29wZSkuZGlzcGF0Y2hFdmVudChl
dmVudCk7CisgICAgICAgIH0pOworICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkp
OworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCAwNzA3OWYxOTUzNDMuLjUx
MGMxYjA3MmI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMzksMTEgKzM5LDE0IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIEV4dGVuZGFibGVF
dmVudDsKIGNsYXNzIFBhZ2U7Ci1zdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGE7CiBjbGFz
cyBTZXJ2aWNlV29ya2VyQ2xpZW50OwogY2xhc3MgU2VydmljZVdvcmtlckNsaWVudHM7CiBjbGFz
cyBTZXJ2aWNlV29ya2VyVGhyZWFkOwogCitlbnVtIGNsYXNzIE5vdGlmaWNhdGlvbkV2ZW50VHlw
ZSA6IGJvb2w7CisKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsKKwogY2xhc3MgU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlIGZpbmFsIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3BlIHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk7CiBw
dWJsaWM6CkBAIC04MCw3ICs4MywxMSBAQCBwdWJsaWM6CiAgICAgRmV0Y2hPcHRpb25zOjpEZXN0
aW5hdGlvbiBkZXN0aW5hdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEZldGNoT3B0aW9uczo6
RGVzdGluYXRpb246OlNlcnZpY2V3b3JrZXI7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2Uq
IHNlcnZpY2VXb3JrZXJQYWdlKCk7Ci0gICAgCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VW
RU5UKQorICAgIHZvaWQgcG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChOb3RpZmljYXRp
b25FdmVudFR5cGUsIE5vdGlmaWNhdGlvbiYsIGNvbnN0IFN0cmluZyYgYWN0aW9uKTsKKyNlbmRp
ZgorCiBwcml2YXRlOgogICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmJiwgU2VydmljZVdvcmtlckRhdGEmJiwgY29uc3QgV29ya2VyUGFyYW1ldGVy
cyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgU2VydmljZVdvcmtlclRocmVhZCYsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Kiwg
U29ja2V0UHJvdmlkZXIqLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiYmLCBQ
QUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBub3RpZnlTZXJ2aWNlV29ya2VyUGFnZU9mQ3JlYXRp
b25JZk5lY2Vzc2FyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDUwMTc4MWY3MGQ1
Zi4uMTVmMmI2YmNmNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0zMCwxMCArMzAs
MTMgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25QcmVsb2FkTWFuYWdlci5oIgorI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb24u
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNv
bnRhaW5lci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgpAQCAtMjY0LDIwICsy
NjcsMzggQEAgTmF2aWdhdGlvblByZWxvYWRNYW5hZ2VyJiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uOjpuYXZpZ2F0aW9uUHJlbG9hZCgpCiB9CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VW
RU5UKQotdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBOb3RpZmlj
YXRpb25PcHRpb25zJiBvcHRpb25zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNl
KQordm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE5v
dGlmaWNhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsKLSAgICBVTlVTRURfUEFSQU0ob3B0
aW9ucyk7CisgICAgaWYgKCFtX2FjdGl2ZVdvcmtlcikgeworICAgICAgICBwcm9taXNlLnJlamVj
dChFeGNlcHRpb24geyBUeXBlRXJyb3IsICJSZWdpc3RyYXRpb24gZG9lcyBub3QgaGF2ZSBhbiBh
Y3RpdmUgd29ya2VyIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byog
Y2xpZW50ID0gY29udGV4dC5ub3RpZmljYXRpb25DbGllbnQoKTsKKyAgICBpZiAoIWNsaWVudCkg
eworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsICJSZWdpc3Ry
YXRpb24gbm90IGFjdGl2ZSJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIHBy
b21pc2UucmVqZWN0KCk7CisgICAgaWYgKGNsaWVudC0+Y2hlY2tQZXJtaXNzaW9uKCZjb250ZXh0
KSAhPSBOb3RpZmljYXRpb25QZXJtaXNzaW9uOjpHcmFudGVkKSB7CisgICAgICAgIHByb21pc2Uu
cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlJlZ2lzdHJhdGlvbiBkb2VzIG5vdCBoYXZl
IHBlcm1pc3Npb24gdG8gc2hvdyBub3RpZmljYXRpb25zIl9zIH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gVGhlIE5vdGlmaWNhdGlvbiBpcyBrZXB0IGFsaXZlIGJ5IHZpcnR1
ZSBvZiBiZWluZyBzaG93KCknbiBzb29uLgorICAgIC8vIEZJWE1FOiBXaGVuIGltcGxlbWVudGlu
ZyBnZXROb3RpZmljYXRpb25zKCksIHN0b3JlIHRoaXMgTm90aWZpY2F0aW9uIGluIHRoZSByZWdp
c3RyYXRpb24ncyBub3RpZmljYXRpb24gbGlzdC4KKyAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IE5v
dGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnRleHQsIHRpdGxlLCBvcHRpb25zKTsKKworICAgIGNvbnRl
eHQuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgpIG11dGFibGUgeworICAgICAgICBwcm9taXNlLnJl
c29sdmUoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpn
ZXROb3RpZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBHZXROb3RpZmlj
YXRpb25PcHRpb25zJiBmaWx0ZXIsIERPTVByb21pc2VEZWZlcnJlZDxJRExTZXF1ZW5jZTxJRExE
T01TdHJpbmc+PiBwcm9taXNlKQogewogICAgIFVOVVNFRF9QQVJBTShmaWx0ZXIpOwogCi0gICAg
cHJvbWlzZS5yZWplY3QoKTsKLQorICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciwgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uZ2V0Tm90aWZpY2F0aW9ucyBub3QgeWV0
IGltcGxlbWVudGVkIl9zIH0pOwogfQogI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05fRVZF
TlQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBjMGUwMzYzNmIxODkuLjAwYzA0MmQ0ZmYwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFF1
ZXJ5T3B0aW9ucy5oIgpAQCAtNzAsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsK
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCA9IDA7CisgICAg
ICAgIHZpcnR1YWwgUGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIoKSBjb25zdCA9IDAgOwog
CiAgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc2VkOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggOGM4MWM3YjEwN2VjLi5lMmU0MDhiMTA5
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0yNzksNiArMjc5LDEwIEBAIHZv
aWQgU2VydmljZVdvcmtlclRocmVhZDo6c3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
LCBib29sKT4mJiBjYWxsYmFjaykKICAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7CiAKICAgICBX
b3JrZXJUaHJlYWQ6OnN0YXJ0KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XShhdXRvJiBlcnJvck1lc3NhZ2UpIG11dGFibGUgeworI2lm
bmRlZiBOREVCVUcKKyAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciB0aHJlYWQgZmFpbGVkIHRv
IHN0YXJ0OiAlcyIsIGVycm9yTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgogICAgICAg
ICBib29sIGRvZXNIYW5kbGVGZXRjaCA9IHRydWU7CiAgICAgICAgIGlmICh3ZWFrVGhpcykgewog
ICAgICAgICAgICAgd2Vha1RoaXMtPmZpbmlzaGVkU3RhcnRpbmcoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmgKaW5kZXggMGE0YmM3ZmY0OTQyLi5lNWNiNWMxZGQxNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIENh
Y2hlU3RvcmFnZVByb3ZpZGVyOwogY2xhc3MgRmV0Y2hMb2FkZXI7CiBjbGFzcyBGZXRjaExvYWRl
ckNsaWVudDsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOworY2xhc3MgTm90aWZpY2F0aW9uQ2xp
ZW50OwogY2xhc3MgU2VydmljZVdvcmtlckluc3BlY3RvclByb3h5Owogc3RydWN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTsKIGVudW0gY2xhc3MgV29ya2VyVGhyZWFkTW9kZSA6IGJvb2w7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
CmluZGV4IDM5ZmUxYjc4N2RhNy4uOGUyYmE4OTRiOWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTYzLDYgKzE2Myw3
IEBAIHZvaWQgU1dTZXJ2ZXI6OndoZW5JbXBvcnRJc0NvbXBsZXRlZElmTmVlZGVkKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjCiAKIHZvaWQgU1dTZXJ2ZXI6OnJlZ2lzdHJhdGlv
blN0b3JlRGF0YWJhc2VGYWlsZWRUb09wZW4oKQogeworICAgIExPRyhTZXJ2aWNlV29ya2VyLCAi
RmFpbGVkIHRvIG9wZW4gU1cgcmVnaXN0cmF0aW9uIGRhdGFiYXNlIik7CiAgICAgQVNTRVJUKCFt
X2ltcG9ydENvbXBsZXRlZCk7CiAgICAgaWYgKCFtX2ltcG9ydENvbXBsZXRlZCkKICAgICAgICAg
cmVnaXN0cmF0aW9uU3RvcmVJbXBvcnRDb21wbGV0ZSgpOwpAQCAtMTczLDYgKzE3NCw4IEBAIHZv
aWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmJiBkYXRhKQogICAgIC8vIFBhZ2VzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFibGUgdG8g
bWFrZSBhIG5ldyByZWdpc3RyYXRpb24gdG8gdGhpcyBrZXkgd2hpbGUgdGhlIGltcG9ydCB3YXMg
c3RpbGwgdGFraW5nIHBsYWNlLgogICAgIEFTU0VSVCghbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFw
LmNvbnRhaW5zKGRhdGEucmVnaXN0cmF0aW9uLmtleSkpOwogCisgICAgTE9HKFNlcnZpY2VXb3Jr
ZXIsICJBZGRpbmcgcmVnaXN0cmF0aW9uIGZyb20gc3RvcmUgZm9yICVzIiwgZGF0YS5yZWdpc3Ry
YXRpb24ua2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIGF1dG8gcmVn
aXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbihkYXRhLnNjcmlwdFVS
TCk7CiAgICAgdmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4ocmVnaXN0cmFibGVEb21haW4sIFNl
cnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlciwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSAoYm9vbCBpc1ZhbGlkKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTE5OCw2ICsyMDEsOCBAQCB2b2lkIFNXU2VydmVy
OjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySQogCiB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVf
cHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJhdGlvbikKIHsKKyAgICBMT0coU2Vy
dmljZVdvcmtlciwgIkFkZGluZyByZWdpc3RyYXRpb24gbGl2ZSBmb3IgJXMiLCByZWdpc3RyYXRp
b24tPmtleSgpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIGlmICghbV9z
Y29wZVRvUmVnaXN0cmF0aW9uTWFwLmNvbnRhaW5zKHJlZ2lzdHJhdGlvbi0+a2V5KCkpICYmICFT
ZWN1cml0eU9yaWdpbjo6aXNMb2NhbEhvc3RPckxvb3BiYWNrSVBBZGRyZXNzKHJlZ2lzdHJhdGlv
bi0+a2V5KCkudG9wT3JpZ2luKCkuaG9zdCkpCiAgICAgICAgIG1fdW5pcXVlUmVnaXN0cmF0aW9u
Q291bnQrKzsKIApAQCAtMTIyNCwyMCArMTIyOSwyNCBAQCB2b2lkIFNXU2VydmVyOjpzb2Z0VXBk
YXRlKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCiB2b2lkIFNXU2VydmVyOjpw
cm9jZXNzUHVzaE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYgZGF0YSwg
VVJMJiYgcmVnaXN0cmF0aW9uVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNh
bGxiYWNrKQogewogICAgIHdoZW5JbXBvcnRJc0NvbXBsZXRlZElmTmVlZGVkKFt0aGlzLCB3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgcmVnaXN0cmF0
aW9uVVJMID0gV1RGTW92ZShyZWdpc3RyYXRpb25VUkwpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBMT0coUHVzaCwgIlNlcnZpY2VXb3JrZXIgaW1w
b3J0IGlzIGNvbXBsZXRlLCBjYW4gaGFuZGxlIHB1c2ggbWVzc2FzZ2Ugbm93Iik7CiAgICAgICAg
IGlmICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQorCiAgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tVVJMKHJlZ2lzdHJhdGlvblVSTCk7CiAgICAgICAgIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0aW9uS2V5IHsgV1RGTW92ZShvcmlnaW4pLCBXVEZN
b3ZlKHJlZ2lzdHJhdGlvblVSTCkgfTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBtX3Nj
b3BlVG9SZWdpc3RyYXRpb25NYXAuZ2V0KHJlZ2lzdHJhdGlvbktleSk7CiAgICAgICAgIGlmICgh
cmVnaXN0cmF0aW9uKSB7CisgICAgICAgICAgICBMT0coUHVzaCwgIkNhbm5vdCBwcm9jZXNzIHB1
c2ggbWVzc2FzZ2U6IEZhaWxlZCB0byBmaW5kIFNXIHJlZ2lzdHJhdGlvbiBmb3IgcmVnaXN0cmF0
aW9uIGtleSAlcyIsIHJlZ2lzdHJhdGlvbktleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCiAgICAgICAgIGF1dG8qIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi0+YWN0aXZlV29y
a2VyKCk7CiAgICAgICAgIGlmICghd29ya2VyKSB7CisgICAgICAgICAgICBMT0coUHVzaCwgIkNh
bm5vdCBwcm9jZXNzIHB1c2ggbWVzc2FzZ2U6IE5vIGFjdGl2ZSB3b3JrZXIgZm9yIHJlZ2lzdHJh
dGlvbiBrZXkgJXMiLCByZWdpc3RyYXRpb25LZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTEyNTMsNyArMTI2Miw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnByb2Nlc3NQdXNo
TWVzc2FnZShzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiBkYXRhLCBVUkwmJiByCiAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlRlcm1pbmF0
aW5nIHNlcnZpY2Ugd29ya2VyIGFzIHByb2Nlc3NpbmcgcHVzaCBldmVudCB0b29rIHRvbyBtdWNo
IHRpbWUiKTsKICAgICAgICAgICAgICAgICB3b3JrZXItPnRlcm1pbmF0ZSgpOwogICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVXb3JrZXJUaW1lci0+c3RhcnRPbmVTaG90KHdl
YWtUaGlzICYmIHdlYWtUaGlzLT5tX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID8g
ZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgOiAyX3MpOworICAgICAgICAgICAgLy90ZXJtaW5hdGVX
b3JrZXJUaW1lci0+c3RhcnRPbmVTaG90KHdlYWtUaGlzICYmIHdlYWtUaGlzLT5tX2lzUHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID8gZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgOiAyX3Mp
OwogICAgICAgICAgICAgY29ubmVjdGlvbk9yU3RhdHVzLnZhbHVlKCktPmZpcmVQdXNoRXZlbnQo
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIGRhdGEsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCB0ZXJtaW5hdGVXb3JrZXJUaW1lciA9IFdURk1vdmUodGVybWluYXRlV29ya2VyVGltZXIp
XShib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRlcm1pbmF0
ZVdvcmtlclRpbWVyLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hdGVX
b3JrZXJUaW1lci0+c3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAppbmRleCAxNzViZDM4MTY0NzQuLmVjNzM1MmQ4MTIwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIy
NTQsMTcgKzIyNTQsMjIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UGVuZGluZ1B1c2hNZXNz
YWdlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb24KIHsKICNpZiBFTkFCTEUo
QlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJOZXR3b3Jr
UHJvY2VzcyBnZXR0aW5nIHBlbmRpbmcgcHVzaCBtZXNzYWdlcyBmb3Igc2Vzc2lvbiBJRCAlbGx1
Iiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwogICAgICAgICBzZXNzaW9uLT5ub3RpZmljYXRpb25N
YW5hZ2VyKCkuZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIExPRyhOb3RpZmljYXRpb25z
LCAiTmV0d29ya1Byb2Nlc3MgY291bGQgbm90IGZpbmQgc2Vzc2lvbiBmb3IgSUQgJWxsdSB0byBn
ZXQgcGVuZGluZyBwdXNoIG1lc3NhZ2VzIiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwogI2VuZGlm
CiAgICAgY2FsbGJhY2soeyB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1
c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiBwdXNo
TWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKLSAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIExP
RyhQdXNoLCAiTmV0d29ya2luZyBwcm9jZXNzIGhhbmRsaW5nIGEgcHVzaCBtZXNzYWdlIGZyb20g
VUkgcHJvY2VzcyBpbiBzZXNzaW9uICVsbHUiLCBzZXNzaW9uSUQudG9VSW50NjQoKSk7CiAgICAg
ICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkucHJvY2Vzc1B1c2hNZXNzYWdlKFdURk1vdmUo
cHVzaE1lc3NhZ2UucHVzaERhdGEpLCBXVEZNb3ZlKHB1c2hNZXNzYWdlLnJlZ2lzdHJhdGlvblVS
TCksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICB9IGVsc2UKKyAgICAgICAgTE9HKFB1c2gsICJO
ZXR3b3JraW5nIHByb2Nlc3MgYXNrZWQgdG8gaGFuZGxlIGEgcHVzaCBtZXNzYWdlIGZyb20gVUkg
cHJvY2VzcyBpbiBzZXNzaW9uICVsbHUsIGJ1dCB0aGF0IHNlc3Npb24gZG9lc24ndCBleGlzdCIs
IHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0
aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmlu
ZGV4IDE3Y2VmOTE0YWI4Ni4uNDg2Y2I1YjNkZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTkzLDEzICs5MywxNCBAQCB2b2lkIE5ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25Q
ZXJtaXNzaW9ucyhDbwogdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Z2V0UGVuZGlu
Z1B1c2hNZXNzYWdlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNo
TWVzc2FnZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4mJik+IHJlcGx5SGFuZGxlciA9IFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVjdG9yPFdlYlB1c2hN
ZXNzYWdlPiYmIG1lc3NhZ2VzKSBtdXRhYmxlIHsKKyAgICAgICAgTE9HKFB1c2gsICJEb25lIGdl
dHRpbmcgcHVzaCBtZXNzYWdlcyIpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KG1lc3NhZ2VzKSk7CiAgICAgfTsKIAogICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PFdlYlB1c2hE
OjpNZXNzYWdlVHlwZTo6R2V0UGVuZGluZ1B1c2hNZXNzYWdlcz4oV1RGTW92ZShyZXBseUhhbmRs
ZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvd05vdGlmaWNh
dGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikKK3ZvaWQgTmV0d29ya05vdGlm
aWNhdGlvbk1hbmFnZXI6OnNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
LmgKaW5kZXggYTkyYmQyZjViZDE3Li41MmE2Mzg0YmFiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9O
ZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAg
ICAgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJp
bmcmIHdlYlB1c2hNYWNoU2VydmljZU5hbWUpOwogCiAgICAgdm9pZCByZXF1ZXN0U3lzdGVtTm90
aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7Ci0gICAgdm9pZCBzaG93Tm90aWZpY2F0aW9u
KGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHNob3dO
b3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGF0YSYpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5v
dGlmaWNhdGlvbklEKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBW
ZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7CiAgICAgdm9pZCBkaWREZXN0cm95
Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9Mb2dnaW5nLmgKaW5kZXggZGUzMmY4MTcxNzE1Li43MzZjZjZjZWZhN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vTG9nZ2luZy5oCkBAIC04MCw2ICs4MCw3IEBAIGV4dGVybiAiQyIgewogICAgIE0o
TmV0d29ya0NhY2hlU3RvcmFnZSkgXAogICAgIE0oTmV0d29ya1NjaGVkdWxpbmcpIFwKICAgICBN
KE5ldHdvcmtTZXNzaW9uKSBcCisgICAgTShOb3RpZmljYXRpb25zKSBcCiAgICAgTShQZXJmb3Jt
YW5jZUxvZ2dpbmcpIFwKICAgICBNKFBsdWdpbnMpIFwKICAgICBNKFByaW50aW5nKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAppbmRleCBhN2UzNmNkY2ExODEu
LjlmOTk2YWExMzZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ci5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBzZWN1cml0eU9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlm
aWNhdGlvbklEcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9u
KGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluCmluZGV4IDQ4OWIwYjZhZDBm
Ny4uMzdjY2RkZjFmYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBAQAogCiBtZXNzYWdlcyAt
PiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIgTm90UmVmQ291bnRlZCB7CiAgICAg
UmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oU3RyaW5nIG9yaWdpbklkZW50aWZp
ZXIpIC0+IChib29sIGFsbG93ZWQpIEFzeW5jCi0gICAgU2hvd05vdGlmaWNhdGlvbihzdHJ1Y3Qg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSBub3RpZmljYXRpb25EYXRhKQorICAgIFNob3dOb3Rp
ZmljYXRpb24oc3RydWN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEgbm90aWZpY2F0aW9uRGF0
YSkgV2FudHNDb25uZWN0aW9uCiAgICAgQ2FuY2VsTm90aWZpY2F0aW9uKFVVSUQgbm90aWZpY2F0
aW9uSUQpCiAgICAgQ2xlYXJOb3RpZmljYXRpb25zKFZlY3RvcjxVVUlEPiBub3RpZmljYXRpb25J
RHMpCiAgICAgRGlkRGVzdHJveU5vdGlmaWNhdGlvbihVVUlEIG5vdGlmaWNhdGlvbklEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKaW5kZXggMDY3NzBkMGRmYzdkLi5mMzhiM2VkNzAxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAt
NTg1LDYgKzU4NSw3IEBAIFVJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRy
YXRvclByb3h5LmNwcAogVUlQcm9jZXNzL01lZGlhL01lZGlhVXNhZ2VNYW5hZ2VyLmNwcAogVUlQ
cm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwCiAKK1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmNw
cAogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcAogVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAog
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5vdGlmaWNhdGlvblBy
b3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTm90aWZpY2F0aW9uUHJv
dmlkZXIuaAppbmRleCBjNDgxM2FhNTE2NTAuLmY3M2M1ODhmNjU0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAg
LTQyLDcgKzQyLDcgQEAgY2xhc3MgTm90aWZpY2F0aW9uUHJvdmlkZXIgewogcHVibGljOgogICAg
IHZpcnR1YWwgfk5vdGlmaWNhdGlvblByb3ZpZGVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVh
bCB2b2lkIHNob3coV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlv
biYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzaG93KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKFdlYktp
dDo6V2ViTm90aWZpY2F0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lOb3Rp
ZmljYXRpb24oV2ViS2l0OjpXZWJOb3RpZmljYXRpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIC8qbm90aWZpY2F0aW9u
SURzKi8pIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tO
b3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggODJiYjk1MWU1YzFlLi5kNTM4ZGI1NDA3Nzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9u
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcApAQCAtNzgsMyArNzgsOCBAQCB2b2lkIFdLTm90aWZpY2F0aW9uTWFu
YWdlclByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoV0tOb3RpZmljYXRpb25N
YQogewogICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRp
b25Qb2xpY2llcyh0b0ltcGwob3JpZ2lucykpOwogfQorCitXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYgV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlv
bk1hbmFnZXIoKQoreworICAgIHJldHVybiB0b0FQSSgmV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKaW5kZXggNzll
ZGJmNThjZTQzLi4zNGJiNWVjMGIxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC00Myw2ICs0Myw4IEBAIFdL
X0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmlj
YXRpb25zKFdLTm90aWZpY2F0aW9uCiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJQcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFn
ZXJSZWYgbWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGJvb2wgYWxsb3dl
ZCk7CiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFJlbW92
ZU5vdGlmaWNhdGlvblBvbGljaWVzKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVm
LCBXS0FycmF5UmVmIG9yaWdpbnMpOwogCitXS19FWFBPUlQgV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UmVmIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b25NYW5hZ2VyKCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bQppbmRleCBmOTEzNDgzZGVkYTAuLmVhYTJhZDYyMTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0z
OCw2ICszOCw3IEBACiAjaW1wb3J0ICJXS1NlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhUmVjb3JkSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQdXNoTWVzc2FnZS5oIgogI2ltcG9ydCAi
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCkBAIC02NTksNiArNjYwLDEyIEBAIHN0
YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9XZWJzaXRlRGF0YVJlY29y
ZHMoTlNBcnJheSAqZGF0YVJlY29yCiAgICAgcmV0dXJuIHdyYXBwZXIoX3dlYnNpdGVEYXRhU3Rv
cmUtPmNvbmZpZ3VyYXRpb24oKS5jb3B5KCkpOwogfQogCisrIChXS05vdGlmaWNhdGlvbk1hbmFn
ZXJSZWYpX3NoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyCit7CisgICAgTE9H
KFB1c2gsICJBY2Nlc3NpbmcgX3NoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2Vy
Iik7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpKTsKK30KKwogLSAodm9pZClf
YWxsb3dUTFNDZXJ0aWZpY2F0ZUNoYWluOihOU0FycmF5ICopY2VydGlmaWNhdGVDaGFpbiBmb3JI
b3N0OihOU1N0cmluZyAqKWhvc3QKIHsKICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+YWxsb3dTcGVj
aWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbygoX19i
cmlkZ2UgQ0ZBcnJheVJlZiljZXJ0aWZpY2F0ZUNoYWluKSwgaG9zdCk7CkBAIC03NzEsMTIgKzc3
OCwxNSBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0
ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogCiAtKHZvaWQpX2dldFBlbmRpbmdQdXNo
TWVzc2FnZXM6KHZvaWQoXikoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyAgICBMT0coUHVzaCwgIkdldHRpbmcgcGVuZGluZyBwdXNoIG1lc3NhZ2VzIik7
CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5l
dHdvcmtQcm9jZXNzKCkuZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhfd2Vic2l0ZURhdGFTdG9yZS0+
c2Vzc2lvbklEKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildIChjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQdXNoTWVzc2FnZT4mIG1lc3NhZ2Vz
KSB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5Om1lc3NhZ2VzLnNpemUoKV0pOwogICAgICAgICBmb3IgKGF1dG8m
IG1lc3NhZ2UgOiBtZXNzYWdlcykKICAgICAgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0Om1lc3Nh
Z2UudG9EaWN0aW9uYXJ5KCldOwogCisgICAgICAgIExPRyhQdXNoLCAiR2l2aW5nIGFwcGxpY2F0
aW9uICV1IHBlbmRpbmcgcHVzaCBtZXNzYWdlcyIsIG1lc3NhZ2VzLnNpemUoKSk7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdC5nZXQoKSk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTc4
NywxMSArNzk3LDE0IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4g
dG9XZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIGF1dG8gcHVzaE1lc3NhZ2UgPSBXZWJLaXQ6OldlYlB1c2hNZXNzYWdl
Ojpmcm9tRGljdGlvbmFyeShwdXNoTWVzc2FnZURpY3Rpb25hcnkpOwogICAgIGlmICghcHVzaE1l
c3NhZ2UpIHsKKyAgICAgICAgTE9HKFB1c2gsICJBc2tlZCB0byBoYW5kbGUgYW4gaW52YWxpZCBw
dXNoIG1lc3NhZ2UiKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCisgICAgTE9HKFB1c2gsICJTZW5kaW5nIHB1c2ggbWVzc2FnZSB0
byBuZXR3b3JrIHByb2Nlc3MgdG8gaGFuZGxlIik7CiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5l
dHdvcmtQcm9jZXNzKCkucHJvY2Vzc1B1c2hNZXNzYWdlKF93ZWJzaXRlRGF0YVN0b3JlLT5zZXNz
aW9uSUQoKSwgKnB1c2hNZXNzYWdlLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCB3YXNQcm9jZXNzZWQpIHsKKyAgICAgICAgTE9HKFB1
c2gsICJQdXNoIG1lc3NhZ2UgcHJvY2Vzc2luZyBjb21wbGV0ZS4gQ2FsbGJhY2sgcmVzdWx0OiAl
aSIsIHdhc1Byb2Nlc3NlZCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdhc1Byb2Nlc3Nl
ZCk7CiAgICAgfSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDMxYTg1
NDA3NDE0ZC4uYzM2ZTExMzFmMDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTk2
LDYgKzk2LDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRh
U3RvcmVGZXRjaE9wdGlvbnMpIHsKIEBwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21pYywgd2Vh
aykgaWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4gX2RlbGVnYXRlIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5LCBjb3B5KSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqX2NvbmZpZ3Vy
YXRpb247CiAKKysgKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZilfc2hhcmVkU2VydmljZVdvcmtl
ck5vdGlmaWNhdGlvbk1hbmFnZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfdGVybWluYXRlTmV0d29ya1Byb2Nlc3MgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3NlbmROZXR3
b3JrUHJvY2Vzc1ByZXBhcmVUb1N1c3BlbmQ6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRs
ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3Nl
bmROZXR3b3JrUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEyLjApLCBpb3MoMTUuMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb25IYW5kbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjM2M2Q4YzEyNDI3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuY3BwCkBAIC0w
LDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCIKKworI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRhdGEuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyJiBTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMg
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXImIGhhbmRsZXIgPSAqbmV3IFNlcnZpY2VX
b3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOworICAgIHJldHVybiBoYW5kbGVyOworfQorCitTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhh
bmRsZXIoKQoreworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOjpy
ZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK1dlYnNpdGVEYXRhU3RvcmUqIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25I
YW5kbGVyOjpkYXRhU3RvcmVGb3JOb3RpZmljYXRpb25JRChjb25zdCBVVUlEJiBub3RpZmljYXRp
b25JRCkKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9ub3RpZmljYXRpb25Ub1Nlc3Npb25NYXAu
ZmluZChub3RpZmljYXRpb25JRCk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fbm90aWZpY2F0aW9u
VG9TZXNzaW9uTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChpdGVyYXRv
ci0+dmFsdWUpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOjpz
aG93Tm90aWZpY2F0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSkKK3sKKyAgICBhdXRvKiBkYXRhU3RvcmUgPSBXZWJz
aXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChkYXRhLnNvdXJjZVNl
c3Npb24pOworICAgIGlmICghZGF0YVN0b3JlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX25v
dGlmaWNhdGlvblRvU2Vzc2lvbk1hcC5zZXQoZGF0YS5ub3RpZmljYXRpb25JRCwgZGF0YS5zb3Vy
Y2VTZXNzaW9uKTsKKyAgICBkYXRhU3RvcmUtPnNob3dTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
KGNvbm5lY3Rpb24sIGRhdGEpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25I
YW5kbGVyOjpjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit7
CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IGRhdGFTdG9yZUZvck5vdGlmaWNhdGlvbklEKG5v
dGlmaWNhdGlvbklEKSkKKyAgICAgICAgZGF0YVN0b3JlLT5jYW5jZWxTZXJ2aWNlV29ya2VyTm90
aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyTm90aWZp
Y2F0aW9uSGFuZGxlcjo6Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90
aWZpY2F0aW9uSURzKQoreworICAgIGZvciAoYXV0byYgbm90aWZpY2F0aW9uSUQgOiBub3RpZmlj
YXRpb25JRHMpIHsKKyAgICAgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IGRhdGFTdG9yZUZvck5v
dGlmaWNhdGlvbklEKG5vdGlmaWNhdGlvbklEKSkKKyAgICAgICAgICAgIGRhdGFTdG9yZS0+Y2xl
YXJTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKTsKKyAgICB9Cit9CisK
K3ZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OmRpZERlc3Ryb3lOb3RpZmlj
YXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit7CisgICAgaWYgKGF1dG8qIGRhdGFT
dG9yZSA9IGRhdGFTdG9yZUZvck5vdGlmaWNhdGlvbklEKG5vdGlmaWNhdGlvbklEKSkKKyAgICAg
ICAgZGF0YVN0b3JlLT5kaWREZXN0cm95U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihub3RpZmlj
YXRpb25JRCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
SGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNl
V29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZWQ1MTIwYzk2NTU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxl
ci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNlcnZpY2VX
b3JrZXJOb3RpZmljYXRpb25IYW5kbGVyIDogcHVibGljIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b25IYW5kbGVyJiBzaW5nbGV0b24oKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBTZXJ2aWNl
V29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcigpOworCisgICAgdm9pZCByZXF1ZXN0U3lzdGVtTm90
aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpIGZpbmFsOworICAgIHZvaWQg
Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKyAg
ICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlv
bklEcykgZmluYWw7CisgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQm
IG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKworICAgIFdlYnNpdGVEYXRhU3RvcmUqIGRhdGFTdG9y
ZUZvck5vdGlmaWNhdGlvbklEKGNvbnN0IFVVSUQmKTsKKworICAgIEhhc2hNYXA8VVVJRCwgUEFM
OjpTZXNzaW9uSUQ+IG1fbm90aWZpY2F0aW9uVG9TZXNzaW9uTWFwOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHAKaW5kZXggYjhkYTcxYmIwZmQ2Li5iOTAxODQy
MTEyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVdlYk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKGNvbnN0IFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlk
ZW50aWZpZXIpCitXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3Jl
OjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVu
dGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIHNvdXJjZUNvbm5lY3Rpb24pCiAgICAgOiBtX3RpdGxl
KGRhdGEudGl0bGUpCiAgICAgLCBtX2JvZHkoZGF0YS5ib2R5KQogICAgICwgbV9pY29uVVJMKGRh
dGEuaWNvblVSTCkKQEAgLTQwLDYgKzQwLDcgQEAgV2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmlj
YXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVAKICAg
ICAsIG1fb3JpZ2luKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoZGF0YS5v
cmlnaW5TdHJpbmcpKQogICAgICwgbV9jb3JlTm90aWZpY2F0aW9uSUQoZGF0YS5ub3RpZmljYXRp
b25JRCkKICAgICAsIG1fcGFnZUlkZW50aWZpZXIocGFnZUlkZW50aWZpZXIpCisgICAgLCBtX3Nv
dXJjZUNvbm5lY3Rpb24oc291cmNlQ29ubmVjdGlvbikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmgKaW5k
ZXggYmM3ODJmYmVmZmYzLi5lODk0MjYzM2Q0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJU2VjdXJpdHlP
cmlnaW4uaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgpAQCAtNDEsOSArNDIsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
V2ViTm90aWZpY2F0aW9uIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6Tm90aWZpY2F0aW9uPiwgcHVibGljIElkZW50aWZpZWQ8V2ViTm90aWZpY2F0aW9uPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBXZWJD
b3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
ZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8V2ViTm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJiBzb3VyY2VDb25uZWN0aW9uKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTm90aWZpY2F0aW9uKGRhdGEsIHBhZ2VJ
ZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk5vdGlmaWNhdGlv
bihkYXRhLCBwYWdlSWRlbnRpZmllciwgc291cmNlQ29ubmVjdGlvbikpOwogICAgIH0KIAogICAg
IGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9CkBAIC01OCw5
ICs1OSwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVVJRCYgY29yZU5vdGlmaWNhdGlvbklEKCkg
Y29uc3QgeyByZXR1cm4gbV9jb3JlTm90aWZpY2F0aW9uSUQ7IH0KIAogICAgIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJZGVudGlm
aWVyOyB9CisgICAgSVBDOjpDb25uZWN0aW9uKiBzb3VyY2VDb25uZWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zb3VyY2VDb25uZWN0aW9uLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViTm90
aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmLCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyKTsKKyAgICBXZWJOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0
aW9uRGF0YSYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYpOwogCiAg
ICAgU3RyaW5nIG1fdGl0bGU7CiAgICAgU3RyaW5nIG1fYm9keTsKQEAgLTcyLDYgKzc0LDcgQEAg
cHJpdmF0ZToKICAgICBVVUlEIG1fY29yZU5vdGlmaWNhdGlvbklEOwogCiAgICAgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBtX3BhZ2VJZGVudGlmaWVyOworICAgIFdlYWtQdHI8SVBDOjpDb25uZWN0
aW9uPiBtX3NvdXJjZUNvbm5lY3Rpb247CiB9OwogCiBpbmxpbmUgYm9vbCBpc05vdGlmaWNhdGlv
bklEVmFsaWQodWludDY0X3QgaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlci5jcHAKaW5kZXggZDA2N2NlZjA5NjRhLi40YzY4NGQ5YzlkMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ci5jcHAKQEAgLTQwLDkgKzQwLDkgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2Fn
ZUhhbmRsZXI6OnJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGMKICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlcjo6c2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmlj
YXRpb25EYXRhJiBkYXRhKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRs
ZXI6OnNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhKQogewotICAgIG1fd2ViUGFnZVByb3h5LnNo
b3dOb3RpZmljYXRpb24oZGF0YSk7CisgICAgbV93ZWJQYWdlUHJveHkuc2hvd05vdGlmaWNhdGlv
bihjb25uZWN0aW9uLCBkYXRhKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXI6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25J
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5o
CmluZGV4IGE2ZGIwMzM3YjdlNS4uNTI1MDVlOWQyNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHJp
dmF0ZToKICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIo
V2ViUGFnZVByb3h5Jik7CiAKICAgICB2b2lkIHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJt
aXNzaW9uKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZp
bmFsOwotICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRp
b25EYXRhJikgZmluYWw7CisgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKElQQzo6Q29ubmVjdGlv
biYsIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIGNh
bmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkgZmluYWw7CiAgICAg
dm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25J
RHMpIGZpbmFsOwogICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBu
b3RpZmljYXRpb25JRCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eS5jcHAKaW5kZXggZDEzYTU4ODM4ZWM2Li45YjhjYzEyOWYzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTQ5LDYgKzQ5LDEyIEBAIFJlZjxXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk+IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRl
KFdlYlByb2Nlc3NQCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5KHByb2Nlc3NQb29sKSk7CiB9CiAKK1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eSYgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdl
cigpCit7CisgICAgc3RhdGljIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSogc2hhcmVkTWFu
YWdlciA9IG5ldyBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkobnVsbHB0cik7CisgICAgcmV0
dXJuICpzaGFyZWRNYW5hZ2VyOworfQorCiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAg
ICAgOiBXZWJDb250ZXh0U3VwcGxlbWVudChwcm9jZXNzUG9vbCkKICAgICAsIG1fcHJvdmlkZXIo
bWFrZVVuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPigpKQpAQCAtODgsMjEgKzk0LDI4
IEBAIEhhc2hNYXA8U3RyaW5nLCBib29sPiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6Om5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKCkKICAgICByZXR1cm4gbV9wcm92aWRlci0+bm90aWZpY2F0
aW9uUGVybWlzc2lvbnMoKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6
OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25E
YXRhJiBub3RpZmljYXRpb25EYXRhKQorc3RhdGljIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgaWRl
bnRpZmllckZvclBhZ2VQb2ludGVyKFdlYlBhZ2VQcm94eSogd2ViUGFnZSkKIHsKLSAgICBhdXRv
IG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlmaWNhdGlvbjo6Y3JlYXRlKG5vdGlmaWNhdGlvbkRhdGEs
IHdlYlBhZ2UtPmlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIHdlYlBhZ2UgPyB3ZWJQYWdlLT5p
ZGVudGlmaWVyKCkgOiBXZWJQYWdlUHJveHlJZGVudGlmaWVyKCk7Cit9CisKK3ZvaWQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBu
b3RpZmljYXRpb25EYXRhKQoreworICAgIExPRyhOb3RpZmljYXRpb25zLCAiV2ViUGFnZVByb3h5
ICglcCkgYXNraW5nIHRvIHNob3cgbm90aWZpY2F0aW9uICglcykiLCB3ZWJQYWdlLCBub3RpZmlj
YXRpb25EYXRhLm5vdGlmaWNhdGlvbklELnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAg
ICBhdXRvIG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlmaWNhdGlvbjo6Y3JlYXRlKG5vdGlmaWNhdGlv
bkRhdGEsIGlkZW50aWZpZXJGb3JQYWdlUG9pbnRlcih3ZWJQYWdlKSwgY29ubmVjdGlvbik7CiAg
ICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2V0KG5vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9u
SUQoKSwgbm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9uSUQoKSk7CiAgICAgbV9ub3RpZmlj
YXRpb25zLnNldChub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpLCBub3RpZmljYXRp
b24pOwotICAgIG1fcHJvdmlkZXItPnNob3coKndlYlBhZ2UsIG5vdGlmaWNhdGlvbi5nZXQoKSk7
CisgICAgbV9wcm92aWRlci0+c2hvdyh3ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0KCkpOwogfQog
Ci12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKFdlYlBhZ2VQcm94eSog
d2ViUGFnZSwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbChXZWJQYWdlUHJveHkqLCBjb25zdCBVVUlEJiBwYWdl
Tm90aWZpY2F0aW9uSUQpCiB7CiAgICAgaWYgKGF1dG8gd2ViTm90aWZpY2F0aW9uID0gbV9ub3Rp
ZmljYXRpb25zLmdldChwYWdlTm90aWZpY2F0aW9uSUQpKQogICAgICAgICBtX3Byb3ZpZGVyLT5j
YW5jZWwoKndlYk5vdGlmaWNhdGlvbik7CiB9CiAgICAgCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBhZ2Us
IGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSosIGNvbnN0IFVV
SUQmIHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKICAgICBpZiAoYXV0byB3ZWJOb3RpZmljYXRpb24g
PSBtX25vdGlmaWNhdGlvbnMudGFrZShwYWdlTm90aWZpY2F0aW9uSUQpKSB7CiAgICAgICAgIG1f
Z2xvYmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZSh3ZWJOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlv
bklEKCkpOwpAQCAtMTEwLDM3ICsxMjMsMjYgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLAogICAg
IH0KIH0KIAotc3RhdGljIGJvb2wgcGFnZUlEc01hdGNoKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlELCBjb25zdCBVVUlEJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFnZUlE
LCBjb25zdCBWZWN0b3I8VVVJRD4mKQotewotICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBh
Z2VJRDsKLX0KLQotc3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPFVVSUQ+
JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcykKLXsKLSAgICByZXR1cm4gcGFnZUlEID09IGRl
c2lyZWRQYWdlSUQgJiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMuY29udGFpbnMocGFnZU5v
dGlmaWNhdGlvbklEKTsKLX0KLQogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNs
ZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UpCiB7Ci0gICAgY2xlYXJOb3Rp
ZmljYXRpb25zKHdlYlBhZ2UsIFZlY3RvcjxVVUlEPigpLCBwYWdlSURzTWF0Y2gpOworICAgIEFT
U0VSVCh3ZWJQYWdlKTsKKyAgICBjbGVhck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgeyB9KTsKIH0K
IAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhX
ZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlv
bklEcykKIHsKLSAgICBjbGVhck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgcGFnZU5vdGlmaWNhdGlv
bklEcywgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKTsKLX0KLQotdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBh
Z2UsIGNvbnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9u
RmlsdGVyRnVuY3Rpb24gZmlsdGVyRnVuY3Rpb24pCi17Ci0gICAgYXV0byB0YXJnZXRQYWdlUHJv
eHlJRCA9IHdlYlBhZ2UtPmlkZW50aWZpZXIoKTsKLQogICAgIFZlY3Rvcjx1aW50NjRfdD4gZ2xv
YmFsTm90aWZpY2F0aW9uSURzOwogICAgIGdsb2JhbE5vdGlmaWNhdGlvbklEcy5yZXNlcnZlQ2Fw
YWNpdHkobV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2l6ZSgpKTsKIAorICAgIC8vIFdlIGFsd2F5
cyBjaGVjayBwYWdlIGlkZW50aXR5LgorICAgIC8vIElmIHRoZSBzZXQgb2Ygbm90aWZpY2F0aW9u
IElEcyBpcyBub24tZW1wdHksIHdlIGFsc28gY2hlY2sgdGhhdC4KKyAgICBhdXRvIHRhcmdldFBh
Z2VJZGVudGlmaWVyID0gaWRlbnRpZmllckZvclBhZ2VQb2ludGVyKHdlYlBhZ2UpOworICAgIGJv
b2wgY2hlY2tOb3RpZmljYXRpb25JRHMgPSAhcGFnZU5vdGlmaWNhdGlvbklEcy5pc0VtcHR5KCk7
CisKICAgICBmb3IgKGF1dG8gbm90aWZpY2F0aW9uIDogbV9ub3RpZmljYXRpb25zLnZhbHVlcygp
KSB7Ci0gICAgICAgIGF1dG8gcGFnZVByb3h5SUQgPSBub3RpZmljYXRpb24tPnBhZ2VJZGVudGlm
aWVyKCk7Ci0gICAgICAgIGF1dG8gY29yZU5vdGlmaWNhdGlvbklEID0gbm90aWZpY2F0aW9uLT5j
b3JlTm90aWZpY2F0aW9uSUQoKTsKLSAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbihwYWdlUHJv
eHlJRCwgY29yZU5vdGlmaWNhdGlvbklELCB0YXJnZXRQYWdlUHJveHlJRCwgcGFnZU5vdGlmaWNh
dGlvbklEcykpCisgICAgICAgIGlmIChjaGVja05vdGlmaWNhdGlvbklEcyAmJiAhcGFnZU5vdGlm
aWNhdGlvbklEcy5jb250YWlucyhub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAodGFyZ2V0UGFnZUlkZW50aWZpZXIg
IT0gbm90aWZpY2F0aW9uLT5wYWdlSWRlbnRpZmllcigpKQogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgdWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBub3RpZmljYXRpb24t
Pm5vdGlmaWNhdGlvbklEKCk7CkBAIC0xNjcsNDggKzE2OSw0NiBAQCB2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IGds
b2JhbE5vdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byogd2ViUGFnZSA9IFdl
YlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3RpZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCkpOwot
ICAgIGlmICghd2ViUGFnZSkKKyAgICBMT0coTm90aWZpY2F0aW9ucywgIlByb3ZpZGVyIGRpZCBz
aG93IG5vdGlmaWNhdGlvbiAoJXMpIiwgbm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9uSUQo
KS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgYXV0byogY29ubmVjdGlvbiA9IG5v
dGlmaWNhdGlvbi0+c291cmNlQ29ubmVjdGlvbigpOworICAgIGlmICghY29ubmVjdGlvbikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFNob3dOb3RpZmljYXRpb24oaXQtPnZhbHVlKSwgMCk7
CisgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
RGlkU2hvd05vdGlmaWNhdGlvbihpdC0+dmFsdWUpLCAwKTsKIH0KIAotdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qg
Z2xvYmFsTm90aWZpY2F0aW9uSUQpCitzdGF0aWMgdm9pZCBkaXNwYXRjaERpZENsaWNrTm90aWZp
Y2F0aW9uKFdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogewotICAgIGF1dG8gaXQgPSBt
X2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5maW5kKGdsb2JhbE5vdGlmaWNhdGlvbklEKTsKLSAgICBp
ZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCi0gICAgICAgIHJldHVybjsK
KyAgICBMT0coTm90aWZpY2F0aW9ucywgIlByb3ZpZGVyIGRpZCBjbGljayBub3RpZmljYXRpb24g
KCVzKSIsIG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCkudG9TdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKIAotICAgIGF1dG8gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdl
dChpdC0+dmFsdWUpOwotICAgIGlmICghbm90aWZpY2F0aW9uKSB7Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIGlmICghbm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47Ci0g
ICAgfQogCi0gICAgYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3Rp
ZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCkpOwotICAgIGlmICghd2ViUGFnZSkKKyAgICBhdXRv
KiBjb25uZWN0aW9uID0gbm90aWZpY2F0aW9uLT5zb3VyY2VDb25uZWN0aW9uKCk7CisgICAgaWYg
KCFjb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmljYXRp
b24oaXQtPnZhbHVlKSwgMCk7CisgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLT5jb3Jl
Tm90aWZpY2F0aW9uSUQoKSksIDApOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBjb3JlTm90aWZp
Y2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRD
bGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCkKIHsKLSAgICBh
dXRvIG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy5nZXQoY29yZU5vdGlmaWNhdGlvbklE
KTsKLSAgICBpZiAoIW5vdGlmaWNhdGlvbikKKyAgICBhdXRvIGl0ID0gbV9nbG9iYWxOb3RpZmlj
YXRpb25NYXAuZmluZChnbG9iYWxOb3RpZmljYXRpb25JRCk7CisgICAgaWYgKGl0ID09IG1fZ2xv
YmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvKiB3
ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKG5vdGlmaWNhdGlvbi0+cGFnZUlkZW50
aWZpZXIoKSk7Ci0gICAgaWYgKCF3ZWJQYWdlKQotICAgICAgICByZXR1cm47CisgICAgZGlzcGF0
Y2hEaWRDbGlja05vdGlmaWNhdGlvbihtX25vdGlmaWNhdGlvbnMuZ2V0KGl0LT52YWx1ZSkpOwor
fQogCi0gICAgd2ViUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlv
bk1hbmFnZXI6OkRpZENsaWNrTm90aWZpY2F0aW9uKGNvcmVOb3RpZmljYXRpb25JRCksIDApOwor
dm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmlj
YXRpb24oY29uc3QgVVVJRCYgY29yZU5vdGlmaWNhdGlvbklEKQoreworICAgIGRpc3BhdGNoRGlk
Q2xpY2tOb3RpZmljYXRpb24obV9ub3RpZmljYXRpb25zLmdldChjb3JlTm90aWZpY2F0aW9uSUQp
KTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xv
c2VOb3RpZmljYXRpb25zKEFQSTo6QXJyYXkqIGdsb2JhbE5vdGlmaWNhdGlvbklEcykKIHsKLSAg
ICBIYXNoTWFwPFdlYlBhZ2VQcm94eSosIFZlY3RvcjxVVUlEPj4gcGFnZU5vdGlmaWNhdGlvbklE
czsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+IGNsb3NlZE5vdGlmaWNhdGlv
bnM7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGdsb2JhbE5vdGlmaWNhdGlvbklEcy0+c2l6ZSgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CkBAIC0yNDEsMjYgKzI0MSwy
NSBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5v
dGlmaWNhdGlvbnMoQVBJOjpBcnJheSogZ2xvYgogICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbikK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChXZWJQYWdlUHJveHkqIHdlYlBh
Z2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uobm90aWZpY2F0aW9uLT5wYWdlSWRlbnRpZmll
cigpKSkgewotICAgICAgICAgICAgYXV0byBwYWdlSXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmZp
bmQod2ViUGFnZSk7Ci0gICAgICAgICAgICBpZiAocGFnZUl0ID09IHBhZ2VOb3RpZmljYXRpb25J
RHMuZW5kKCkpIHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8VVVJRD4gbmV3VmVjdG9yOwotICAg
ICAgICAgICAgICAgIG5ld1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwotICAg
ICAgICAgICAgICAgIHBhZ2VJdCA9IHBhZ2VOb3RpZmljYXRpb25JRHMuYWRkKHdlYlBhZ2UsIFdU
Rk1vdmUobmV3VmVjdG9yKSkuaXRlcmF0b3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IHBhZ2VJdC0+dmFsdWUuYXBwZW5kKG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCkp
OwotICAgICAgICB9Ci0KICAgICAgICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAucmVtb3ZlKG5v
dGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uSUQoKSk7CisgICAgICAgIGNsb3NlZE5vdGlmaWNhdGlv
bnMuYXBwZW5kKFdURk1vdmUobm90aWZpY2F0aW9uKSk7CiAgICAgfQogCi0gICAgZm9yIChhdXRv
IGl0ID0gcGFnZU5vdGlmaWNhdGlvbklEcy5iZWdpbigpLCBlbmQgPSBwYWdlTm90aWZpY2F0aW9u
SURzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGl0LT5rZXktPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbG9zZU5vdGlmaWNhdGlv
bnMoaXQtPnZhbHVlKSwgMCk7CisgICAgZm9yIChhdXRvJiBub3RpZmljYXRpb24gOiBjbG9zZWRO
b3RpZmljYXRpb25zKSB7CisgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbm90aWZpY2F0
aW9uLT5zb3VyY2VDb25uZWN0aW9uKCkpIHsKKyAgICAgICAgICAgIExPRyhOb3RpZmljYXRpb25z
LCAiUHJvdmlkZXIgZGlkIGNsb3NlIG5vdGlmaWNhdGlvbiAoJXMpIiwgbm90aWZpY2F0aW9uLT5j
b3JlTm90aWZpY2F0aW9uSUQoKS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAg
ICAgVmVjdG9yPFVVSUQ+IG5vdGlmaWNhdGlvbklEcyA9IHsgbm90aWZpY2F0aW9uLT5jb3JlTm90
aWZpY2F0aW9uSUQoKSB9OworICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xvc2VOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlv
bklEcyksIDApOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6cHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xpY3koY29uc3QgQVBJ
OjpTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBib29sIGFsbG93ZWQpCiB7CisgICAgTE9HKE5vdGlm
aWNhdGlvbnMsICJQcm92aWRlciBkaWQgdXBkYXRlIG5vdGlmaWNhdGlvbiBwb2xpY3kgZm9yIG9y
aWdpbiAlcyB0byAlaSIsIG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpLnV0Zjgo
KS5kYXRhKCksIGFsbG93ZWQpOworCisgICAgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFJlbW90
ZVdvcmtlclByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkVXBk
YXRlTm90aWZpY2F0aW9uRGVjaXNpb24ob3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5n
KCksIGFsbG93ZWQpKTsKKwogICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0yODEsNyArMjgwLDExIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
Ojpwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKEFQSTo6QXJyCiAgICAgCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIG9yaWdpblN0cmlu
Z3MuYXBwZW5kKG9yaWdpbnMtPmF0PEFQSTo6U2VjdXJpdHlPcmlnaW4+KGkpLT5zZWN1cml0eU9y
aWdpbigpLnRvU3RyaW5nKCkpOwotICAgIAorCisgICAgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0Fs
bFJlbW90ZVdvcmtlclByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
RGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKG9yaWdpblN0cmluZ3MpKTsKKworICAgIGlm
ICghcHJvY2Vzc1Bvb2woKSkKKyAgICAgICAgcmV0dXJuOwogICAgIHByb2Nlc3NQb29sKCktPnNl
bmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkUmVt
b3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKG9yaWdpblN0cmluZ3MpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKaW5kZXggYzZkMzVkODYyMmI4Li5lODdkYjEwZjUx
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtNTcsMTAgKzU3
LDEyIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8V2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqKTsKIAorICAgIHN0YXRpYyBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkmIHNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCk7CisKICAgICB2b2lk
IHNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPiYm
KTsKICAgICBIYXNoTWFwPFN0cmluZywgYm9vbD4gbm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKTsK
IAotICAgIHZvaWQgc2hvdyhXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRp
b25EYXRhJik7CisgICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSosIElQQzo6Q29ubmVjdGlvbiYs
IGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKTsKICAgICB2b2lkIGNhbmNlbChXZWJQ
YWdlUHJveHkqLCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgY2xl
YXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSopOwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRp
b25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklE
cyk7CkBAIC03OSw5ICs4MSw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKik7CiAKLSAgICB0eXBlZGVm
IGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbikoV2ViUGFnZVByb3h5SWRlbnRpZmll
ciBwYWdlSUQsIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8VVVJRD4mIGRlc2lyZWRQYWdlTm90
aWZpY2F0aW9uSURzKTsKLSAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkq
LCBjb25zdCBWZWN0b3I8VVVJRD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZp
bHRlckZ1bmN0aW9uKTsKLQogICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CiAgICAgdm9pZCBw
cm9jZXNzUG9vbERlc3Ryb3llZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVmV2ViQ29udGV4dFN1
cHBsZW1lbnQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKaW5k
ZXggMjY1YzE1OWQ5ZDc5Li44NThkNzY0NjJmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIuY3BwCkBAIC00MiwxMiArNDIsMTIgQEAgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6Oldl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyKGNvbnN0IFdLTm90aWZpY2F0aW9uUHJvdmlkZXJCYXMKICAg
ICBpbml0aWFsaXplKHByb3ZpZGVyKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRl
cjo6c2hvdyhXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9u
KQordm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2hvdyhXZWJQYWdlUHJveHkqIHBhZ2Us
IFdlYk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQogewogICAgIGlmICghbV9jbGllbnQuc2hv
dykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQuc2hvdyh0b0FQSSgmcGFnZSksIHRv
QVBJKCZub3RpZmljYXRpb24pLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIG1fY2xp
ZW50LnNob3codG9BUEkocGFnZSksIHRvQVBJKCZub3RpZmljYXRpb24pLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpjYW5jZWwo
V2ViTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVy
LmgKaW5kZXggN2IyZTljZTFjNWE2Li5jMWIwYTlkNGVhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
blByb3ZpZGVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgV2ViTm90aWZpY2F0aW9uUHJvdmlk
ZXIgOiBwdWJsaWMgQVBJOjpOb3RpZmljYXRpb25Qcm92aWRlciwgcHVibGljIEFQSTo6Q2wKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcihjb25zdCBXS05vdGlm
aWNhdGlvblByb3ZpZGVyQmFzZSopOwogCi0gICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSYsIFdl
Yk5vdGlmaWNhdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2hvdyhXZWJQYWdlUHJveHkqLCBX
ZWJOb3RpZmljYXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGNhbmNlbChXZWJOb3RpZmljYXRp
b24mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViTm90aWZp
Y2F0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVj
dG9yPHVpbnQ2NF90PiYgbm90aWZpY2F0aW9uSURzKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDllNmU1MmFmYTA0Ni4uODYwYTQ1MDYyNDM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg4NzQsOSAr
ODg3NCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lv
bihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tCiAgICAgbV91aUNsaWVudC0+ZGVjaWRl
UG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoKnRoaXMsIG9yaWdpbi5nZXQo
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
c2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBub3RpZmlj
YXRpb25EYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OnNob3dOb3RpZmljYXRpb24oSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBub3Rp
ZmljYXRpb25EYXRhKQogewotICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50
PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+c2hvdyh0aGlzLCBub3RpZmljYXRpb25E
YXRhKTsKKyAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk+KCktPnNob3codGhpcywgY29ubmVjdGlvbiwgbm90aWZpY2F0aW9u
RGF0YSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxOb3RpZmljYXRpb24oY29uc3Qg
VVVJRCYgbm90aWZpY2F0aW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDViY2E4MjY1YjY3Mi4uNDAwZjk0MDQ5ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMjA1NCw3ICsyMDU0LDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNRdWFyYW50aW5lZEFuZE5vdFVzZXJBcHByb3ZlZChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgog
Ci0gICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRh
dGEmKTsKKyAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpOwogICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9u
KGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKTsKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9u
cyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcyk7CiAgICAgdm9pZCBkaWREZXN0
cm95Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA2ZDg4MjhmMmU0ZDEuLmY2MGQz
ZWNkMmNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApA
QCAtNTg4LDcgKzU4OCw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnCiAKICAgICByZW1vdGVX
b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOwogCi0gICAg
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQo
cHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV9y
ZW1vdGVXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBh
Z2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
YXV0byBwcmVmZXJlbmNlc1N0b3JlID0gcHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyUHJlZmVy
ZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDog
cHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpOwor
ICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0KHByZWZlcmVuY2VzU3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBpZiAoIXByb2Nl
c3NQb29sLT5tX3JlbW90ZVdvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKICAgICAgICAgc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS0+c2V0UmVtb3RlV29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29s
LT5tX3JlbW90ZVdvcmtlclVzZXJBZ2VudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAppbmRleCBlMjUzYTVlNzNhNDguLjNhYTJkYTgyZDZlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0yMDMsNiArMjAzLDggQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2VuZFRvQWxsUHJvY2Vzc2VzKGNv
bnN0IFQmIG1lc3NhZ2UpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2VuZFRvQWxs
UHJvY2Vzc2VzRm9yU2Vzc2lvbihjb25zdCBUJiBtZXNzYWdlLCBQQUw6OlNlc3Npb25JRCk7CiAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCBzZW5kVG9BbGxSZW1vdGVXb3Jr
ZXJQcm9jZXNzZXMoY29uc3QgVCYgbWVzc2FnZSk7CisKICAgICB2b2lkIHByb2Nlc3NEaWRGaW5p
c2hMYXVuY2hpbmcoV2ViUHJvY2Vzc1Byb3h5Jik7CiAKICAgICBXZWJQcm9jZXNzQ2FjaGUmIHdl
YlByb2Nlc3NDYWNoZSgpIHsgcmV0dXJuIG1fd2ViUHJvY2Vzc0NhY2hlLmdldCgpOyB9CkBAIC04
MzIsNCArODM0LDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFByb2Nlc3Nlc0Zv
clNlc3Npb24oY29uc3QgVCYgbWVzc2FnZSwgUEFMOjpTZXNzaW9uCiAgICAgfQogfQogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvQWxsUmVtb3RlV29y
a2VyUHJvY2Vzc2VzKGNvbnN0IFQmIG1lc3NhZ2UpCit7CisgICAgZm9yIChhdXRvJiBwcm9jZXNz
IDogcmVtb3RlV29ya2VyUHJvY2Vzc2VzKCkpIHsKKyAgICAgICAgaWYgKHByb2Nlc3MuY2FuU2Vu
ZE1lc3NhZ2UoKSkKKyAgICAgICAgICAgIHByb2Nlc3Muc2VuZChUKG1lc3NhZ2UpLCAwKTsKKyAg
ICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggMmMwYTgwMzAwMzE0Li4yNGVhYzgwNmNkZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiU2VydmljZVdv
cmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlci5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXJNZXNzYWdlcy5oIgpAQCAtMjAxNSw2ICsyMDE2
LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVSZW1vdGVXb3JrZXJzKE9wdGlvblNl
dDxSZW1vdGVXb3JrZXJUeXBlPiB3b3JrZXJUeXAKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxF
QVNFX0xPRyhQcm9jZXNzLCAiZGlzYWJsZVdvcmtlcnM6IERpc2FibGluZyB3b3JrZXJzIChTaGFy
ZWRXb3JrZXJzPSVkLCBTZXJ2aWNlV29ya2Vycz0lZCkiLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFJl
bW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciksIHdvcmtlclR5cGUuY29udGFpbnMoUmVtb3Rl
V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpOwogCisgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnJlbW90ZVdvcmtlclBhZ2VJ
RCk7CisgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07CisKICAgICB1cGRhdGVC
YWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCiAgICAgaWYgKCFpc1J1bm5pbmdXb3Jr
ZXJzKCkpCkBAIC0yMDY0LDYgKzIwNjgsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxl
UmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIGNvbnN0IFVzZQogICAg
ICAgICBudWxscHRyLAogICAgICAgICB7IH0KICAgICB9OworCisgICAgYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnJlbW90ZVdvcmtlclBh
Z2VJRCwgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OnNpbmdsZXRvbigpKTsKKwog
ICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAKICAgICB1cGRhdGVS
ZW1vdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKHdvcmtlclR5cGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApp
bmRleCAxMzI5MDU1NzJmNGIuLjJjN2E2YzY5YzU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTQx
LDYgKzQxLDcgQEAKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZENhY2hlLmgiCiAjaW5jbHVkZSAi
V2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIK
KyNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzTWVzc2FnZXMuaCIKQEAgLTIwNTQsNCArMjA1NSwyNiBAQCBib29sIFdlYnNpdGVEYXRh
U3RvcmU6OnNob3VsZE1ha2VOZXh0TmV0d29ya1Byb2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZygp
CiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobmV4dE5ldHdvcmtQcm9jZXNzTGF1bmNoU2hvdWxk
RmFpbEZvclRlc3RpbmcsIGZhbHNlKTsKIH0KIAordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzaG93
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIG5vdGlmaWNhdGlvbkRhdGEpCit7CisgICAg
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigp
LnNob3cobnVsbHB0ciwgY29ubmVjdGlvbiwgbm90aWZpY2F0aW9uRGF0YSk7Cit9CisKK3ZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6Y2FuY2VsU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihjb25zdCBV
VUlEJiBub3RpZmljYXRpb25JRCkKK3sKKyAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6
OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkuY2FuY2VsKG51bGxwdHIsIG5vdGlmaWNhdGlv
bklEKTsKK30KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpjbGVhclNlcnZpY2VXb3JrZXJOb3Rp
ZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit7CisgICAgVmVjdG9yPFVVSUQ+
IG5vdGlmaWNhdGlvbnM7CisgICAgbm90aWZpY2F0aW9ucy5hcHBlbmQobm90aWZpY2F0aW9uSUQp
OworICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hhcmVkU2VydmljZVdvcmtlck1h
bmFnZXIoKS5jbGVhck5vdGlmaWNhdGlvbnMobnVsbHB0ciwgbm90aWZpY2F0aW9ucyk7Cit9CisK
K3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGlkRGVzdHJveVNlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit7CisgICAgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpLmRpZERlc3Ryb3lOb3RpZmlj
YXRpb24obnVsbHB0ciwgbm90aWZpY2F0aW9uSUQpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXgg
ODVlZTMxZTEzODNkLi40NmFmMGVmNTllYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTc4LDYgKzc4LDcg
QEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBMb2NhbFdlYkxvY2tSZWdpc3RyeTsKIAog
c3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247CitzdHJ1Y3QgTm90aWZp
Y2F0aW9uRGF0YTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zNzAsNiArMzcxLDExIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgY291bnROb25EZWZhdWx0U2Vzc2lvblNldHMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzaXplX3QpPiYmKTsKIAorICAgIHZvaWQgc2hvd1NlcnZpY2VXb3JrZXJO
b3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGF0YSYpOworICAgIHZvaWQgY2FuY2VsU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihjb25zdCBV
VUlEJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBjbGVhclNlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgZGlkRGVzdHJveVNl
cnZpY2VXb3JrZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOworCiBw
cml2YXRlOgogICAgIGVudW0gY2xhc3MgRm9yY2VSZWluaXRpYWxpemF0aW9uIDogYm9vbCB7IE5v
LCBZZXMgfTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmN2JlZTU0M2NlMGYuLmMx
NWUxYjFkZGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC05OTYsNiArOTk2LDcgQEAKIAkJNTE1QkUxQjUxRDU5MTdGRjAwREQ3QzY4
IC8qIFVJR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE1QkUxQUQxRDU1NUM1MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5oICovOyB9OwogCQk1
MTYzMTk5NDE2Mjg5QTYwMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQ0M5
MzQxNjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LzsgfTsKIAkJNTE2MzE5OTUxNjI4OUE2MzAwRTIyRjAwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUND
OTM1MTYyODA2NDgwMDM0MjU1MCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmggKi87IH07CisJ
CTUxNjQ2NTgwMjdBOUM3NzQwMEUxRjJCQSAvKiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFu
ZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2
NDY1N0YyN0E5Qzc2NzAwRTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVy
LmggKi87IH07CiAJCTUxNkE0QTVEMTIwQTJDQ0QwMEMwNUI3RiAvKiBBUElFcnJvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2QTRBNUIxMjBBMkND
RDAwQzA1QjdGIC8qIEFQSUVycm9yLmggKi87IH07CiAJCTUxNzk1NTZBMTYyODc2RjMwMEZBNDNC
NiAvKiBOZXR3b3JrUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwQ0M3RTAxNjEzOEUyOTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzLmgg
Ki87IH07CiAJCTUxNzk1NTZFMTYyODc3QjMwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBDQzdF
QjE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5oICovOyB9OwpAQCAtNDQ4
MSw2ICs0NDgyLDggQEAKIAkJNTE2MEU5NTgyNzRDMEQ4ODAwNTY3Mzg4IC8qIFB1c2hBcHBCdW5k
bGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQdXNoQXBwQnVu
ZGxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTYwRTk1QzI3NEMyQTAzMDA1
NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTYwRTk1RjI3NEMyQTNGMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9ja0FwcEJ1bmRs
ZVJlZ2lzdHJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTY0NjU3RTI3QTlD
NzY1MDBFMUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTY0NjU3RjI3QTlDNzY3MDBFMUYyQkEgLyogU2Vy
dmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdv
cmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE2NEMwOTQxQjA1Qjc1NzAwNEYxMDJBIC8qIEF1eGlsaWFyeVByb2Nlc3MubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXV4aWxpYXJ5UHJvY2Vzcy5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2QTRBNUIxMjBBMkNDRDAwQzA1QjdGIC8qIEFQ
SUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUVycm9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0EzM0IzMTMwQjMwOEMwMEY4MENCNSAvKiBX
S0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODY3NSw2ICs4Njc4LDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCiAJCQkJMzFBMkVDNTMxNDg5OTgyNTAwODEwRDcxIC8qIE5vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmggKi8sCisJCQkJNTE2NDY1N0UyN0E5Qzc2NTAwRTFGMkJBIC8q
IFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmNwcCAqLywKKwkJCQk1MTY0NjU3RjI3
QTlDNzY3MDBFMUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCAqLywK
IAkJCQkzMUEyRUM0MTE0ODk5N0JFMDA4MTBENzEgLyogV2ViTm90aWZpY2F0aW9uLmNwcCAqLywK
IAkJCQkzMUEyRUM0MjE0ODk5N0JFMDA4MTBENzEgLyogV2ViTm90aWZpY2F0aW9uLmggKi8sCiAJ
CQkJNTE0NTI3MDYyNzFGQkVDMTAwMDQ2N0I2IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlci5jcHAgKi8sCkBAIC0xMzkxOSw2ICsxMzkyNCw3IEBACiAJCQkJQkM0QTYyOTcx
NDczMTNBMDAwNkM2ODFBIC8qIFdLQ29ubmVjdGlvblJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTU5NkRENkEyNTFFNzFENDAwQzI3NUE3IC8qIFdLQ29udGFjdFBpY2tlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNEMjg2NTQxRTcyMzVCMTAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MTY0NjU4MDI3QTlDNzc0MDBFMUYyQkEgLyogU2VydmljZVdv
cmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NjU1MUU3
MjM1QjgwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdEludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1QzUxMzlEQjI1OTI3RDgwMDA5QzNFMzAgLyogV0tDb250ZW50UnVsZUxpc3RQcml2
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODY1MTFFNzIzNTk5MDA5NEZEQzggLyogV0tD
b250ZW50UnVsZUxpc3RTdG9yZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXIuY3BwCmluZGV4IDljMWMxMmQ4ODU1NC4uNjliNjNjNmM2YmM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlck1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCIKICNpbmNsdWRlICJXZWJO
b3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgpAQCAtNDUsNiArNDYsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TV0NvbnRleHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9V
c2VyR2VzdHVyZUluZGljYXRvci5oPgogI2VuZGlmCiAKQEAgLTEyMSwyNSArMTIzLDQzIEBAIHZv
aWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6cmVtb3ZlQWxsUGVybWlzc2lvbnNGb3JUZXN0aW5n
KCkKIH0KIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Ym9vbCBzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShXZWJQcm9jZXNzJiBwcm9jZXNzLCBVJiYgbWVz
c2FnZSwgV2ViUGFnZSYgcGFnZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6c2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UoVSYmIG1lc3NhZ2UsIE5vdGlm
aWNhdGlvbiYgbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogeworICAgIGlmICghcGFnZSAm
JiAhbm90aWZpY2F0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCiAjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCiAgICAgaWYgKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYnVpbHRJbk5vdGlmaWNhdGlv
bnNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBwcm9jZXNzLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIHBhZ2Uuc2Vz
c2lvbklEKCkudG9VSW50NjQoKSk7CisgICAgICAgIHJldHVybiBtX3Byb2Nlc3MuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdl
KSwgbm90aWZpY2F0aW9uLmRhdGEoKS5zb3VyY2VTZXNzaW9uLnRvVUludDY0KCkpOwogI2VuZGlm
Ci0gICAgcmV0dXJuIHByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChXVEZN
b3ZlKG1lc3NhZ2UpLCBwYWdlLmlkZW50aWZpZXIoKSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSWRlbnRpZmllcjsKKyAgICBpZiAocGFnZSkKKyAg
ICAgICAgcGFnZUlkZW50aWZpZXIgPSBwYWdlLT5pZGVudGlmaWVyKCk7CisgICAgZWxzZSBpZiAo
YXV0byogY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rp
b24oKSkgeworICAgICAgICAvLyBQYWdlbGVzcyBub3RpZmljYXRpb24gbWVzc2FnZXMgYXJlLCBi
eSBkZWZhdWx0LCBvbiBiZWhhbGYgb2YgYSBzZXJ2aWNlIHdvcmtlci4KKyAgICAgICAgLy8gU28g
dXNlIHRoZSBzZXJ2aWNlIHdvcmtlciBjb25uZWN0aW9uJ3MgcGFnZSBpZGVudGlmaWVyLgorICAg
ICAgICBwYWdlSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPnBhZ2VJZGVudGlmaWVyKCk7CisgICAg
fQorCisgICAgQVNTRVJUKHBhZ2VJZGVudGlmaWVyKTsKKworICAgIHJldHVybiBtX3Byb2Nlc3Mu
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCAqcGFnZUlk
ZW50aWZpZXIpOwogfQogI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQogCiBib29sIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6OnNob3coTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sIFdl
YlBhZ2UqIHBhZ2UpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChw
YWdlICYmICFwYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLm5vdGlmaWNhdGlvbnNFbmFibGVk
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQot
ICAgIGlmICghcGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5ub3RpZmljYXRpb25zRW5hYmxl
ZCgpKQorICAgIGlmICghc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UoTWVzc2FnZXM6Ok5vdGlmaWNh
dGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6U2hvd05vdGlmaWNhdGlvbihub3RpZmljYXRpb24u
ZGF0YSgpKSwgbm90aWZpY2F0aW9uLCBwYWdlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgbV9ub3RpZmljYXRpb25JRE1hcC5zZXQobm90aWZpY2F0aW9uLmlkZW50aWZpZXIoKSwgJm5v
dGlmaWNhdGlvbik7Ci0KLSAgICBzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShtX3Byb2Nlc3MsIE1l
c3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OlNob3dOb3RpZmljYXRp
b24obm90aWZpY2F0aW9uLmRhdGEoKSksICpwYWdlKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CkBAIC0xNTAsMTYgKzE3MCwxNiBAQCBi
b29sIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnNob3coTm90aWZpY2F0aW9uJiBub3RpZmljYXRp
b24sIFdlYlBhZ2UqIHBhZ2UpCiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2Vs
KE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogewotI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQotICAgIGlmICghcGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5u
b3RpZmljYXRpb25zRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIGF1dG8gbWFwcGVk
Tm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uLmlkZW50
aWZpZXIoKSk7CiAgICAgaWYgKCFtYXBwZWROb3RpZmljYXRpb24pCiAgICAgICAgIHJldHVybjsK
ICAgICBBU1NFUlQobWFwcGVkTm90aWZpY2F0aW9uID09ICZub3RpZmljYXRpb24pOwogCi0gICAg
c2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UobV9wcm9jZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpDYW5jZWxOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmlk
ZW50aWZpZXIoKSksICpwYWdlKTsKKyAgICBpZiAoIXNlbmROb3RpZmljYXRpb25NZXNzYWdlKE1l
c3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OkNhbmNlbE5vdGlmaWNh
dGlvbihub3RpZmljYXRpb24uaWRlbnRpZmllcigpKSwgbm90aWZpY2F0aW9uLCBwYWdlKSkKKyAg
ICAgICAgcmV0dXJuOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKICAg
ICBVTlVTRURfUEFSQU0ocGFnZSk7CkBAIC0xNjgsNiArMTg4LDggQEAgdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyOjpjYW5jZWwoTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sIFdlYlBhZ2Uq
IHBhZ2UpCiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNh
dGlvbihOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKIHsKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAg
UmVmIHByb3RlY3RlZE5vdGlmaWNhdGlvbiB7IG5vdGlmaWNhdGlvbiB9OwogCkBAIC0xNzYsNyAr
MTk4LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0
aW9uKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLAogICAgICAgICByZXR1cm47CiAgICAgQVNT
RVJUKHRha2VuTm90aWZpY2F0aW9uID09ICZub3RpZmljYXRpb24pOwogCi0gICAgc2VuZE5vdGlm
aWNhdGlvbk1lc3NhZ2UobV9wcm9jZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VIYW5kbGVyOjpEaWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5pZGVudGlm
aWVyKCkpLCAqcGFnZSk7CisgICAgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UoTWVzc2FnZXM6Ok5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6RGlkRGVzdHJveU5vdGlmaWNhdGlvbihu
b3RpZmljYXRpb24uaWRlbnRpZmllcigpKSwgbm90aWZpY2F0aW9uLCBwYWdlKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwpA
QCAtMTg1LDYgKzIwNyw4IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJv
eU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwKIAogdm9pZCBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNh
dGlvbklEKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25v
dGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRpb25JRCk7CiAgICAgaWYgKCFub3RpZmljYXRp
b24pCkBAIC0xOTgsNiArMjIyLDggQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRT
aG93Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQogCiB2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlm
aWNhdGlvbklEKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBt
X25vdGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRpb25JRCk7CiAgICAgaWYgKCFub3RpZmlj
YXRpb24pCkBAIC0yMTMsNiArMjM5LDggQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpk
aWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKIAogdm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbG9zZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9y
PFVVSUQ+JiBub3RpZmljYXRpb25JRHMpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIHNpemVfdCBjb3VudCA9IG5vdGlmaWNh
dGlvbklEcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKaW5kZXggZTYzNTFmZGY5NjE2Li40OWVhNzE4
NDU1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTgxLDYgKzgxLDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZENsb3NlTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJ
RD4mIG5vdGlmaWNhdGlvbklEcyk7CiAgICAgdm9pZCBkaWRSZW1vdmVOb3RpZmljYXRpb25EZWNp
c2lvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9yaWdpblN0cmluZ3MpOwogCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShVJiYgbWVzc2FnZSwg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uJiwgV2ViUGFnZSopOworCiAgICAgV2ViUHJvY2VzcyYgbV9w
cm9jZXNzOwogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaAppbmRleCBjMWVkZDlmMGEyZWMuLjFlMzE0MGY2ODJlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC02Niw2ICs2Niw4IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmlu
YWw7CiAKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fcGFnZUlEOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVQ
cmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlv
bkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50LmNwcAppbmRleCBjMjRlZDM3ZDc2ZWYuLjRhMzZlOGZiZThlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5v
dGlmaWNhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAKQEAgLTQwLDM0ICs0MCw2NiBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6V2ViTm90aWZp
Y2F0aW9uQ2xpZW50KFdlYlBhZ2UqIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKIHsKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogfQogCiBXZWJOb3RpZmljYXRpb25DbGllbnQ6On5XZWJO
b3RpZmljYXRpb25DbGllbnQoKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiB9CiAK
IGJvb2wgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpzaG93KE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0
aW9uKQogewotICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPnNob3cobm90aWZpY2F0aW9uLCBtX3BhZ2UpOworICAg
IGlmIChpc01haW5UaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+c2hvdyhub3RpZmljYXRp
b24sIG1fcGFnZSk7CisKKyAgICBib29sIHJlc3VsdDsKKyAgICBjYWxsT25NYWluVGhyZWFkQW5k
V2FpdChbJnJlc3VsdCwgcHJvdGVjdGVkTm90aWZpY2F0aW9uID0gUmVmIHsgbm90aWZpY2F0aW9u
IH1dKCkgeworICAgICAgICByZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVt
ZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPnNob3cocHJvdGVjdGVkTm90aWZpY2F0aW9u
LmdldCgpLCBudWxscHRyKTsKKyAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lk
IFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2FuY2VsKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9u
KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0
aW9uTWFuYWdlcj4oKS0+Y2FuY2VsKG5vdGlmaWNhdGlvbiwgbV9wYWdlKTsKKyAgICBpZiAoaXNN
YWluVGhyZWFkKCkpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVu
dDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5jYW5jZWwobm90aWZpY2F0aW9uLCBtX3BhZ2Up
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQo
W3Byb3RlY3RlZE5vdGlmaWNhdGlvbiA9IFJlZiB7IG5vdGlmaWNhdGlvbiB9XSgpIHsKKyAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5h
Z2VyPigpLT5jYW5jZWwocHJvdGVjdGVkTm90aWZpY2F0aW9uLmdldCgpLCBudWxscHRyKTsKKyAg
ICB9KTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6Om5vdGlmaWNhdGlvbk9iamVj
dERlc3Ryb3llZChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKIHsKLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmRpZERl
c3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLCBtX3BhZ2UpOworICAgIGlmIChpc01haW5U
aHJlYWQoKSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0
aW9uLCBtX3BhZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gTWFrZSBzdXJl
IHRoaXMgTm90aWZpY2F0aW9uIG9iamVjdCBpcyBkZWFsbG9jYXRlZCBvbiB0aGlzIHRocmVhZCBi
eSBob2xkaW5nIG9uZSBsYXN0IHJlZigpIHRvIGl0IGhlcmUKKyAgICBhdXRvIGxhc3ROb3RpZmlj
YXRpb25SZWYgPSBSZWYgeyBub3RpZmljYXRpb24gfTsKKworICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmbm90aWZpY2F0aW9uXSgpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5kaWREZXN0cm95Tm90aWZp
Y2F0aW9uKG5vdGlmaWNhdGlvbiwgbnVsbHB0cik7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViTm90
aWZpY2F0aW9uQ2xpZW50Ojpub3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVkKCkKIHsKLSAg
ICBkZWxldGUgdGhpczsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzXSB7CisgICAgICAgIGRl
bGV0ZSB0aGlzOworICAgIH0pOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6cmVx
dWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUGVybWlzc2lv
bkhhbmRsZXImJiBwZXJtaXNzaW9uSGFuZGxlcikKIHsKKyAgICAvLyBPbmx5IFdpbmRvdyBjbGll
bnRzIGNhbiByZXF1ZXN0IHBlcm1pc3Npb24KKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChtX3BhZ2UpOworCiAgICAgYXV0byogc2VjdXJpdHlPcmlnaW4gPSBjb250ZXh0
LnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgaWYgKCFzZWN1cml0eU9yaWdpbikKICAgICAgICAgcmV0
dXJuIHBlcm1pc3Npb25IYW5kbGVyKE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbjo6RGVu
aWVkKTsKQEAgLTc2LDkgKzEwOCwyMCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6cmVx
dWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUAogCiBOb3Rp
ZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjaGVja1Bl
cm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBpZiAoIWNv
bnRleHQgfHwgIWNvbnRleHQtPmlzRG9jdW1lbnQoKSB8fCAhY29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKSkKKyAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBOb3RpZmljYXRpb25DbGll
bnQ6OlBlcm1pc3Npb246OkRlbmllZDsKLSAgICByZXR1cm4gbV9wYWdlLT5ub3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS0+cGVybWlzc2lvbkxldmVsKGNvbnRleHQtPnNlY3Vy
aXR5T3JpZ2luKCktPmRhdGEoKSk7CisgICAgaWYgKCFjb250ZXh0LT5pc0RvY3VtZW50KCkgJiYg
IWNvbnRleHQtPmlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCkpCisgICAgICAgIHJldHVybiBO
b3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb246OkRlbmllZDsKKworICAgIGF1dG8qIG9yaWdp
biA9IGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgaWYgKCFvcmlnaW4pCisgICAgICAg
IHJldHVybiBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb246OkRlbmllZDsKKworICAgIE5v
dGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiByZXN1bHRQZXJtaXNzaW9uOworICAgIGNhbGxP
bk1haW5UaHJlYWRBbmRXYWl0KFsmcmVzdWx0UGVybWlzc2lvbiwgb3JpZ2luID0gb3JpZ2luLT5k
YXRhKCkudG9TdHJpbmcoKV0geworICAgICAgICByZXN1bHRQZXJtaXNzaW9uID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5wb2xp
Y3lGb3JPcmlnaW4ob3JpZ2luKTsKKyAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0UGVybWlzc2lv
bjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApp
bmRleCA4ZGU2ODFiMjIyNDEuLmRkMzk3NjNhYzUxMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsCkBAIC0yMDgsNiArMjA4LDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHVuZGVm
aW5lZCBkZW55V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihET01TdHJpbmcgb3JpZ2luKTsKICAg
ICB1bmRlZmluZWQgcmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKTsKICAgICB1
bmRlZmluZWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhvYmplY3Qgbm90aWZpY2F0aW9u
KTsKKyAgICB1bmRlZmluZWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VX
b3JrZXJOb3RpZmljYXRpb25zKCk7CiAKICAgICAvLyBHZW9sb2NhdGlvbgogICAgIHVuZGVmaW5l
ZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbGVhbiB2YWx1ZSk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CmluZGV4IDMzZTcwYWYzMmE2ZC4uMGQwZDFmZmI2MDAyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAt
NjY4LDYgKzY2OCwxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0U2ltdWxhdGVXZWJOb3Rp
ZmljYXRpb25DbGljayhXS0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpCiAgICAgcG9zdFBhZ2VNZXNz
YWdlKCJTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrIiwgbm90aWZpY2F0aW9uSUQpOwogfQog
Cit2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0Zv
clNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25zKCkKK3sKKyAgICBwb3N0UGFnZU1lc3NhZ2UoIlNp
bXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucyIp
OworfQorCiB2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0U2V0QWRkc1Zpc2l0ZWRMaW5rcyhib29s
IGFkZHNWaXNpdGVkTGlua3MpCiB7CiAgICAgcG9zdFBhZ2VNZXNzYWdlKCJTZXRBZGRzVmlzaXRl
ZExpbmtzIiwgYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoYWRkc1Zpc2l0ZWRMaW5rcykpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuaAppbmRleCBiYzE0NzVjYWY3ZmEuLjBhODU5OTU4MGZhYyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApA
QCAtOTUsNiArOTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0U2V0V2luZG93SXNLZXkoYm9v
bCk7CiAgICAgdm9pZCBwb3N0U2V0Vmlld1NpemUoZG91YmxlIHdpZHRoLCBkb3VibGUgaGVpZ2h0
KTsKICAgICB2b2lkIHBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLRGF0YVJlZiBu
b3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBwb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlj
a0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25zKCk7CiAgICAgdm9pZCBwb3N0U2V0QWRkc1Zp
c2l0ZWRMaW5rcyhib29sKTsKIAogICAgIC8vIEdlb2xvY2F0aW9uLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggNzgx
YjgxNjkxYWZjLi4yNGE5YTg1ZDA3YmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtODY3LDExICs4NjcsMTMgQEAg
dm9pZCBUZXN0UnVubmVyOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29s
IGVuYWJsZWQpCiB2b2lkIFRlc3RSdW5uZXI6OmdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lv
bihKU1N0cmluZ1JlZiBvcmlnaW4pCiB7CiAgICAgV0tCdW5kbGVTZXRXZWJOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgcGFnZSgpLCB0
b1dLKG9yaWdpbikuZ2V0KCksIHRydWUpOworICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdl
UmV0dXJuaW5nQm9vbGVhbigiR3JhbnROb3RpZmljYXRpb25QZXJtaXNzaW9uIiwgb3JpZ2luKTsK
IH0KIAogdm9pZCBUZXN0UnVubmVyOjpkZW55V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihKU1N0
cmluZ1JlZiBvcmlnaW4pCiB7CiAgICAgV0tCdW5kbGVTZXRXZWJOb3RpZmljYXRpb25QZXJtaXNz
aW9uKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgcGFnZSgpLCB0b1dLKG9y
aWdpbikuZ2V0KCksIGZhbHNlKTsKKyAgICBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZVJldHVy
bmluZ0Jvb2xlYW4oIkRlbnlOb3RpZmljYXRpb25QZXJtaXNzaW9uIiwgb3JpZ2luKTsKIH0KIAog
dm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucygpCkBA
IC04ODcsNiArODg5LDExIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRp
b25DbGljayhKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbikKICAgICBpbmplY3RlZEJ1bmRsZS5wb3N0
U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhub3RpZmljYXRpb25JRC5nZXQoKSk7CiB9CiAK
K3ZvaWQgVGVzdFJ1bm5lcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VX
b3JrZXJOb3RpZmljYXRpb25zKCkKK3sKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCku
cG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0
aW9ucygpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihi
b29sIGVuYWJsZWQpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRvbmUgYnkgZnJh
bWUuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oCmluZGV4IDJiNzhjMWRhOTZiMS4uOTBmNWVlNDgxZjQ1IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtMjk0LDYg
KzI5NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkZW55V2ViTm90aWZpY2F0aW9uUGVy
bWlzc2lvbihKU1N0cmluZ1JlZiBvcmlnaW4pOwogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUFsbFdl
Yk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAgICAgc3RhdGljIHZvaWQgc2ltdWxhdGVXZWJO
b3RpZmljYXRpb25DbGljayhKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbik7CisgICAgc3RhdGljIHZv
aWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b25zKCk7CiAKICAgICAvLyBHZW9sb2NhdGlvbi4KICAgICB2b2lkIHNldEdlb2xvY2F0aW9uUGVy
bWlzc2lvbihib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAK
aW5kZXggNGQ2ZTkwOWFiZDJhLi41MDBjNzFkNWE0YTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC02OTYsNiArNjk2LDcgQEAgV0tSZXRhaW5QdHI8V0tQ
YWdlQ29uZmlndXJhdGlvblJlZj4gVGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3Vy
YXRpb24oY28KICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbm90aWZpY2F0aW9uTWFuYWdl
ciA9IFdLQ29udGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIobV9jb250ZXh0LmdldCgpKTsKICAg
ICBXS05vdGlmaWNhdGlvblByb3ZpZGVyVjAgbm90aWZpY2F0aW9uS2l0ID0gbV93ZWJOb3RpZmlj
YXRpb25Qcm92aWRlci5wcm92aWRlcigpOwogICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFBy
b3ZpZGVyKG5vdGlmaWNhdGlvbk1hbmFnZXIsICZub3RpZmljYXRpb25LaXQuYmFzZSk7CisgICAg
V0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0
U2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFnZXIoKSwgJm5vdGlmaWNhdGlvbktp
dC5iYXNlKTsKIAogICAgIGlmICh0ZXN0UGx1Z2luRGlyZWN0b3J5KCkpCiAgICAgICAgIFdLQ29u
dGV4dFNldEFkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgdGVzdFBs
dWdpbkRpcmVjdG9yeSgpKTsKQEAgLTcxNyw2ICs3MTgsMjQgQEAgV0tSZXRhaW5QdHI8V0tQYWdl
Q29uZmlndXJhdGlvblJlZj4gVGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRp
b24oY28KICAgICByZXR1cm4gcGFnZUNvbmZpZ3VyYXRpb247CiB9CiAKK2Jvb2wgVGVzdENvbnRy
b2xsZXI6OmdyYW50Tm90aWZpY2F0aW9uUGVybWlzc2lvbihXS1N0cmluZ1JlZiBvcmlnaW5TdHJp
bmcpCit7CisgICAgbV93ZWJOb3RpZmljYXRpb25Qcm92aWRlci5zZXRQZXJtaXNzaW9uKHRvV1RG
U3RyaW5nKG9yaWdpblN0cmluZyksIHRydWUpOworCisgICAgYXV0byBvcmlnaW4gPSBhZG9wdFdL
KFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tU3RyaW5nKG9yaWdpblN0cmluZykpOworICAgIFdL
Tm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9saWN5KFdL
Tm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5h
Z2VyKCksIG9yaWdpbi5nZXQoKSwgdHJ1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
VGVzdENvbnRyb2xsZXI6OmRlbnlOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdLU3RyaW5nUmVmIG9y
aWdpblN0cmluZykKK3sKKyAgICBtX3dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLnNldFBlcm1pc3Np
b24odG9XVEZTdHJpbmcob3JpZ2luU3RyaW5nKSwgZmFsc2UpOworCisgICAgYXV0byBvcmlnaW4g
PSBhZG9wdFdLKFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tU3RyaW5nKG9yaWdpblN0cmluZykp
OworICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9u
UG9saWN5KFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb25NYW5hZ2VyKCksIG9yaWdpbi5nZXQoKSwgZmFsc2UpOworICAgIHJldHVybiB0cnVlOwor
fQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoY29uc3Qg
VGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0byBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIgPSBvcHRpb25zLmFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOwpAQCAtMjM1OSw2
ICsyMzc4LDExIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9u
Q2xpY2soV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKQogICAgIG1fd2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIuc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhtYWluV2ViVmlldygpLT5wYWdlKCks
IG5vdGlmaWNhdGlvbklEKTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6c2ltdWxhdGVXZWJO
b3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25zKCkKK3sKKyAgICBt
X3dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JT
ZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpOworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpz
ZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBlbmFibGVkKQogewogICAgIG1faXNHZW9sb2Nh
dGlvblBlcm1pc3Npb25TZXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oCmluZGV4IGI1MmFmNjY1NTUyYi4uZTI0YWMzMjAzNGFkIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0xMjcsNiArMTI3LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0QmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUoYm9vbCB2YWx1ZSkgeyBtX2JlZm9yZVVu
bG9hZFJldHVyblZhbHVlID0gdmFsdWU7IH0KIAogICAgIHZvaWQgc2ltdWxhdGVXZWJOb3RpZmlj
YXRpb25DbGljayhXS0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgc2ltdWxhdGVX
ZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25zKCk7CiAKICAg
ICAvLyBHZW9sb2NhdGlvbi4KICAgICB2b2lkIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29s
KTsKQEAgLTM3Myw2ICszNzQsOSBAQCBwdWJsaWM6CiAKICAgICBXS1ByZWZlcmVuY2VzUmVmIHBs
YXRmb3JtUHJlZmVyZW5jZXMoKTsKIAorICAgIGJvb2wgZ3JhbnROb3RpZmljYXRpb25QZXJtaXNz
aW9uKFdLU3RyaW5nUmVmIG9yaWdpbik7CisgICAgYm9vbCBkZW55Tm90aWZpY2F0aW9uUGVybWlz
c2lvbihXS1N0cmluZ1JlZiBvcmlnaW4pOworCiBwcml2YXRlOgogICAgIFdLUmV0YWluUHRyPFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24oY29uc3QgVGVz
dE9wdGlvbnMmKTsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmPiBn
ZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDJjYTQyYzNlZTVj
My4uNmE5MDAzYmNiODMzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcApAQCAtMzk2LDYgKzM5NiwxMSBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZl
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
bWVzc2FnZU5hbWUsICJTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtl
ck5vdGlmaWNhdGlvbnMiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25z
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldEFkZHNWaXNpdGVkTGlua3MiKSkgewogICAgICAg
ICBXS1BhZ2VTZXRBZGRzVmlzaXRlZExpbmtzKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5t
YWluV2ViVmlldygpLT5wYWdlKCksIGJvb2xlYW5WYWx1ZShtZXNzYWdlQm9keSkpOwogICAgICAg
ICByZXR1cm47CkBAIC0xMDI1LDYgKzEwMzAsMTIgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBU
ZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIK
ICAgICAgICAgcmV0dXJuIGFkb3B0V0soV0tVSW50NjRDcmVhdGUoY291bnQpKTsKICAgICB9CiAK
KyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkdyYW50
Tm90aWZpY2F0aW9uUGVybWlzc2lvbiIpKQorICAgICAgICByZXR1cm4gYWRvcHRXSyhXS0Jvb2xl
YW5DcmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmdyYW50Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbihzdHJpbmdWYWx1ZShtZXNzYWdlQm9keSkpKSk7CisKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkRlbnlOb3RpZmljYXRpb25QZXJtaXNz
aW9uIikpCisgICAgICAgIHJldHVybiBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkuZGVueU5vdGlmaWNhdGlvblBlcm1pc3Npb24oc3RyaW5nVmFsdWUo
bWVzc2FnZUJvZHkpKSkpOworICAgICAgICAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIklzRG9pbmdNZWRpYUNhcHR1cmUiKSkKICAgICAgICAgcmV0
dXJuIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5p
c0RvaW5nTWVkaWFDYXB0dXJlKCkpKTsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKaW5kZXggYzg4ZjJlOWY4ZGIyLi5jNTFi
OWFhY2Q5YzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXIuY3BwCkBAIC02NCw2ICs2NCw3IEBAIHN0YXRpYyBXS0RpY3Rpb25hcnlSZWYg
bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIAogV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXI6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyKCkKIHsKKyAgICBtX3Bl
cm1pc3Npb25zID0gYWRvcHRXSyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOwogfQogCiBX
ZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6fldlYk5vdGlmaWNhdGlvblByb3ZpZGVyKCkKQEAgLTg3
LDEwICs4OCwxOSBAQCBXS05vdGlmaWNhdGlvblByb3ZpZGVyVjAgV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXI6OnByb3ZpZGVyKCkKICAgICByZXR1cm4gbm90aWZpY2F0aW9uUHJvdmlkZXI7CiB9CiAK
K3N0YXRpYyBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbm90aWZpY2F0aW9uTWFuYWdlckZvclBh
Z2UoV0tQYWdlUmVmIHBhZ2UpCit7CisgICAgaWYgKHBhZ2UpIHsKKyAgICAgICAgYXV0byBjb250
ZXh0ID0gV0tQYWdlR2V0Q29udGV4dChwYWdlKTsKKyAgICAgICAgcmV0dXJuIFdLQ29udGV4dEdl
dE5vdGlmaWNhdGlvbk1hbmFnZXIoY29udGV4dCk7CisgICAgfQorCisgICAgcmV0dXJuIFdLTm90
aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2Vy
KCk7Cit9CisKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNob3dXZWJOb3RpZmljYXRp
b24oV0tQYWdlUmVmIHBhZ2UsIFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbikKIHsKLSAg
ICBhdXRvIGNvbnRleHQgPSBXS1BhZ2VHZXRDb250ZXh0KHBhZ2UpOwotICAgIGF1dG8gbm90aWZp
Y2F0aW9uTWFuYWdlciA9IFdLQ29udGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIoY29udGV4dCk7
CisgICAgYXV0byBub3RpZmljYXRpb25NYW5hZ2VyID0gbm90aWZpY2F0aW9uTWFuYWdlckZvclBh
Z2UocGFnZSk7CiAgICAgQVNTRVJUKG1fa25vd25NYW5hZ2Vycy5jb250YWlucyhub3RpZmljYXRp
b25NYW5hZ2VyKSk7CiAKICAgICB1aW50NjRfdCBpZGVudGlmaWVyID0gV0tOb3RpZmljYXRpb25H
ZXRJRChub3RpZmljYXRpb24pOwpAQCAtMTE4LDcgKzEyOCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXI6OmNsb3NlV2ViTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlm
aWNhdGlvCiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OmFkZE5vdGlmaWNhdGlvbk1h
bmFnZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXIpCiB7Ci0gICAgQVNTRVJUKCFt
X2tub3duTWFuYWdlcnMuY29udGFpbnMobWFuYWdlcikpOworICAgIEFTU0VSVCghbV9rbm93bk1h
bmFnZXJzLmNvbnRhaW5zKG1hbmFnZXIpIHx8IG1hbmFnZXIgPT0gV0tOb3RpZmljYXRpb25NYW5h
Z2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFnZXIoKSk7CiAgICAgbV9r
bm93bk1hbmFnZXJzLmFkZChtYW5hZ2VyKTsKIH0KIApAQCAtMTQ1LDggKzE1NSwxNCBAQCB2b2lk
IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKFdLTm90
aWZpY2F0aW9uTWFuYWdlclJlZgogCiBXS0RpY3Rpb25hcnlSZWYgV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXI6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkKIHsKLSAgICAvLyBJbml0aWFsIHBlcm1p
c3Npb25zIGFyZSBhbHdheXMgZW1wdHkuCi0gICAgcmV0dXJuIFdLTXV0YWJsZURpY3Rpb25hcnlD
cmVhdGUoKTsKKyAgICBXS1JldGFpbihtX3Blcm1pc3Npb25zLmdldCgpKTsKKyAgICByZXR1cm4g
bV9wZXJtaXNzaW9ucy5nZXQoKTsKK30KKwordm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6
c2V0UGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgYm9vbCBhbGxvd2VkKQoreworICAg
IGF1dG8gd2tBbGxvd2VkID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoYWxsb3dlZCkpOworICAg
IFdLRGljdGlvbmFyeVNldEl0ZW0obV9wZXJtaXNzaW9ucy5nZXQoKSwgdG9XSyhvcmlnaW4pLmdl
dCgpLCB3a0FsbG93ZWQuZ2V0KCkpOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
OjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLUGFnZVJlZiwgV0tEYXRhUmVmIG5vdGlm
aWNhdGlvbklEKQpAQCAtMTU3LDYgKzE3MywxNiBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLUGFnZVJlZiwgV0tEYXRhUmVmCiAg
ICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbl9iKG1f
b3duaW5nTWFuYWdlci5nZXQoaWRlbnRpZmllciksIG5vdGlmaWNhdGlvbklEKTsKIH0KIAordm9p
ZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0Zv
clNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25zKCkKK3sKKyAgICBhdXRvIHNoYXJlZE1hbmFnZXIg
PSBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
TWFuYWdlcigpOworICAgIGZvciAoYXV0byYgaXRlcmF0b3IgOiBtX293bmluZ01hbmFnZXIpIHsK
KyAgICAgICAgaWYgKGl0ZXJhdG9yLnZhbHVlICE9IHNoYXJlZE1hbmFnZXIpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbGlj
a05vdGlmaWNhdGlvbl9iKHNoYXJlZE1hbmFnZXIsIHV1aWRUb0RhdGEoaXRlcmF0b3Iua2V5KS5n
ZXQoKSk7CisgICAgfQorfQorCiB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZXNldCgp
CiB7CiAgICAgZm9yIChhdXRvIGl0ZXJhdG9yIDogbV9vd25pbmdNYW5hZ2VyKSB7CkBAIC0xNjYs
NiArMTkyLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cmVzZXQoKQogICAgIH0K
IAogICAgIG1fb3duaW5nTWFuYWdlci5jbGVhcigpOworICAgIG1fcGVybWlzc2lvbnMgPSBhZG9w
dFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdU
UgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92
aWRlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5o
CmluZGV4IDBjMzg3YTZlNmI1NS4uNTdiNmNmYWE1MTJlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oCkBAIC00OSwxMSArNDksMTYgQEAg
cHVibGljOgogICAgIFdLRGljdGlvbmFyeVJlZiBub3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwog
CiAgICAgdm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLUGFnZVJlZiwgV0tEYXRh
UmVmIG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xp
Y2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpOworCiAgICAgdm9pZCByZXNldCgpOwog
CisgICAgdm9pZCBzZXRQZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGFsbG93
ZWQpOworCiBwcml2YXRlOgogICAgIEhhc2hTZXQ8V0tSZXRhaW5QdHI8V0tOb3RpZmljYXRpb25N
YW5hZ2VyUmVmPj4gbV9rbm93bk1hbmFnZXJzOwogICAgIEhhc2hNYXA8VVVJRCwgV0tOb3RpZmlj
YXRpb25NYW5hZ2VyUmVmPiBtX293bmluZ01hbmFnZXI7CisgICAgV0tSZXRhaW5QdHI8V0tNdXRh
YmxlRGljdGlvbmFyeVJlZj4gbV9wZXJtaXNzaW9uczsKIH07CiAKIH0K
</data>
<flag name="commit-queue"
          id="478635"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451790</attachid>
            <date>2022-02-12 12:39:53 -0800</date>
            <delta_ts>2022-02-12 14:54:04 -0800</delta_ts>
            <desc>EWS v4</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>106366</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjExNjczMDkyNDhiYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcwpAQCAtMCwwICsxLDMwIEBACisKK2xldCBt
ZXNzYWdlQ2xpZW50cyA9IGFzeW5jIGZ1bmN0aW9uKG1zZykgeyAKKyAgICBjb25zdCBhbGxDbGll
bnRzID0gYXdhaXQgY2xpZW50cy5tYXRjaEFsbCh7CisgICAgICAgIGluY2x1ZGVVbmNvbnRyb2xs
ZWQ6IHRydWUKKyAgICB9KTsKKworICAgIGZvciAoY29uc3QgY2xpZW50IG9mIGFsbENsaWVudHMp
CisgICAgICAgIGNsaWVudC5wb3N0TWVzc2FnZShtc2cpOworfQorCitzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ25vdGlmaWNhdGlvbmNsaWNrJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBh
d2FpdCBtZXNzYWdlQ2xpZW50cygiY2xpY2tlZCIpOworICAgIGV2ZW50Lm5vdGlmaWNhdGlvbi5j
bG9zZSgpOworfSk7CisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcignbm90aWZpY2F0aW9uY2xvc2Un
LCBhc3luYyBmdW5jdGlvbihldmVudCkgeworICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJjbG9z
ZWQiKTsKK30pOworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyBmdW5j
dGlvbihldmVudCkgeworICAgIC8vIFJlcGx5IGlmIHRoZSBzaG93IHN1Y2NlZWRlZCBvciBmYWls
ZWQuCisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgcmVnaXN0cmF0aW9uLnNob3dOb3RpZmljYXRp
b24oIlRoaXMgaXMgYSBub3RpZmljYXRpb24iKTsKKyAgICB9IGNhdGNoKGVycm9yKSB7CisgICAg
ICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJzaG93RmFpbGVkIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoInNob3duIik7Cit9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3Rp
ZmljYXRpb24tYWxsb3dlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmFkNTRiMDI0ZDEzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25v
dGlmaWNhdGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRl
c3RzIHRoYXQgYSBub3RpZmljYXRpb24gc2hvd24gYnkgYSBzZXJ2aWNlIHdvcmtlciBjYW4gYmUg
Y2xpY2tlZCBhbmQgY2xvc2VkLCB3aXRoIHRob3NlIGFjdGlvbnMgYmVpbmcgb2JzZXJ2YWJsZSBi
eSB0aGUgc2VydmljZSB3b3JrZXIKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgTm90aWZpY2F0aW9uLnBlcm1pc3Npb24gaXMgImdyYW50ZWQiCitQQVNTIGdvdENsaWNrZWQg
aXMgZmFsc2UKK1BBU1MgZ290Q2xvc2VkIGlzIGZhbHNlCitQQVNTIGdvdENsaWNrZWQgaXMgdHJ1
ZQorUEFTUyBnb3RDbG9zZWQgaXMgZmFsc2UKK1BBU1MgQ2xvc2UgaGFzIGJlZW4gb2JzZXJ2ZWQK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hv
d25vdGlmaWNhdGlvbi1hbGxvd2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFkNGEwMDE1Njc5NQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24t
YWxsb3dlZC5odG1sCkBAIC0wLDAgKzEsNzYgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
bm90aWZpY2F0aW9ucy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlv
biBmYWlsVGhlVGVzdChtc2cpCit7CisgICAgdGVzdEZhaWxlZChtc2cpOworICAgIGlmICh0ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVz
dFJ1bm5lci5ncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24odGVzdFVSTCk7CisgICAgc2V0
VGltZW91dCgiZmFpbFRoZVRlc3QoJ3RpbWVkIG91dCcpIiwgMTUwMDApOworfQorCitkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uIHNob3duIGJ5IGEgc2VydmljZSB3
b3JrZXIgY2FuIGJlIGNsaWNrZWQgYW5kIGNsb3NlZCwgd2l0aCB0aG9zZSBhY3Rpb25zIGJlaW5n
IG9ic2VydmFibGUgYnkgdGhlIHNlcnZpY2Ugd29ya2VyIik7CisKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygiTm90aWZpY2F0aW9uLnBlcm1pc3Npb24iLCAiZ3JhbnRlZCIpOworCithc3luYyBmdW5j
dGlvbiByZWdpc3RlclNlcnZpY2VXb3JrZXIoKSB7CisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3
YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCdyZXNvdXJjZXMvc2hvd25vdGlm
aWNhdGlvbi13b3JrZXIuanMnKTsKKyAgICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAg
ICAgcmV0dXJuIHRlc3RGYWlsZWQoIk5vIHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChy
ZWdpc3RyYXRpb24uYWN0aXZlKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1l
c3NhZ2UoIlN0YXJ0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFs
bGluZ1dvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGlu
Z1dvcmtlcikKKyAgICAgICAgZmFpbFRoZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcg
d29ya2VyIik7CisKKyAgICBpbnN0YWxsaW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRl
Y2hhbmdlIiwgKCkgPT4geworICAgICAgICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0g
ImFjdGl2YXRlZCIpIHsKKyAgICAgICAgICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2Uo
InRyeXNob3ciKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCit2YXIgZ290Q2xpY2tlZCA9IGZh
bHNlOwordmFyIGdvdENsb3NlZCA9IGZhbHNlOworCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5kYXRh
ID09ICJzaG93RmFpbGVkIikgeworICAgICAgICBmYWlsVGhlVGVzdCgiVW5leHBlY3RlZGx5IHJl
Y2VpdmVkIHRoZSBmYWlsZWQtdG8tc2hvdyBtZXNzYWdlIik7CisgICAgfSBlbHNlIGlmIChldmVu
dC5kYXRhID09ICJzaG93biIpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9ucygpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xpY2tlZCIp
IHsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZ290Q2xpY2tlZCIpOworICAgICAgICBzaG91bGRC
ZUZhbHNlKCJnb3RDbG9zZWQiKTsKKyAgICAgICAgZ290Q2xpY2tlZCA9IHRydWU7CisgICAgfSBl
bHNlIGlmIChldmVudC5kYXRhID09ICJjbG9zZWQiKSB7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgi
Z290Q2xpY2tlZCIpCisgICAgICAgIHNob3VsZEJlRmFsc2UoImdvdENsb3NlZCIpCisgICAgICAg
IGdvdENsb3NlZCA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTWVz
c2FnZSByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOworICAgIH0KKyAgICAKKyAgICBpZiAoZ290
Q2xvc2VkKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNsb3NlIGhhcyBiZWVuIG9ic2VydmVkIik7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgIH0KK30pOworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0icmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkiPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5p
ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
c2hvd25vdGlmaWNhdGlvbi1kZW5pZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uMjAxOGE0M2U1ZGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5p
ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgbm90aWZp
Y2F0aW9uIHNob3duIGJ5IGEgc2VydmljZSB3b3JrZXIgY2FuIGJlIGNsaWNrZWQgYW5kIGNsb3Nl
ZCwgd2l0aCB0aG9zZSBhY3Rpb25zIGJlaW5nIG9ic2VydmFibGUgYnkgdGhlIHNlcnZpY2Ugd29y
a2VyCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIE5vdGlmaWNhdGlvbi5w
ZXJtaXNzaW9uIGlzICJkZW5pZWQiCitQQVNTIE5vdGlmaWNhdGlvbiBmYWlsZWQgdG8gc2hvdwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zaG93
bm90aWZpY2F0aW9uLWRlbmllZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5pZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjc3NDZmN2M2NmU0NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tZGVu
aWVkLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy9ub3Rp
ZmljYXRpb25zLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGZh
aWxUaGVUZXN0KG1zZykKK3sKKyAgICB0ZXN0RmFpbGVkKG1zZyk7CisgICAgaWYgKHRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVu
bmVyLmRlbnlXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKHRlc3RVUkwpOworICAgIHNldFRpbWVv
dXQoImZhaWxUaGVUZXN0KCd0aW1lZCBvdXQnKSIsIDE1MDAwKTsKK30KKworZGVzY3JpcHRpb24o
IlRoaXMgdGVzdHMgdGhhdCBhIG5vdGlmaWNhdGlvbiBzaG93biBieSBhIHNlcnZpY2Ugd29ya2Vy
IGNhbiBiZSBjbGlja2VkIGFuZCBjbG9zZWQsIHdpdGggdGhvc2UgYWN0aW9ucyBiZWluZyBvYnNl
cnZhYmxlIGJ5IHRoZSBzZXJ2aWNlIHdvcmtlciIpOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmco
Ik5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIiwgImRlbmllZCIpOworCithc3luYyBmdW5jdGlvbiBy
ZWdpc3RlclNlcnZpY2VXb3JrZXIoKSB7CisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5h
dmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCdyZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlv
bi13b3JrZXIuanMnKTsKKyAgICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAgICAgcmV0
dXJuIHRlc3RGYWlsZWQoIk5vIHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChyZWdpc3Ry
YXRpb24uYWN0aXZlKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1lc3NhZ2Uo
IlN0YXJ0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFsbGluZ1dv
cmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGluZ1dvcmtl
cikKKyAgICAgICAgZmFpbFRoZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcgd29ya2Vy
Iik7CisKKyAgICBpbnN0YWxsaW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRlY2hhbmdl
IiwgKCkgPT4geworICAgICAgICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0gImFjdGl2
YXRlZCIpIHsKKyAgICAgICAgICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2UoInRyeXNo
b3ciKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5kYXRh
ID09ICJzaG93RmFpbGVkIikgeworICAgICAgICB0ZXN0UGFzc2VkKCJOb3RpZmljYXRpb24gZmFp
bGVkIHRvIHNob3ciKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09
ICJzaG93biIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTm90aWZpY2F0aW9uIHNob3duLCBidXQg
c2hvdWxkbid0IGhhdmUgYmVlbiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQo
Ik1lc3NhZ2UgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKKyAgICB9Cit9KTsKKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJlZ2lzdGVyU2VydmljZVdvcmtlcigpIj4KKzwv
Ym9keT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlc0ludGVybmFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2Vi
UHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCmluZGV4IDhkM2VlZDEzOTU0Zi4uMDFiMmY1ZTZiODFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXNJbnRlcm5hbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlc0ludGVybmFsLnlhbWwKQEAgLTY0NCw4ICs2NDQsMTAgQEAgTm90aWZpY2F0aW9u
RXZlbnRFbmFibGVkOgogICBjb25kaXRpb246IEVOQUJMRShOT1RJRklDQVRJT05fRVZFTlQpCiAg
IGRlZmF1bHRWYWx1ZToKICAgICBXZWJDb3JlOgorICAgICAgIkVOQUJMRShOT1RJRklDQVRJT05f
RVZFTlQpIjogdHJ1ZQogICAgICAgZGVmYXVsdDogZmFsc2UKICAgICBXZWJLaXQ6CisgICAgICAi
RU5BQkxFKE5PVElGSUNBVElPTl9FVkVOVCkiOiB0cnVlCiAgICAgICBkZWZhdWx0OiBmYWxzZQog
CiBPZmZzY3JlZW5DYW52YXNFbmFibGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCA2ODViMWU0ZDFhM2EuLjA4
ZTJhOGVkOGI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTQwLDcgKzQwLDkgQEAKICNpbmNsdWRlICJKU0RP
TVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgogI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25FdmVudC5o
IgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIgorI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldpbmRvd0V2ZW50TG9vcC5o
IgogI2luY2x1ZGUgIldpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtMTAyLDkgKzEwNCwxOSBAQCB2b2lkIE5vdGlmaWNh
dGlvbjo6c2hvdygpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjbGllbnQtPmNoZWNrUGVy
bWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpICE9IFBlcm1pc3Npb246OkdyYW50ZWQp
IHsKLSAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisgICAgICAgIHN3aXRjaCAobV9ub3Rp
ZmljYXRpb25Tb3VyY2UpIHsKKyAgICAgICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3Vt
ZW50OgorICAgICAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OlNlcnZpY2VXb3JrZXI6CisgICAg
ICAgICAgICAvLyBXZSBkaWQgYSBwZXJtaXNzaW9uIGNoZWNrIHdoZW4gU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbjo6c2hvd05vdGlmaWNhdGlvbigpIHdhcyBjYWxsZWQuCisgICAgICAgICAgICAv
LyBJZiBwZXJtaXNzaW9uIGhhcyBzaW5jZSBiZWVuIHJldm9rZWQsIHRoZW4gc2lsZW50bHkgZmFp
bGluZyBoZXJlIGlzIGV4cGVjdGVkIGJlaGF2aW9yLgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKwogICAgICAgICByZXR1cm47CiAgICAgfQorCiAgICAgaWYgKGNsaWVudC0+c2hvdygq
dGhpcykpCiAgICAgICAgIG1fc3RhdGUgPSBTaG93aW5nOwogfQpAQCAtMTU4LDIwICsxNzAsNTQg
QEAgdm9pZCBOb3RpZmljYXRpb246OmZpbmFsaXplKCkKIAogdm9pZCBOb3RpZmljYXRpb246OmRp
c3BhdGNoU2hvd0V2ZW50KCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
aWYgKG1fbm90aWZpY2F0aW9uU291cmNlICE9IE5vdGlmaWNhdGlvblNvdXJjZTo6RG9jdW1lbnQp
CisgICAgICAgIHJldHVybjsKKwogICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywg
VGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5z
aG93RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykp
OwogfQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbGlja0V2ZW50KCkKIHsKLSAgICBx
dWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFj
dGlvbiwgW3RoaXNdIHsKLSAgICAgICAgV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yIHdpbmRv
d0ZvY3VzQWxsb3dlZDsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKLSAgICB9KTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
c3dpdGNoIChtX25vdGlmaWNhdGlvblNvdXJjZSkgeworICAgIGNhc2UgTm90aWZpY2F0aW9uU291
cmNlOjpEb2N1bWVudDoKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlz
LCBUYXNrU291cmNlOjpVc2VySW50ZXJhY3Rpb24sIFt0aGlzXSB7CisgICAgICAgICAgICBXaW5k
b3dGb2N1c0FsbG93ZWRJbmRpY2F0b3Igd2luZG93Rm9jdXNBbGxvd2VkOworICAgICAgICAgICAg
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgfSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTm90aWZpY2F0aW9uU291cmNlOjpTZXJ2aWNlV29y
a2VyOgorICAgICAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwor
ICAgICAgICBpZiAoIWNvbnRleHQpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBSRUxF
QVNFX0FTU0VSVChjb250ZXh0LT5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKj4oY29udGV4dCktPnBvc3RU
YXNrVG9GaXJlTm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGljaywg
KnRoaXMsIHsgfSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAogdm9pZCBOb3RpZmljYXRp
b246OmRpc3BhdGNoQ2xvc2VFdmVudCgpCiB7Ci0gICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50
KCp0aGlzLCBUYXNrU291cmNlOjpVc2VySW50ZXJhY3Rpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmNsb3NlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxh
YmxlOjpObykpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzd2l0Y2ggKG1f
bm90aWZpY2F0aW9uU291cmNlKSB7CisgICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3Vt
ZW50OgorICAgICAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6
OlVzZXJJbnRlcmFjdGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xvc2VFdmVudCwg
RXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTm90aWZpY2F0aW9uU291cmNlOjpTZXJ2aWNlV29ya2VyOgorICAg
ICAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgICAgICBp
ZiAoIWNvbnRleHQpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBSRUxFQVNFX0FTU0VS
VChjb250ZXh0LT5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKj4oY29udGV4dCktPnBvc3RUYXNrVG9GaXJl
Tm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbG9zZSwgKnRoaXMsIHsg
fSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGZpbmFsaXplKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25F
dmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uRXZlbnQuY3BwCmluZGV4IDU4NzRiNzYxMDJmZi4uZTFkMjk3Yjk2YTEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25FdmVudC5jcHAKQEAgLTMwLDYgKzMwLDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE5vdGlmaWNhdGlvbkV2ZW50KTsKKworUmVmPE5v
dGlmaWNhdGlvbkV2ZW50PiBOb3RpZmljYXRpb25FdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21TdHJp
bmcmIHR5cGUsIEluaXQmJiBpbml0LCBJc1RydXN0ZWQgaXNUcnVzdGVkKQoreworICAgIGF1dG8q
IG5vdGlmaWNhdGlvbiA9IGluaXQubm90aWZpY2F0aW9uLmdldCgpOworICAgIGF1dG8gYWN0aW9u
ID0gaW5pdC5hY3Rpb247CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTm90aWZpY2F0aW9uRXZl
bnQodHlwZSwgV1RGTW92ZShpbml0KSwgbm90aWZpY2F0aW9uLCBhY3Rpb24sIGlzVHJ1c3RlZCkp
OworfQorCitSZWY8Tm90aWZpY2F0aW9uRXZlbnQ+IE5vdGlmaWNhdGlvbkV2ZW50OjpjcmVhdGUo
Y29uc3QgQXRvbVN0cmluZyYgdHlwZSwgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sIGNvbnN0
IFN0cmluZyYgYWN0aW9uLCBJc1RydXN0ZWQgaXNUcnVzdGVkKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE5vdGlmaWNhdGlvbkV2ZW50KHR5cGUsIHsgfSwgbm90aWZpY2F0aW9uLCBhY3Rp
b24sIGlzVHJ1c3RlZCkpOworfQorCitOb3RpZmljYXRpb25FdmVudDo6Tm90aWZpY2F0aW9uRXZl
bnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgTm90aWZpY2F0aW9uRXZlbnRJbml0JiYgZXZlbnRJ
bml0LCBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgY29uc3QgU3RyaW5nJiBhY3Rpb24sIElz
VHJ1c3RlZCBpc1RydXN0ZWQpCisgICAgOiBFeHRlbmRhYmxlRXZlbnQodHlwZSwgV1RGTW92ZShl
dmVudEluaXQpLCBpc1RydXN0ZWQpCisgICAgLCBtX25vdGlmaWNhdGlvbihub3RpZmljYXRpb24p
CisgICAgLCBtX2FjdGlvbihhY3Rpb24pCit7Cit9CisKIE5vdGlmaWNhdGlvbkV2ZW50Ojp+Tm90
aWZpY2F0aW9uRXZlbnQoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaAppbmRleCA5MjdlYjUwMWFkOWIu
LmIyMWMyZWQ4NGFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkV2ZW50LmgKQEAgLTMzLDE0ICszMywyNSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0gY2xhc3MgTm90aWZpY2F0aW9uRXZlbnRUeXBlIDog
Ym9vbCB7CisgICAgQ2xpY2ssCisgICAgQ2xvc2UsCit9OworCitzdHJ1Y3QgTm90aWZpY2F0aW9u
RXZlbnRJbml0IDogRXh0ZW5kYWJsZUV2ZW50SW5pdCB7CisgICAgUmVmUHRyPE5vdGlmaWNhdGlv
bj4gbm90aWZpY2F0aW9uOworICAgIFN0cmluZyBhY3Rpb247Cit9OworCiBjbGFzcyBOb3RpZmlj
YXRpb25FdmVudCBmaW5hbCA6IHB1YmxpYyBFeHRlbmRhYmxlRXZlbnQgeworICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoTm90aWZpY2F0aW9uRXZlbnQpOwogcHVibGljOgogICAgIH5Ob3RpZmlj
YXRpb25FdmVudCgpOwogCi0gICAgc3RydWN0IEluaXQgOiBFeHRlbmRhYmxlRXZlbnRJbml0IHsK
LSAgICAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uOwotICAgICAgICBTdHJp
bmcgYWN0aW9uOwotICAgIH07CisgICAgdXNpbmcgSW5pdCA9IE5vdGlmaWNhdGlvbkV2ZW50SW5p
dDsKKworICAgIHN0YXRpYyBSZWY8Tm90aWZpY2F0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
U3RyaW5nJiwgSW5pdCYmLCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsKKyAgICBzdGF0aWMg
UmVmPE5vdGlmaWNhdGlvbkV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYsIE5vdGlmaWNh
dGlvbiosIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsK
IAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gTm90aWZpY2F0aW9uRXZlbnRJbnRlcmZhY2VUeXBlOyB9CiAKQEAgLTQ4LDYgKzU5LDggQEAg
cHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uKCkgeyByZXR1cm4gbV9hY3Rpb247IH0K
IAogcHJpdmF0ZToKKyAgICBOb3RpZmljYXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiwgTm90
aWZpY2F0aW9uRXZlbnRJbml0JiYsIE5vdGlmaWNhdGlvbiosIGNvbnN0IFN0cmluZyYgYWN0aW9u
LCBJc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKTsKKwogICAgIFJlZlB0cjxOb3RpZmljYXRpb24+
IG1fbm90aWZpY2F0aW9uOwogICAgIFN0cmluZyBtX2FjdGlvbjsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRW1wdHlTY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRW1wdHlTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMjMxYjNiZjFj
YTk4Li43MWM3MmVmOWM5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbXB0eVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRW1wdHlTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTk0LDYgKzk0LDEwIEBAIHByaXZhdGU6CiAKICAgICBj
b25zdCBTZXR0aW5nczo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fc2V0dGluZ3NWYWx1ZXM7IH0KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAg
IE5vdGlmaWNhdGlvbkNsaWVudCogbm90aWZpY2F0aW9uQ2xpZW50KCkgZmluYWwgeyByZXR1cm4g
bnVsbHB0cjsgfQorI2VuZGlmCisKICAgICBjbGFzcyBFbXB0eUV2ZW50TG9vcCBmaW5hbCA6IHB1
YmxpYyBFdmVudExvb3AgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFJlZjxFbXB0eUV2
ZW50TG9vcD4gY3JlYXRlKEpTQzo6Vk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgKaW5kZXggZDAwMGQ1OWQ1YTA1Li4wNzI3YjFmMTRhMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtODAsNiArODAs
MTAgQEAgZW51bSBjbGFzcyBMb2FkZWRGcm9tT3BhcXVlU291cmNlIDogdWludDhfdDsKIGVudW0g
Y2xhc3MgUmVmZXJyZXJQb2xpY3kgOiB1aW50OF90OwogZW51bSBjbGFzcyBUYXNrU291cmNlIDog
dWludDhfdDsKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorY2xhc3MgTm90aWZpY2F0aW9u
Q2xpZW50OworI2VuZGlmCisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiBjbGFzcyBTZXJ2
aWNlV29ya2VyOwogY2xhc3MgU2VydmljZVdvcmtlckNvbnRhaW5lcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggY2JmMjZjYjE1YmQ1Li4zZmU1
MWZkMWU0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oCkBAIC00MDMsNyArNDAzLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5P
VElGSUNBVElPTl9FVkVOVCkKLSAgICBib29sIG1fbm90aWZpY2F0aW9uRXZlbnRFbmFibGVkIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fbm90aWZpY2F0aW9uRXZlbnRFbmFibGVkIHsgdHJ1ZSB9Owog
I2VuZGlmCiAKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNvY29hLm1tCmluZGV4IDI5OWZjNGJkMmViYy4uMTBiZTAwY2NlMDAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTE4Myw3ICsxODMsNyBAQCBSZXRh
aW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9u
KENGU3RyaW5nUmVmIGlkZW50aQogCiAgICAgaWYgKHNob3VsZERpc2FibGVDRlVSTENhY2hlID09
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6U2hvdWxkRGlzYWJsZUNGVVJMQ2FjaGU6Olllcykgewog
I2lmIEhBVkUoQ0ZORVRXT1JLX0RJU0FCTEVfQ0FDSEVfU1BJKQotICAgICAgICBfQ0ZVUkxTdG9y
YWdlU2Vzc2lvbkRpc2FibGVDYWNoZShzdG9yYWdlU2Vzc2lvbi5nZXQoKSk7CisgICAgICAgIC8v
X0NGVVJMU3RvcmFnZVNlc3Npb25EaXNhYmxlQ2FjaGUoc3RvcmFnZVNlc3Npb24uZ2V0KCkpOwog
I2Vsc2UKICAgICAgICAgc2hvdWxkRGlzYWJsZUNGVVJMQ2FjaGUgPSBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OlNob3VsZERpc2FibGVDRlVSTENhY2hlOjpObzsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDFk
OGUzYWQyYWNiOS4uYTBkMTZkNzQ3MDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC05NCw2ICs5NCwxMCBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9p
ZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKKyNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIG5vdGlmaWNhdGlvbkNsaWVudCgp
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgorCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI+IG1fc2NyaXB0OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTY3JpcHRNb2R1bGVMb2FkZXI+IG1fbW9kdWxlTG9hZGVyOwogICAgIFdvcmtl
ck9yV29ya2xldFRocmVhZCogbV90aHJlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuaAppbmRleCBiNGY3Njk0YzZiMWUuLmRjOTc3NGU5MmU3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeS5oIgogI2luY2x1ZGUgIkZldGNoUmVxdWVzdENyZWRlbnRpYWxzLmgiCisjaW5j
bHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbi5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xl
dFRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJU
eXBlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDkwNGQ0ZmM4OGNhYS4uZjMzYjljMDYz
ZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkV2ZW50Lmgi
CiAjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50LmgiCkBAIC02OSw3ICs3MCwxMyBAQCBT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmJiBjbwogewogfQogCi1TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6
On5TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSA9IGRlZmF1bHQ7CitTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU6On5TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKQoreworICAgIC8vIE5vdGlmaWNh
dGlvbkNsaWVudCBtaWdodCBoYXZlIHNvbWUgaW50ZXJhY3Rpb25zIHBlbmRpbmcgd2l0aCB0aGUg
bWFpbiB0aHJlYWQsCisgICAgLy8gc28gaXQgc2hvdWxkIGFsc28gYmUgZGVzdHJveWVkIHRoZXJl
LgorICAgIGNhbGxPbk1haW5UaHJlYWQoW25vdGlmaWNhdGlvbkNsaWVudCA9IFdURk1vdmUobV9u
b3RpZmljYXRpb25DbGllbnQpXSB7CisgICAgfSk7Cit9CiAKIHZvaWQgU2VydmljZVdvcmtlckds
b2JhbFNjb3BlOjpub3RpZnlTZXJ2aWNlV29ya2VyUGFnZU9mQ3JlYXRpb25JZk5lY2Vzc2FyeSgp
CiB7CkBAIC0yMDgsNiArMjE1LDMwIEBAIHZvaWQgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpk
aWRTYXZlU2NyaXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiBzY3JpcHQsIEhhc2hNCiAgICAgfQog
fQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTl9FVkVOVCkKK3ZvaWQgU2VydmljZVdvcmtlckds
b2JhbFNjb3BlOjpwb3N0VGFza1RvRmlyZU5vdGlmaWNhdGlvbkV2ZW50KE5vdGlmaWNhdGlvbkV2
ZW50VHlwZSBldmVudFR5cGUsIE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBjb25zdCBTdHJp
bmcmIGFjdGlvbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgdGhyZWFk
KCkucnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbZXZlbnRUeXBlLCBwcm90ZWN0ZWROb3RpZmlj
YXRpb24gPSBSZWYgeyBub3RpZmljYXRpb24gfSwgYWN0aW9uID0gYWN0aW9uLmlzb2xhdGVkQ29w
eSgpXShhdXRvJiBzY29wZSkgeworICAgICAgICBzY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2so
VGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbJnNjb3BlLCBwcm90ZWN0ZWRTY29wZSA9IFJl
ZiB7IHNjb3BlIH0sIGV2ZW50VHlwZSwgcHJvdGVjdGVkTm90aWZpY2F0aW9uLCBhY3Rpb25dIHsK
KyAgICAgICAgICAgIEF0b21TdHJpbmcgZXZlbnROYW1lOworICAgICAgICAgICAgc3dpdGNoIChl
dmVudFR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGlj
azoKKyAgICAgICAgICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkubm90aWZpY2F0aW9u
Y2xpY2tFdmVudDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTm90
aWZpY2F0aW9uRXZlbnRUeXBlOjpDbG9zZToKKyAgICAgICAgICAgICAgICBldmVudE5hbWUgPSBl
dmVudE5hbWVzKCkubm90aWZpY2F0aW9uY2xvc2VFdmVudDsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byBldmVudCA9IE5vdGlmaWNhdGlv
bkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBwcm90ZWN0ZWROb3RpZmljYXRpb24ucHRyKCksIGFj
dGlvbiwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CisgICAgICAgICAgICBzdGF0
aWNfY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmPihzY29wZSkuZGlzcGF0Y2hFdmVudChl
dmVudCk7CisgICAgICAgIH0pOworICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkp
OworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCAwNzA3OWYxOTUzNDMuLjUx
MGMxYjA3MmI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMzksMTEgKzM5LDE0IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIEV4dGVuZGFibGVF
dmVudDsKIGNsYXNzIFBhZ2U7Ci1zdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGE7CiBjbGFz
cyBTZXJ2aWNlV29ya2VyQ2xpZW50OwogY2xhc3MgU2VydmljZVdvcmtlckNsaWVudHM7CiBjbGFz
cyBTZXJ2aWNlV29ya2VyVGhyZWFkOwogCitlbnVtIGNsYXNzIE5vdGlmaWNhdGlvbkV2ZW50VHlw
ZSA6IGJvb2w7CisKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsKKwogY2xhc3MgU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlIGZpbmFsIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3BlIHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk7CiBw
dWJsaWM6CkBAIC04MCw3ICs4MywxMSBAQCBwdWJsaWM6CiAgICAgRmV0Y2hPcHRpb25zOjpEZXN0
aW5hdGlvbiBkZXN0aW5hdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEZldGNoT3B0aW9uczo6
RGVzdGluYXRpb246OlNlcnZpY2V3b3JrZXI7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2Uq
IHNlcnZpY2VXb3JrZXJQYWdlKCk7Ci0gICAgCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VW
RU5UKQorICAgIHZvaWQgcG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChOb3RpZmljYXRp
b25FdmVudFR5cGUsIE5vdGlmaWNhdGlvbiYsIGNvbnN0IFN0cmluZyYgYWN0aW9uKTsKKyNlbmRp
ZgorCiBwcml2YXRlOgogICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmJiwgU2VydmljZVdvcmtlckRhdGEmJiwgY29uc3QgV29ya2VyUGFyYW1ldGVy
cyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgU2VydmljZVdvcmtlclRocmVhZCYsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Kiwg
U29ja2V0UHJvdmlkZXIqLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiYmLCBQ
QUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBub3RpZnlTZXJ2aWNlV29ya2VyUGFnZU9mQ3JlYXRp
b25JZk5lY2Vzc2FyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDUwMTc4MWY3MGQ1
Zi4uMTVmMmI2YmNmNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0zMCwxMCArMzAs
MTMgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25QcmVsb2FkTWFuYWdlci5oIgorI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb24u
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNv
bnRhaW5lci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgpAQCAtMjY0LDIwICsy
NjcsMzggQEAgTmF2aWdhdGlvblByZWxvYWRNYW5hZ2VyJiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uOjpuYXZpZ2F0aW9uUHJlbG9hZCgpCiB9CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VW
RU5UKQotdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBOb3RpZmlj
YXRpb25PcHRpb25zJiBvcHRpb25zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNl
KQordm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE5v
dGlmaWNhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsKLSAgICBVTlVTRURfUEFSQU0ob3B0
aW9ucyk7CisgICAgaWYgKCFtX2FjdGl2ZVdvcmtlcikgeworICAgICAgICBwcm9taXNlLnJlamVj
dChFeGNlcHRpb24geyBUeXBlRXJyb3IsICJSZWdpc3RyYXRpb24gZG9lcyBub3QgaGF2ZSBhbiBh
Y3RpdmUgd29ya2VyIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byog
Y2xpZW50ID0gY29udGV4dC5ub3RpZmljYXRpb25DbGllbnQoKTsKKyAgICBpZiAoIWNsaWVudCkg
eworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsICJSZWdpc3Ry
YXRpb24gbm90IGFjdGl2ZSJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIHBy
b21pc2UucmVqZWN0KCk7CisgICAgaWYgKGNsaWVudC0+Y2hlY2tQZXJtaXNzaW9uKCZjb250ZXh0
KSAhPSBOb3RpZmljYXRpb25QZXJtaXNzaW9uOjpHcmFudGVkKSB7CisgICAgICAgIHByb21pc2Uu
cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlJlZ2lzdHJhdGlvbiBkb2VzIG5vdCBoYXZl
IHBlcm1pc3Npb24gdG8gc2hvdyBub3RpZmljYXRpb25zIl9zIH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gVGhlIE5vdGlmaWNhdGlvbiBpcyBrZXB0IGFsaXZlIGJ5IHZpcnR1
ZSBvZiBiZWluZyBzaG93KCknbiBzb29uLgorICAgIC8vIEZJWE1FOiBXaGVuIGltcGxlbWVudGlu
ZyBnZXROb3RpZmljYXRpb25zKCksIHN0b3JlIHRoaXMgTm90aWZpY2F0aW9uIGluIHRoZSByZWdp
c3RyYXRpb24ncyBub3RpZmljYXRpb24gbGlzdC4KKyAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IE5v
dGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnRleHQsIHRpdGxlLCBvcHRpb25zKTsKKworICAgIGNvbnRl
eHQuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgpIG11dGFibGUgeworICAgICAgICBwcm9taXNlLnJl
c29sdmUoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpn
ZXROb3RpZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBHZXROb3RpZmlj
YXRpb25PcHRpb25zJiBmaWx0ZXIsIERPTVByb21pc2VEZWZlcnJlZDxJRExTZXF1ZW5jZTxJRExE
T01TdHJpbmc+PiBwcm9taXNlKQogewogICAgIFVOVVNFRF9QQVJBTShmaWx0ZXIpOwogCi0gICAg
cHJvbWlzZS5yZWplY3QoKTsKLQorICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciwgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uZ2V0Tm90aWZpY2F0aW9ucyBub3QgeWV0
IGltcGxlbWVudGVkIl9zIH0pOwogfQogI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05fRVZF
TlQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBjMGUwMzYzNmIxODkuLjAwYzA0MmQ0ZmYwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFF1
ZXJ5T3B0aW9ucy5oIgpAQCAtNzAsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsK
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCA9IDA7CisgICAg
ICAgIHZpcnR1YWwgUGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIoKSBjb25zdCA9IDAgOwog
CiAgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc2VkOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggOGM4MWM3YjEwN2VjLi5lMmU0MDhiMTA5
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0yNzksNiArMjc5LDEwIEBAIHZv
aWQgU2VydmljZVdvcmtlclRocmVhZDo6c3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
LCBib29sKT4mJiBjYWxsYmFjaykKICAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7CiAKICAgICBX
b3JrZXJUaHJlYWQ6OnN0YXJ0KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XShhdXRvJiBlcnJvck1lc3NhZ2UpIG11dGFibGUgeworI2lm
bmRlZiBOREVCVUcKKyAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciB0aHJlYWQgZmFpbGVkIHRv
IHN0YXJ0OiAlcyIsIGVycm9yTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgogICAgICAg
ICBib29sIGRvZXNIYW5kbGVGZXRjaCA9IHRydWU7CiAgICAgICAgIGlmICh3ZWFrVGhpcykgewog
ICAgICAgICAgICAgd2Vha1RoaXMtPmZpbmlzaGVkU3RhcnRpbmcoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmgKaW5kZXggMGE0YmM3ZmY0OTQyLi5lNWNiNWMxZGQxNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIENh
Y2hlU3RvcmFnZVByb3ZpZGVyOwogY2xhc3MgRmV0Y2hMb2FkZXI7CiBjbGFzcyBGZXRjaExvYWRl
ckNsaWVudDsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOworY2xhc3MgTm90aWZpY2F0aW9uQ2xp
ZW50OwogY2xhc3MgU2VydmljZVdvcmtlckluc3BlY3RvclByb3h5Owogc3RydWN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTsKIGVudW0gY2xhc3MgV29ya2VyVGhyZWFkTW9kZSA6IGJvb2w7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
CmluZGV4IDM5ZmUxYjc4N2RhNy4uOGUyYmE4OTRiOWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTYzLDYgKzE2Myw3
IEBAIHZvaWQgU1dTZXJ2ZXI6OndoZW5JbXBvcnRJc0NvbXBsZXRlZElmTmVlZGVkKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjCiAKIHZvaWQgU1dTZXJ2ZXI6OnJlZ2lzdHJhdGlv
blN0b3JlRGF0YWJhc2VGYWlsZWRUb09wZW4oKQogeworICAgIExPRyhTZXJ2aWNlV29ya2VyLCAi
RmFpbGVkIHRvIG9wZW4gU1cgcmVnaXN0cmF0aW9uIGRhdGFiYXNlIik7CiAgICAgQVNTRVJUKCFt
X2ltcG9ydENvbXBsZXRlZCk7CiAgICAgaWYgKCFtX2ltcG9ydENvbXBsZXRlZCkKICAgICAgICAg
cmVnaXN0cmF0aW9uU3RvcmVJbXBvcnRDb21wbGV0ZSgpOwpAQCAtMTczLDYgKzE3NCw4IEBAIHZv
aWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmJiBkYXRhKQogICAgIC8vIFBhZ2VzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFibGUgdG8g
bWFrZSBhIG5ldyByZWdpc3RyYXRpb24gdG8gdGhpcyBrZXkgd2hpbGUgdGhlIGltcG9ydCB3YXMg
c3RpbGwgdGFraW5nIHBsYWNlLgogICAgIEFTU0VSVCghbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFw
LmNvbnRhaW5zKGRhdGEucmVnaXN0cmF0aW9uLmtleSkpOwogCisgICAgTE9HKFNlcnZpY2VXb3Jr
ZXIsICJBZGRpbmcgcmVnaXN0cmF0aW9uIGZyb20gc3RvcmUgZm9yICVzIiwgZGF0YS5yZWdpc3Ry
YXRpb24ua2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIGF1dG8gcmVn
aXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbihkYXRhLnNjcmlwdFVS
TCk7CiAgICAgdmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4ocmVnaXN0cmFibGVEb21haW4sIFNl
cnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlciwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSAoYm9vbCBpc1ZhbGlkKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTE5OCw2ICsyMDEsOCBAQCB2b2lkIFNXU2VydmVy
OjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySQogCiB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVf
cHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJhdGlvbikKIHsKKyAgICBMT0coU2Vy
dmljZVdvcmtlciwgIkFkZGluZyByZWdpc3RyYXRpb24gbGl2ZSBmb3IgJXMiLCByZWdpc3RyYXRp
b24tPmtleSgpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIGlmICghbV9z
Y29wZVRvUmVnaXN0cmF0aW9uTWFwLmNvbnRhaW5zKHJlZ2lzdHJhdGlvbi0+a2V5KCkpICYmICFT
ZWN1cml0eU9yaWdpbjo6aXNMb2NhbEhvc3RPckxvb3BiYWNrSVBBZGRyZXNzKHJlZ2lzdHJhdGlv
bi0+a2V5KCkudG9wT3JpZ2luKCkuaG9zdCkpCiAgICAgICAgIG1fdW5pcXVlUmVnaXN0cmF0aW9u
Q291bnQrKzsKIApAQCAtMTIyNCwyMCArMTIyOSwyNCBAQCB2b2lkIFNXU2VydmVyOjpzb2Z0VXBk
YXRlKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCiB2b2lkIFNXU2VydmVyOjpw
cm9jZXNzUHVzaE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYgZGF0YSwg
VVJMJiYgcmVnaXN0cmF0aW9uVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNh
bGxiYWNrKQogewogICAgIHdoZW5JbXBvcnRJc0NvbXBsZXRlZElmTmVlZGVkKFt0aGlzLCB3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgcmVnaXN0cmF0
aW9uVVJMID0gV1RGTW92ZShyZWdpc3RyYXRpb25VUkwpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBMT0coUHVzaCwgIlNlcnZpY2VXb3JrZXIgaW1w
b3J0IGlzIGNvbXBsZXRlLCBjYW4gaGFuZGxlIHB1c2ggbWVzc2FzZ2Ugbm93Iik7CiAgICAgICAg
IGlmICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQorCiAgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tVVJMKHJlZ2lzdHJhdGlvblVSTCk7CiAgICAgICAgIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0aW9uS2V5IHsgV1RGTW92ZShvcmlnaW4pLCBXVEZN
b3ZlKHJlZ2lzdHJhdGlvblVSTCkgfTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBtX3Nj
b3BlVG9SZWdpc3RyYXRpb25NYXAuZ2V0KHJlZ2lzdHJhdGlvbktleSk7CiAgICAgICAgIGlmICgh
cmVnaXN0cmF0aW9uKSB7CisgICAgICAgICAgICBMT0coUHVzaCwgIkNhbm5vdCBwcm9jZXNzIHB1
c2ggbWVzc2FzZ2U6IEZhaWxlZCB0byBmaW5kIFNXIHJlZ2lzdHJhdGlvbiBmb3IgcmVnaXN0cmF0
aW9uIGtleSAlcyIsIHJlZ2lzdHJhdGlvbktleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCiAgICAgICAgIGF1dG8qIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi0+YWN0aXZlV29y
a2VyKCk7CiAgICAgICAgIGlmICghd29ya2VyKSB7CisgICAgICAgICAgICBMT0coUHVzaCwgIkNh
bm5vdCBwcm9jZXNzIHB1c2ggbWVzc2FzZ2U6IE5vIGFjdGl2ZSB3b3JrZXIgZm9yIHJlZ2lzdHJh
dGlvbiBrZXkgJXMiLCByZWdpc3RyYXRpb25LZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTEyNTMsNyArMTI2Miw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnByb2Nlc3NQdXNo
TWVzc2FnZShzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiBkYXRhLCBVUkwmJiByCiAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlRlcm1pbmF0
aW5nIHNlcnZpY2Ugd29ya2VyIGFzIHByb2Nlc3NpbmcgcHVzaCBldmVudCB0b29rIHRvbyBtdWNo
IHRpbWUiKTsKICAgICAgICAgICAgICAgICB3b3JrZXItPnRlcm1pbmF0ZSgpOwogICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVXb3JrZXJUaW1lci0+c3RhcnRPbmVTaG90KHdl
YWtUaGlzICYmIHdlYWtUaGlzLT5tX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID8g
ZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgOiAyX3MpOworICAgICAgICAgICAgLy90ZXJtaW5hdGVX
b3JrZXJUaW1lci0+c3RhcnRPbmVTaG90KHdlYWtUaGlzICYmIHdlYWtUaGlzLT5tX2lzUHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID8gZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgOiAyX3Mp
OwogICAgICAgICAgICAgY29ubmVjdGlvbk9yU3RhdHVzLnZhbHVlKCktPmZpcmVQdXNoRXZlbnQo
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIGRhdGEsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCB0ZXJtaW5hdGVXb3JrZXJUaW1lciA9IFdURk1vdmUodGVybWluYXRlV29ya2VyVGltZXIp
XShib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRlcm1pbmF0
ZVdvcmtlclRpbWVyLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hdGVX
b3JrZXJUaW1lci0+c3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAppbmRleCAxNzViZDM4MTY0NzQuLmVjNzM1MmQ4MTIwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIy
NTQsMTcgKzIyNTQsMjIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UGVuZGluZ1B1c2hNZXNz
YWdlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb24KIHsKICNpZiBFTkFCTEUo
QlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJOZXR3b3Jr
UHJvY2VzcyBnZXR0aW5nIHBlbmRpbmcgcHVzaCBtZXNzYWdlcyBmb3Igc2Vzc2lvbiBJRCAlbGx1
Iiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwogICAgICAgICBzZXNzaW9uLT5ub3RpZmljYXRpb25N
YW5hZ2VyKCkuZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIExPRyhOb3RpZmljYXRpb25z
LCAiTmV0d29ya1Byb2Nlc3MgY291bGQgbm90IGZpbmQgc2Vzc2lvbiBmb3IgSUQgJWxsdSB0byBn
ZXQgcGVuZGluZyBwdXNoIG1lc3NhZ2VzIiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwogI2VuZGlm
CiAgICAgY2FsbGJhY2soeyB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1
c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiBwdXNo
TWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKLSAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIExP
RyhQdXNoLCAiTmV0d29ya2luZyBwcm9jZXNzIGhhbmRsaW5nIGEgcHVzaCBtZXNzYWdlIGZyb20g
VUkgcHJvY2VzcyBpbiBzZXNzaW9uICVsbHUiLCBzZXNzaW9uSUQudG9VSW50NjQoKSk7CiAgICAg
ICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkucHJvY2Vzc1B1c2hNZXNzYWdlKFdURk1vdmUo
cHVzaE1lc3NhZ2UucHVzaERhdGEpLCBXVEZNb3ZlKHB1c2hNZXNzYWdlLnJlZ2lzdHJhdGlvblVS
TCksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICB9IGVsc2UKKyAgICAgICAgTE9HKFB1c2gsICJO
ZXR3b3JraW5nIHByb2Nlc3MgYXNrZWQgdG8gaGFuZGxlIGEgcHVzaCBtZXNzYWdlIGZyb20gVUkg
cHJvY2VzcyBpbiBzZXNzaW9uICVsbHUsIGJ1dCB0aGF0IHNlc3Npb24gZG9lc24ndCBleGlzdCIs
IHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0
aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmlu
ZGV4IDE3Y2VmOTE0YWI4Ni4uNDg2Y2I1YjNkZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTkzLDEzICs5MywxNCBAQCB2b2lkIE5ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25Q
ZXJtaXNzaW9ucyhDbwogdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Z2V0UGVuZGlu
Z1B1c2hNZXNzYWdlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNo
TWVzc2FnZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4mJik+IHJlcGx5SGFuZGxlciA9IFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVjdG9yPFdlYlB1c2hN
ZXNzYWdlPiYmIG1lc3NhZ2VzKSBtdXRhYmxlIHsKKyAgICAgICAgTE9HKFB1c2gsICJEb25lIGdl
dHRpbmcgcHVzaCBtZXNzYWdlcyIpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KG1lc3NhZ2VzKSk7CiAgICAgfTsKIAogICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PFdlYlB1c2hE
OjpNZXNzYWdlVHlwZTo6R2V0UGVuZGluZ1B1c2hNZXNzYWdlcz4oV1RGTW92ZShyZXBseUhhbmRs
ZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvd05vdGlmaWNh
dGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikKK3ZvaWQgTmV0d29ya05vdGlm
aWNhdGlvbk1hbmFnZXI6OnNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29uc3Qg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
LmgKaW5kZXggYTkyYmQyZjViZDE3Li41MmE2Mzg0YmFiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9O
ZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAg
ICAgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJp
bmcmIHdlYlB1c2hNYWNoU2VydmljZU5hbWUpOwogCiAgICAgdm9pZCByZXF1ZXN0U3lzdGVtTm90
aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7Ci0gICAgdm9pZCBzaG93Tm90aWZpY2F0aW9u
KGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHNob3dO
b3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGF0YSYpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5v
dGlmaWNhdGlvbklEKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBW
ZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7CiAgICAgdm9pZCBkaWREZXN0cm95
Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9Mb2dnaW5nLmgKaW5kZXggZGUzMmY4MTcxNzE1Li43MzZjZjZjZWZhN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vTG9nZ2luZy5oCkBAIC04MCw2ICs4MCw3IEBAIGV4dGVybiAiQyIgewogICAgIE0o
TmV0d29ya0NhY2hlU3RvcmFnZSkgXAogICAgIE0oTmV0d29ya1NjaGVkdWxpbmcpIFwKICAgICBN
KE5ldHdvcmtTZXNzaW9uKSBcCisgICAgTShOb3RpZmljYXRpb25zKSBcCiAgICAgTShQZXJmb3Jt
YW5jZUxvZ2dpbmcpIFwKICAgICBNKFBsdWdpbnMpIFwKICAgICBNKFByaW50aW5nKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAppbmRleCBhN2UzNmNkY2ExODEu
LjlmOTk2YWExMzZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ci5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBzZWN1cml0eU9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlm
aWNhdGlvbklEcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9u
KGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluCmluZGV4IDQ4OWIwYjZhZDBm
Ny4uMzdjY2RkZjFmYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBAQAogCiBtZXNzYWdlcyAt
PiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIgTm90UmVmQ291bnRlZCB7CiAgICAg
UmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oU3RyaW5nIG9yaWdpbklkZW50aWZp
ZXIpIC0+IChib29sIGFsbG93ZWQpIEFzeW5jCi0gICAgU2hvd05vdGlmaWNhdGlvbihzdHJ1Y3Qg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSBub3RpZmljYXRpb25EYXRhKQorICAgIFNob3dOb3Rp
ZmljYXRpb24oc3RydWN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEgbm90aWZpY2F0aW9uRGF0
YSkgV2FudHNDb25uZWN0aW9uCiAgICAgQ2FuY2VsTm90aWZpY2F0aW9uKFVVSUQgbm90aWZpY2F0
aW9uSUQpCiAgICAgQ2xlYXJOb3RpZmljYXRpb25zKFZlY3RvcjxVVUlEPiBub3RpZmljYXRpb25J
RHMpCiAgICAgRGlkRGVzdHJveU5vdGlmaWNhdGlvbihVVUlEIG5vdGlmaWNhdGlvbklEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKaW5kZXggMDY3NzBkMGRmYzdkLi5mMzhiM2VkNzAxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAt
NTg1LDYgKzU4NSw3IEBAIFVJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRy
YXRvclByb3h5LmNwcAogVUlQcm9jZXNzL01lZGlhL01lZGlhVXNhZ2VNYW5hZ2VyLmNwcAogVUlQ
cm9jZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwCiAKK1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmNw
cAogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcAogVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAog
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5vdGlmaWNhdGlvblBy
b3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTm90aWZpY2F0aW9uUHJv
dmlkZXIuaAppbmRleCBjNDgxM2FhNTE2NTAuLmY3M2M1ODhmNjU0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAg
LTQyLDcgKzQyLDcgQEAgY2xhc3MgTm90aWZpY2F0aW9uUHJvdmlkZXIgewogcHVibGljOgogICAg
IHZpcnR1YWwgfk5vdGlmaWNhdGlvblByb3ZpZGVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVh
bCB2b2lkIHNob3coV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlv
biYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzaG93KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKFdlYktp
dDo6V2ViTm90aWZpY2F0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lOb3Rp
ZmljYXRpb24oV2ViS2l0OjpXZWJOb3RpZmljYXRpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIC8qbm90aWZpY2F0aW9u
SURzKi8pIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tO
b3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggODJiYjk1MWU1YzFlLi5kNTM4ZGI1NDA3Nzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9u
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcApAQCAtNzgsMyArNzgsOCBAQCB2b2lkIFdLTm90aWZpY2F0aW9uTWFu
YWdlclByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoV0tOb3RpZmljYXRpb25N
YQogewogICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRp
b25Qb2xpY2llcyh0b0ltcGwob3JpZ2lucykpOwogfQorCitXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYgV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlv
bk1hbmFnZXIoKQoreworICAgIHJldHVybiB0b0FQSSgmV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKaW5kZXggNzll
ZGJmNThjZTQzLi4zNGJiNWVjMGIxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC00Myw2ICs0Myw4IEBAIFdL
X0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmlj
YXRpb25zKFdLTm90aWZpY2F0aW9uCiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJQcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFn
ZXJSZWYgbWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGJvb2wgYWxsb3dl
ZCk7CiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFJlbW92
ZU5vdGlmaWNhdGlvblBvbGljaWVzKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVm
LCBXS0FycmF5UmVmIG9yaWdpbnMpOwogCitXS19FWFBPUlQgV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UmVmIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b25NYW5hZ2VyKCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bQppbmRleCBmOTEzNDgzZGVkYTAuLmVhYTJhZDYyMTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0z
OCw2ICszOCw3IEBACiAjaW1wb3J0ICJXS1NlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhUmVjb3JkSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQdXNoTWVzc2FnZS5oIgogI2ltcG9ydCAi
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCkBAIC02NTksNiArNjYwLDEyIEBAIHN0
YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9XZWJzaXRlRGF0YVJlY29y
ZHMoTlNBcnJheSAqZGF0YVJlY29yCiAgICAgcmV0dXJuIHdyYXBwZXIoX3dlYnNpdGVEYXRhU3Rv
cmUtPmNvbmZpZ3VyYXRpb24oKS5jb3B5KCkpOwogfQogCisrIChXS05vdGlmaWNhdGlvbk1hbmFn
ZXJSZWYpX3NoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyCit7CisgICAgTE9H
KFB1c2gsICJBY2Nlc3NpbmcgX3NoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2Vy
Iik7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpKTsKK30KKwogLSAodm9pZClf
YWxsb3dUTFNDZXJ0aWZpY2F0ZUNoYWluOihOU0FycmF5ICopY2VydGlmaWNhdGVDaGFpbiBmb3JI
b3N0OihOU1N0cmluZyAqKWhvc3QKIHsKICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+YWxsb3dTcGVj
aWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbygoX19i
cmlkZ2UgQ0ZBcnJheVJlZiljZXJ0aWZpY2F0ZUNoYWluKSwgaG9zdCk7CkBAIC03NzEsMTIgKzc3
OCwxNSBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0
ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogCiAtKHZvaWQpX2dldFBlbmRpbmdQdXNo
TWVzc2FnZXM6KHZvaWQoXikoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKKyAgICBMT0coUHVzaCwgIkdldHRpbmcgcGVuZGluZyBwdXNoIG1lc3NhZ2VzIik7
CisKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5l
dHdvcmtQcm9jZXNzKCkuZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhfd2Vic2l0ZURhdGFTdG9yZS0+
c2Vzc2lvbklEKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildIChjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQdXNoTWVzc2FnZT4mIG1lc3NhZ2Vz
KSB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5Om1lc3NhZ2VzLnNpemUoKV0pOwogICAgICAgICBmb3IgKGF1dG8m
IG1lc3NhZ2UgOiBtZXNzYWdlcykKICAgICAgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0Om1lc3Nh
Z2UudG9EaWN0aW9uYXJ5KCldOwogCisgICAgICAgIExPRyhQdXNoLCAiR2l2aW5nIGFwcGxpY2F0
aW9uICV1IHBlbmRpbmcgcHVzaCBtZXNzYWdlcyIsIG1lc3NhZ2VzLnNpemUoKSk7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdC5nZXQoKSk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTc4
NywxMSArNzk3LDE0IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4g
dG9XZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIGF1dG8gcHVzaE1lc3NhZ2UgPSBXZWJLaXQ6OldlYlB1c2hNZXNzYWdl
Ojpmcm9tRGljdGlvbmFyeShwdXNoTWVzc2FnZURpY3Rpb25hcnkpOwogICAgIGlmICghcHVzaE1l
c3NhZ2UpIHsKKyAgICAgICAgTE9HKFB1c2gsICJBc2tlZCB0byBoYW5kbGUgYW4gaW52YWxpZCBw
dXNoIG1lc3NhZ2UiKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCisgICAgTE9HKFB1c2gsICJTZW5kaW5nIHB1c2ggbWVzc2FnZSB0
byBuZXR3b3JrIHByb2Nlc3MgdG8gaGFuZGxlIik7CiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5l
dHdvcmtQcm9jZXNzKCkucHJvY2Vzc1B1c2hNZXNzYWdlKF93ZWJzaXRlRGF0YVN0b3JlLT5zZXNz
aW9uSUQoKSwgKnB1c2hNZXNzYWdlLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCB3YXNQcm9jZXNzZWQpIHsKKyAgICAgICAgTE9HKFB1
c2gsICJQdXNoIG1lc3NhZ2UgcHJvY2Vzc2luZyBjb21wbGV0ZS4gQ2FsbGJhY2sgcmVzdWx0OiAl
aSIsIHdhc1Byb2Nlc3NlZCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdhc1Byb2Nlc3Nl
ZCk7CiAgICAgfSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDMxYTg1
NDA3NDE0ZC4uYzM2ZTExMzFmMDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTk2
LDYgKzk2LDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRh
U3RvcmVGZXRjaE9wdGlvbnMpIHsKIEBwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21pYywgd2Vh
aykgaWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4gX2RlbGVnYXRlIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5LCBjb3B5KSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqX2NvbmZpZ3Vy
YXRpb247CiAKKysgKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZilfc2hhcmVkU2VydmljZVdvcmtl
ck5vdGlmaWNhdGlvbk1hbmFnZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfdGVybWluYXRlTmV0d29ya1Byb2Nlc3MgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3NlbmROZXR3
b3JrUHJvY2Vzc1ByZXBhcmVUb1N1c3BlbmQ6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRs
ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3Nl
bmROZXR3b3JrUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEyLjApLCBpb3MoMTUuMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4
IDU1MTYzNjQ0Nzc1NS4uODRjNmFiODU2OTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIu
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBzaG93KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24p
IG92ZXJyaWRlCisgICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViTm90aWZpY2F0
aW9uJiBub3RpZmljYXRpb24pIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX3Byb3ZpZGVyLnNo
b3cocGFnZSwgbm90aWZpY2F0aW9uKTsKICAgICB9CkBAIC0xMTUsMTAgKzExNSwxNiBAQCB2b2lk
IFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyOjp3aXRoZHJhd0FueVByZXZpb3VzTm90aWZpY2F0
aW9uTWF0Y2hpbmdUYWcoY29ucwogI2VuZGlmCiB9CiAKLXZvaWQgV2ViS2l0Tm90aWZpY2F0aW9u
UHJvdmlkZXI6OnNob3coV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXZWJOb3RpZmljYXRpb24m
IHdlYk5vdGlmaWNhdGlvbikKK3ZvaWQgV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OnNob3co
V2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJOb3RpZmljYXRpb24mIHdlYk5vdGlmaWNhdGlv
bikKIHsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAgICAgLy8gRklYTUU6IGdsaWIgbmVlZHMgdG8g
ZmluZCB0aGVpciBvd24gc29sdXRpb24gdG8gaGFuZGxpbmcgcGFnZWxlc3Mgbm90aWZpY2F0aW9u
cy4KKyAgICAgICAgLy8gSSB3b24ndCBtYWtlIHNvbWV0aGluZyB1cCBmb3IgdGhlbS4KKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBHUmVmUHRyPFdlYktpdE5vdGlmaWNhdGlvbj4g
bm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldCh3ZWJOb3RpZmljYXRpb24ubm90aWZp
Y2F0aW9uSUQoKSk7Ci0gICAgYXV0byogd2ViVmlldyA9IHdlYmtpdFdlYkNvbnRleHRHZXRXZWJW
aWV3Rm9yUGFnZShtX3dlYkNvbnRleHQsICZwYWdlKTsKKyAgICBhdXRvKiB3ZWJWaWV3ID0gd2Vi
a2l0V2ViQ29udGV4dEdldFdlYlZpZXdGb3JQYWdlKG1fd2ViQ29udGV4dCwgcGFnZSk7CiAgICAg
QVNTRVJUKHdlYlZpZXcpOwogCiAgICAgaWYgKCFub3RpZmljYXRpb24pIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3Zp
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRp
b25Qcm92aWRlci5oCmluZGV4IDM2Yjc4MzQzODgwZC4uYmU1MjIwZDUwZWE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92
aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlm
aWNhdGlvblByb3ZpZGVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIFdlYktpdE5v
dGlmaWNhdGlvblByb3ZpZGVyKFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSosIFdlYktpdFdl
YkNvbnRleHQqKTsKICAgICB+V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKTsKIAotICAgIHZv
aWQgc2hvdyhXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJOb3RpZmljYXRpb24mKTsKKyAgICB2b2lk
IHNob3coV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViTm90aWZpY2F0aW9uJik7CiAgICAgdm9pZCBj
YW5jZWwoY29uc3QgV2ViTm90aWZpY2F0aW9uJik7CiAgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlv
bnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvU2VydmljZVdvcmtl
ck5vdGlmaWNhdGlvbkhhbmRsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uMzYzZDhjMTI0Mjc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5j
cHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIgorCisjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGF0YS5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRs
ZXImIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOjpzaW5nbGV0b24oKQoreworICAg
IHN0YXRpYyBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlciYgaGFuZGxlciA9ICpuZXcg
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI7CisgICAgcmV0dXJuIGhhbmRsZXI7Cit9
CisKK1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOjpTZXJ2aWNlV29ya2VyTm90aWZp
Y2F0aW9uSGFuZGxlcigpCit7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhh
bmRsZXI6OnJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpCit7CisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworV2Vic2l0ZURhdGFTdG9yZSogU2VydmljZVdvcmtlck5vdGlm
aWNhdGlvbkhhbmRsZXI6OmRhdGFTdG9yZUZvck5vdGlmaWNhdGlvbklEKGNvbnN0IFVVSUQmIG5v
dGlmaWNhdGlvbklEKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX25vdGlmaWNhdGlvblRvU2Vz
c2lvbk1hcC5maW5kKG5vdGlmaWNhdGlvbklEKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9ub3Rp
ZmljYXRpb25Ub1Nlc3Npb25NYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklE
KGl0ZXJhdG9yLT52YWx1ZSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhh
bmRsZXI6OnNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhKQoreworICAgIGF1dG8qIGRhdGFTdG9y
ZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKGRhdGEu
c291cmNlU2Vzc2lvbik7CisgICAgaWYgKCFkYXRhU3RvcmUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fbm90aWZpY2F0aW9uVG9TZXNzaW9uTWFwLnNldChkYXRhLm5vdGlmaWNhdGlvbklELCBk
YXRhLnNvdXJjZVNlc3Npb24pOworICAgIGRhdGFTdG9yZS0+c2hvd1NlcnZpY2VXb3JrZXJOb3Rp
ZmljYXRpb24oY29ubmVjdGlvbiwgZGF0YSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5vdGlm
aWNhdGlvbkhhbmRsZXI6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRp
b25JRCkKK3sKKyAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gZGF0YVN0b3JlRm9yTm90aWZpY2F0
aW9uSUQobm90aWZpY2F0aW9uSUQpKQorICAgICAgICBkYXRhU3RvcmUtPmNhbmNlbFNlcnZpY2VX
b3JrZXJOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOworfQorCit2b2lkIFNlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb25IYW5kbGVyOjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVV
SUQ+JiBub3RpZmljYXRpb25JRHMpCit7CisgICAgZm9yIChhdXRvJiBub3RpZmljYXRpb25JRCA6
IG5vdGlmaWNhdGlvbklEcykgeworICAgICAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gZGF0YVN0
b3JlRm9yTm90aWZpY2F0aW9uSUQobm90aWZpY2F0aW9uSUQpKQorICAgICAgICAgICAgZGF0YVN0
b3JlLT5jbGVhclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOworICAg
IH0KK30KKwordm9pZCBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6ZGlkRGVzdHJv
eU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKK3sKKyAgICBpZiAoYXV0
byogZGF0YVN0b3JlID0gZGF0YVN0b3JlRm9yTm90aWZpY2F0aW9uSUQobm90aWZpY2F0aW9uSUQp
KQorICAgICAgICBkYXRhU3RvcmUtPmRpZERlc3Ryb3lTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
KG5vdGlmaWNhdGlvbklEKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3Rp
ZmljYXRpb25IYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5lZDUxMjBjOTY1NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b25IYW5kbGVyLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIgOiBwdWJsaWMgTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbkhhbmRsZXImIHNpbmdsZXRvbigpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0
IFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyKCk7CisKKyAgICB2b2lkIHJlcXVlc3RT
eXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihJUEM6
OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikgZmluYWw7Cisg
ICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpIGZp
bmFsOworICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90
aWZpY2F0aW9uSURzKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29u
c3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOworCisgICAgV2Vic2l0ZURhdGFTdG9yZSog
ZGF0YVN0b3JlRm9yTm90aWZpY2F0aW9uSUQoY29uc3QgVVVJRCYpOworCisgICAgSGFzaE1hcDxV
VUlELCBQQUw6OlNlc3Npb25JRD4gbV9ub3RpZmljYXRpb25Ub1Nlc3Npb25NYXA7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcAppbmRleCBiOGRhNzFiYjBmZDYu
LmI5MDE4NDIxMTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oY29u
c3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciBwYWdlSWRlbnRpZmllcikKK1dlYk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKGNvbnN0
IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgc291cmNlQ29ubmVjdGlvbikKICAgICA6
IG1fdGl0bGUoZGF0YS50aXRsZSkKICAgICAsIG1fYm9keShkYXRhLmJvZHkpCiAgICAgLCBtX2lj
b25VUkwoZGF0YS5pY29uVVJMKQpAQCAtNDAsNiArNDAsNyBAQCBXZWJOb3RpZmljYXRpb246Oldl
Yk5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQ
YWdlUAogICAgICwgbV9vcmlnaW4oQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhkYXRhLm9yaWdpblN0cmluZykpCiAgICAgLCBtX2NvcmVOb3RpZmljYXRpb25JRChkYXRhLm5v
dGlmaWNhdGlvbklEKQogICAgICwgbV9wYWdlSWRlbnRpZmllcihwYWdlSWRlbnRpZmllcikKKyAg
ICAsIG1fc291cmNlQ29ubmVjdGlvbihzb3VyY2VDb25uZWN0aW9uKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b24uaAppbmRleCBiYzc4MmZiZWZmZjMuLmU4OTQyNjMzZDQxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oCkBA
IC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElT
ZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00MSw5ICs0Miw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJOb3RpZmljYXRpb24gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2Jq
ZWN0OjpUeXBlOjpOb3RpZmljYXRpb24+LCBwdWJsaWMgSWRlbnRpZmllZDxXZWJOb3RpZmljYXRp
b24+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYk5vdGlmaWNhdGlvbj4gY3JlYXRlKGNv
bnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxXZWJOb3RpZmljYXRpb24+IGNyZWF0
ZShjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIHNvdXJjZUNvbm5lY3Rpb24p
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJOb3RpZmljYXRpb24oZGF0
YSwgcGFnZUlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTm90
aWZpY2F0aW9uKGRhdGEsIHBhZ2VJZGVudGlmaWVyLCBzb3VyY2VDb25uZWN0aW9uKSk7CiAgICAg
fQogCiAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0K
QEAgLTU4LDkgKzU5LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBVVUlEJiBjb3JlTm90aWZpY2F0
aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2NvcmVOb3RpZmljYXRpb25JRDsgfQogCiAgICAgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZUlkZW50aWZpZXI7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24qIHNvdXJjZUNvbm5lY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZUNvbm5lY3Rpb24uZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAg
ICBXZWJOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIpOworICAgIFdlYk5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpO
b3RpZmljYXRpb25EYXRhJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9u
Jik7CiAKICAgICBTdHJpbmcgbV90aXRsZTsKICAgICBTdHJpbmcgbV9ib2R5OwpAQCAtNzIsNiAr
NzQsNyBAQCBwcml2YXRlOgogICAgIFVVSUQgbV9jb3JlTm90aWZpY2F0aW9uSUQ7CiAKICAgICBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CisgICAgV2Vha1B0cjxJUEM6
OkNvbm5lY3Rpb24+IG1fc291cmNlQ29ubmVjdGlvbjsKIH07CiAKIGlubGluZSBib29sIGlzTm90
aWZpY2F0aW9uSURWYWxpZCh1aW50NjRfdCBpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAppbmRleCBkMDY3Y2VmMDk2NGEuLjRjNjg0
ZDljOWQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3Nh
Z2VIYW5kbGVyLmNwcApAQCAtNDAsOSArNDAsOSBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlcjo6cmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oYwog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlcjo6c2hvd05vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEpCiB7Ci0gICAgbV93ZWJQYWdl
UHJveHkuc2hvd05vdGlmaWNhdGlvbihkYXRhKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5zaG93Tm90
aWZpY2F0aW9uKGNvbm5lY3Rpb24sIGRhdGEpOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlcjo6Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlm
aWNhdGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VI
YW5kbGVyLmgKaW5kZXggYTZkYjAzMzdiN2U1Li41MjUwNWU5ZDI1NjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzcsNyArMzcs
NyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlcihXZWJQYWdlUHJveHkmKTsKIAogICAgIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNh
dGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJikgZmluYWw7Ci0gICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkRhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oSVBDOjpD
b25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpIGZpbmFsOwogICAg
IHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5h
bDsKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlm
aWNhdGlvbklEcykgZmluYWw7CiAgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0
IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5LmNwcAppbmRleCBkMTNhNTg4MzhlYzYuLjliOGNjMTI5ZjM1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtNDksNiArNDksMTIgQEAgUmVm
PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
OjpjcmVhdGUoV2ViUHJvY2Vzc1AKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkocHJvY2Vzc1Bvb2wpKTsKIH0KIAorV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5JiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3Jr
ZXJNYW5hZ2VyKCkKK3sKKyAgICBzdGF0aWMgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KiBz
aGFyZWRNYW5hZ2VyID0gbmV3IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShudWxscHRyKTsK
KyAgICByZXR1cm4gKnNoYXJlZE1hbmFnZXI7Cit9CisKIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNz
UG9vbCkKICAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQogICAgICwgbV9w
cm92aWRlcihtYWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCkpCkBAIC04OCwy
MSArOTQsMjggQEAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogICAgIHJldHVybiBtX3Byb3ZpZGVyLT5u
b3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eTo6c2hvdyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbkRhdGEmIG5vdGlmaWNhdGlvbkRhdGEpCitzdGF0aWMgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciBpZGVudGlmaWVyRm9yUGFnZVBvaW50ZXIoV2ViUGFnZVByb3h5KiB3ZWJQYWdlKQogewot
ICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUobm90aWZpY2F0
aW9uRGF0YSwgd2ViUGFnZS0+aWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gd2ViUGFnZSA/IHdl
YlBhZ2UtPmlkZW50aWZpZXIoKSA6IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIoKTsKK30KKwordm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdl
LCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkRhdGEmIG5vdGlmaWNhdGlvbkRhdGEpCit7CisgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJXZWJQ
YWdlUHJveHkgKCVwKSBhc2tpbmcgdG8gc2hvdyBub3RpZmljYXRpb24gKCVzKSIsIHdlYlBhZ2Us
IG5vdGlmaWNhdGlvbkRhdGEubm90aWZpY2F0aW9uSUQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKworICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUobm90
aWZpY2F0aW9uRGF0YSwgaWRlbnRpZmllckZvclBhZ2VQb2ludGVyKHdlYlBhZ2UpLCBjb25uZWN0
aW9uKTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQobm90aWZpY2F0aW9uLT5ub3Rp
ZmljYXRpb25JRCgpLCBub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpKTsKICAgICBt
X25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCksIG5v
dGlmaWNhdGlvbik7Ci0gICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0aW9u
LmdldCgpKTsKKyAgICBtX3Byb3ZpZGVyLT5zaG93KHdlYlBhZ2UsIG5vdGlmaWNhdGlvbi5nZXQo
KSk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjYW5jZWwoV2ViUGFn
ZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQpCit2b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKFdlYlBhZ2VQcm94eSosIGNvbnN0IFVV
SUQmIHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKICAgICBpZiAoYXV0byB3ZWJOb3RpZmljYXRpb24g
PSBtX25vdGlmaWNhdGlvbnMuZ2V0KHBhZ2VOb3RpZmljYXRpb25JRCkpCiAgICAgICAgIG1fcHJv
dmlkZXItPmNhbmNlbCgqd2ViTm90aWZpY2F0aW9uKTsKIH0KICAgICAKLXZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSog
d2ViUGFnZSwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5Kiwg
Y29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklEKQogewogICAgIGlmIChhdXRvIHdlYk5vdGlm
aWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy50YWtlKHBhZ2VOb3RpZmljYXRpb25JRCkpIHsKICAg
ICAgICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAucmVtb3ZlKHdlYk5vdGlmaWNhdGlvbi0+bm90
aWZpY2F0aW9uSUQoKSk7CkBAIC0xMTAsMzcgKzEyMywyNiBAQCB2b2lkIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBh
Z2UsCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwYWdlSURzTWF0Y2goV2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlSUQsIGNvbnN0IFVVSUQmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2ly
ZWRQYWdlSUQsIGNvbnN0IFZlY3RvcjxVVUlEPiYpCi17Ci0gICAgcmV0dXJuIHBhZ2VJRCA9PSBk
ZXNpcmVkUGFnZUlEOwotfQotCi1zdGF0aWMgYm9vbCBwYWdlQW5kTm90aWZpY2F0aW9uSURzTWF0
Y2goV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmlj
YXRpb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0
b3I8VVVJRD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQotewotICAgIHJldHVybiBwYWdl
SUQgPT0gZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250YWlu
cyhwYWdlTm90aWZpY2F0aW9uSUQpOwotfQotCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSkKIHsKLSAgICBj
bGVhck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgVmVjdG9yPFVVSUQ+KCksIHBhZ2VJRHNNYXRjaCk7
CisgICAgQVNTRVJUKHdlYlBhZ2UpOworICAgIGNsZWFyTm90aWZpY2F0aW9ucyh3ZWJQYWdlLCB7
IH0pOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmlj
YXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdlTm90
aWZpY2F0aW9uSURzKQogewotICAgIGNsZWFyTm90aWZpY2F0aW9ucyh3ZWJQYWdlLCBwYWdlTm90
aWZpY2F0aW9uSURzLCBwYWdlQW5kTm90aWZpY2F0aW9uSURzTWF0Y2gpOwotfQotCi12b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94
eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZpY2F0aW9uSURzLCBOb3Rp
ZmljYXRpb25GaWx0ZXJGdW5jdGlvbiBmaWx0ZXJGdW5jdGlvbikKLXsKLSAgICBhdXRvIHRhcmdl
dFBhZ2VQcm94eUlEID0gd2ViUGFnZS0+aWRlbnRpZmllcigpOwotCiAgICAgVmVjdG9yPHVpbnQ2
NF90PiBnbG9iYWxOb3RpZmljYXRpb25JRHM7CiAgICAgZ2xvYmFsTm90aWZpY2F0aW9uSURzLnJl
c2VydmVDYXBhY2l0eShtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zaXplKCkpOwogCisgICAgLy8g
V2UgYWx3YXlzIGNoZWNrIHBhZ2UgaWRlbnRpdHkuCisgICAgLy8gSWYgdGhlIHNldCBvZiBub3Rp
ZmljYXRpb24gSURzIGlzIG5vbi1lbXB0eSwgd2UgYWxzbyBjaGVjayB0aGF0LgorICAgIGF1dG8g
dGFyZ2V0UGFnZUlkZW50aWZpZXIgPSBpZGVudGlmaWVyRm9yUGFnZVBvaW50ZXIod2ViUGFnZSk7
CisgICAgYm9vbCBjaGVja05vdGlmaWNhdGlvbklEcyA9ICFwYWdlTm90aWZpY2F0aW9uSURzLmlz
RW1wdHkoKTsKKwogICAgIGZvciAoYXV0byBub3RpZmljYXRpb24gOiBtX25vdGlmaWNhdGlvbnMu
dmFsdWVzKCkpIHsKLSAgICAgICAgYXV0byBwYWdlUHJveHlJRCA9IG5vdGlmaWNhdGlvbi0+cGFn
ZUlkZW50aWZpZXIoKTsKLSAgICAgICAgYXV0byBjb3JlTm90aWZpY2F0aW9uSUQgPSBub3RpZmlj
YXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpOwotICAgICAgICBpZiAoIWZpbHRlckZ1bmN0aW9u
KHBhZ2VQcm94eUlELCBjb3JlTm90aWZpY2F0aW9uSUQsIHRhcmdldFBhZ2VQcm94eUlELCBwYWdl
Tm90aWZpY2F0aW9uSURzKSkKKyAgICAgICAgaWYgKGNoZWNrTm90aWZpY2F0aW9uSURzICYmICFw
YWdlTm90aWZpY2F0aW9uSURzLmNvbnRhaW5zKG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlv
bklEKCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICh0YXJnZXRQYWdlSWRl
bnRpZmllciAhPSBub3RpZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IG5vdGlm
aWNhdGlvbi0+bm90aWZpY2F0aW9uSUQoKTsKQEAgLTE2Nyw0OCArMTY5LDQ2IEBAIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24odWlu
dDY0X3QgZ2xvYmFsTm90CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvKiB3ZWJQ
YWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKG5vdGlmaWNhdGlvbi0+cGFnZUlkZW50aWZp
ZXIoKSk7Ci0gICAgaWYgKCF3ZWJQYWdlKQorICAgIExPRyhOb3RpZmljYXRpb25zLCAiUHJvdmlk
ZXIgZGlkIHNob3cgbm90aWZpY2F0aW9uICglcykiLCBub3RpZmljYXRpb24tPmNvcmVOb3RpZmlj
YXRpb25JRCgpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBhdXRvKiBjb25uZWN0
aW9uID0gbm90aWZpY2F0aW9uLT5zb3VyY2VDb25uZWN0aW9uKCk7CisgICAgaWYgKCFjb25uZWN0
aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkU2hvd05vdGlmaWNhdGlvbihpdC0+dmFs
dWUpLCAwKTsKKyAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpEaWRTaG93Tm90aWZpY2F0aW9uKGl0LT52YWx1ZSksIDApOwogfQogCi12b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1
aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCkKK3N0YXRpYyB2b2lkIGRpc3BhdGNoRGlkQ2xp
Y2tOb3RpZmljYXRpb24oV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgYXV0
byBpdCA9IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmZpbmQoZ2xvYmFsTm90aWZpY2F0aW9uSUQp
OwotICAgIGlmIChpdCA9PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKLSAgICAgICAg
cmV0dXJuOworICAgIExPRyhOb3RpZmljYXRpb25zLCAiUHJvdmlkZXIgZGlkIGNsaWNrIG5vdGlm
aWNhdGlvbiAoJXMpIiwgbm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9uSUQoKS50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgYXV0byBub3RpZmljYXRpb24gPSBtX25vdGlmaWNh
dGlvbnMuZ2V0KGl0LT52YWx1ZSk7Ci0gICAgaWYgKCFub3RpZmljYXRpb24pIHsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKCFub3RpZmljYXRpb24pCiAgICAgICAgIHJl
dHVybjsKLSAgICB9CiAKLSAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQ
YWdlKG5vdGlmaWNhdGlvbi0+cGFnZUlkZW50aWZpZXIoKSk7Ci0gICAgaWYgKCF3ZWJQYWdlKQor
ICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBub3RpZmljYXRpb24tPnNvdXJjZUNvbm5lY3Rpb24oKTsK
KyAgICBpZiAoIWNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYlBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05v
dGlmaWNhdGlvbihpdC0+dmFsdWUpLCAwKTsKKyAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlmaWNhdGlvbihub3RpZmljYXRp
b24tPmNvcmVOb3RpZmljYXRpb25JRCgpKSwgMCk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIGNv
cmVOb3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92
aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEKQog
ewotICAgIGF1dG8gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldChjb3JlTm90aWZp
Y2F0aW9uSUQpOwotICAgIGlmICghbm90aWZpY2F0aW9uKQorICAgIGF1dG8gaXQgPSBtX2dsb2Jh
bE5vdGlmaWNhdGlvbk1hcC5maW5kKGdsb2JhbE5vdGlmaWNhdGlvbklEKTsKKyAgICBpZiAoaXQg
PT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uobm90aWZpY2F0aW9uLT5w
YWdlSWRlbnRpZmllcigpKTsKLSAgICBpZiAoIXdlYlBhZ2UpCi0gICAgICAgIHJldHVybjsKKyAg
ICBkaXNwYXRjaERpZENsaWNrTm90aWZpY2F0aW9uKG1fbm90aWZpY2F0aW9ucy5nZXQoaXQtPnZh
bHVlKSk7Cit9CiAKLSAgICB3ZWJQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmljYXRpb24oY29yZU5vdGlmaWNhdGlvbklE
KSwgMCk7Cit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlj
a05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBjb3JlTm90aWZpY2F0aW9uSUQpCit7CisgICAgZGlz
cGF0Y2hEaWRDbGlja05vdGlmaWNhdGlvbihtX25vdGlmaWNhdGlvbnMuZ2V0KGNvcmVOb3RpZmlj
YXRpb25JRCkpOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlk
ZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoQVBJOjpBcnJheSogZ2xvYmFsTm90aWZpY2F0aW9uSURz
KQogewotICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5KiwgVmVjdG9yPFVVSUQ+PiBwYWdlTm90aWZp
Y2F0aW9uSURzOworICAgIFZlY3RvcjxSZWZQdHI8V2ViTm90aWZpY2F0aW9uPj4gY2xvc2VkTm90
aWZpY2F0aW9uczsKIAogICAgIHNpemVfdCBzaXplID0gZ2xvYmFsTm90aWZpY2F0aW9uSURzLT5z
aXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKQEAgLTI0MSwy
NiArMjQxLDI1IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRp
ZENsb3NlTm90aWZpY2F0aW9ucyhBUEk6OkFycmF5KiBnbG9iCiAgICAgICAgIGlmICghbm90aWZp
Y2F0aW9uKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKFdlYlBhZ2VQcm94
eSogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3RpZmljYXRpb24tPnBhZ2VJ
ZGVudGlmaWVyKCkpKSB7Ci0gICAgICAgICAgICBhdXRvIHBhZ2VJdCA9IHBhZ2VOb3RpZmljYXRp
b25JRHMuZmluZCh3ZWJQYWdlKTsKLSAgICAgICAgICAgIGlmIChwYWdlSXQgPT0gcGFnZU5vdGlm
aWNhdGlvbklEcy5lbmQoKSkgewotICAgICAgICAgICAgICAgIFZlY3RvcjxVVUlEPiBuZXdWZWN0
b3I7Ci0gICAgICAgICAgICAgICAgbmV3VmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6
ZSk7Ci0gICAgICAgICAgICAgICAgcGFnZUl0ID0gcGFnZU5vdGlmaWNhdGlvbklEcy5hZGQod2Vi
UGFnZSwgV1RGTW92ZShuZXdWZWN0b3IpKS5pdGVyYXRvcjsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgcGFnZUl0LT52YWx1ZS5hcHBlbmQobm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0
aW9uSUQoKSk7Ci0gICAgICAgIH0KLQogICAgICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5y
ZW1vdmUobm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25JRCgpKTsKKyAgICAgICAgY2xvc2VkTm90
aWZpY2F0aW9ucy5hcHBlbmQoV1RGTW92ZShub3RpZmljYXRpb24pKTsKICAgICB9CiAKLSAgICBm
b3IgKGF1dG8gaXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmJlZ2luKCksIGVuZCA9IHBhZ2VOb3Rp
ZmljYXRpb25JRHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPmtleS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsb3NlTm90
aWZpY2F0aW9ucyhpdC0+dmFsdWUpLCAwKTsKKyAgICBmb3IgKGF1dG8mIG5vdGlmaWNhdGlvbiA6
IGNsb3NlZE5vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBu
b3RpZmljYXRpb24tPnNvdXJjZUNvbm5lY3Rpb24oKSkgeworICAgICAgICAgICAgTE9HKE5vdGlm
aWNhdGlvbnMsICJQcm92aWRlciBkaWQgY2xvc2Ugbm90aWZpY2F0aW9uICglcykiLCBub3RpZmlj
YXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgICAgICBWZWN0b3I8VVVJRD4gbm90aWZpY2F0aW9uSURzID0geyBub3RpZmljYXRpb24t
PmNvcmVOb3RpZmljYXRpb25JRCgpIH07CisgICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbG9zZU5vdGlmaWNhdGlvbnMobm90
aWZpY2F0aW9uSURzKSwgMCk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShj
b25zdCBBUEk6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGJvb2wgYWxsb3dlZCkKIHsKKyAgICBM
T0coTm90aWZpY2F0aW9ucywgIlByb3ZpZGVyIGRpZCB1cGRhdGUgbm90aWZpY2F0aW9uIHBvbGlj
eSBmb3Igb3JpZ2luICVzIHRvICVpIiwgb3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgYWxsb3dlZCk7CisKKyAgICBXZWJQcm9jZXNzUG9vbDo6c2VuZFRv
QWxsUmVtb3RlV29ya2VyUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpEaWRVcGRhdGVOb3RpZmljYXRpb25EZWNpc2lvbihvcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCku
dG9TdHJpbmcoKSwgYWxsb3dlZCkpOworCiAgICAgaWYgKCFwcm9jZXNzUG9vbCgpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTI4MSw3ICsyODAsMTEgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OnByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoQVBJOjpBcnIK
ICAgICAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgb3Jp
Z2luU3RyaW5ncy5hcHBlbmQob3JpZ2lucy0+YXQ8QVBJOjpTZWN1cml0eU9yaWdpbj4oaSktPnNl
Y3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKSk7Ci0gICAgCisKKyAgICBXZWJQcm9jZXNzUG9vbDo6
c2VuZFRvQWxsUmVtb3RlV29ya2VyUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpEaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMob3JpZ2luU3RyaW5ncykpOwor
CisgICAgaWYgKCFwcm9jZXNzUG9vbCgpKQorICAgICAgICByZXR1cm47CiAgICAgcHJvY2Vzc1Bv
b2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpEaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMob3JpZ2luU3RyaW5ncykpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCBjNmQzNWQ4NjIyYjguLmU4
N2RiMTBmNTFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC01
NywxMCArNTcsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCopOwogCisgICAgc3RhdGljIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eSYgc2hhcmVkU2VydmljZVdvcmtlck1hbmFnZXIoKTsKKwog
ICAgIHZvaWQgc2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9uUHJv
dmlkZXI+JiYpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBub3RpZmljYXRpb25QZXJtaXNz
aW9ucygpOwogCi0gICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkRhdGEmKTsKKyAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5KiwgSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpOwogICAgIHZvaWQgY2Fu
Y2VsKFdlYlBhZ2VQcm94eSosIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCk7CiAgICAg
dm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5Kik7CiAgICAgdm9pZCBjbGVhck5v
dGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZp
Y2F0aW9uSURzKTsKQEAgLTc5LDkgKzgxLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAg
IHR5cGVkZWYgYm9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKShXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3RvcjxVVUlEPiYgZGVzaXJl
ZFBhZ2VOb3RpZmljYXRpb25JRHMpOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBh
Z2VQcm94eSosIGNvbnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZp
Y2F0aW9uRmlsdGVyRnVuY3Rpb24pOwotCiAgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKICAg
ICB2b2lkIHByb2Nlc3NQb29sRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWZXZWJD
b250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVy
LmNwcAppbmRleCAyNjVjMTU5ZDlkNzkuLjg1OGQ3NjQ2MmZjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25Qcm92aWRlci5jcHAKQEAgLTQyLDEyICs0MiwxMiBAQCBXZWJOb3RpZmljYXRpb25Qcm92
aWRlcjo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIoY29uc3QgV0tOb3RpZmljYXRpb25Qcm92aWRl
ckJhcwogICAgIGluaXRpYWxpemUocHJvdmlkZXIpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlv
blByb3ZpZGVyOjpzaG93KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViTm90aWZpY2F0aW9uJiBub3Rp
ZmljYXRpb24pCit2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzaG93KFdlYlBhZ2VQcm94
eSogcGFnZSwgV2ViTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCiB7CiAgICAgaWYgKCFtX2Ns
aWVudC5zaG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5zaG93KHRvQVBJKCZw
YWdlKSwgdG9BUEkoJm5vdGlmaWNhdGlvbiksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cisg
ICAgbV9jbGllbnQuc2hvdyh0b0FQSShwYWdlKSwgdG9BUEkoJm5vdGlmaWNhdGlvbiksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6
OmNhbmNlbChXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXIuaAppbmRleCA3YjJlOWNlMWM1YTYuLmMxYjBhOWQ0ZWFlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92
aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXIuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBXZWJOb3RpZmljYXRp
b25Qcm92aWRlciA6IHB1YmxpYyBBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyLCBwdWJsaWMgQVBJ
OjpDbAogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyKGNvbnN0
IFdLTm90aWZpY2F0aW9uUHJvdmlkZXJCYXNlKik7CiAKLSAgICB2b2lkIHNob3coV2ViUGFnZVBy
b3h5JiwgV2ViTm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93KFdlYlBhZ2VQ
cm94eSosIFdlYk5vdGlmaWNhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuY2VsKFdlYk5v
dGlmaWNhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihX
ZWJOb3RpZmljYXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhj
b25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOWU2ZTUyYWZhMDQ2Li44NjBh
NDUwNjI0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
ODg3NCw5ICs4ODc0LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3ROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb20KICAgICBtX3VpQ2xpZW50
LT5kZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCgqdGhpcywgb3Jp
Z2luLmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEm
IG5vdGlmaWNhdGlvbkRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd05vdGlmaWNhdGlvbihJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRh
dGEmIG5vdGlmaWNhdGlvbkRhdGEpCiB7Ci0gICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnN1
cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5zaG93KHRoaXMsIG5vdGlm
aWNhdGlvbkRhdGEpOworICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+c2hvdyh0aGlzLCBjb25uZWN0aW9uLCBub3Rp
ZmljYXRpb25EYXRhKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNhdGlv
bihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggNWJjYTgyNjViNjcyLi40MDBmOTQwNDlkZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMDU0LDcgKzIwNTQsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc1F1YXJhbnRpbmVkQW5kTm90VXNlckFwcHJvdmVkKGNvbnN0IFN0cmluZyYpOwog
I2VuZGlmCiAKLSAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uRGF0YSYpOworICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24m
LCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJik7CiAgICAgdm9pZCBjYW5jZWxOb3Rp
ZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgY2xlYXJOb3Rp
ZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lk
IGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDZkODgyOGYyZTRk
MS4uZjYwZDNlY2QyY2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC01ODgsNyArNTg4LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNo
U2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWcKIAogICAg
IHJlbW90ZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7
CiAKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dChwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQ
b29sLT5tX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9k
ZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWlu
LCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICBhdXRvIHByZWZlcmVuY2VzU3RvcmUgPSBwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3Jr
ZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzLnZh
bHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0
b3JlKCk7CisgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHQocHJlZmVyZW5jZXNTdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGlm
ICghcHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQogICAgICAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQocHJv
Y2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyVXNlckFnZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGUyNTNhNWU3M2E0OC4uM2FhMmRhODJkNmU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTIwMyw2ICsyMDMs
OCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kVG9BbGxQcm9j
ZXNzZXMoY29uc3QgVCYgbWVzc2FnZSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBz
ZW5kVG9BbGxQcm9jZXNzZXNGb3JTZXNzaW9uKGNvbnN0IFQmIG1lc3NhZ2UsIFBBTDo6U2Vzc2lv
bklEKTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIHNlbmRUb0FsbFJl
bW90ZVdvcmtlclByb2Nlc3Nlcyhjb25zdCBUJiBtZXNzYWdlKTsKKwogICAgIHZvaWQgcHJvY2Vz
c0RpZEZpbmlzaExhdW5jaGluZyhXZWJQcm9jZXNzUHJveHkmKTsKIAogICAgIFdlYlByb2Nlc3ND
YWNoZSYgd2ViUHJvY2Vzc0NhY2hlKCkgeyByZXR1cm4gbV93ZWJQcm9jZXNzQ2FjaGUuZ2V0KCk7
IH0KQEAgLTgzMiw0ICs4MzQsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvQWxsUHJv
Y2Vzc2VzRm9yU2Vzc2lvbihjb25zdCBUJiBtZXNzYWdlLCBQQUw6OlNlc3Npb24KICAgICB9CiB9
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9BbGxS
ZW1vdGVXb3JrZXJQcm9jZXNzZXMoY29uc3QgVCYgbWVzc2FnZSkKK3sKKyAgICBmb3IgKGF1dG8m
IHByb2Nlc3MgOiByZW1vdGVXb3JrZXJQcm9jZXNzZXMoKSkgeworICAgICAgICBpZiAocHJvY2Vz
cy5jYW5TZW5kTWVzc2FnZSgpKQorICAgICAgICAgICAgcHJvY2Vzcy5zZW5kKFQobWVzc2FnZSks
IDApOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyYzBhODAzMDAzMTQuLjI0ZWFjODA2
Y2RlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJl
bW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2du
aXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VzLmgiCkBAIC0yMDE1
LDYgKzIwMTYsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVJlbW90ZVdvcmtlcnMo
T3B0aW9uU2V0PFJlbW90ZVdvcmtlclR5cGU+IHdvcmtlclR5cAogCiAgICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJkaXNhYmxlV29ya2VyczogRGlzYWJsaW5nIHdvcmtl
cnMgKFNoYXJlZFdvcmtlcnM9JWQsIFNlcnZpY2VXb3JrZXJzPSVkKSIsIHdvcmtlclR5cGUuY29u
dGFpbnMoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSwgd29ya2VyVHlwZS5jb250YWlu
cyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSk7CiAKKyAgICByZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29y
a2VyUGFnZUlEKTsKKyAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKwogICAg
IHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAKICAgICBpZiAoIWlzUnVu
bmluZ1dvcmtlcnMoKSkKQEAgLTIwNjQsNiArMjA2OCw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjplbmFibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29uc3Qg
VXNlCiAgICAgICAgIG51bGxwdHIsCiAgICAgICAgIHsgfQogICAgIH07CisKKyAgICBhZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3Rl
V29ya2VyUGFnZUlELCBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6c2luZ2xldG9u
KCkpOworCiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAogICAg
IHVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24od29ya2VyVHlwZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCmluZGV4IDEzMjkwNTU3MmY0Yi4uMmM3YTZjNjljNTlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkQ2FjaGUuaCIKICNp
bmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXQySW5pdGlh
bGl6ZS5oIgorI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDYWNoZS5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtMjA1NCw0ICsyMDU1LDI2IEBAIGJvb2wgV2Vi
c2l0ZURhdGFTdG9yZTo6c2hvdWxkTWFrZU5leHROZXR3b3JrUHJvY2Vzc0xhdW5jaEZhaWxGb3JU
ZXN0aW5nKCkKICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShuZXh0TmV0d29ya1Byb2Nlc3NMYXVu
Y2hTaG91bGRGYWlsRm9yVGVzdGluZywgZmFsc2UpOwogfQogCit2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnNob3dTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgbm90aWZpY2F0aW9uRGF0YSkK
K3sKKyAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJN
YW5hZ2VyKCkuc2hvdyhudWxscHRyLCBjb25uZWN0aW9uLCBub3RpZmljYXRpb25EYXRhKTsKK30K
Kwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpjYW5jZWxTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
KGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQoreworICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eTo6c2hhcmVkU2VydmljZVdvcmtlck1hbmFnZXIoKS5jYW5jZWwobnVsbHB0ciwgbm90
aWZpY2F0aW9uSUQpOworfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmNsZWFyU2VydmljZVdv
cmtlck5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKK3sKKyAgICBWZWN0
b3I8VVVJRD4gbm90aWZpY2F0aW9uczsKKyAgICBub3RpZmljYXRpb25zLmFwcGVuZChub3RpZmlj
YXRpb25JRCk7CisgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNl
V29ya2VyTWFuYWdlcigpLmNsZWFyTm90aWZpY2F0aW9ucyhudWxscHRyLCBub3RpZmljYXRpb25z
KTsKK30KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkaWREZXN0cm95U2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKK3sKKyAgICBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkuZGlkRGVzdHJv
eU5vdGlmaWNhdGlvbihudWxscHRyLCBub3RpZmljYXRpb25JRCk7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aAppbmRleCA4NWVlMzFlMTM4M2QuLjQ2YWYwZWY1OWViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtNzgs
NiArNzgsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIExvY2FsV2ViTG9ja1JlZ2lz
dHJ5OwogCiBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKK3N0cnVj
dCBOb3RpZmljYXRpb25EYXRhOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM3MCw2ICsz
NzEsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb3VudE5vbkRlZmF1bHRTZXNzaW9uU2V0cyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHNpemVfdCk+JiYpOwogCisgICAgdm9pZCBzaG93U2Vydmlj
ZVdvcmtlck5vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpOb3Rp
ZmljYXRpb25EYXRhJik7CisgICAgdm9pZCBjYW5jZWxTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
KGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIGNsZWFyU2VydmljZVdvcmtl
ck5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBkaWRE
ZXN0cm95U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25J
RCk7CisKIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBGb3JjZVJlaW5pdGlhbGl6YXRpb24gOiBi
b29sIHsgTm8sIFllcyB9OwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY3YmVlNTQz
Y2UwZi4uYzE1ZTFiMWRkZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTk5Niw2ICs5OTYsNyBAQAogCQk1MTVCRTFCNTFENTkxN0ZG
MDBERDdDNjggLyogVUlHYW1lcGFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTVCRTFBRDFENTU1QzUxMDBERDdDNjggLyogVUlHYW1lcGFkLmggKi87
IH07CiAJCTUxNjMxOTk0MTYyODlBNjAwMEUyMkYwMCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUFDQzkzNDE2MjgwNjQ4MDAzNDI1NTAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OwogCQk1MTYzMTk5NTE2Mjg5QTYzMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nl
c3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFBQ0M5MzUxNjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCAq
LzsgfTsKKwkJNTE2NDY1ODAyN0E5Qzc3NDAwRTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb25IYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTY0NjU3RjI3QTlDNzY3MDBFMUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlv
bkhhbmRsZXIuaCAqLzsgfTsKIAkJNTE2QTRBNUQxMjBBMkNDRDAwQzA1QjdGIC8qIEFQSUVycm9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZBNEE1
QjEyMEEyQ0NEMDBDMDVCN0YgLyogQVBJRXJyb3IuaCAqLzsgfTsKIAkJNTE3OTU1NkExNjI4NzZG
MzAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBDQzdFMDE2MTM4RTI5MDBEMDNFRDMgLyogTmV0d29ya1By
b2Nlc3MuaCAqLzsgfTsKIAkJNTE3OTU1NkUxNjI4NzdCMzAwRkE0M0I2IC8qIE5ldHdvcmtQcm9j
ZXNzUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMENDN0VCMTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmggKi87IH07
CkBAIC00NDgxLDYgKzQ0ODIsOCBAQAogCQk1MTYwRTk1ODI3NEMwRDg4MDA1NjczODggLyogUHVz
aEFwcEJ1bmRsZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFB1
c2hBcHBCdW5kbGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjBFOTVDMjc0
QzJBMDMwMDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxNjBFOTVGMjc0QzJBM0YwMDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxl
UmVnaXN0cnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNb2Nr
QXBwQnVuZGxlUmVnaXN0cnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjQ2
NTdFMjdBOUM3NjUwMEUxRjJCQSAvKiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjQ2NTdGMjdBOUM3NjcwMEUxRjJC
QSAvKiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTY0QzA5NDFCMDVCNzU3MDA0RjEwMkEgLyogQXV4aWxpYXJ5UHJvY2Vzcy5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdXhpbGlhcnlQcm9jZXNzLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTZBNEE1QjEyMEEyQ0NEMDBDMDVC
N0YgLyogQVBJRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRXJy
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QTMzQjMxMzBCMzA4QzAwRjgw
Q0I1IC8qIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04Njc1LDYgKzg2NzgsOCBAQAogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkzMUEyRUM1MzE0ODk5ODI1MDA4MTBENzEgLyogTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCAqLywKKwkJCQk1MTY0NjU3RTI3QTlDNzY1MDBF
MUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuY3BwICovLAorCQkJCTUx
NjQ2NTdGMjdBOUM3NjcwMEUxRjJCQSAvKiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxl
ci5oICovLAogCQkJCTMxQTJFQzQxMTQ4OTk3QkUwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb24u
Y3BwICovLAogCQkJCTMxQTJFQzQyMTQ4OTk3QkUwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb24u
aCAqLywKIAkJCQk1MTQ1MjcwNjI3MUZCRUMxMDAwNDY3QjYgLyogV2ViTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLywKQEAgLTEzOTE5LDYgKzEzOTI0LDcgQEAKIAkJCQlC
QzRBNjI5NzE0NzMxM0EwMDA2QzY4MUEgLyogV0tDb25uZWN0aW9uUmVmLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNTk2REQ2QTI1MUU3MUQ0MDBDMjc1QTcgLyogV0tDb250YWN0UGlja2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0QyODY1NDFFNzIzNUIxMDA5NEZEQzggLyogV0tDb250ZW50UnVs
ZUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNjQ2NTgwMjdBOUM3NzQwMEUxRjJCQSAvKiBT
ZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNE
Mjg2NTUxRTcyMzVCODAwOTRGREM4IC8qIFdLQ29udGVudFJ1bGVMaXN0SW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDNTEzOURCMjU5MjdEODAwMDlDM0UzMCAvKiBXS0NvbnRlbnRSdWxl
TGlzdFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDRDI4NjUxMUU3MjM1OTkwMDk0RkRD
OCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggOWMxYzEyZDg4NTU0Li4xOTNlNGNiMmQ5OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIgogI2luY2x1
ZGUgIldlYk5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCkBAIC00NSw2ICs0
Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGlu
Z3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NXQ29udGV4dE1hbmFnZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjZW5kaWYKIApAQCAtMTIxLDI1ICsxMjMs
NDIgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpyZW1vdmVBbGxQZXJtaXNzaW9uc0Zv
clRlc3RpbmcoKQogfQogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi10ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBib29sIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKFdlYlByb2Nlc3MmIHByb2Nlc3Ms
IFUmJiBtZXNzYWdlLCBXZWJQYWdlJiBwYWdlKQordGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShVJiYgbWVzc2Fn
ZSwgTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiB7CisgICAgaWYg
KCFwYWdlICYmICFub3RpZmljYXRpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKICAg
ICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5idWlsdEluTm90
aWZpY2F0aW9uc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIHByb2Nlc3MuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwg
cGFnZS5zZXNzaW9uSUQoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcmV0dXJuIG1fcHJvY2Vzcy5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChXVEZNb3Zl
KG1lc3NhZ2UpLCBub3RpZmljYXRpb24uZGF0YSgpLnNvdXJjZVNlc3Npb24udG9VSW50NjQoKSk7
CiAjZW5kaWYKLSAgICByZXR1cm4gcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKFdURk1vdmUobWVzc2FnZSksIHBhZ2UuaWRlbnRpZmllcigpKTsKKworICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJZGVudGlmaWVyOworICAgIGlmIChw
YWdlKQorICAgICAgICBwYWdlSWRlbnRpZmllciA9IHBhZ2UtPmlkZW50aWZpZXIoKTsKKyAgICBl
bHNlIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
Y29ubmVjdGlvbigpKSB7CisgICAgICAgIC8vIFBhZ2VsZXNzIG5vdGlmaWNhdGlvbiBtZXNzYWdl
cyBhcmUsIGJ5IGRlZmF1bHQsIG9uIGJlaGFsZiBvZiBhIHNlcnZpY2Ugd29ya2VyLgorICAgICAg
ICAvLyBTbyB1c2UgdGhlIHNlcnZpY2Ugd29ya2VyIGNvbm5lY3Rpb24ncyBwYWdlIGlkZW50aWZp
ZXIuCisgICAgICAgIHBhZ2VJZGVudGlmaWVyID0gY29ubmVjdGlvbi0+cGFnZUlkZW50aWZpZXIo
KTsKKyAgICB9CisKKyAgICBBU1NFUlQocGFnZUlkZW50aWZpZXIpOworCisgICAgcmV0dXJuIG1f
cHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKFdURk1vdmUobWVzc2FnZSks
ICpwYWdlSWRlbnRpZmllcik7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCiAK
IGJvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24mIG5vdGlmaWNh
dGlvbiwgV2ViUGFnZSogcGFnZSkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIGlmICghcGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGlu
Z3MoKS5ub3RpZmljYXRpb25zRW5hYmxlZCgpKQorICAgIGlmIChwYWdlICYmICFwYWdlLT5jb3Jl
UGFnZSgpLT5zZXR0aW5ncygpLm5vdGlmaWNhdGlvbnNFbmFibGVkKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIG1fbm90aWZpY2F0aW9uSURNYXAuc2V0KG5vdGlmaWNhdGlvbi5pZGVu
dGlmaWVyKCksICZub3RpZmljYXRpb24pOworICAgIGlmICghc2VuZE5vdGlmaWNhdGlvbk1lc3Nh
Z2UoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6U2hvd05vdGlm
aWNhdGlvbihub3RpZmljYXRpb24uZGF0YSgpKSwgbm90aWZpY2F0aW9uLCBwYWdlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UobV9wcm9jZXNz
LCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpTaG93Tm90aWZp
Y2F0aW9uKG5vdGlmaWNhdGlvbi5kYXRhKCkpLCAqcGFnZSk7CisgICAgbV9ub3RpZmljYXRpb25J
RE1hcC5zZXQobm90aWZpY2F0aW9uLmlkZW50aWZpZXIoKSwgJm5vdGlmaWNhdGlvbik7CiAgICAg
cmV0dXJuIHRydWU7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwpAQCAt
MTUwLDE2ICsxNjksMTYgQEAgYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KE5vdGlm
aWNhdGlvbiYgbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogCiB2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXI6OmNhbmNlbChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSog
cGFnZSkKIHsKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBpZiAoIXBhZ2UtPmNvcmVQ
YWdlKCktPnNldHRpbmdzKCkubm90aWZpY2F0aW9uc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJu
OworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKICAgICBhdXRvIG1hcHBlZE5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAuZ2V0
KG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgIGlmICghbWFwcGVkTm90aWZpY2F0aW9u
KQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1hcHBlZE5vdGlmaWNhdGlvbiA9PSAmbm90
aWZpY2F0aW9uKTsKIAotICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKG1fcHJvY2VzcywgTWVz
c2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6Q2FuY2VsTm90aWZpY2F0
aW9uKG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpLCAqcGFnZSk7CisgICAgaWYgKCFzZW5kTm90
aWZpY2F0aW9uTWVzc2FnZShNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5k
bGVyOjpDYW5jZWxOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmlkZW50aWZpZXIoKSksIG5vdGlm
aWNhdGlvbiwgcGFnZSkpCisgICAgICAgIHJldHVybjsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KG5vdGlmaWNhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwpAQCAtMTY4LDYgKzE4Nyw4
IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsKE5vdGlmaWNhdGlvbiYgbm90
aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6
OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sIFdlYlBh
Z2UqIHBhZ2UpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQogICAgIFJlZiBwcm90ZWN0ZWROb3RpZmljYXRpb24geyBub3RpZmljYXRp
b24gfTsKIApAQCAtMTc2LDcgKzE5Nyw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwKICAgICAg
ICAgcmV0dXJuOwogICAgIEFTU0VSVCh0YWtlbk5vdGlmaWNhdGlvbiA9PSAmbm90aWZpY2F0aW9u
KTsKIAotICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKG1fcHJvY2VzcywgTWVzc2FnZXM6Ok5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6RGlkRGVzdHJveU5vdGlmaWNhdGlvbihu
b3RpZmljYXRpb24uaWRlbnRpZmllcigpKSwgKnBhZ2UpOworICAgIHNlbmROb3RpZmljYXRpb25N
ZXNzYWdlKE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OkRpZERl
c3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmlkZW50aWZpZXIoKSksIG5vdGlmaWNhdGlv
biwgcGFnZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwogICAgIFVO
VVNFRF9QQVJBTShwYWdlKTsKQEAgLTE4NSw2ICsyMDYsOCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uJiBub3RpZmljYXRp
b24sCiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbihj
b25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4g
bm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQpOwog
ICAgIGlmICghbm90aWZpY2F0aW9uKQpAQCAtMTk4LDYgKzIyMSw4IEBAIHZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRp
b25JRCkKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbGlja05vdGlmaWNhdGlv
bihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlv
bj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQp
OwogICAgIGlmICghbm90aWZpY2F0aW9uKQpAQCAtMjEzLDYgKzIzOCw4IEBAIHZvaWQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZp
Y2F0aW9uSUQpCiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xvc2VOb3RpZmlj
YXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKQogeworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBzaXpl
X3QgY291bnQgPSBub3RpZmljYXRpb25JRHMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IGU2
MzUxZmRmOTYxNi4uNDllYTcxODQ1NWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5o
CkBAIC04MSw2ICs4MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDbG9zZU5vdGlmaWNhdGlv
bnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpOwogICAgIHZvaWQgZGlkUmVt
b3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcmlnaW5TdHJp
bmdzKTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZE5vdGlmaWNhdGlvbk1l
c3NhZ2UoVSYmIG1lc3NhZ2UsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiYsIFdlYlBhZ2UqKTsKKwog
ICAgIFdlYlByb2Nlc3MmIG1fcHJvY2VzczsKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggYzFlZGQ5ZjBhMmVjLi4xZTMxNDBm
NjgyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtNjYsNiArNjYsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsOwogCisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BhZ2VJRDsgfQorCiBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAKaW5kZXggYzI0ZWQzN2Q3
NmVmLi40YTM2ZThmYmU4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuY3BwCkBA
IC00MCwzNCArNDAsNjYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJOb3RpZmljYXRp
b25DbGllbnQ6OldlYk5vdGlmaWNhdGlvbkNsaWVudChXZWJQYWdlKiBwYWdlKQogICAgIDogbV9w
YWdlKHBhZ2UpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIH0KIAogV2ViTm90aWZp
Y2F0aW9uQ2xpZW50Ojp+V2ViTm90aWZpY2F0aW9uQ2xpZW50KCkKIHsKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogfQogCiBib29sIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6c2hvdyhOb3Rp
ZmljYXRpb24mIG5vdGlmaWNhdGlvbikKIHsKLSAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5zaG93KG5vdGlmaWNh
dGlvbiwgbV9wYWdlKTsKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpCisgICAgICAgIHJldHVybiBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+
KCktPnNob3cobm90aWZpY2F0aW9uLCBtX3BhZ2UpOworCisgICAgYm9vbCByZXN1bHQ7CisgICAg
Y2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZyZXN1bHQsIHByb3RlY3RlZE5vdGlmaWNhdGlvbiA9
IFJlZiB7IG5vdGlmaWNhdGlvbiB9XSgpIHsKKyAgICAgICAgcmVzdWx0ID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5zaG93KHBy
b3RlY3RlZE5vdGlmaWNhdGlvbi5nZXQoKSwgbnVsbHB0cik7CisgICAgfSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNhbmNlbChOb3RpZmlj
YXRpb24mIG5vdGlmaWNhdGlvbikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBw
bGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmNhbmNlbChub3RpZmljYXRpb24sIG1f
cGFnZSk7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+Y2FuY2VsKG5v
dGlmaWNhdGlvbiwgbV9wYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhbGxP
bk1haW5UaHJlYWRBbmRXYWl0KFtwcm90ZWN0ZWROb3RpZmljYXRpb24gPSBSZWYgeyBub3RpZmlj
YXRpb24gfV0oKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8
V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+Y2FuY2VsKHByb3RlY3RlZE5vdGlmaWNhdGlvbi5n
ZXQoKSwgbnVsbHB0cik7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50
Ojpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24p
CiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRp
b25NYW5hZ2VyPigpLT5kaWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgbV9wYWdl
KTsKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5kaWREZXN0cm95Tm90
aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgbV9wYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIE1ha2Ugc3VyZSB0aGlzIE5vdGlmaWNhdGlvbiBvYmplY3QgaXMgZGVhbGxvY2F0
ZWQgb24gdGhpcyB0aHJlYWQgYnkgaG9sZGluZyBvbmUgbGFzdCByZWYoKSB0byBpdCBoZXJlCisg
ICAgYXV0byBsYXN0Tm90aWZpY2F0aW9uUmVmID0gUmVmIHsgbm90aWZpY2F0aW9uIH07CisKKyAg
ICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJm5vdGlmaWNhdGlvbl0oKSB7CisgICAgICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4o
KS0+ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIG51bGxwdHIpOworICAgIH0p
OwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uQ29udHJvbGxl
ckRlc3Ryb3llZCgpCiB7Ci0gICAgZGVsZXRlIHRoaXM7CisgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpc10geworICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJOb3Rp
ZmljYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFBlcm1pc3Npb25IYW5kbGVyJiYgcGVybWlzc2lvbkhhbmRsZXIpCiB7CisgICAg
Ly8gT25seSBXaW5kb3cgY2xpZW50cyBjYW4gcmVxdWVzdCBwZXJtaXNzaW9uCisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9wYWdlKTsKKwogICAgIGF1dG8qIHNlY3Vy
aXR5T3JpZ2luID0gY29udGV4dC5zZWN1cml0eU9yaWdpbigpOwogICAgIGlmICghc2VjdXJpdHlP
cmlnaW4pCiAgICAgICAgIHJldHVybiBwZXJtaXNzaW9uSGFuZGxlcihOb3RpZmljYXRpb25DbGll
bnQ6OlBlcm1pc3Npb246OkRlbmllZCk7CkBAIC03Niw5ICsxMDgsMjAgQEAgdm9pZCBXZWJOb3Rp
ZmljYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFAKIAogTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIFdlYk5vdGlmaWNh
dGlvbkNsaWVudDo6Y2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiB7Ci0gICAgaWYgKCFjb250ZXh0IHx8ICFjb250ZXh0LT5pc0RvY3VtZW50KCkgfHwgIWNv
bnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpCisgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1
cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uOjpEZW5pZWQ7Ci0gICAgcmV0dXJuIG1f
cGFnZS0+bm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCktPnBlcm1pc3Npb25M
ZXZlbChjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCkpOworICAgIGlmICghY29udGV4
dC0+aXNEb2N1bWVudCgpICYmICFjb250ZXh0LT5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgp
KQorICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uOjpEZW5pZWQ7
CisKKyAgICBhdXRvKiBvcmlnaW4gPSBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpOworICAgIGlm
ICghb3JpZ2luKQorICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9u
OjpEZW5pZWQ7CisKKyAgICBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gcmVzdWx0UGVy
bWlzc2lvbjsKKyAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJnJlc3VsdFBlcm1pc3Npb24s
IG9yaWdpbiA9IG9yaWdpbi0+ZGF0YSgpLnRvU3RyaW5nKCldIHsKKyAgICAgICAgcmVzdWx0UGVy
bWlzc2lvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0
aW9uTWFuYWdlcj4oKS0+cG9saWN5Rm9yT3JpZ2luKG9yaWdpbik7CisgICAgfSk7CisgICAgcmV0
dXJuIHJlc3VsdFBlcm1pc3Npb247CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggOGRlNjgxYjIyMjQxLi5kZDM5NzYzYWM1MTIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMjA4LDYgKzIwOCw3IEBAIGludGVyZmFjZSBUZXN0
UnVubmVyIHsKICAgICB1bmRlZmluZWQgZGVueVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oRE9N
U3RyaW5nIG9yaWdpbik7CiAgICAgdW5kZWZpbmVkIHJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBl
cm1pc3Npb25zKCk7CiAgICAgdW5kZWZpbmVkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2so
b2JqZWN0IG5vdGlmaWNhdGlvbik7CisgICAgdW5kZWZpbmVkIHNpbXVsYXRlV2ViTm90aWZpY2F0
aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpOwogCiAgICAgLy8gR2VvbG9j
YXRpb24KICAgICB1bmRlZmluZWQgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2xlYW4gdmFs
dWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAzM2U3MGFmMzJhNmQuLjBkMGQxZmZiNjAwMiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAKQEAgLTY2OCw2ICs2NjgsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6
cG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklE
KQogICAgIHBvc3RQYWdlTWVzc2FnZSgiU2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayIsIG5v
dGlmaWNhdGlvbklEKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNpbXVsYXRlV2Vi
Tm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpCit7CisgICAg
cG9zdFBhZ2VNZXNzYWdlKCJTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdv
cmtlck5vdGlmaWNhdGlvbnMiKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNldEFk
ZHNWaXNpdGVkTGlua3MoYm9vbCBhZGRzVmlzaXRlZExpbmtzKQogewogICAgIHBvc3RQYWdlTWVz
c2FnZSgiU2V0QWRkc1Zpc2l0ZWRMaW5rcyIsIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGFkZHNW
aXNpdGVkTGlua3MpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggYmMxNDc1Y2FmN2ZhLi4wYTg1OTk1ODBm
YWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmgKQEAgLTk1LDYgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcG9z
dFNldFdpbmRvd0lzS2V5KGJvb2wpOwogICAgIHZvaWQgcG9zdFNldFZpZXdTaXplKGRvdWJsZSB3
aWR0aCwgZG91YmxlIGhlaWdodCk7CiAgICAgdm9pZCBwb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRp
b25DbGljayhXS0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgcG9zdFNpbXVsYXRl
V2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpOwogICAg
IHZvaWQgcG9zdFNldEFkZHNWaXNpdGVkTGlua3MoYm9vbCk7CiAKICAgICAvLyBHZW9sb2NhdGlv
bi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCmluZGV4IDc4MWI4MTY5MWFmYy4uMjRhOWE4NWQwN2JhIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAg
LTg2NywxMSArODY3LDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogdm9pZCBUZXN0UnVubmVyOjpncmFudFdlYk5v
dGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYgb3JpZ2luKQogewogICAgIFdLQnVuZGxl
U2V0V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCku
YnVuZGxlKCksIHBhZ2UoKSwgdG9XSyhvcmlnaW4pLmdldCgpLCB0cnVlKTsKKyAgICBwb3N0U3lu
Y2hyb25vdXNQYWdlTWVzc2FnZVJldHVybmluZ0Jvb2xlYW4oIkdyYW50Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbiIsIG9yaWdpbik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6ZGVueVdlYk5vdGlmaWNh
dGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYgb3JpZ2luKQogewogICAgIFdLQnVuZGxlU2V0V2Vi
Tm90aWZpY2F0aW9uUGVybWlzc2lvbihJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxl
KCksIHBhZ2UoKSwgdG9XSyhvcmlnaW4pLmdldCgpLCBmYWxzZSk7CisgICAgcG9zdFN5bmNocm9u
b3VzUGFnZU1lc3NhZ2VSZXR1cm5pbmdCb29sZWFuKCJEZW55Tm90aWZpY2F0aW9uUGVybWlzc2lv
biIsIG9yaWdpbik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsV2ViTm90aWZpY2F0
aW9uUGVybWlzc2lvbnMoKQpAQCAtODg3LDYgKzg4OSwxMSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNp
bXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pCiAgICAg
aW5qZWN0ZWRCdW5kbGUucG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2sobm90aWZpY2F0
aW9uSUQuZ2V0KCkpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0
aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpCit7CisgICAgSW5qZWN0ZWRC
dW5kbGU6OnNpbmdsZXRvbigpLnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2Vy
dmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpzZXRHZW9s
b2NhdGlvblBlcm1pc3Npb24oYm9vbCBlbmFibGVkKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSBkb25lIGJ5IGZyYW1lLgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAyYjc4YzFkYTk2YjEuLjkwZjVlZTQ4MWY0
NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKQEAgLTI5NCw2ICsyOTQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGVu
eVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYgb3JpZ2luKTsKICAgICBzdGF0
aWMgdm9pZCByZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwogICAgIHN0YXRp
YyB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soSlNWYWx1ZVJlZiBub3RpZmljYXRp
b24pOworICAgIHN0YXRpYyB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9ucygpOwogCiAgICAgLy8gR2VvbG9jYXRpb24uCiAgICAgdm9p
ZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDRkNmU5MDlhYmQyYS4uNTAwYzcxZDVhNGExIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNjk2LDYgKzY5Niw3
IEBAIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVyOjpn
ZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvCiAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVm
IG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBXS0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5hZ2VyKG1f
Y29udGV4dC5nZXQoKSk7CiAgICAgV0tOb3RpZmljYXRpb25Qcm92aWRlclYwIG5vdGlmaWNhdGlv
bktpdCA9IG1fd2ViTm90aWZpY2F0aW9uUHJvdmlkZXIucHJvdmlkZXIoKTsKICAgICBXS05vdGlm
aWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihub3RpZmljYXRpb25NYW5hZ2VyLCAmbm90aWZpY2F0
aW9uS2l0LmJhc2UpOworICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKFdLTm90
aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2Vy
KCksICZub3RpZmljYXRpb25LaXQuYmFzZSk7CiAKICAgICBpZiAodGVzdFBsdWdpbkRpcmVjdG9y
eSgpKQogICAgICAgICBXS0NvbnRleHRTZXRBZGRpdGlvbmFsUGx1Z2luc0RpcmVjdG9yeShtX2Nv
bnRleHQuZ2V0KCksIHRlc3RQbHVnaW5EaXJlY3RvcnkoKSk7CkBAIC03MTcsNiArNzE4LDI0IEBA
IFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVyOjpnZW5l
cmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvCiAgICAgcmV0dXJuIHBhZ2VDb25maWd1cmF0aW9uOwog
fQogCitib29sIFRlc3RDb250cm9sbGVyOjpncmFudE5vdGlmaWNhdGlvblBlcm1pc3Npb24oV0tT
dHJpbmdSZWYgb3JpZ2luU3RyaW5nKQoreworICAgIG1fd2ViTm90aWZpY2F0aW9uUHJvdmlkZXIu
c2V0UGVybWlzc2lvbih0b1dURlN0cmluZyhvcmlnaW5TdHJpbmcpLCB0cnVlKTsKKworICAgIGF1
dG8gb3JpZ2luID0gYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbVN0cmluZyhvcmln
aW5TdHJpbmcpKTsKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFVwZGF0ZU5v
dGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9uTWFuYWdlcigpLCBvcmlnaW4uZ2V0KCksIHRydWUpOworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIFRlc3RDb250cm9sbGVyOjpkZW55Tm90aWZpY2F0aW9uUGVybWlz
c2lvbihXS1N0cmluZ1JlZiBvcmlnaW5TdHJpbmcpCit7CisgICAgbV93ZWJOb3RpZmljYXRpb25Q
cm92aWRlci5zZXRQZXJtaXNzaW9uKHRvV1RGU3RyaW5nKG9yaWdpblN0cmluZyksIGZhbHNlKTsK
KworICAgIGF1dG8gb3JpZ2luID0gYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbVN0
cmluZyhvcmlnaW5TdHJpbmcpKTsKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRp
ZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRT
ZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpLCBvcmlnaW4uZ2V0KCksIGZhbHNlKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmll
d1dpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIGF1dG8gYXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gb3B0aW9ucy5hcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoKTsKQEAgLTIzNTksNiArMjM3OCwxMSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzaW11
bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLRGF0YVJlZiBub3RpZmljYXRpb25JRCkKICAgICBt
X3dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2sobWFp
bldlYlZpZXcoKS0+cGFnZSgpLCBub3RpZmljYXRpb25JRCk7CiB9CiAKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZp
Y2F0aW9ucygpCit7CisgICAgbV93ZWJOb3RpZmljYXRpb25Qcm92aWRlci5zaW11bGF0ZVdlYk5v
dGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKK30KKwogdm9p
ZCBUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgZW5hYmxlZCkK
IHsKICAgICBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0ID0gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBiNTJhZjY2NTU1MmIuLmUyNGFjMzIwMzRh
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMTI3LDYgKzEy
Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJlZm9yZVVubG9hZFJldHVyblZhbHVlKGJvb2wg
dmFsdWUpIHsgbV9iZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZSA9IHZhbHVlOyB9CiAKICAgICB2b2lk
IHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKTsK
KyAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90
aWZpY2F0aW9ucygpOwogCiAgICAgLy8gR2VvbG9jYXRpb24uCiAgICAgdm9pZCBzZXRHZW9sb2Nh
dGlvblBlcm1pc3Npb24oYm9vbCk7CkBAIC0zNzMsNiArMzc0LDkgQEAgcHVibGljOgogCiAgICAg
V0tQcmVmZXJlbmNlc1JlZiBwbGF0Zm9ybVByZWZlcmVuY2VzKCk7CiAKKyAgICBib29sIGdyYW50
Tm90aWZpY2F0aW9uUGVybWlzc2lvbihXS1N0cmluZ1JlZiBvcmlnaW4pOworICAgIGJvb2wgZGVu
eU5vdGlmaWNhdGlvblBlcm1pc3Npb24oV0tTdHJpbmdSZWYgb3JpZ2luKTsKKwogcHJpdmF0ZToK
ICAgICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZVBhZ2VDb25m
aWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJik7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0
Q29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbihjb25zdCBUZXN0
T3B0aW9ucyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cAppbmRleCAyY2E0MmMzZWU1YzMuLjZhOTAwM2JjYjgzMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTM5Niw2ICszOTYsMTEgQEAgdm9pZCBUZXN0SW52
b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYg
bWVzc2FnZU5hbWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2ltdWxhdGVXZWJOb3RpZmljYXRpb25D
bGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25zIikpIHsKKyAgICAgICAgVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNl
V29ya2VyTm90aWZpY2F0aW9ucygpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRBZGRzVmlzaXRl
ZExpbmtzIikpIHsKICAgICAgICAgV0tQYWdlU2V0QWRkc1Zpc2l0ZWRMaW5rcyhUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBib29sZWFuVmFsdWUobWVz
c2FnZUJvZHkpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTAyNSw2ICsxMDMwLDEyIEBAIFdLUmV0
YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBhZG9wdFdLKFdLVUludDY0Q3JlYXRl
KGNvdW50KSk7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
bWVzc2FnZU5hbWUsICJHcmFudE5vdGlmaWNhdGlvblBlcm1pc3Npb24iKSkKKyAgICAgICAgcmV0
dXJuIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5n
cmFudE5vdGlmaWNhdGlvblBlcm1pc3Npb24oc3RyaW5nVmFsdWUobWVzc2FnZUJvZHkpKSkpOwor
CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJEZW55
Tm90aWZpY2F0aW9uUGVybWlzc2lvbiIpKQorICAgICAgICByZXR1cm4gYWRvcHRXSyhXS0Jvb2xl
YW5DcmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmRlbnlOb3RpZmljYXRpb25QZXJt
aXNzaW9uKHN0cmluZ1ZhbHVlKG1lc3NhZ2VCb2R5KSkpKTsKKyAgICAgICAgCiAgICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJJc0RvaW5nTWVkaWFDYXB0
dXJlIikpCiAgICAgICAgIHJldHVybiBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkuaXNEb2luZ01lZGlhQ2FwdHVyZSgpKSk7CiAgICAgCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4
IGM4OGYyZTlmOGRiMi4uYzUxYjlhYWNkOWM0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcApAQCAtNjQsNiArNjQsNyBAQCBzdGF0
aWMgV0tEaWN0aW9uYXJ5UmVmIG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCiAKIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpXZWJOb3RpZmljYXRpb25Qcm92
aWRlcigpCiB7CisgICAgbV9wZXJtaXNzaW9ucyA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFy
eUNyZWF0ZSgpKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6On5XZWJOb3RpZmljYXRp
b25Qcm92aWRlcigpCkBAIC04NywxMCArODgsMTkgQEAgV0tOb3RpZmljYXRpb25Qcm92aWRlclYw
IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpwcm92aWRlcigpCiAgICAgcmV0dXJuIG5vdGlmaWNh
dGlvblByb3ZpZGVyOwogfQogCitzdGF0aWMgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG5vdGlm
aWNhdGlvbk1hbmFnZXJGb3JQYWdlKFdLUGFnZVJlZiBwYWdlKQoreworICAgIGlmIChwYWdlKSB7
CisgICAgICAgIGF1dG8gY29udGV4dCA9IFdLUGFnZUdldENvbnRleHQocGFnZSk7CisgICAgICAg
IHJldHVybiBXS0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5hZ2VyKGNvbnRleHQpOworICAgIH0K
KworICAgIHJldHVybiBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9uTWFuYWdlcigpOworfQorCiB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
OjpzaG93V2ViTm90aWZpY2F0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS05vdGlmaWNhdGlvblJlZiBu
b3RpZmljYXRpb24pCiB7Ci0gICAgYXV0byBjb250ZXh0ID0gV0tQYWdlR2V0Q29udGV4dChwYWdl
KTsKLSAgICBhdXRvIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBXS0NvbnRleHRHZXROb3RpZmljYXRp
b25NYW5hZ2VyKGNvbnRleHQpOworICAgIGF1dG8gbm90aWZpY2F0aW9uTWFuYWdlciA9IG5vdGlm
aWNhdGlvbk1hbmFnZXJGb3JQYWdlKHBhZ2UpOwogICAgIEFTU0VSVChtX2tub3duTWFuYWdlcnMu
Y29udGFpbnMobm90aWZpY2F0aW9uTWFuYWdlcikpOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmll
ciA9IFdLTm90aWZpY2F0aW9uR2V0SUQobm90aWZpY2F0aW9uKTsKQEAgLTExOCw3ICsxMjgsNyBA
QCB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpjbG9zZVdlYk5vdGlmaWNhdGlvbihXS05v
dGlmaWNhdGlvblJlZiBub3RpZmljYXRpbwogCiB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
OjphZGROb3RpZmljYXRpb25NYW5hZ2VyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2Vy
KQogewotICAgIEFTU0VSVCghbV9rbm93bk1hbmFnZXJzLmNvbnRhaW5zKG1hbmFnZXIpKTsKKyAg
ICBBU1NFUlQoIW1fa25vd25NYW5hZ2Vycy5jb250YWlucyhtYW5hZ2VyKSB8fCBtYW5hZ2VyID09
IFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25N
YW5hZ2VyKCkpOwogICAgIG1fa25vd25NYW5hZ2Vycy5hZGQobWFuYWdlcik7CiB9CiAKQEAgLTE0
NSw4ICsxNTUsMTQgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cmVtb3ZlTm90aWZp
Y2F0aW9uTWFuYWdlcihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYKIAogV0tEaWN0aW9uYXJ5UmVm
IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucygpCiB7Ci0g
ICAgLy8gSW5pdGlhbCBwZXJtaXNzaW9ucyBhcmUgYWx3YXlzIGVtcHR5LgotICAgIHJldHVybiBX
S011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCk7CisgICAgV0tSZXRhaW4obV9wZXJtaXNzaW9ucy5n
ZXQoKSk7CisgICAgcmV0dXJuIG1fcGVybWlzc2lvbnMuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXI6OnNldFBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGJv
b2wgYWxsb3dlZCkKK3sKKyAgICBhdXRvIHdrQWxsb3dlZCA9IGFkb3B0V0soV0tCb29sZWFuQ3Jl
YXRlKGFsbG93ZWQpKTsKKyAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKG1fcGVybWlzc2lvbnMuZ2V0
KCksIHRvV0sob3JpZ2luKS5nZXQoKSwgd2tBbGxvd2VkLmdldCgpKTsKIH0KIAogdm9pZCBXZWJO
b3RpZmljYXRpb25Qcm92aWRlcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS1BhZ2VS
ZWYsIFdLRGF0YVJlZiBub3RpZmljYXRpb25JRCkKQEAgLTE1Nyw2ICsxNzMsMTYgQEAgdm9pZCBX
ZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS1Bh
Z2VSZWYsIFdLRGF0YVJlZgogICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xp
Y2tOb3RpZmljYXRpb25fYihtX293bmluZ01hbmFnZXIuZ2V0KGlkZW50aWZpZXIpLCBub3RpZmlj
YXRpb25JRCk7CiB9CiAKK3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNpbXVsYXRlV2Vi
Tm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpCit7CisgICAg
YXV0byBzaGFyZWRNYW5hZ2VyID0gV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2Vydmlj
ZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFnZXIoKTsKKyAgICBmb3IgKGF1dG8mIGl0ZXJhdG9yIDog
bV9vd25pbmdNYW5hZ2VyKSB7CisgICAgICAgIGlmIChpdGVyYXRvci52YWx1ZSAhPSBzaGFyZWRN
YW5hZ2VyKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFdLTm90aWZpY2F0aW9uTWFu
YWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25fYihzaGFyZWRNYW5hZ2VyLCB1dWlkVG9E
YXRhKGl0ZXJhdG9yLmtleSkuZ2V0KCkpOworICAgIH0KK30KKwogdm9pZCBXZWJOb3RpZmljYXRp
b25Qcm92aWRlcjo6cmVzZXQoKQogewogICAgIGZvciAoYXV0byBpdGVyYXRvciA6IG1fb3duaW5n
TWFuYWdlcikgewpAQCAtMTY2LDYgKzE5Miw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlk
ZXI6OnJlc2V0KCkKICAgICB9CiAKICAgICBtX293bmluZ01hbmFnZXIuY2xlYXIoKTsKKyAgICBt
X3Blcm1pc3Npb25zID0gYWRvcHRXSyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXIuaAppbmRleCAwYzM4N2E2ZTZiNTUuLjU3YjZjZmFhNTEyZSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaApA
QCAtNDksMTEgKzQ5LDE2IEBAIHB1YmxpYzoKICAgICBXS0RpY3Rpb25hcnlSZWYgbm90aWZpY2F0
aW9uUGVybWlzc2lvbnMoKTsKIAogICAgIHZvaWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlj
ayhXS1BhZ2VSZWYsIFdLRGF0YVJlZiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBzaW11bGF0
ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKKwog
ICAgIHZvaWQgcmVzZXQoKTsKIAorICAgIHZvaWQgc2V0UGVybWlzc2lvbihjb25zdCBTdHJpbmcm
IG9yaWdpbiwgYm9vbCBhbGxvd2VkKTsKKwogcHJpdmF0ZToKICAgICBIYXNoU2V0PFdLUmV0YWlu
UHRyPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4+IG1fa25vd25NYW5hZ2VyczsKICAgICBIYXNo
TWFwPFVVSUQsIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4gbV9vd25pbmdNYW5hZ2VyOworICAg
IFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1fcGVybWlzc2lvbnM7CiB9Owog
CiB9Cg==
</data>
<flag name="commit-queue"
          id="478639"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451794</attachid>
            <date>2022-02-12 14:54:04 -0800</date>
            <delta_ts>2022-02-12 15:03:07 -0800</delta_ts>
            <desc>EWS v5</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>112999</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjExNjczMDkyNDhiYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcwpAQCAtMCwwICsxLDMwIEBACisKK2xldCBt
ZXNzYWdlQ2xpZW50cyA9IGFzeW5jIGZ1bmN0aW9uKG1zZykgeyAKKyAgICBjb25zdCBhbGxDbGll
bnRzID0gYXdhaXQgY2xpZW50cy5tYXRjaEFsbCh7CisgICAgICAgIGluY2x1ZGVVbmNvbnRyb2xs
ZWQ6IHRydWUKKyAgICB9KTsKKworICAgIGZvciAoY29uc3QgY2xpZW50IG9mIGFsbENsaWVudHMp
CisgICAgICAgIGNsaWVudC5wb3N0TWVzc2FnZShtc2cpOworfQorCitzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ25vdGlmaWNhdGlvbmNsaWNrJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBh
d2FpdCBtZXNzYWdlQ2xpZW50cygiY2xpY2tlZCIpOworICAgIGV2ZW50Lm5vdGlmaWNhdGlvbi5j
bG9zZSgpOworfSk7CisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcignbm90aWZpY2F0aW9uY2xvc2Un
LCBhc3luYyBmdW5jdGlvbihldmVudCkgeworICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJjbG9z
ZWQiKTsKK30pOworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyBmdW5j
dGlvbihldmVudCkgeworICAgIC8vIFJlcGx5IGlmIHRoZSBzaG93IHN1Y2NlZWRlZCBvciBmYWls
ZWQuCisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgcmVnaXN0cmF0aW9uLnNob3dOb3RpZmljYXRp
b24oIlRoaXMgaXMgYSBub3RpZmljYXRpb24iKTsKKyAgICB9IGNhdGNoKGVycm9yKSB7CisgICAg
ICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJzaG93RmFpbGVkIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoInNob3duIik7Cit9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3Rp
ZmljYXRpb24tYWxsb3dlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmFkNTRiMDI0ZDEzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25v
dGlmaWNhdGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRl
c3RzIHRoYXQgYSBub3RpZmljYXRpb24gc2hvd24gYnkgYSBzZXJ2aWNlIHdvcmtlciBjYW4gYmUg
Y2xpY2tlZCBhbmQgY2xvc2VkLCB3aXRoIHRob3NlIGFjdGlvbnMgYmVpbmcgb2JzZXJ2YWJsZSBi
eSB0aGUgc2VydmljZSB3b3JrZXIKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgTm90aWZpY2F0aW9uLnBlcm1pc3Npb24gaXMgImdyYW50ZWQiCitQQVNTIGdvdENsaWNrZWQg
aXMgZmFsc2UKK1BBU1MgZ290Q2xvc2VkIGlzIGZhbHNlCitQQVNTIGdvdENsaWNrZWQgaXMgdHJ1
ZQorUEFTUyBnb3RDbG9zZWQgaXMgZmFsc2UKK1BBU1MgQ2xvc2UgaGFzIGJlZW4gb2JzZXJ2ZWQK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hv
d25vdGlmaWNhdGlvbi1hbGxvd2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFkNGEwMDE1Njc5NQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24t
YWxsb3dlZC5odG1sCkBAIC0wLDAgKzEsNzYgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
bm90aWZpY2F0aW9ucy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlv
biBmYWlsVGhlVGVzdChtc2cpCit7CisgICAgdGVzdEZhaWxlZChtc2cpOworICAgIGlmICh0ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVz
dFJ1bm5lci5ncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24odGVzdFVSTCk7CisgICAgc2V0
VGltZW91dCgiZmFpbFRoZVRlc3QoJ3RpbWVkIG91dCcpIiwgMTUwMDApOworfQorCitkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uIHNob3duIGJ5IGEgc2VydmljZSB3
b3JrZXIgY2FuIGJlIGNsaWNrZWQgYW5kIGNsb3NlZCwgd2l0aCB0aG9zZSBhY3Rpb25zIGJlaW5n
IG9ic2VydmFibGUgYnkgdGhlIHNlcnZpY2Ugd29ya2VyIik7CisKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygiTm90aWZpY2F0aW9uLnBlcm1pc3Npb24iLCAiZ3JhbnRlZCIpOworCithc3luYyBmdW5j
dGlvbiByZWdpc3RlclNlcnZpY2VXb3JrZXIoKSB7CisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3
YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCdyZXNvdXJjZXMvc2hvd25vdGlm
aWNhdGlvbi13b3JrZXIuanMnKTsKKyAgICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAg
ICAgcmV0dXJuIHRlc3RGYWlsZWQoIk5vIHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChy
ZWdpc3RyYXRpb24uYWN0aXZlKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1l
c3NhZ2UoIlN0YXJ0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFs
bGluZ1dvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGlu
Z1dvcmtlcikKKyAgICAgICAgZmFpbFRoZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcg
d29ya2VyIik7CisKKyAgICBpbnN0YWxsaW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRl
Y2hhbmdlIiwgKCkgPT4geworICAgICAgICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0g
ImFjdGl2YXRlZCIpIHsKKyAgICAgICAgICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2Uo
InRyeXNob3ciKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCit2YXIgZ290Q2xpY2tlZCA9IGZh
bHNlOwordmFyIGdvdENsb3NlZCA9IGZhbHNlOworCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5kYXRh
ID09ICJzaG93RmFpbGVkIikgeworICAgICAgICBmYWlsVGhlVGVzdCgiVW5leHBlY3RlZGx5IHJl
Y2VpdmVkIHRoZSBmYWlsZWQtdG8tc2hvdyBtZXNzYWdlIik7CisgICAgfSBlbHNlIGlmIChldmVu
dC5kYXRhID09ICJzaG93biIpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9ucygpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xpY2tlZCIp
IHsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZ290Q2xpY2tlZCIpOworICAgICAgICBzaG91bGRC
ZUZhbHNlKCJnb3RDbG9zZWQiKTsKKyAgICAgICAgZ290Q2xpY2tlZCA9IHRydWU7CisgICAgfSBl
bHNlIGlmIChldmVudC5kYXRhID09ICJjbG9zZWQiKSB7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgi
Z290Q2xpY2tlZCIpCisgICAgICAgIHNob3VsZEJlRmFsc2UoImdvdENsb3NlZCIpCisgICAgICAg
IGdvdENsb3NlZCA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTWVz
c2FnZSByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOworICAgIH0KKyAgICAKKyAgICBpZiAoZ290
Q2xvc2VkKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNsb3NlIGhhcyBiZWVuIG9ic2VydmVkIik7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgIH0KK30pOworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0icmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkiPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5p
ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
c2hvd25vdGlmaWNhdGlvbi1kZW5pZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uMjAxOGE0M2U1ZGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5p
ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgbm90aWZp
Y2F0aW9uIHNob3duIGJ5IGEgc2VydmljZSB3b3JrZXIgY2FuIGJlIGNsaWNrZWQgYW5kIGNsb3Nl
ZCwgd2l0aCB0aG9zZSBhY3Rpb25zIGJlaW5nIG9ic2VydmFibGUgYnkgdGhlIHNlcnZpY2Ugd29y
a2VyCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIE5vdGlmaWNhdGlvbi5w
ZXJtaXNzaW9uIGlzICJkZW5pZWQiCitQQVNTIE5vdGlmaWNhdGlvbiBmYWlsZWQgdG8gc2hvdwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zaG93
bm90aWZpY2F0aW9uLWRlbmllZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5pZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjc3NDZmN2M2NmU0NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tZGVu
aWVkLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy9ub3Rp
ZmljYXRpb25zLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGZh
aWxUaGVUZXN0KG1zZykKK3sKKyAgICB0ZXN0RmFpbGVkKG1zZyk7CisgICAgaWYgKHRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVu
bmVyLmRlbnlXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKHRlc3RVUkwpOworICAgIHNldFRpbWVv
dXQoImZhaWxUaGVUZXN0KCd0aW1lZCBvdXQnKSIsIDE1MDAwKTsKK30KKworZGVzY3JpcHRpb24o
IlRoaXMgdGVzdHMgdGhhdCBhIG5vdGlmaWNhdGlvbiBzaG93biBieSBhIHNlcnZpY2Ugd29ya2Vy
IGNhbiBiZSBjbGlja2VkIGFuZCBjbG9zZWQsIHdpdGggdGhvc2UgYWN0aW9ucyBiZWluZyBvYnNl
cnZhYmxlIGJ5IHRoZSBzZXJ2aWNlIHdvcmtlciIpOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmco
Ik5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIiwgImRlbmllZCIpOworCithc3luYyBmdW5jdGlvbiBy
ZWdpc3RlclNlcnZpY2VXb3JrZXIoKSB7CisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5h
dmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCdyZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlv
bi13b3JrZXIuanMnKTsKKyAgICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAgICAgcmV0
dXJuIHRlc3RGYWlsZWQoIk5vIHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChyZWdpc3Ry
YXRpb24uYWN0aXZlKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1lc3NhZ2Uo
IlN0YXJ0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFsbGluZ1dv
cmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGluZ1dvcmtl
cikKKyAgICAgICAgZmFpbFRoZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcgd29ya2Vy
Iik7CisKKyAgICBpbnN0YWxsaW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRlY2hhbmdl
IiwgKCkgPT4geworICAgICAgICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0gImFjdGl2
YXRlZCIpIHsKKyAgICAgICAgICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2UoInRyeXNo
b3ciKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5kYXRh
ID09ICJzaG93RmFpbGVkIikgeworICAgICAgICB0ZXN0UGFzc2VkKCJOb3RpZmljYXRpb24gZmFp
bGVkIHRvIHNob3ciKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09
ICJzaG93biIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTm90aWZpY2F0aW9uIHNob3duLCBidXQg
c2hvdWxkbid0IGhhdmUgYmVlbiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQo
Ik1lc3NhZ2UgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKKyAgICB9Cit9KTsKKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJlZ2lzdGVyU2VydmljZVdvcmtlcigpIj4KKzwv
Ym9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvbm90aWZpY2F0aW9ucy9pZGxoYXJuZXNzLmh0dHBzLmFueS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL25vdGlmaWNhdGlvbnMv
aWRsaGFybmVzcy5odHRwcy5hbnktZXhwZWN0ZWQudHh0CmluZGV4IDM1ODk5NWQ2ZWY1ZS4uMzNk
NDU2MDU1MzQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL25vdGlmaWNhdGlvbnMvaWRsaGFybmVzcy5odHRwcy5hbnktZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbm90aWZp
Y2F0aW9ucy9pZGxoYXJuZXNzLmh0dHBzLmFueS1leHBlY3RlZC50eHQKQEAgLTYyLDYgKzYyLDYg
QEAgRkFJTCBOb3RpZmljYXRpb24gaW50ZXJmYWNlOiBub3RpZmljYXRpb24gbXVzdCBpbmhlcml0
IHByb3BlcnR5ICJkYXRhIiB3aXRoIHRoZQogRkFJTCBOb3RpZmljYXRpb24gaW50ZXJmYWNlOiBu
b3RpZmljYXRpb24gbXVzdCBpbmhlcml0IHByb3BlcnR5ICJhY3Rpb25zIiB3aXRoIHRoZSBwcm9w
ZXIgdHlwZSBhc3NlcnRfaW5oZXJpdHM6IHByb3BlcnR5ICJhY3Rpb25zIiBub3QgZm91bmQgaW4g
cHJvdG90eXBlIGNoYWluCiBQQVNTIE5vdGlmaWNhdGlvbiBpbnRlcmZhY2U6IG5vdGlmaWNhdGlv
biBtdXN0IGluaGVyaXQgcHJvcGVydHkgImNsb3NlKCkiIHdpdGggdGhlIHByb3BlciB0eXBlCiBQ
QVNTIE5vdGlmaWNhdGlvbkV2ZW50IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVz
IG9mIGludGVyZmFjZSBvYmplY3QKLUZBSUwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRl
cmZhY2U6IG9wZXJhdGlvbiBzaG93Tm90aWZpY2F0aW9uKERPTVN0cmluZywgb3B0aW9uYWwgTm90
aWZpY2F0aW9uT3B0aW9ucykgYXNzZXJ0X293bl9wcm9wZXJ0eTogaW50ZXJmYWNlIHByb3RvdHlw
ZSBvYmplY3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJhdGlvbiBleHBlY3RlZCBwcm9wZXJ0eSAi
c2hvd05vdGlmaWNhdGlvbiIgbWlzc2luZwotRkFJTCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
IGludGVyZmFjZTogb3BlcmF0aW9uIGdldE5vdGlmaWNhdGlvbnMob3B0aW9uYWwgR2V0Tm90aWZp
Y2F0aW9uT3B0aW9ucykgYXNzZXJ0X293bl9wcm9wZXJ0eTogaW50ZXJmYWNlIHByb3RvdHlwZSBv
YmplY3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJhdGlvbiBleHBlY3RlZCBwcm9wZXJ0eSAiZ2V0
Tm90aWZpY2F0aW9ucyIgbWlzc2luZworUEFTUyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGlu
dGVyZmFjZTogb3BlcmF0aW9uIHNob3dOb3RpZmljYXRpb24oRE9NU3RyaW5nLCBvcHRpb25hbCBO
b3RpZmljYXRpb25PcHRpb25zKQorUEFTUyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGludGVy
ZmFjZTogb3BlcmF0aW9uIGdldE5vdGlmaWNhdGlvbnMob3B0aW9uYWwgR2V0Tm90aWZpY2F0aW9u
T3B0aW9ucykKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9ub3RpZmljYXRpb25zL2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3Jr
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9ub3RpZmljYXRpb25zL2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3JrZXItZXhw
ZWN0ZWQudHh0CmluZGV4IDQyNDZmZTU2NjJlZC4uMzE2YzEzN2MzYjM1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL25vdGlmaWNhdGlvbnMv
aWRsaGFybmVzcy5odHRwcy5hbnkuc2VydmljZXdvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ub3RpZmljYXRpb25zL2lk
bGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0zNSwxOCAr
MzUsMTggQEAgRkFJTCBOb3RpZmljYXRpb24gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgcmVxdWlyZUlu
dGVyYWN0aW9uIGFzc2VydF9vd25fcHJvcGVydHk6IHMKIEZBSUwgTm90aWZpY2F0aW9uIGludGVy
ZmFjZTogYXR0cmlidXRlIGRhdGEgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBo
YXZlIG93biBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uIiBleHBlY3RlZCBwcm9wZXJ0eSAiTm90aWZp
Y2F0aW9uIiBtaXNzaW5nCiBGQUlMIE5vdGlmaWNhdGlvbiBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBh
Y3Rpb25zIGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVy
dHkgIk5vdGlmaWNhdGlvbiIgZXhwZWN0ZWQgcHJvcGVydHkgIk5vdGlmaWNhdGlvbiIgbWlzc2lu
ZwogRkFJTCBOb3RpZmljYXRpb24gaW50ZXJmYWNlOiBvcGVyYXRpb24gY2xvc2UoKSBhc3NlcnRf
b3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJOb3RpZmljYXRp
b24iIGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb24iIG1pc3NpbmcKLUZBSUwgTm90aWZp
Y2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJm
YWNlIG9iamVjdCBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHBy
b3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgZXhwZWN0ZWQgcHJvcGVydHkgIk5vdGlmaWNhdGlv
bkV2ZW50IiBtaXNzaW5nCi1GQUlMIE5vdGlmaWNhdGlvbkV2ZW50IGludGVyZmFjZSBvYmplY3Qg
bGVuZ3RoIGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVy
dHkgIk5vdGlmaWNhdGlvbkV2ZW50IiBleHBlY3RlZCBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uRXZl
bnQiIG1pc3NpbmcKLUZBSUwgTm90aWZpY2F0aW9uRXZlbnQgaW50ZXJmYWNlIG9iamVjdCBuYW1l
IGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIk5v
dGlmaWNhdGlvbkV2ZW50IiBleHBlY3RlZCBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uRXZlbnQiIG1p
c3NpbmcKLUZBSUwgTm90aWZpY2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHBy
b3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgYXNzZXJ0X293bl9wcm9wZXJ0
eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uRXZlbnQiIGV4
cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgbWlzc2luZwotRkFJTCBOb3RpZmlj
YXRpb25FdmVudCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZh
Y2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25zdHJ1Y3RvciIgcHJvcGVydHkgYXNzZXJ0X293bl9w
cm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uRXZl
bnQiIGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgbWlzc2luZwotRkFJTCBO
b3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBp
bnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29wYWJsZXMgcHJvcGVydHkgYXNzZXJ0
X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90aWZpY2F0
aW9uRXZlbnQiIGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgbWlzc2luZwot
RkFJTCBOb3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBub3RpZmljYXRpb24g
YXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90
aWZpY2F0aW9uRXZlbnQiIGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgbWlz
c2luZwotRkFJTCBOb3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBhY3Rpb24g
YXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90
aWZpY2F0aW9uRXZlbnQiIGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgbWlz
c2luZwotRkFJTCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGludGVyZmFjZTogb3BlcmF0aW9u
IHNob3dOb3RpZmljYXRpb24oRE9NU3RyaW5nLCBvcHRpb25hbCBOb3RpZmljYXRpb25PcHRpb25z
KSBhc3NlcnRfb3duX3Byb3BlcnR5OiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBtaXNzaW5n
IG5vbi1zdGF0aWMgb3BlcmF0aW9uIGV4cGVjdGVkIHByb3BlcnR5ICJzaG93Tm90aWZpY2F0aW9u
IiBtaXNzaW5nCi1GQUlMIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gaW50ZXJmYWNlOiBvcGVy
YXRpb24gZ2V0Tm90aWZpY2F0aW9ucyhvcHRpb25hbCBHZXROb3RpZmljYXRpb25PcHRpb25zKSBh
c3NlcnRfb3duX3Byb3BlcnR5OiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBtaXNzaW5nIG5v
bi1zdGF0aWMgb3BlcmF0aW9uIGV4cGVjdGVkIHByb3BlcnR5ICJnZXROb3RpZmljYXRpb25zIiBt
aXNzaW5nCi1GQUlMIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJpYnV0
ZSBvbm5vdGlmaWNhdGlvbmNsaWNrIGFzc2VydF9vd25fcHJvcGVydHk6IFRoZSBnbG9iYWwgb2Jq
ZWN0IG11c3QgaGF2ZSBhIHByb3BlcnR5ICJvbm5vdGlmaWNhdGlvbmNsaWNrIiBleHBlY3RlZCBw
cm9wZXJ0eSAib25ub3RpZmljYXRpb25jbGljayIgbWlzc2luZwotRkFJTCBTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgb25ub3RpZmljYXRpb25jbG9zZSBhc3Nl
cnRfb3duX3Byb3BlcnR5OiBUaGUgZ2xvYmFsIG9iamVjdCBtdXN0IGhhdmUgYSBwcm9wZXJ0eSAi
b25ub3RpZmljYXRpb25jbG9zZSIgZXhwZWN0ZWQgcHJvcGVydHkgIm9ubm90aWZpY2F0aW9uY2xv
c2UiIG1pc3NpbmcKLUZBSUwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVyZmFjZTogc2Vs
ZiBtdXN0IGluaGVyaXQgcHJvcGVydHkgIm9ubm90aWZpY2F0aW9uY2xpY2siIHdpdGggdGhlIHBy
b3BlciB0eXBlIGFzc2VydF9vd25fcHJvcGVydHk6IGV4cGVjdGVkIHByb3BlcnR5ICJvbm5vdGlm
aWNhdGlvbmNsaWNrIiBtaXNzaW5nCi1GQUlMIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRl
cmZhY2U6IHNlbGYgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJvbm5vdGlmaWNhdGlvbmNsb3NlIiB3
aXRoIHRoZSBwcm9wZXIgdHlwZSBhc3NlcnRfb3duX3Byb3BlcnR5OiBleHBlY3RlZCBwcm9wZXJ0
eSAib25ub3RpZmljYXRpb25jbG9zZSIgbWlzc2luZworUEFTUyBOb3RpZmljYXRpb25FdmVudCBp
bnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0CitQ
QVNTIE5vdGlmaWNhdGlvbkV2ZW50IGludGVyZmFjZSBvYmplY3QgbGVuZ3RoCitQQVNTIE5vdGlm
aWNhdGlvbkV2ZW50IGludGVyZmFjZSBvYmplY3QgbmFtZQorUEFTUyBOb3RpZmljYXRpb25FdmVu
dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90
eXBlIG9iamVjdAorUEFTUyBOb3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBh
bmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25zdHJ1Y3Rv
ciIgcHJvcGVydHkKK1BBU1MgTm90aWZpY2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBleGlzdGVuY2Ug
YW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyBAQHVuc2NvcGFi
bGVzIHByb3BlcnR5CitQQVNTIE5vdGlmaWNhdGlvbkV2ZW50IGludGVyZmFjZTogYXR0cmlidXRl
IG5vdGlmaWNhdGlvbgorUEFTUyBOb3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2U6IGF0dHJpYnV0
ZSBhY3Rpb24KK1BBU1MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IG9wZXJh
dGlvbiBzaG93Tm90aWZpY2F0aW9uKERPTVN0cmluZywgb3B0aW9uYWwgTm90aWZpY2F0aW9uT3B0
aW9ucykKK1BBU1MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IG9wZXJhdGlv
biBnZXROb3RpZmljYXRpb25zKG9wdGlvbmFsIEdldE5vdGlmaWNhdGlvbk9wdGlvbnMpCitQQVNT
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBvbm5vdGlmaWNh
dGlvbmNsaWNrCitQQVNTIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJp
YnV0ZSBvbm5vdGlmaWNhdGlvbmNsb3NlCitQQVNTIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBp
bnRlcmZhY2U6IHNlbGYgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJvbm5vdGlmaWNhdGlvbmNsaWNr
IiB3aXRoIHRoZSBwcm9wZXIgdHlwZQorUEFTUyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgaW50
ZXJmYWNlOiBzZWxmIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAib25ub3RpZmljYXRpb25jbG9zZSIg
d2l0aCB0aGUgcHJvcGVyIHR5cGUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1By
ZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0
cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKaW5kZXggOGQzZWVkMTM5
NTRmLi4wMWIyZjVlNmI4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJl
bmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRz
L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbApAQCAtNjQ0LDggKzY0NCwx
MCBAQCBOb3RpZmljYXRpb25FdmVudEVuYWJsZWQ6CiAgIGNvbmRpdGlvbjogRU5BQkxFKE5PVElG
SUNBVElPTl9FVkVOVCkKICAgZGVmYXVsdFZhbHVlOgogICAgIFdlYkNvcmU6CisgICAgICAiRU5B
QkxFKE5PVElGSUNBVElPTl9FVkVOVCkiOiB0cnVlCiAgICAgICBkZWZhdWx0OiBmYWxzZQogICAg
IFdlYktpdDoKKyAgICAgICJFTkFCTEUoTk9USUZJQ0FUSU9OX0VWRU5UKSI6IHRydWUKICAgICAg
IGRlZmF1bHQ6IGZhbHNlCiAKIE9mZnNjcmVlbkNhbnZhc0VuYWJsZWQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4
IDY4NWIxZTRkMWEzYS4uMDhlMmE4ZWQ4YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtNDAsNyArNDAsOSBA
QAogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0
aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uRGF0YS5oIgorI2luY2x1ZGUgIk5v
dGlmaWNhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAi
V2luZG93RXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9y
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC0xMDIsOSArMTA0LDE5
IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KGNsaWVudC0+Y2hlY2tQZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgIT0gUGVy
bWlzc2lvbjo6R3JhbnRlZCkgewotICAgICAgICBkaXNwYXRjaEVycm9yRXZlbnQoKTsKKyAgICAg
ICAgc3dpdGNoIChtX25vdGlmaWNhdGlvblNvdXJjZSkgeworICAgICAgICBjYXNlIE5vdGlmaWNh
dGlvblNvdXJjZTo6RG9jdW1lbnQ6CisgICAgICAgICAgICBkaXNwYXRjaEVycm9yRXZlbnQoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5vdGlmaWNhdGlvblNvdXJjZTo6U2Vy
dmljZVdvcmtlcjoKKyAgICAgICAgICAgIC8vIFdlIGRpZCBhIHBlcm1pc3Npb24gY2hlY2sgd2hl
biBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKCkgd2FzIGNhbGxl
ZC4KKyAgICAgICAgICAgIC8vIElmIHBlcm1pc3Npb24gaGFzIHNpbmNlIGJlZW4gcmV2b2tlZCwg
dGhlbiBzaWxlbnRseSBmYWlsaW5nIGhlcmUgaXMgZXhwZWN0ZWQgYmVoYXZpb3IuCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBp
ZiAoY2xpZW50LT5zaG93KCp0aGlzKSkKICAgICAgICAgbV9zdGF0ZSA9IFNob3dpbmc7CiB9CkBA
IC0xNTgsMjAgKzE3MCw1NCBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6ZmluYWxpemUoKQogCiB2b2lk
IE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hTaG93RXZlbnQoKQogeworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisKKyAgICBpZiAobV9ub3RpZmljYXRpb25Tb3VyY2UgIT0gTm90aWZpY2F0aW9u
U291cmNlOjpEb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgcXVldWVUYXNrVG9EaXNw
YXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpVc2VySW50ZXJhY3Rpb24sIEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLnNob3dFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaENsaWNr
RXZlbnQoKQogewotICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1Nv
dXJjZTo6VXNlckludGVyYWN0aW9uLCBbdGhpc10gewotICAgICAgICBXaW5kb3dGb2N1c0FsbG93
ZWRJbmRpY2F0b3Igd2luZG93Rm9jdXNBbGxvd2VkOwotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5v
LCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgIH0pOworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisKKyAgICBzd2l0Y2ggKG1fbm90aWZpY2F0aW9uU291cmNlKSB7CisgICAgY2Fz
ZSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3VtZW50OgorICAgICAgICBxdWV1ZVRhc2tLZWVwaW5n
T2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgW3RoaXNdIHsK
KyAgICAgICAgICAgIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvciB3aW5kb3dGb2N1c0FsbG93
ZWQ7CisgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpO
bykpOworICAgICAgICB9KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb3RpZmljYXRpb25T
b3VyY2U6OlNlcnZpY2VXb3JrZXI6CisgICAgICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CisgICAgICAgIGlmICghY29udGV4dCkKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvbnRleHQtPmlzU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlKCkpOworICAgICAgICBzdGF0aWNfY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUq
Pihjb250ZXh0KS0+cG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChOb3RpZmljYXRpb25F
dmVudFR5cGU6OkNsaWNrLCAqdGhpcywgeyB9KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogfQog
CiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KCkKIHsKLSAgICBxdWV1ZVRh
c2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KworICAgIHN3aXRjaCAobV9ub3RpZmljYXRpb25Tb3VyY2UpIHsKKyAgICBjYXNlIE5vdGlmaWNh
dGlvblNvdXJjZTo6RG9jdW1lbnQ6CisgICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgq
dGhpcywgVGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5jbG9zZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OlNl
cnZpY2VXb3JrZXI6CisgICAgICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CisgICAgICAgIGlmICghY29udGV4dCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGNvbnRleHQtPmlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCkp
OworICAgICAgICBzdGF0aWNfY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUqPihjb250ZXh0
KS0+cG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChOb3RpZmljYXRpb25FdmVudFR5cGU6
OkNsb3NlLCAqdGhpcywgeyB9KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZmluYWxp
emUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25FdmVudC5jcHAKaW5kZXggNTg3NGI3NjEwMmZmLi5lMWQyOTdi
OTZhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkV2ZW50LmNwcApAQCAtMzAsNiArMzAsMjcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTm90aWZpY2F0aW9u
RXZlbnQpOworCitSZWY8Tm90aWZpY2F0aW9uRXZlbnQ+IE5vdGlmaWNhdGlvbkV2ZW50OjpjcmVh
dGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSW5pdCYmIGluaXQsIElzVHJ1c3RlZCBpc1RydXN0
ZWQpCit7CisgICAgYXV0byogbm90aWZpY2F0aW9uID0gaW5pdC5ub3RpZmljYXRpb24uZ2V0KCk7
CisgICAgYXV0byBhY3Rpb24gPSBpbml0LmFjdGlvbjsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBOb3RpZmljYXRpb25FdmVudCh0eXBlLCBXVEZNb3ZlKGluaXQpLCBub3RpZmljYXRpb24sIGFj
dGlvbiwgaXNUcnVzdGVkKSk7Cit9CisKK1JlZjxOb3RpZmljYXRpb25FdmVudD4gTm90aWZpY2F0
aW9uRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbiwgY29uc3QgU3RyaW5nJiBhY3Rpb24sIElzVHJ1c3RlZCBpc1RydXN0ZWQpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTm90aWZpY2F0aW9uRXZlbnQodHlwZSwgeyB9LCBu
b3RpZmljYXRpb24sIGFjdGlvbiwgaXNUcnVzdGVkKSk7Cit9CisKK05vdGlmaWNhdGlvbkV2ZW50
OjpOb3RpZmljYXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBOb3RpZmljYXRpb25F
dmVudEluaXQmJiBldmVudEluaXQsIE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBjb25zdCBT
dHJpbmcmIGFjdGlvbiwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKKyAgICA6IEV4dGVuZGFibGVFdmVu
dCh0eXBlLCBXVEZNb3ZlKGV2ZW50SW5pdCksIGlzVHJ1c3RlZCkKKyAgICAsIG1fbm90aWZpY2F0
aW9uKG5vdGlmaWNhdGlvbikKKyAgICAsIG1fYWN0aW9uKGFjdGlvbikKK3sKK30KKwogTm90aWZp
Y2F0aW9uRXZlbnQ6On5Ob3RpZmljYXRpb25FdmVudCgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25FdmVudC5oCmlu
ZGV4IDkyN2ViNTAxYWQ5Yi4uYjIxYzJlZDg0YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaApAQCAtMzMs
MTQgKzMzLDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZW51bSBjbGFzcyBOb3RpZmlj
YXRpb25FdmVudFR5cGUgOiBib29sIHsKKyAgICBDbGljaywKKyAgICBDbG9zZSwKK307CisKK3N0
cnVjdCBOb3RpZmljYXRpb25FdmVudEluaXQgOiBFeHRlbmRhYmxlRXZlbnRJbml0IHsKKyAgICBS
ZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb247CisgICAgU3RyaW5nIGFjdGlvbjsKK307
CisKIGNsYXNzIE5vdGlmaWNhdGlvbkV2ZW50IGZpbmFsIDogcHVibGljIEV4dGVuZGFibGVFdmVu
dCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChOb3RpZmljYXRpb25FdmVudCk7CiBwdWJs
aWM6CiAgICAgfk5vdGlmaWNhdGlvbkV2ZW50KCk7CiAKLSAgICBzdHJ1Y3QgSW5pdCA6IEV4dGVu
ZGFibGVFdmVudEluaXQgewotICAgICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRp
b247Ci0gICAgICAgIFN0cmluZyBhY3Rpb247Ci0gICAgfTsKKyAgICB1c2luZyBJbml0ID0gTm90
aWZpY2F0aW9uRXZlbnRJbml0OworCisgICAgc3RhdGljIFJlZjxOb3RpZmljYXRpb25FdmVudD4g
Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmLCBJbml0JiYsIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6
Tm8pOworICAgIHN0YXRpYyBSZWY8Tm90aWZpY2F0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
U3RyaW5nJiwgTm90aWZpY2F0aW9uKiwgY29uc3QgU3RyaW5nJiBhY3Rpb24sIElzVHJ1c3RlZCA9
IElzVHJ1c3RlZDo6Tm8pOwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBOb3RpZmljYXRpb25FdmVudEludGVyZmFjZVR5cGU7IH0KIApA
QCAtNDgsNiArNTksOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBhY3Rpb24oKSB7IHJl
dHVybiBtX2FjdGlvbjsgfQogCiBwcml2YXRlOgorICAgIE5vdGlmaWNhdGlvbkV2ZW50KGNvbnN0
IEF0b21TdHJpbmcmLCBOb3RpZmljYXRpb25FdmVudEluaXQmJiwgTm90aWZpY2F0aW9uKiwgY29u
c3QgU3RyaW5nJiBhY3Rpb24sIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOworCiAgICAgUmVm
UHRyPE5vdGlmaWNhdGlvbj4gbV9ub3RpZmljYXRpb247CiAgICAgU3RyaW5nIG1fYWN0aW9uOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbXB0eVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbXB0eVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAppbmRleCAyMzFiM2JmMWNhOTguLjcxYzcyZWY5Yzk2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VtcHR5U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbXB0eVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtOTQsNiArOTQsMTAgQEAg
cHJpdmF0ZToKIAogICAgIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdzVmFsdWVzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXR0aW5nc1ZhbHVlczsgfQogCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCisgICAgTm90aWZpY2F0aW9uQ2xpZW50KiBub3RpZmljYXRpb25DbGllbnQo
KSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKKwogICAgIGNsYXNzIEVtcHR5RXZl
bnRMb29wIGZpbmFsIDogcHVibGljIEV2ZW50TG9vcCB7CiAgICAgcHVibGljOgogICAgICAgICBz
dGF0aWMgUmVmPEVtcHR5RXZlbnRMb29wPiBjcmVhdGUoSlNDOjpWTSYgdm0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBkMDAwZDU5ZDVhMDUuLjA3
MjdiMWYxNGEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCkBAIC04MCw2ICs4MCwxMCBAQCBlbnVtIGNsYXNzIExvYWRlZEZyb21PcGFxdWVTb3VyY2Ug
OiB1aW50OF90OwogZW51bSBjbGFzcyBSZWZlcnJlclBvbGljeSA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIFRhc2tTb3VyY2UgOiB1aW50OF90OwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitj
bGFzcyBOb3RpZmljYXRpb25DbGllbnQ7CisjZW5kaWYKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKIGNsYXNzIFNlcnZpY2VXb3JrZXI7CiBjbGFzcyBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCBj
YmYyNmNiMTViZDUuLjNmZTUxZmQxZTQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTQwMyw3ICs0MDMsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VWRU5UKQotICAgIGJvb2wgbV9ub3RpZmljYXRp
b25FdmVudEVuYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9ub3RpZmljYXRpb25FdmVudEVu
YWJsZWQgeyB0cnVlIH07CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5kZXggMjk5ZmM0YmQyZWJjLi4xMGJl
MDBjY2UwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtMTgz
LDcgKzE4Myw3IEBAIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVQcml2
YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpCiAKICAgICBpZiAoc2hvdWxkRGlz
YWJsZUNGVVJMQ2FjaGUgPT0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpTaG91bGREaXNhYmxlQ0ZV
UkxDYWNoZTo6WWVzKSB7CiAjaWYgSEFWRShDRk5FVFdPUktfRElTQUJMRV9DQUNIRV9TUEkpCi0g
ICAgICAgIF9DRlVSTFN0b3JhZ2VTZXNzaW9uRGlzYWJsZUNhY2hlKHN0b3JhZ2VTZXNzaW9uLmdl
dCgpKTsKKyAgICAgICAgLy9fQ0ZVUkxTdG9yYWdlU2Vzc2lvbkRpc2FibGVDYWNoZShzdG9yYWdl
U2Vzc2lvbi5nZXQoKSk7CiAjZWxzZQogICAgICAgICBzaG91bGREaXNhYmxlQ0ZVUkxDYWNoZSA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6U2hvdWxkRGlzYWJsZUNGVVJMQ2FjaGU6Ok5vOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlLmgKaW5kZXggMWQ4ZTNhZDJhY2I5Li5hMGQxNmQ3NDcwOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTk0
LDYgKzk0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsg
cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0K
IAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIE5vdGlmaWNhdGlvbkNsaWVudCogbm90
aWZpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCisK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4gbV9z
Y3JpcHQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcmlwdE1vZHVsZUxvYWRlcj4gbV9tb2R1bGVM
b2FkZXI7CiAgICAgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiBtX3RocmVhZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IGI0Zjc2OTRjNmIxZS4uZGM5Nzc0ZTkyZTdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCIKICNpbmNsdWRl
ICJDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmgiCiAjaW5jbHVkZSAiRmV0Y2hSZXF1ZXN0Q3Jl
ZGVudGlhbHMuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uLmgiCiAjaW5jbHVk
ZSAiV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2VyUnVuTG9vcC5oIgog
I2luY2x1ZGUgIldvcmtlclR5cGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggOTA0ZDRm
Yzg4Y2FhLi5mMzNiOWMwNjNlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNs
aWVudC5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSAiTm90
aWZpY2F0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnQuaCIKQEAg
LTY5LDcgKzcwLDEzIEBAIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6U2VydmljZVdvcmtlckds
b2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvCiB7CiB9CiAKLVNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZTo6flNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpID0gZGVmYXVsdDsK
K1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6flNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpCit7
CisgICAgLy8gTm90aWZpY2F0aW9uQ2xpZW50IG1pZ2h0IGhhdmUgc29tZSBpbnRlcmFjdGlvbnMg
cGVuZGluZyB3aXRoIHRoZSBtYWluIHRocmVhZCwKKyAgICAvLyBzbyBpdCBzaG91bGQgYWxzbyBi
ZSBkZXN0cm95ZWQgdGhlcmUuCisgICAgY2FsbE9uTWFpblRocmVhZChbbm90aWZpY2F0aW9uQ2xp
ZW50ID0gV1RGTW92ZShtX25vdGlmaWNhdGlvbkNsaWVudCldIHsKKyAgICB9KTsKK30KIAogdm9p
ZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6Om5vdGlmeVNlcnZpY2VXb3JrZXJQYWdlT2ZDcmVh
dGlvbklmTmVjZXNzYXJ5KCkKIHsKQEAgLTIwOCw2ICsyMTUsMzAgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGU6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFNjcmlwdEJ1ZmZlciYmIHNjcmlw
dCwgSGFzaE0KICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VWRU5UKQordm9p
ZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RUYXNrVG9GaXJlTm90aWZpY2F0aW9uRXZl
bnQoTm90aWZpY2F0aW9uRXZlbnRUeXBlIGV2ZW50VHlwZSwgTm90aWZpY2F0aW9uJiBub3RpZmlj
YXRpb24sIGNvbnN0IFN0cmluZyYgYWN0aW9uKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKKyAgICB0aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtldmVudFR5cGUs
IHByb3RlY3RlZE5vdGlmaWNhdGlvbiA9IFJlZiB7IG5vdGlmaWNhdGlvbiB9LCBhY3Rpb24gPSBh
Y3Rpb24uaXNvbGF0ZWRDb3B5KCldKGF1dG8mIHNjb3BlKSB7CisgICAgICAgIHNjb3BlLmV2ZW50
TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFsmc2NvcGUsIHBy
b3RlY3RlZFNjb3BlID0gUmVmIHsgc2NvcGUgfSwgZXZlbnRUeXBlLCBwcm90ZWN0ZWROb3RpZmlj
YXRpb24sIGFjdGlvbl0geworICAgICAgICAgICAgQXRvbVN0cmluZyBldmVudE5hbWU7CisgICAg
ICAgICAgICBzd2l0Y2ggKGV2ZW50VHlwZSkgeworICAgICAgICAgICAgY2FzZSBOb3RpZmljYXRp
b25FdmVudFR5cGU6OkNsaWNrOgorICAgICAgICAgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFt
ZXMoKS5ub3RpZmljYXRpb25jbGlja0V2ZW50OworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGU6OkNsb3NlOgorICAgICAgICAgICAg
ICAgIGV2ZW50TmFtZSA9IGV2ZW50TmFtZXMoKS5ub3RpZmljYXRpb25jbG9zZUV2ZW50OworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhdXRvIGV2
ZW50ID0gTm90aWZpY2F0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIHByb3RlY3RlZE5vdGlm
aWNhdGlvbi5wdHIoKSwgYWN0aW9uLCBFeHRlbmRhYmxlRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSY+KHNjb3Bl
KS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgfSk7CisgICAgfSwgV29ya2VyUnVuTG9v
cDo6ZGVmYXVsdE1vZGUoKSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4
IDA3MDc5ZjE5NTM0My4uNTEwYzFiMDcyYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zOSwx
MSArMzksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwog
Y2xhc3MgRXh0ZW5kYWJsZUV2ZW50OwogY2xhc3MgUGFnZTsKLXN0cnVjdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnQ7CiBjbGFzcyBTZXJ2aWNlV29y
a2VyQ2xpZW50czsKIGNsYXNzIFNlcnZpY2VXb3JrZXJUaHJlYWQ7CiAKK2VudW0gY2xhc3MgTm90
aWZpY2F0aW9uRXZlbnRUeXBlIDogYm9vbDsKKworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhOworCiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgZmluYWwgOiBwdWJsaWMgV29y
a2VyR2xvYmFsU2NvcGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKTsKIHB1YmxpYzoKQEAgLTgwLDcgKzgzLDExIEBAIHB1YmxpYzoKICAgICBG
ZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2VydmljZXdvcmtlcjsgfQogCiAgICAgV0VC
Q09SRV9FWFBPUlQgUGFnZSogc2VydmljZVdvcmtlclBhZ2UoKTsKLSAgICAKKworI2lmIEVOQUJM
RShOT1RJRklDQVRJT05fRVZFTlQpCisgICAgdm9pZCBwb3N0VGFza1RvRmlyZU5vdGlmaWNhdGlv
bkV2ZW50KE5vdGlmaWNhdGlvbkV2ZW50VHlwZSwgTm90aWZpY2F0aW9uJiwgY29uc3QgU3RyaW5n
JiBhY3Rpb24pOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBjb25z
dCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBTZXJ2aWNlV29ya2Vy
VGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmlj
YXRpb25DbGllbnQ+JiYsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIG5vdGlmeVNlcnZpY2VX
b3JrZXJQYWdlT2ZDcmVhdGlvbklmTmVjZXNzYXJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAK
aW5kZXggNTAxNzgxZjcwZDVmLi4xNWYyYjZiY2Y0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5j
cHAKQEAgLTMwLDEwICszMCwxMyBAQAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIK
ICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvblByZWxvYWRNYW5h
Z2VyLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiTm90aWZp
Y2F0aW9uUGVybWlzc2lvbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVz
LmgiCkBAIC0yNjQsMjAgKzI2NywzOCBAQCBOYXZpZ2F0aW9uUHJlbG9hZE1hbmFnZXImIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb246Om5hdmlnYXRpb25QcmVsb2FkKCkKIH0KIAogI2lmIEVOQUJM
RShOT1RJRklDQVRJT05fRVZFTlQpCi12b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnNo
b3dOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IE5vdGlmaWNhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByb21pc2UpCit2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnNob3dO
b3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5n
JiB0aXRsZSwgY29uc3QgTm90aWZpY2F0aW9uT3B0aW9ucyYgb3B0aW9ucywgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKLSAgICBVTlVTRURfUEFSQU0odGl0bGUpOwotICAg
IFVOVVNFRF9QQVJBTShvcHRpb25zKTsKKyAgICBpZiAoIW1fYWN0aXZlV29ya2VyKSB7CisgICAg
ICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlJlZ2lzdHJhdGlvbiBk
b2VzIG5vdCBoYXZlIGFuIGFjdGl2ZSB3b3JrZXIiX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvKiBjbGllbnQgPSBjb250ZXh0Lm5vdGlmaWNhdGlvbkNsaWVudCgpOwor
ICAgIGlmICghY2xpZW50KSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFR5
cGVFcnJvciwgIlJlZ2lzdHJhdGlvbiBub3QgYWN0aXZlIl9zIH0pOworICAgICAgICByZXR1cm47
CisgICAgfQogCi0gICAgcHJvbWlzZS5yZWplY3QoKTsKKyAgICBpZiAoY2xpZW50LT5jaGVja1Bl
cm1pc3Npb24oJmNvbnRleHQpICE9IE5vdGlmaWNhdGlvblBlcm1pc3Npb246OkdyYW50ZWQpIHsK
KyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiUmVnaXN0cmF0
aW9uIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBzaG93IG5vdGlmaWNhdGlvbnMiX3MgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBUaGUgTm90aWZpY2F0aW9uIGlzIGtl
cHQgYWxpdmUgYnkgdmlydHVlIG9mIGJlaW5nIHNob3coKSduIHNvb24uCisgICAgLy8gRklYTUU6
IFdoZW4gaW1wbGVtZW50aW5nIGdldE5vdGlmaWNhdGlvbnMoKSwgc3RvcmUgdGhpcyBOb3RpZmlj
YXRpb24gaW4gdGhlIHJlZ2lzdHJhdGlvbidzIG5vdGlmaWNhdGlvbiBsaXN0LgorICAgIGF1dG8g
bm90aWZpY2F0aW9uID0gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29udGV4dCwgdGl0bGUsIG9wdGlv
bnMpOworCisgICAgY29udGV4dC5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9N
TWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKCkgbXV0YWJsZSB7Cisg
ICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworICAgIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb246OmdldE5vdGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IGNvbnN0IEdldE5vdGlmaWNhdGlvbk9wdGlvbnMmIGZpbHRlciwgRE9NUHJvbWlzZURlZmVycmVk
PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+IHByb21pc2UpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGZpbHRlcik7CiAKLSAgICBwcm9taXNlLnJlamVjdCgpOwotCisgICAgcHJvbWlzZS5yZWplY3Qo
RXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5nZXROb3Rp
ZmljYXRpb25zIG5vdCB5ZXQgaW1wbGVtZW50ZWQiX3MgfSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxF
KE5PVElGSUNBVElPTl9FVkVOVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGMwZTAzNjM2YjE4
OS4uMDBjMDQyZDRmZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNp
bmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb25EYXRh
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudERhdGEuaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zLmgiCkBAIC03MCw2ICs3MSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Rocm90dGxlYWJsZSgp
IGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmll
cigpIGNvbnN0ID0gMCA7CiAKICAgICAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNDbG9zZWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCA4YzgxYzdi
MTA3ZWMuLmUyZTQwOGIxMDkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTI3
OSw2ICsyNzksMTAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFydChGdW5jdGlvbjx2
b2lkKGNvbnN0IFN0cmluZyYsIGJvb2wpPiYmIGNhbGxiYWNrKQogICAgIHN0YXJ0SGVhcnRCZWF0
VGltZXIoKTsKIAogICAgIFdvcmtlclRocmVhZDo6c3RhcnQoW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dKGF1dG8mIGVycm9yTWVzc2Fn
ZSkgbXV0YWJsZSB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBpZiAoIWVycm9yTWVzc2FnZS5p
c0VtcHR5KCkpCisgICAgICAgICAgICBMT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2Vy
IHRocmVhZCBmYWlsZWQgdG8gc3RhcnQ6ICVzIiwgZXJyb3JNZXNzYWdlLnV0ZjgoKS5kYXRhKCkp
OworI2VuZGlmCiAgICAgICAgIGJvb2wgZG9lc0hhbmRsZUZldGNoID0gdHJ1ZTsKICAgICAgICAg
aWYgKHdlYWtUaGlzKSB7CiAgICAgICAgICAgICB3ZWFrVGhpcy0+ZmluaXNoZWRTdGFydGluZygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCAwYTRiYzdmZjQ5NDIuLmU1
Y2I1YzFkZDE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKQEAgLTQ4LDYg
KzQ4LDcgQEAgY2xhc3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CiBjbGFzcyBGZXRjaExvYWRlcjsK
IGNsYXNzIEZldGNoTG9hZGVyQ2xpZW50OwogY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CitjbGFz
cyBOb3RpZmljYXRpb25DbGllbnQ7CiBjbGFzcyBTZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHk7
CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwogZW51bSBjbGFzcyBXb3JrZXJUaHJl
YWRNb2RlIDogYm9vbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5jcHAKaW5kZXggMzlmZTFiNzg3ZGE3Li44ZTJiYTg5NGI5ZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
CkBAIC0xNjMsNiArMTYzLDcgQEAgdm9pZCBTV1NlcnZlcjo6d2hlbkltcG9ydElzQ29tcGxldGVk
SWZOZWVkZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWMKIAogdm9pZCBTV1Nl
cnZlcjo6cmVnaXN0cmF0aW9uU3RvcmVEYXRhYmFzZUZhaWxlZFRvT3BlbigpCiB7CisgICAgTE9H
KFNlcnZpY2VXb3JrZXIsICJGYWlsZWQgdG8gb3BlbiBTVyByZWdpc3RyYXRpb24gZGF0YWJhc2Ui
KTsKICAgICBBU1NFUlQoIW1faW1wb3J0Q29tcGxldGVkKTsKICAgICBpZiAoIW1faW1wb3J0Q29t
cGxldGVkKQogICAgICAgICByZWdpc3RyYXRpb25TdG9yZUltcG9ydENvbXBsZXRlKCk7CkBAIC0x
NzMsNiArMTc0LDggQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAgICAgLy8gUGFnZXMgc2hvdWxkIG5vdCBo
YXZlIGJlZW4gYWJsZSB0byBtYWtlIGEgbmV3IHJlZ2lzdHJhdGlvbiB0byB0aGlzIGtleSB3aGls
ZSB0aGUgaW1wb3J0IHdhcyBzdGlsbCB0YWtpbmcgcGxhY2UuCiAgICAgQVNTRVJUKCFtX3Njb3Bl
VG9SZWdpc3RyYXRpb25NYXAuY29udGFpbnMoZGF0YS5yZWdpc3RyYXRpb24ua2V5KSk7CiAKKyAg
ICBMT0coU2VydmljZVdvcmtlciwgIkFkZGluZyByZWdpc3RyYXRpb24gZnJvbSBzdG9yZSBmb3Ig
JXMiLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworCiAgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluKGRhdGEuc2NyaXB0VVJMKTsKICAgICB2YWxpZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbihyZWdp
c3RyYWJsZURvbWFpbiwgU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyLCBbdGhpcywgd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIChib29sIGlz
VmFsaWQpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtMTk4LDYgKzIwMSw4
IEBAIHZvaWQgU1dTZXJ2ZXI6OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJCiAKIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJh
dGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+JiYgcmVnaXN0cmF0aW9u
KQogeworICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiQWRkaW5nIHJlZ2lzdHJhdGlvbiBsaXZlIGZv
ciAlcyIsIHJlZ2lzdHJhdGlvbi0+a2V5KCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworCiAgICAgaWYgKCFtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAuY29udGFpbnMocmVnaXN0cmF0
aW9uLT5rZXkoKSkgJiYgIVNlY3VyaXR5T3JpZ2luOjppc0xvY2FsSG9zdE9yTG9vcGJhY2tJUEFk
ZHJlc3MocmVnaXN0cmF0aW9uLT5rZXkoKS50b3BPcmlnaW4oKS5ob3N0KSkKICAgICAgICAgbV91
bmlxdWVSZWdpc3RyYXRpb25Db3VudCsrOwogCkBAIC0xMjI0LDIwICsxMjI5LDI0IEBAIHZvaWQg
U1dTZXJ2ZXI6OnNvZnRVcGRhdGUoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikK
IHZvaWQgU1dTZXJ2ZXI6OnByb2Nlc3NQdXNoTWVzc2FnZShzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4mJiBkYXRhLCBVUkwmJiByZWdpc3RyYXRpb25VUkwsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAgICAgd2hlbkltcG9ydElzQ29tcGxldGVkSWZO
ZWVkZWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGRhdGEgPSBXVEZNb3Zl
KGRhdGEpLCByZWdpc3RyYXRpb25VUkwgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlvblVSTCksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIExPRyhQdXNoLCAi
U2VydmljZVdvcmtlciBpbXBvcnQgaXMgY29tcGxldGUsIGNhbiBoYW5kbGUgcHVzaCBtZXNzYXNn
ZSBub3ciKTsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewogICAgICAgICAgICAgY2FsbGJhY2so
ZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKICAgICAgICAgYXV0byBv
cmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwocmVnaXN0cmF0aW9uVVJMKTsKICAg
ICAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXkgeyBXVEZN
b3ZlKG9yaWdpbiksIFdURk1vdmUocmVnaXN0cmF0aW9uVVJMKSB9OwogICAgICAgICBhdXRvIHJl
Z2lzdHJhdGlvbiA9IG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5nZXQocmVnaXN0cmF0aW9uS2V5
KTsKICAgICAgICAgaWYgKCFyZWdpc3RyYXRpb24pIHsKKyAgICAgICAgICAgIExPRyhQdXNoLCAi
Q2Fubm90IHByb2Nlc3MgcHVzaCBtZXNzYXNnZTogRmFpbGVkIHRvIGZpbmQgU1cgcmVnaXN0cmF0
aW9uIGZvciByZWdpc3RyYXRpb24ga2V5ICVzIiwgcmVnaXN0cmF0aW9uS2V5LmxvZ2dpbmdTdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGNhbGxiYWNrKHRydWUpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byogd29ya2VyID0gcmVnaXN0
cmF0aW9uLT5hY3RpdmVXb3JrZXIoKTsKICAgICAgICAgaWYgKCF3b3JrZXIpIHsKKyAgICAgICAg
ICAgIExPRyhQdXNoLCAiQ2Fubm90IHByb2Nlc3MgcHVzaCBtZXNzYXNnZTogTm8gYWN0aXZlIHdv
cmtlciBmb3IgcmVnaXN0cmF0aW9uIGtleSAlcyIsIHJlZ2lzdHJhdGlvbktleS5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTI1Myw3ICsxMjYyLDcgQEAgdm9pZCBTV1Nl
cnZlcjo6cHJvY2Vzc1B1c2hNZXNzYWdlKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYm
IGRhdGEsIFVSTCYmIHIKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNl
V29ya2VyLCAiVGVybWluYXRpbmcgc2VydmljZSB3b3JrZXIgYXMgcHJvY2Vzc2luZyBwdXNoIGV2
ZW50IHRvb2sgdG9vIG11Y2ggdGltZSIpOwogICAgICAgICAgICAgICAgIHdvcmtlci0+dGVybWlu
YXRlKCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHRlcm1pbmF0ZVdvcmtlclRpbWVy
LT5zdGFydE9uZVNob3Qod2Vha1RoaXMgJiYgd2Vha1RoaXMtPm1faXNQcm9jZXNzVGVybWluYXRp
b25EZWxheUVuYWJsZWQgPyBkZWZhdWx0VGVybWluYXRpb25EZWxheSA6IDJfcyk7CisgICAgICAg
ICAgICAvL3Rlcm1pbmF0ZVdvcmtlclRpbWVyLT5zdGFydE9uZVNob3Qod2Vha1RoaXMgJiYgd2Vh
a1RoaXMtPm1faXNQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQgPyBkZWZhdWx0VGVybWlu
YXRpb25EZWxheSA6IDJfcyk7CiAgICAgICAgICAgICBjb25uZWN0aW9uT3JTdGF0dXMudmFsdWUo
KS0+ZmlyZVB1c2hFdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZGF0YSwgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIHRlcm1pbmF0ZVdvcmtlclRpbWVyID0gV1RGTW92ZSh0ZXJt
aW5hdGVXb3JrZXJUaW1lcildKGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAg
ICAgICBpZiAodGVybWluYXRlV29ya2VyVGltZXItPmlzQWN0aXZlKCkpCiAgICAgICAgICAgICAg
ICAgICAgIHRlcm1pbmF0ZVdvcmtlclRpbWVyLT5zdG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDE3NWJkMzgxNjQ3NC4uZWM3
MzUyZDgxMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcApAQCAtMjI1NCwxNyArMjI1NCwyMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpn
ZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlv
bgogewogI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQogICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBMT0coTm90aWZp
Y2F0aW9ucywgIk5ldHdvcmtQcm9jZXNzIGdldHRpbmcgcGVuZGluZyBwdXNoIG1lc3NhZ2VzIGZv
ciBzZXNzaW9uIElEICVsbHUiLCBzZXNzaW9uSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHNlc3Np
b24tPm5vdGlmaWNhdGlvbk1hbmFnZXIoKS5nZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFdURk1vdmUo
Y2FsbGJhY2spKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAg
TE9HKE5vdGlmaWNhdGlvbnMsICJOZXR3b3JrUHJvY2VzcyBjb3VsZCBub3QgZmluZCBzZXNzaW9u
IGZvciBJRCAlbGx1IHRvIGdldCBwZW5kaW5nIHB1c2ggbWVzc2FnZXMiLCBzZXNzaW9uSUQudG9V
SW50NjQoKSk7CiAjZW5kaWYKICAgICBjYWxsYmFjayh7IH0pOwogfQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQ
dXNoTWVzc2FnZSYmIHB1c2hNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNhbGxiYWNrKQogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKKyAgICAgICAgTE9HKFB1c2gsICJOZXR3b3JraW5nIHByb2Nlc3MgaGFuZGxpbmcgYSBw
dXNoIG1lc3NhZ2UgZnJvbSBVSSBwcm9jZXNzIGluIHNlc3Npb24gJWxsdSIsIHNlc3Npb25JRC50
b1VJbnQ2NCgpKTsKICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5wcm9jZXNzUHVz
aE1lc3NhZ2UoV1RGTW92ZShwdXNoTWVzc2FnZS5wdXNoRGF0YSksIFdURk1vdmUocHVzaE1lc3Nh
Z2UucmVnaXN0cmF0aW9uVVJMKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0gZWxzZQorICAg
ICAgICBMT0coUHVzaCwgIk5ldHdvcmtpbmcgcHJvY2VzcyBhc2tlZCB0byBoYW5kbGUgYSBwdXNo
IG1lc3NhZ2UgZnJvbSBVSSBwcm9jZXNzIGluIHNlc3Npb24gJWxsdSwgYnV0IHRoYXQgc2Vzc2lv
biBkb2Vzbid0IGV4aXN0Iiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwogfQogI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0
aW9uTWFuYWdlci5jcHAKaW5kZXggMTdjZWY5MTRhYjg2Li40ODZjYjViM2RmNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90
aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
b3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtOTMsMTMgKzkz
LDE0IEBAIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmdldE9yaWdpbnNXaXRoUHVz
aEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKENvCiB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyOjpnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgVmVjdG9yPFdlYlB1c2hNZXNzYWdlPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlB1c2hNZXNzYWdlPiYmKT4gcmVwbHlI
YW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
IChWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+JiYgbWVzc2FnZXMpIG11dGFibGUgeworICAgICAgICBM
T0coUHVzaCwgIkRvbmUgZ2V0dGluZyBwdXNoIG1lc3NhZ2VzIik7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUobWVzc2FnZXMpKTsKICAgICB9OwogCiAgICAgc2VuZE1lc3NhZ2VX
aXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpHZXRQZW5kaW5nUHVzaE1lc3NhZ2VzPihX
VEZNb3ZlKHJlcGx5SGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5h
Z2VyOjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKQor
dm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvd05vdGlmaWNhdGlvbihJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikKIHsKICAgICBpZiAo
IW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05v
dGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCBhOTJiZDJmNWJkMTcuLjUyYTYzODRiYWIxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTY2LDcgKzY2
LDcgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcihOZXR3b3JrU2Vz
c2lvbiYsIGNvbnN0IFN0cmluZyYgd2ViUHVzaE1hY2hTZXJ2aWNlTmFtZSk7CiAKICAgICB2b2lk
IHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2lu
U3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKLSAgICB2b2lk
IHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpIGZpbmFs
OworICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJD
b3JlOjpOb3RpZmljYXRpb25EYXRhJikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxOb3RpZmljYXRp
b24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJOb3Rp
ZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKSBmaW5hbDsKICAg
ICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCBkZTMyZjgxNzE3MTUuLjczNmNm
NmNlZmE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTgwLDYgKzgwLDcgQEAgZXh0
ZXJuICJDIiB7CiAgICAgTShOZXR3b3JrQ2FjaGVTdG9yYWdlKSBcCiAgICAgTShOZXR3b3JrU2No
ZWR1bGluZykgXAogICAgIE0oTmV0d29ya1Nlc3Npb24pIFwKKyAgICBNKE5vdGlmaWNhdGlvbnMp
IFwKICAgICBNKFBlcmZvcm1hbmNlTG9nZ2luZykgXAogICAgIE0oUGx1Z2lucykgXAogICAgIE0o
UHJpbnRpbmcpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oCmlu
ZGV4IGE3ZTM2Y2RjYTE4MS4uOWY5OTZhYTEzNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcigpID0gZGVmYXVsdDsKIAogICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBT
dHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd05vdGlmaWNhdGlvbihJ
UEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0
aW9uSUQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZl
Y3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZERl
c3Ryb3lOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4K
aW5kZXggNDg5YjBiNmFkMGY3Li4zN2NjZGRmMWZiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVy
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw3
IEBACiAKIG1lc3NhZ2VzIC0+IE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlciBOb3RS
ZWZDb3VudGVkIHsKICAgICBSZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihTdHJp
bmcgb3JpZ2luSWRlbnRpZmllcikgLT4gKGJvb2wgYWxsb3dlZCkgQXN5bmMKLSAgICBTaG93Tm90
aWZpY2F0aW9uKHN0cnVjdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhIG5vdGlmaWNhdGlvbkRh
dGEpCisgICAgU2hvd05vdGlmaWNhdGlvbihzdHJ1Y3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0
YSBub3RpZmljYXRpb25EYXRhKSBXYW50c0Nvbm5lY3Rpb24KICAgICBDYW5jZWxOb3RpZmljYXRp
b24oVVVJRCBub3RpZmljYXRpb25JRCkKICAgICBDbGVhck5vdGlmaWNhdGlvbnMoVmVjdG9yPFVV
SUQ+IG5vdGlmaWNhdGlvbklEcykKICAgICBEaWREZXN0cm95Tm90aWZpY2F0aW9uKFVVSUQgbm90
aWZpY2F0aW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAwNjc3MGQwZGZjN2QuLmYzOGIzZWQ3MDE1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CkBAIC01ODUsNiArNTg1LDcgQEAgVUlQcm9jZXNzL01lZGlhL0F1ZGlvU2Vz
c2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkuY3BwCiBVSVByb2Nlc3MvTWVkaWEvTWVkaWFVc2Fn
ZU1hbmFnZXIuY3BwCiBVSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JQcm94eS5jcHAKIAorVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvU2VydmljZVdvcmtlck5vdGlm
aWNhdGlvbkhhbmRsZXIuY3BwCiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b24uY3BwCiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXIuY3BwCiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElOb3RpZmljYXRpb25Qcm92aWRlci5oCmluZGV4IGM0ODEzYWE1MTY1MC4uZjczYzU4OGY2NTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTm90aWZpY2F0aW9u
UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTm90aWZpY2F0
aW9uUHJvdmlkZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBOb3RpZmljYXRpb25Qcm92aWRl
ciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Tm90aWZpY2F0aW9uUHJvdmlkZXIoKSA9IGRlZmF1
bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2hvdyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6V2ViTm90aWZpY2F0aW9uJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNob3coV2ViS2l0OjpX
ZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbiYpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWwoV2ViS2l0OjpXZWJOb3RpZmljYXRpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbiYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgLypub3RpZmljYXRpb25JRHMqLykgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA4MmJiOTUxZTVj
MWUuLmQ1MzhkYjU0MDc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC03OCwzICs3OCw4IEBAIHZvaWQg
V0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2ll
cyhXS05vdGlmaWNhdGlvbk1hCiB7CiAgICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5wcm92aWRlckRp
ZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKHRvSW1wbChvcmlnaW5zKSk7CiB9CisKK1dLTm90
aWZpY2F0aW9uTWFuYWdlclJlZiBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNl
V29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpCit7CisgICAgcmV0dXJuIHRvQVBJKCZXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25N
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1h
bmFnZXIuaAppbmRleCA3OWVkYmY1OGNlNDMuLjM0YmI1ZWMwYjE2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAg
LTQzLDYgKzQzLDggQEAgV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlk
ZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoV0tOb3RpZmljYXRpb24KIFdLX0VYUE9SVCB2b2lkIFdL
Tm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9saWN5KFdL
Tm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9y
aWdpbiwgYm9vbCBhbGxvd2VkKTsKIFdLX0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdl
clByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoV0tOb3RpZmljYXRpb25NYW5h
Z2VyUmVmIG1hbmFnZXJSZWYsIFdLQXJyYXlSZWYgb3JpZ2lucyk7CiAKK1dLX0VYUE9SVCBXS05v
dGlmaWNhdGlvbk1hbmFnZXJSZWYgV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2Vydmlj
ZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFnZXIoKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IGY5MTM0ODNkZWRhMC4uZWFhMmFkNjIxNDQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmUubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIldLU2VjdXJpdHlPcmlnaW5J
bnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2Vi
c2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlB1c2hNZXNz
YWdlLmgiCiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKQEAgLTY1
OSw2ICs2NjAsMTIgQEAgc3RhdGljIFZlY3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiB0
b1dlYnNpdGVEYXRhUmVjb3JkcyhOU0FycmF5ICpkYXRhUmVjb3IKICAgICByZXR1cm4gd3JhcHBl
cihfd2Vic2l0ZURhdGFTdG9yZS0+Y29uZmlndXJhdGlvbigpLmNvcHkoKSk7CiB9CiAKKysgKFdL
Tm90aWZpY2F0aW9uTWFuYWdlclJlZilfc2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbk1h
bmFnZXIKK3sKKyAgICBMT0coUHVzaCwgIkFjY2Vzc2luZyBfc2hhcmVkU2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbk1hbmFnZXIiKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkp
OworfQorCiAtICh2b2lkKV9hbGxvd1RMU0NlcnRpZmljYXRlQ2hhaW46KE5TQXJyYXkgKiljZXJ0
aWZpY2F0ZUNoYWluIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdAogewogICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT5hbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoV2ViQ29yZTo6Q2Vy
dGlmaWNhdGVJbmZvKChfX2JyaWRnZSBDRkFycmF5UmVmKWNlcnRpZmljYXRlQ2hhaW4pLCBob3N0
KTsKQEAgLTc3MSwxMiArNzc4LDE1IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0
YVJlY29yZD4gdG9XZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAKIC0odm9p
ZClfZ2V0UGVuZGluZ1B1c2hNZXNzYWdlczoodm9pZCheKShOU0FycmF5PE5TRGljdGlvbmFyeSAq
PiAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIExPRyhQdXNoLCAiR2V0dGluZyBwZW5kaW5n
IHB1c2ggbWVzc2FnZXMiKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBfd2Vi
c2l0ZURhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5nZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKF93
ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYlB1c2hN
ZXNzYWdlPiYgbWVzc2FnZXMpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bWVzc2FnZXMuc2l6ZSgpXSk7CiAg
ICAgICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1lc3NhZ2VzKQogICAgICAgICAgICAgW3Jlc3Vs
dCBhZGRPYmplY3Q6bWVzc2FnZS50b0RpY3Rpb25hcnkoKV07CiAKKyAgICAgICAgTE9HKFB1c2gs
ICJHaXZpbmcgYXBwbGljYXRpb24gJXUgcGVuZGluZyBwdXNoIG1lc3NhZ2VzIiwgbWVzc2FnZXMu
c2l6ZSgpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0LmdldCgpKTsKICAgICB9
KTsKICNlbmRpZgpAQCAtNzg3LDExICs3OTcsMTQgQEAgc3RhdGljIFZlY3RvcjxXZWJLaXQ6Oldl
YnNpdGVEYXRhUmVjb3JkPiB0b1dlYnNpdGVEYXRhUmVjb3JkcyhOU0FycmF5ICpkYXRhUmVjb3IK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgYXV0byBwdXNoTWVzc2FnZSA9IFdlYktp
dDo6V2ViUHVzaE1lc3NhZ2U6OmZyb21EaWN0aW9uYXJ5KHB1c2hNZXNzYWdlRGljdGlvbmFyeSk7
CiAgICAgaWYgKCFwdXNoTWVzc2FnZSkgeworICAgICAgICBMT0coUHVzaCwgIkFza2VkIHRvIGhh
bmRsZSBhbiBpbnZhbGlkIHB1c2ggbWVzc2FnZSIpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBMT0coUHVzaCwgIlNlbmRp
bmcgcHVzaCBtZXNzYWdlIHRvIG5ldHdvcmsgcHJvY2VzcyB0byBoYW5kbGUiKTsKICAgICBfd2Vi
c2l0ZURhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5wcm9jZXNzUHVzaE1lc3NhZ2UoX3dlYnNp
dGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCAqcHVzaE1lc3NhZ2UsIFtjb21wbGV0aW9uSGFuZGxl
ciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIHdhc1Byb2Nlc3NlZCkg
eworICAgICAgICBMT0coUHVzaCwgIlB1c2ggbWVzc2FnZSBwcm9jZXNzaW5nIGNvbXBsZXRlLiBD
YWxsYmFjayByZXN1bHQ6ICVpIiwgd2FzUHJvY2Vzc2VkKTsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIod2FzUHJvY2Vzc2VkKTsKICAgICB9KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmgKaW5kZXggMzFhODU0MDc0MTRkLi5jMzZlMTEzMWYwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZVByaXZhdGUuaApAQCAtOTYsNiArOTYsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdl
ciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogQHByb3BlcnR5IChudWxsYWJs
ZSwgbm9uYXRvbWljLCB3ZWFrKSBpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiBfZGVs
ZWdhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uICpfY29uZmlndXJhdGlvbjsKIAorKyAoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmKV9z
aGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlciBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAtICh2b2lkKV90ZXJtaW5hdGVO
ZXR3b3JrUHJvY2VzcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwog
LSAodm9pZClfc2VuZE5ldHdvcmtQcm9jZXNzUHJlcGFyZVRvU3VzcGVuZDoodm9pZCheKSh2b2lk
KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUu
MCkpOwogLSAodm9pZClfc2VuZE5ldHdvcmtQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5IFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Q
cm92aWRlci5jcHAKaW5kZXggNTUxNjM2NDQ3NzU1Li44NGM2YWI4NTY5NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3Zp
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3Rp
ZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH0KIAog
cHJpdmF0ZToKLSAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJOb3RpZmljYXRp
b24mIG5vdGlmaWNhdGlvbikgb3ZlcnJpZGUKKyAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5KiBw
YWdlLCBXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIG1fcHJvdmlkZXIuc2hvdyhwYWdlLCBub3RpZmljYXRpb24pOwogICAgIH0KQEAgLTExNSwx
MCArMTE1LDE2IEBAIHZvaWQgV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OndpdGhkcmF3QW55
UHJldmlvdXNOb3RpZmljYXRpb25NYXRjaGluZ1RhZyhjb25zCiAjZW5kaWYKIH0KIAotdm9pZCBX
ZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcjo6c2hvdyhXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0
IFdlYk5vdGlmaWNhdGlvbiYgd2ViTm90aWZpY2F0aW9uKQordm9pZCBXZWJLaXROb3RpZmljYXRp
b25Qcm92aWRlcjo6c2hvdyhXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYk5vdGlmaWNhdGlv
biYgd2ViTm90aWZpY2F0aW9uKQogeworICAgIGlmICghcGFnZSkgeworICAgICAgICAvLyBGSVhN
RTogZ2xpYiBuZWVkcyB0byBmaW5kIHRoZWlyIG93biBzb2x1dGlvbiB0byBoYW5kbGluZyBwYWdl
bGVzcyBub3RpZmljYXRpb25zLgorICAgICAgICAvLyBJIHdvbid0IG1ha2Ugc29tZXRoaW5nIHVw
IGZvciB0aGVtLgorICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIEdSZWZQdHI8V2Vi
S2l0Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KHdlYk5v
dGlmaWNhdGlvbi5ub3RpZmljYXRpb25JRCgpKTsKLSAgICBhdXRvKiB3ZWJWaWV3ID0gd2Via2l0
V2ViQ29udGV4dEdldFdlYlZpZXdGb3JQYWdlKG1fd2ViQ29udGV4dCwgJnBhZ2UpOworICAgIGF1
dG8qIHdlYlZpZXcgPSB3ZWJraXRXZWJDb250ZXh0R2V0V2ViVmlld0ZvclBhZ2UobV93ZWJDb250
ZXh0LCBwYWdlKTsKICAgICBBU1NFUlQod2ViVmlldyk7CiAKICAgICBpZiAoIW5vdGlmaWNhdGlv
bikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKaW5kZXggMzZiNzgzNDM4ODBkLi5iZTUyMjBk
NTBlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJs
aWM6CiAgICAgV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5KiwgV2ViS2l0V2ViQ29udGV4dCopOwogICAgIH5XZWJLaXROb3RpZmljYXRpb25Qcm92
aWRlcigpOwogCi0gICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYk5vdGlmaWNh
dGlvbiYpOworICAgIHZvaWQgc2hvdyhXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJOb3RpZmljYXRp
b24mKTsKICAgICB2b2lkIGNhbmNlbChjb25zdCBXZWJOb3RpZmljYXRpb24mKTsKICAgICB2b2lk
IGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+Jik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvU2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbkhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9TZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zNjNkOGMxMjQyNzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3Rp
ZmljYXRpb25IYW5kbGVyLmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVy
LmgiCisKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9O
b3RpZmljYXRpb25EYXRhLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9uSGFuZGxlciYgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OnNp
bmdsZXRvbigpCit7CisgICAgc3RhdGljIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVy
JiBoYW5kbGVyID0gKm5ldyBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjsKKyAgICBy
ZXR1cm4gaGFuZGxlcjsKK30KKworU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OlNl
cnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyKCkKK3sKK30KKwordm9pZCBTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6cmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Np
b24oY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikKK3sKKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitXZWJzaXRlRGF0YVN0b3JlKiBT
ZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6ZGF0YVN0b3JlRm9yTm90aWZpY2F0aW9u
SUQoY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1f
bm90aWZpY2F0aW9uVG9TZXNzaW9uTWFwLmZpbmQobm90aWZpY2F0aW9uSUQpOworICAgIGlmIChp
dGVyYXRvciA9PSBtX25vdGlmaWNhdGlvblRvU2Vzc2lvbk1hcC5lbmQoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRh
U3RvcmVGb3JTZXNzaW9uSUQoaXRlcmF0b3ItPnZhbHVlKTsKK30KKwordm9pZCBTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6c2hvd05vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEpCit7Cisg
ICAgYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVG
b3JTZXNzaW9uSUQoZGF0YS5zb3VyY2VTZXNzaW9uKTsKKyAgICBpZiAoIWRhdGFTdG9yZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9ub3RpZmljYXRpb25Ub1Nlc3Npb25NYXAuc2V0KGRhdGEu
bm90aWZpY2F0aW9uSUQsIGRhdGEuc291cmNlU2Vzc2lvbik7CisgICAgZGF0YVN0b3JlLT5zaG93
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihjb25uZWN0aW9uLCBkYXRhKTsKK30KKwordm9pZCBT
ZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0
IFVVSUQmIG5vdGlmaWNhdGlvbklEKQoreworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBkYXRh
U3RvcmVGb3JOb3RpZmljYXRpb25JRChub3RpZmljYXRpb25JRCkpCisgICAgICAgIGRhdGFTdG9y
ZS0+Y2FuY2VsU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCk7Cit9CisK
K3ZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OmNsZWFyTm90aWZpY2F0aW9u
cyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykKK3sKKyAgICBmb3IgKGF1dG8m
IG5vdGlmaWNhdGlvbklEIDogbm90aWZpY2F0aW9uSURzKSB7CisgICAgICAgIGlmIChhdXRvKiBk
YXRhU3RvcmUgPSBkYXRhU3RvcmVGb3JOb3RpZmljYXRpb25JRChub3RpZmljYXRpb25JRCkpCisg
ICAgICAgICAgICBkYXRhU3RvcmUtPmNsZWFyU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihub3Rp
ZmljYXRpb25JRCk7CisgICAgfQorfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25I
YW5kbGVyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklE
KQoreworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBkYXRhU3RvcmVGb3JOb3RpZmljYXRpb25J
RChub3RpZmljYXRpb25JRCkpCisgICAgICAgIGRhdGFTdG9yZS0+ZGlkRGVzdHJveVNlcnZpY2VX
b3JrZXJOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVkNTEyMGM5NjU1NwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvU2Vydmlj
ZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8
cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlciA6IHB1Ymxp
YyBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIgeworcHVibGljOgorICAgIHN0YXRp
YyBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlciYgc2luZ2xldG9uKCk7CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIoKTsKKwor
ICAgIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5n
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisgICAgdm9pZCBzaG93
Tm90aWZpY2F0aW9uKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkRhdGEmKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBu
b3RpZmljYXRpb25JRCkgZmluYWw7CisgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3Qg
VmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpIGZpbmFsOworICAgIHZvaWQgZGlkRGVzdHJv
eU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkgZmluYWw7CisKKyAgICBX
ZWJzaXRlRGF0YVN0b3JlKiBkYXRhU3RvcmVGb3JOb3RpZmljYXRpb25JRChjb25zdCBVVUlEJik7
CisKKyAgICBIYXNoTWFwPFVVSUQsIFBBTDo6U2Vzc2lvbklEPiBtX25vdGlmaWNhdGlvblRvU2Vz
c2lvbk1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwCmlu
ZGV4IGI4ZGE3MWJiMGZkNi4uYjkwMTg0MjExMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwCkBAIC0z
MCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJOb3RpZmljYXRpb246Oldl
Yk5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyKQorV2ViTm90aWZpY2F0aW9uOjpXZWJO
b3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJiBzb3VyY2VD
b25uZWN0aW9uKQogICAgIDogbV90aXRsZShkYXRhLnRpdGxlKQogICAgICwgbV9ib2R5KGRhdGEu
Ym9keSkKICAgICAsIG1faWNvblVSTChkYXRhLmljb25VUkwpCkBAIC00MCw2ICs0MCw3IEBAIFdl
Yk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkRhdGEmIGRhdGEsIFdlYlBhZ2VQCiAgICAgLCBtX29yaWdpbihBUEk6OlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKGRhdGEub3JpZ2luU3RyaW5nKSkKICAgICAsIG1fY29yZU5vdGlm
aWNhdGlvbklEKGRhdGEubm90aWZpY2F0aW9uSUQpCiAgICAgLCBtX3BhZ2VJZGVudGlmaWVyKHBh
Z2VJZGVudGlmaWVyKQorICAgICwgbV9zb3VyY2VDb25uZWN0aW9uKHNvdXJjZUNvbm5lY3Rpb24p
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbi5oCmluZGV4IGJjNzgyZmJlZmZmMy4uZTg5NDI2MzNkNDE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgogI2luY2x1ZGUgIkFQSVNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvSWRl
bnRpZmllZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQxLDkgKzQyLDkgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbiA6IHB1YmxpYyBBUEk6Ok9i
amVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Ok5vdGlmaWNhdGlvbj4sIHB1YmxpYyBJZGVudGlm
aWVkPFdlYk5vdGlmaWNhdGlvbj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViTm90aWZp
Y2F0aW9uPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFdlYk5v
dGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEs
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYg
c291cmNlQ29ubmVjdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
Yk5vdGlmaWNhdGlvbihkYXRhLCBwYWdlSWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJOb3RpZmljYXRpb24oZGF0YSwgcGFnZUlkZW50aWZpZXIsIHNvdXJjZUNv
bm5lY3Rpb24pKTsKICAgICB9CiAKICAgICBjb25zdCBTdHJpbmcmIHRpdGxlKCkgY29uc3QgeyBy
ZXR1cm4gbV90aXRsZTsgfQpAQCAtNTgsOSArNTksMTAgQEAgcHVibGljOgogICAgIGNvbnN0IFVV
SUQmIGNvcmVOb3RpZmljYXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZU5vdGlmaWNhdGlv
bklEOyB9CiAKICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9wYWdlSWRlbnRpZmllcjsgfQorICAgIElQQzo6Q29ubmVjdGlvbiogc291
cmNlQ29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29ubmVjdGlvbi5nZXQoKTsg
fQogCiBwcml2YXRlOgotICAgIFdlYk5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmlj
YXRpb25EYXRhJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllcik7CisgICAgV2ViTm90aWZpY2F0aW9u
KGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBJUEM6OkNvbm5lY3Rpb24mKTsKIAogICAgIFN0cmluZyBtX3RpdGxlOwogICAgIFN0cmluZyBt
X2JvZHk7CkBAIC03Miw2ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgVVVJRCBtX2NvcmVOb3RpZmlj
YXRpb25JRDsKIAogICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV9wYWdlSWRlbnRpZmllcjsK
KyAgICBXZWFrUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9zb3VyY2VDb25uZWN0aW9uOwogfTsKIAog
aW5saW5lIGJvb2wgaXNOb3RpZmljYXRpb25JRFZhbGlkKHVpbnQ2NF90IGlkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwCmluZGV4IGQw
NjdjZWYwOTY0YS4uNGM2ODRkOWM5ZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwCkBAIC00MCw5ICs0MCw5IEBAIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpyZXF1ZXN0U3lzdGVtTm90aWZpY2F0
aW9uUGVybWlzc2lvbihjCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAot
dm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OnNob3dOb3RpZmljYXRp
b24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSkKK3ZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpzaG93Tm90aWZpY2F0aW9uKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSkK
IHsKLSAgICBtX3dlYlBhZ2VQcm94eS5zaG93Tm90aWZpY2F0aW9uKGRhdGEpOworICAgIG1fd2Vi
UGFnZVByb3h5LnNob3dOb3RpZmljYXRpb24oY29ubmVjdGlvbiwgZGF0YSk7CiB9CiAKIHZvaWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpjYW5jZWxOb3RpZmljYXRpb24o
Y29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAppbmRleCBhNmRiMDMzN2I3ZTUuLjUyNTA1ZTlkMjU2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ci5oCkBAIC0zNyw3ICszNyw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViTm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyKFdlYlBhZ2VQcm94eSYpOwogCiAgICAgdm9pZCByZXF1
ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHNob3dOb3RpZmljYXRpb24o
Y29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpIGZpbmFsOworICAgIHZvaWQgc2hvd05v
dGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25E
YXRhJikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90
aWZpY2F0aW9uSUQpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZl
Y3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKSBmaW5hbDsKICAgICB2b2lkIGRpZERlc3Ryb3lO
b3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IGQxM2E1ODgzOGVjNi4uOWI4Y2Mx
MjlmMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC00
OSw2ICs0OSwxMiBAQCBSZWY8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PiBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUAogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShwcm9jZXNzUG9vbCkpOwogfQogCitX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkmIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
c2hhcmVkU2VydmljZVdvcmtlck1hbmFnZXIoKQoreworICAgIHN0YXRpYyBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkqIHNoYXJlZE1hbmFnZXIgPSBuZXcgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5KG51bGxwdHIpOworICAgIHJldHVybiAqc2hhcmVkTWFuYWdlcjsKK30KKwogV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJv
Y2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQocHJvY2Vz
c1Bvb2wpCiAgICAgLCBtX3Byb3ZpZGVyKG1ha2VVbmlxdWU8QVBJOjpOb3RpZmljYXRpb25Qcm92
aWRlcj4oKSkKQEAgLTg4LDIxICs5NCwyOCBAQCBIYXNoTWFwPFN0cmluZywgYm9vbD4gV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpub3RpZmljYXRpb25QZXJtaXNzaW9ucygpCiAgICAgcmV0
dXJuIG1fcHJvdmlkZXItPm5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiB9CiAKLXZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29u
c3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgbm90aWZpY2F0aW9uRGF0YSkKK3N0YXRpYyBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIGlkZW50aWZpZXJGb3JQYWdlUG9pbnRlcihXZWJQYWdlUHJv
eHkqIHdlYlBhZ2UpCiB7Ci0gICAgYXV0byBub3RpZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246
OmNyZWF0ZShub3RpZmljYXRpb25EYXRhLCB3ZWJQYWdlLT5pZGVudGlmaWVyKCkpOworICAgIHJl
dHVybiB3ZWJQYWdlID8gd2ViUGFnZS0+aWRlbnRpZmllcigpIDogV2ViUGFnZVByb3h5SWRlbnRp
ZmllcigpOworfQorCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyhXZWJQ
YWdlUHJveHkqIHdlYlBhZ2UsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgbm90aWZpY2F0aW9uRGF0YSkKK3sKKyAgICBMT0coTm90
aWZpY2F0aW9ucywgIldlYlBhZ2VQcm94eSAoJXApIGFza2luZyB0byBzaG93IG5vdGlmaWNhdGlv
biAoJXMpIiwgd2ViUGFnZSwgbm90aWZpY2F0aW9uRGF0YS5ub3RpZmljYXRpb25JRC50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgYXV0byBub3RpZmljYXRpb24gPSBXZWJOb3RpZmlj
YXRpb246OmNyZWF0ZShub3RpZmljYXRpb25EYXRhLCBpZGVudGlmaWVyRm9yUGFnZVBvaW50ZXIo
d2ViUGFnZSksIGNvbm5lY3Rpb24pOwogICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNldChu
b3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbklEKCksIG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNh
dGlvbklEKCkpOwogICAgIG1fbm90aWZpY2F0aW9ucy5zZXQobm90aWZpY2F0aW9uLT5jb3JlTm90
aWZpY2F0aW9uSUQoKSwgbm90aWZpY2F0aW9uKTsKLSAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQ
YWdlLCBub3RpZmljYXRpb24uZ2V0KCkpOworICAgIG1fcHJvdmlkZXItPnNob3cod2ViUGFnZSwg
bm90aWZpY2F0aW9uLmdldCgpKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OmNhbmNlbChXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmlj
YXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjYW5jZWwoV2ViUGFn
ZVByb3h5KiwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklEKQogewogICAgIGlmIChhdXRv
IHdlYk5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy5nZXQocGFnZU5vdGlmaWNhdGlvbklE
KSkKICAgICAgICAgbV9wcm92aWRlci0+Y2FuY2VsKCp3ZWJOb3RpZmljYXRpb24pOwogfQogICAg
IAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRp
b24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQp
Cit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlv
bihXZWJQYWdlUHJveHkqLCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQpCiB7CiAgICAg
aWYgKGF1dG8gd2ViTm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLnRha2UocGFnZU5vdGlm
aWNhdGlvbklEKSkgewogICAgICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5yZW1vdmUod2Vi
Tm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25JRCgpKTsKQEAgLTExMCwzNyArMTIzLDI2IEBAIHZv
aWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdl
YlBhZ2VQcm94eSogd2ViUGFnZSwKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VJRHNNYXRj
aChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgVVVJRCYsIFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPFVVSUQ+JikKLXsKLSAgICBy
ZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7Ci19Ci0KLXN0YXRpYyBib29sIHBhZ2VBbmRO
b3RpZmljYXRpb25JRHNNYXRjaChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3Qg
VVVJRCYgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQ
YWdlSUQsIGNvbnN0IFZlY3RvcjxVVUlEPiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpCi17
Ci0gICAgcmV0dXJuIHBhZ2VJRCA9PSBkZXNpcmVkUGFnZUlEICYmIGRlc2lyZWRQYWdlTm90aWZp
Y2F0aW9uSURzLmNvbnRhaW5zKHBhZ2VOb3RpZmljYXRpb25JRCk7Ci19Ci0KIHZvaWQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3
ZWJQYWdlKQogewotICAgIGNsZWFyTm90aWZpY2F0aW9ucyh3ZWJQYWdlLCBWZWN0b3I8VVVJRD4o
KSwgcGFnZUlEc01hdGNoKTsKKyAgICBBU1NFUlQod2ViUGFnZSk7CisgICAgY2xlYXJOb3RpZmlj
YXRpb25zKHdlYlBhZ2UsIHsgfSk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBWZWN0
b3I8VVVJRD4mIHBhZ2VOb3RpZmljYXRpb25JRHMpCiB7Ci0gICAgY2xlYXJOb3RpZmljYXRpb25z
KHdlYlBhZ2UsIHBhZ2VOb3RpZmljYXRpb25JRHMsIHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRj
aCk7Ci19Ci0KLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlmaWNh
dGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBWZWN0b3I8VVVJRD4mIHBhZ2VOb3Rp
ZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZpbHRlckZ1bmN0aW9uKQot
ewotICAgIGF1dG8gdGFyZ2V0UGFnZVByb3h5SUQgPSB3ZWJQYWdlLT5pZGVudGlmaWVyKCk7Ci0K
ICAgICBWZWN0b3I8dWludDY0X3Q+IGdsb2JhbE5vdGlmaWNhdGlvbklEczsKICAgICBnbG9iYWxO
b3RpZmljYXRpb25JRHMucmVzZXJ2ZUNhcGFjaXR5KG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNp
emUoKSk7CiAKKyAgICAvLyBXZSBhbHdheXMgY2hlY2sgcGFnZSBpZGVudGl0eS4KKyAgICAvLyBJ
ZiB0aGUgc2V0IG9mIG5vdGlmaWNhdGlvbiBJRHMgaXMgbm9uLWVtcHR5LCB3ZSBhbHNvIGNoZWNr
IHRoYXQuCisgICAgYXV0byB0YXJnZXRQYWdlSWRlbnRpZmllciA9IGlkZW50aWZpZXJGb3JQYWdl
UG9pbnRlcih3ZWJQYWdlKTsKKyAgICBib29sIGNoZWNrTm90aWZpY2F0aW9uSURzID0gIXBhZ2VO
b3RpZmljYXRpb25JRHMuaXNFbXB0eSgpOworCiAgICAgZm9yIChhdXRvIG5vdGlmaWNhdGlvbiA6
IG1fbm90aWZpY2F0aW9ucy52YWx1ZXMoKSkgewotICAgICAgICBhdXRvIHBhZ2VQcm94eUlEID0g
bm90aWZpY2F0aW9uLT5wYWdlSWRlbnRpZmllcigpOwotICAgICAgICBhdXRvIGNvcmVOb3RpZmlj
YXRpb25JRCA9IG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCk7Ci0gICAgICAgIGlm
ICghZmlsdGVyRnVuY3Rpb24ocGFnZVByb3h5SUQsIGNvcmVOb3RpZmljYXRpb25JRCwgdGFyZ2V0
UGFnZVByb3h5SUQsIHBhZ2VOb3RpZmljYXRpb25JRHMpKQorICAgICAgICBpZiAoY2hlY2tOb3Rp
ZmljYXRpb25JRHMgJiYgIXBhZ2VOb3RpZmljYXRpb25JRHMuY29udGFpbnMobm90aWZpY2F0aW9u
LT5jb3JlTm90aWZpY2F0aW9uSUQoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
aWYgKHRhcmdldFBhZ2VJZGVudGlmaWVyICE9IG5vdGlmaWNhdGlvbi0+cGFnZUlkZW50aWZpZXIo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHVpbnQ2NF90IGdsb2JhbE5vdGlm
aWNhdGlvbklEID0gbm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25JRCgpOwpAQCAtMTY3LDQ4ICsx
NjksNDYgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkU2hv
d05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxOb3QKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uobm90aWZpY2F0
aW9uLT5wYWdlSWRlbnRpZmllcigpKTsKLSAgICBpZiAoIXdlYlBhZ2UpCisgICAgTE9HKE5vdGlm
aWNhdGlvbnMsICJQcm92aWRlciBkaWQgc2hvdyBub3RpZmljYXRpb24gKCVzKSIsIG5vdGlmaWNh
dGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCkudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwor
ICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBub3RpZmljYXRpb24tPnNvdXJjZUNvbm5lY3Rpb24oKTsK
KyAgICBpZiAoIWNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYlBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRTaG93Tm90
aWZpY2F0aW9uKGl0LT52YWx1ZSksIDApOworICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFNob3dOb3RpZmljYXRpb24oaXQtPnZhbHVlKSwg
MCk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENs
aWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEKQorc3RhdGljIHZv
aWQgZGlzcGF0Y2hEaWRDbGlja05vdGlmaWNhdGlvbihXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNh
dGlvbikKIHsKLSAgICBhdXRvIGl0ID0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZmluZChnbG9i
YWxOb3RpZmljYXRpb25JRCk7Ci0gICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFw
LmVuZCgpKQotICAgICAgICByZXR1cm47CisgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJQcm92aWRl
ciBkaWQgY2xpY2sgbm90aWZpY2F0aW9uICglcykiLCBub3RpZmljYXRpb24tPmNvcmVOb3RpZmlj
YXRpb25JRCgpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBhdXRvIG5vdGlmaWNh
dGlvbiA9IG1fbm90aWZpY2F0aW9ucy5nZXQoaXQtPnZhbHVlKTsKLSAgICBpZiAoIW5vdGlmaWNh
dGlvbikgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoIW5vdGlmaWNh
dGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQ
cm9jZXNzUHJveHk6OndlYlBhZ2Uobm90aWZpY2F0aW9uLT5wYWdlSWRlbnRpZmllcigpKTsKLSAg
ICBpZiAoIXdlYlBhZ2UpCisgICAgYXV0byogY29ubmVjdGlvbiA9IG5vdGlmaWNhdGlvbi0+c291
cmNlQ29ubmVjdGlvbigpOworICAgIGlmICghY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgd2ViUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXI6OkRpZENsaWNrTm90aWZpY2F0aW9uKGl0LT52YWx1ZSksIDApOworICAgIGNvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsaWNrTm90aWZp
Y2F0aW9uKG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCkpLCAwKTsKIH0KIAotdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRp
b24oY29uc3QgVVVJRCYgY29yZU5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFs
Tm90aWZpY2F0aW9uSUQpCiB7Ci0gICAgYXV0byBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlv
bnMuZ2V0KGNvcmVOb3RpZmljYXRpb25JRCk7Ci0gICAgaWYgKCFub3RpZmljYXRpb24pCisgICAg
YXV0byBpdCA9IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmZpbmQoZ2xvYmFsTm90aWZpY2F0aW9u
SUQpOworICAgIGlmIChpdCA9PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFn
ZShub3RpZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCkpOwotICAgIGlmICghd2ViUGFnZSkKLSAg
ICAgICAgcmV0dXJuOworICAgIGRpc3BhdGNoRGlkQ2xpY2tOb3RpZmljYXRpb24obV9ub3RpZmlj
YXRpb25zLmdldChpdC0+dmFsdWUpKTsKK30KIAotICAgIHdlYlBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlmaWNhdGlvbihj
b3JlTm90aWZpY2F0aW9uSUQpLCAwKTsKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
Ojpwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIGNvcmVOb3RpZmljYXRp
b25JRCkKK3sKKyAgICBkaXNwYXRjaERpZENsaWNrTm90aWZpY2F0aW9uKG1fbm90aWZpY2F0aW9u
cy5nZXQoY29yZU5vdGlmaWNhdGlvbklEKSk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhBUEk6OkFycmF5KiBnbG9i
YWxOb3RpZmljYXRpb25JRHMpCiB7Ci0gICAgSGFzaE1hcDxXZWJQYWdlUHJveHkqLCBWZWN0b3I8
VVVJRD4+IHBhZ2VOb3RpZmljYXRpb25JRHM7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJOb3RpZmlj
YXRpb24+PiBjbG9zZWROb3RpZmljYXRpb25zOwogCiAgICAgc2l6ZV90IHNpemUgPSBnbG9iYWxO
b3RpZmljYXRpb25JRHMtPnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewpAQCAtMjQxLDI2ICsyNDEsMjUgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OnByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKEFQSTo6QXJyYXkqIGdsb2IKICAg
ICAgICAgaWYgKCFub3RpZmljYXRpb24pCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICBpZiAoV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKG5v
dGlmaWNhdGlvbi0+cGFnZUlkZW50aWZpZXIoKSkpIHsKLSAgICAgICAgICAgIGF1dG8gcGFnZUl0
ID0gcGFnZU5vdGlmaWNhdGlvbklEcy5maW5kKHdlYlBhZ2UpOwotICAgICAgICAgICAgaWYgKHBh
Z2VJdCA9PSBwYWdlTm90aWZpY2F0aW9uSURzLmVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgVmVj
dG9yPFVVSUQ+IG5ld1ZlY3RvcjsKLSAgICAgICAgICAgICAgICBuZXdWZWN0b3IucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShzaXplKTsKLSAgICAgICAgICAgICAgICBwYWdlSXQgPSBwYWdlTm90aWZp
Y2F0aW9uSURzLmFkZCh3ZWJQYWdlLCBXVEZNb3ZlKG5ld1ZlY3RvcikpLml0ZXJhdG9yOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBwYWdlSXQtPnZhbHVlLmFwcGVuZChub3RpZmljYXRp
b24tPmNvcmVOb3RpZmljYXRpb25JRCgpKTsKLSAgICAgICAgfQotCiAgICAgICAgIG1fZ2xvYmFs
Tm90aWZpY2F0aW9uTWFwLnJlbW92ZShub3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbklEKCkpOwor
ICAgICAgICBjbG9zZWROb3RpZmljYXRpb25zLmFwcGVuZChXVEZNb3ZlKG5vdGlmaWNhdGlvbikp
OwogICAgIH0KIAotICAgIGZvciAoYXV0byBpdCA9IHBhZ2VOb3RpZmljYXRpb25JRHMuYmVnaW4o
KSwgZW5kID0gcGFnZU5vdGlmaWNhdGlvbklEcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAg
ICAgICBpdC0+a2V5LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFu
YWdlcjo6RGlkQ2xvc2VOb3RpZmljYXRpb25zKGl0LT52YWx1ZSksIDApOworICAgIGZvciAoYXV0
byYgbm90aWZpY2F0aW9uIDogY2xvc2VkTm90aWZpY2F0aW9ucykgeworICAgICAgICBpZiAoYXV0
byogY29ubmVjdGlvbiA9IG5vdGlmaWNhdGlvbi0+c291cmNlQ29ubmVjdGlvbigpKSB7CisgICAg
ICAgICAgICBMT0coTm90aWZpY2F0aW9ucywgIlByb3ZpZGVyIGRpZCBjbG9zZSBub3RpZmljYXRp
b24gKCVzKSIsIG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCkudG9TdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIFZlY3RvcjxVVUlEPiBub3RpZmljYXRpb25JRHMg
PSB7IG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCkgfTsKKyAgICAgICAgICAgIGNv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsb3Nl
Tm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25JRHMpLCAwKTsKKyAgICAgICAgfQorICAgIH0KIH0K
IAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkVXBkYXRlTm90
aWZpY2F0aW9uUG9saWN5KGNvbnN0IEFQSTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgYm9vbCBh
bGxvd2VkKQogeworICAgIExPRyhOb3RpZmljYXRpb25zLCAiUHJvdmlkZXIgZGlkIHVwZGF0ZSBu
b3RpZmljYXRpb24gcG9saWN5IGZvciBvcmlnaW4gJXMgdG8gJWkiLCBvcmlnaW4tPnNlY3VyaXR5
T3JpZ2luKCkudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBhbGxvd2VkKTsKKworICAgIFdlYlBy
b2Nlc3NQb29sOjpzZW5kVG9BbGxSZW1vdGVXb3JrZXJQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OkRpZFVwZGF0ZU5vdGlmaWNhdGlvbkRlY2lzaW9uKG9yaWdpbi0+
c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpLCBhbGxvd2VkKSk7CisKICAgICBpZiAoIXByb2Nl
c3NQb29sKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjgxLDcgKzI4MCwxMSBAQCB2b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Q
b2xpY2llcyhBUEk6OkFycgogICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKQogICAgICAgICBvcmlnaW5TdHJpbmdzLmFwcGVuZChvcmlnaW5zLT5hdDxBUEk6OlNlY3Vy
aXR5T3JpZ2luPihpKS0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpKTsKLSAgICAKKworICAg
IFdlYlByb2Nlc3NQb29sOjpzZW5kVG9BbGxSZW1vdGVXb3JrZXJQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFJlbW92ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhv
cmlnaW5TdHJpbmdzKSk7CisKKyAgICBpZiAoIXByb2Nlc3NQb29sKCkpCisgICAgICAgIHJldHVy
bjsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OkRpZFJlbW92ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhvcmlnaW5T
dHJpbmdzKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCmluZGV4
IGM2ZDM1ZDg2MjJiOC4uZTg3ZGIxMGY1MWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5LmgKQEAgLTU3LDEwICs1NywxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVm
PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CiAK
KyAgICBzdGF0aWMgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5JiBzaGFyZWRTZXJ2aWNlV29y
a2VyTWFuYWdlcigpOworCiAgICAgdm9pZCBzZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpOb3RpZmljYXRpb25Qcm92aWRlcj4mJik7CiAgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAKLSAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5Kiwg
Y29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpOworICAgIHZvaWQgc2hvdyhXZWJQYWdl
UHJveHkqLCBJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRh
Jik7CiAgICAgdm9pZCBjYW5jZWwoV2ViUGFnZVByb3h5KiwgY29uc3QgVVVJRCYgcGFnZU5vdGlm
aWNhdGlvbklEKTsKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqKTsK
ICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8
VVVJRD4mIHBhZ2VOb3RpZmljYXRpb25JRHMpOwpAQCAtNzksOSArODEsNiBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9j
ZXNzUG9vbCopOwogCi0gICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rp
b24pKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBVVUlEJiBwYWdlTm90aWZp
Y2F0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVj
dG9yPFVVSUQ+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcyk7Ci0gICAgdm9pZCBjbGVhck5v
dGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZp
Y2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbik7Ci0KICAgICAvLyBXZWJDb250
ZXh0U3VwcGxlbWVudAogICAgIHZvaWQgcHJvY2Vzc1Bvb2xEZXN0cm95ZWQoKSBvdmVycmlkZTsK
ICAgICB2b2lkIHJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4IDI2NWMxNTlkOWQ3OS4uODU4ZDc2NDYyZmNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcApAQCAtNDIsMTIgKzQyLDEyIEBAIFdl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyOjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcihjb25zdCBXS05v
dGlmaWNhdGlvblByb3ZpZGVyQmFzCiAgICAgaW5pdGlhbGl6ZShwcm92aWRlcik7CiB9CiAKLXZv
aWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNob3coV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJO
b3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKK3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6
OnNob3coV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikK
IHsKICAgICBpZiAoIW1fY2xpZW50LnNob3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xp
ZW50LnNob3codG9BUEkoJnBhZ2UpLCB0b0FQSSgmbm90aWZpY2F0aW9uKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5zaG93KHRvQVBJKHBhZ2UpLCB0b0FQSSgmbm90
aWZpY2F0aW9uKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlcjo6Y2FuY2VsKFdlYk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oCmluZGV4IDdiMmU5Y2UxYzVhNi4uYzFiMGE5ZDRl
YWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oCkBAIC00OCw3ICs0OCw3IEBAIGNs
YXNzIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyIDogcHVibGljIEFQSTo6Tm90aWZpY2F0aW9uUHJv
dmlkZXIsIHB1YmxpYyBBUEk6OkNsCiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXIoY29uc3QgV0tOb3RpZmljYXRpb25Qcm92aWRlckJhc2UqKTsKIAotICAgIHZv
aWQgc2hvdyhXZWJQYWdlUHJveHkmLCBXZWJOb3RpZmljYXRpb24mKSBvdmVycmlkZTsKKyAgICB2
b2lkIHNob3coV2ViUGFnZVByb3h5KiwgV2ViTm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBjYW5jZWwoV2ViTm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWREZXN0
cm95Tm90aWZpY2F0aW9uKFdlYk5vdGlmaWNhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xl
YXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5
ZTZlNTJhZmEwNDYuLjg2MGE0NTA2MjQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC04ODc0LDkgKzg4NzQsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVx
dWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENv
bQogICAgIG1fdWlDbGllbnQtPmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KCp0aGlzLCBvcmlnaW4uZ2V0KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6
Tm90aWZpY2F0aW9uRGF0YSYgbm90aWZpY2F0aW9uRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
aG93Tm90aWZpY2F0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uRGF0YSYgbm90aWZpY2F0aW9uRGF0YSkKIHsKLSAgICBtX3Byb2Nlc3Mt
PnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCkt
PnNob3codGhpcywgbm90aWZpY2F0aW9uRGF0YSk7CisgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9v
bCgpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5zaG93KHRoaXMs
IGNvbm5lY3Rpb24sIG5vdGlmaWNhdGlvbkRhdGEpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1YmNhODI2NWI2NzIuLjQwMGY5NDA0OWRk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIwNTQsNyArMjA1
NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzUXVhcmFudGluZWRBbmROb3RVc2VyQXBwcm92ZWQo
Y29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAotICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25z
dCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJik7CisgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9u
KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKTsKICAg
ICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CiAg
ICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRp
b25JRHMpOwogICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3Rp
ZmljYXRpb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
aW5kZXggNmQ4ODI4ZjJlNGQxLi5mNjBkM2VjZDJjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU4OCw3ICs1ODgsOCBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKFJlZwogCiAgICAgcmVtb3RlV29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5KTsKIAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFi
bGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclByZWZl
cmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6
IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwg
cmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1dG8gcHJlZmVyZW5jZXNTdG9yZSA9IHByb2Nlc3NQ
b29sLT5tX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29y
a2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAt
PnByZWZlcmVuY2VzKCkuc3RvcmUoKTsKKyAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5l
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcmVmZXJlbmNlc1N0b3JlLCByZWdpc3RyYWJs
ZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQu
aXNOdWxsKCkpCiAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnNldFJlbW90ZVdv
cmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZTI1M2E1ZTczYTQ4
Li4zYWEyZGE4MmQ2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aApAQCAtMjAzLDYgKzIwMyw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2
b2lkIHNlbmRUb0FsbFByb2Nlc3Nlcyhjb25zdCBUJiBtZXNzYWdlKTsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiB2b2lkIHNlbmRUb0FsbFByb2Nlc3Nlc0ZvclNlc3Npb24oY29uc3QgVCYgbWVz
c2FnZSwgUEFMOjpTZXNzaW9uSUQpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGlj
IHZvaWQgc2VuZFRvQWxsUmVtb3RlV29ya2VyUHJvY2Vzc2VzKGNvbnN0IFQmIG1lc3NhZ2UpOwor
CiAgICAgdm9pZCBwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKFdlYlByb2Nlc3NQcm94eSYpOwog
CiAgICAgV2ViUHJvY2Vzc0NhY2hlJiB3ZWJQcm9jZXNzQ2FjaGUoKSB7IHJldHVybiBtX3dlYlBy
b2Nlc3NDYWNoZS5nZXQoKTsgfQpAQCAtODMyLDQgKzgzNCwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpzZW5kVG9BbGxQcm9jZXNzZXNGb3JTZXNzaW9uKGNvbnN0IFQmIG1lc3NhZ2UsIFBBTDo6
U2Vzc2lvbgogICAgIH0KIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnNlbmRUb0FsbFJlbW90ZVdvcmtlclByb2Nlc3Nlcyhjb25zdCBUJiBtZXNzYWdlKQor
eworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHJlbW90ZVdvcmtlclByb2Nlc3NlcygpKSB7Cisg
ICAgICAgIGlmIChwcm9jZXNzLmNhblNlbmRNZXNzYWdlKCkpCisgICAgICAgICAgICBwcm9jZXNz
LnNlbmQoVChtZXNzYWdlKSwgMCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDJjMGE4
MDMwMDMxNC4uNTUyNDA3YWRlMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJMb2FkUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94
eS5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmgiCiAjaW5j
bHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNw
ZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuaCIKICNpbmNs
dWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVz
c2FnZXMuaCIKQEAgLTIwMTUsNiArMjAxNiw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNh
YmxlUmVtb3RlV29ya2VycyhPcHRpb25TZXQ8UmVtb3RlV29ya2VyVHlwZT4gd29ya2VyVHlwCiAK
ICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2VzcywgImRpc2FibGVXb3JrZXJz
OiBEaXNhYmxpbmcgd29ya2VycyAoU2hhcmVkV29ya2Vycz0lZCwgU2VydmljZVdvcmtlcnM9JWQp
Iiwgd29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpLCB3
b3JrZXJUeXBlLmNvbnRhaW5zKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpKTsKIAor
ICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VIYW5kbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fc2VydmljZVdvcmtlckluZm9y
bWF0aW9uLT5yZW1vdGVXb3JrZXJQYWdlSUQpOworICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uID0geyB9OworCiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsK
IAogICAgIGlmICghaXNSdW5uaW5nV29ya2VycygpKQpAQCAtMjA2NCw2ICsyMDY4LDEwIEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGUg
d29ya2VyVHlwZSwgY29uc3QgVXNlCiAgICAgICAgIG51bGxwdHIsCiAgICAgICAgIHsgfQogICAg
IH07CisKKyAgICBpZiAod29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyKQorICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZUlELCBTZXJ2aWNlV29ya2VyTm90aWZpY2F0
aW9uSGFuZGxlcjo6c2luZ2xldG9uKCkpOworCiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNp
dmVuZXNzVGltZXIoKTsKIAogICAgIHVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24o
d29ya2VyVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDEzMjkwNTU3MmY0Yi4uMmM3YTZjNjlj
NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYkJh
Y2tGb3J3YXJkQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNp
bmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgorI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NDYWNoZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtMjA1NCw0
ICsyMDU1LDI2IEBAIGJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6c2hvdWxkTWFrZU5leHROZXR3b3Jr
UHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5nKCkKICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShu
ZXh0TmV0d29ya1Byb2Nlc3NMYXVuY2hTaG91bGRGYWlsRm9yVGVzdGluZywgZmFsc2UpOwogfQog
Cit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNob3dTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0
YSYgbm90aWZpY2F0aW9uRGF0YSkKK3sKKyAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6
OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkuc2hvdyhudWxscHRyLCBjb25uZWN0aW9uLCBu
b3RpZmljYXRpb25EYXRhKTsKK30KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpjYW5jZWxTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQoreworICAg
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hhcmVkU2VydmljZVdvcmtlck1hbmFnZXIo
KS5jYW5jZWwobnVsbHB0ciwgbm90aWZpY2F0aW9uSUQpOworfQorCit2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OmNsZWFyU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmlj
YXRpb25JRCkKK3sKKyAgICBWZWN0b3I8VVVJRD4gbm90aWZpY2F0aW9uczsKKyAgICBub3RpZmlj
YXRpb25zLmFwcGVuZChub3RpZmljYXRpb25JRCk7CisgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpLmNsZWFyTm90aWZpY2F0aW9ucyhu
dWxscHRyLCBub3RpZmljYXRpb25zKTsKK30KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkaWRE
ZXN0cm95U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25J
RCkKK3sKKyAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3Jr
ZXJNYW5hZ2VyKCkuZGlkRGVzdHJveU5vdGlmaWNhdGlvbihudWxscHRyLCBub3RpZmljYXRpb25J
RCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA4NWVlMzFlMTM4M2QuLjQ2YWYwZWY1OWViYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNs
YXNzIExvY2FsV2ViTG9ja1JlZ2lzdHJ5OwogCiBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbjsKK3N0cnVjdCBOb3RpZmljYXRpb25EYXRhOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTM3MCw2ICszNzEsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb3VudE5v
bkRlZmF1bHRTZXNzaW9uU2V0cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNpemVfdCk+JiYpOwog
CisgICAgdm9pZCBzaG93U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24m
LCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJik7CisgICAgdm9pZCBjYW5jZWxTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKTsKKyAgICB2
b2lkIGNsZWFyU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRp
b25JRCk7CisgICAgdm9pZCBkaWREZXN0cm95U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihjb25z
dCBVVUlEJiBub3RpZmljYXRpb25JRCk7CisKIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBGb3Jj
ZVJlaW5pdGlhbGl6YXRpb24gOiBib29sIHsgTm8sIFllcyB9OwogI2lmIEVOQUJMRShBUFBfQk9V
TkRfRE9NQUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGY3YmVlNTQzY2UwZi4uYzE1ZTFiMWRkZjc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk5Niw2ICs5OTYsNyBA
QAogCQk1MTVCRTFCNTFENTkxN0ZGMDBERDdDNjggLyogVUlHYW1lcGFkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFBRDFENTU1QzUxMDBERDdD
NjggLyogVUlHYW1lcGFkLmggKi87IH07CiAJCTUxNjMxOTk0MTYyODlBNjAwMEUyMkYwMCAvKiBO
ZXR3b3JrUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQzkzNDE2MjgwNjQ4MDAzNDI1NTAgLyogTmV0d29y
a1Byb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MTYzMTk5NTE2Mjg5QTYzMDBF
MjJGMDAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQ0M5MzUxNjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdv
cmtQcm9jZXNzTWVzc2FnZXMuaCAqLzsgfTsKKwkJNTE2NDY1ODAyN0E5Qzc3NDAwRTFGMkJBIC8q
IFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY0NjU3RjI3QTlDNzY3MDBFMUYyQkEgLyogU2Vy
dmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCAqLzsgfTsKIAkJNTE2QTRBNUQxMjBBMkND
RDAwQzA1QjdGIC8qIEFQSUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogQVBJRXJyb3IuaCAqLzsg
fTsKIAkJNTE3OTU1NkExNjI4NzZGMzAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBDQzdFMDE2MTM4RTI5
MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3MuaCAqLzsgfTsKIAkJNTE3OTU1NkUxNjI4NzdCMzAw
RkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMENDN0VCMTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3Jr
UHJvY2Vzc1Byb3h5LmggKi87IH07CkBAIC00NDgxLDYgKzQ0ODIsOCBAQAogCQk1MTYwRTk1ODI3
NEMwRDg4MDA1NjczODggLyogUHVzaEFwcEJ1bmRsZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFB1c2hBcHBCdW5kbGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNjBFOTVDMjc0QzJBMDMwMDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0FwcEJ1bmRsZVJlZ2lz
dHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjBFOTVGMjc0QzJBM0YwMDU2
NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBNb2NrQXBwQnVuZGxlUmVnaXN0cnkubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxNjQ2NTdFMjdBOUM3NjUwMEUxRjJCQSAvKiBTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9uSGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9uSGFuZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUx
NjQ2NTdGMjdBOUM3NjcwMEUxRjJCQSAvKiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTY0QzA5NDFCMDVCNzU3MDA0RjEwMkEgLyog
QXV4aWxpYXJ5UHJvY2Vzcy5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdXhp
bGlhcnlQcm9jZXNzLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogQVBJRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE3QTMzQjMxMzBCMzA4QzAwRjgwQ0I1IC8qIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04Njc1LDYgKzg2Nzgs
OCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkzMUEyRUM1MzE0
ODk5ODI1MDA4MTBENzEgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCAqLywKKwkJ
CQk1MTY0NjU3RTI3QTlDNzY1MDBFMUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhh
bmRsZXIuY3BwICovLAorCQkJCTUxNjQ2NTdGMjdBOUM3NjcwMEUxRjJCQSAvKiBTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9uSGFuZGxlci5oICovLAogCQkJCTMxQTJFQzQxMTQ4OTk3QkUwMDgxMEQ3
MSAvKiBXZWJOb3RpZmljYXRpb24uY3BwICovLAogCQkJCTMxQTJFQzQyMTQ4OTk3QkUwMDgxMEQ3
MSAvKiBXZWJOb3RpZmljYXRpb24uaCAqLywKIAkJCQk1MTQ1MjcwNjI3MUZCRUMxMDAwNDY3QjYg
LyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLywKQEAgLTEzOTE5
LDYgKzEzOTI0LDcgQEAKIAkJCQlCQzRBNjI5NzE0NzMxM0EwMDA2QzY4MUEgLyogV0tDb25uZWN0
aW9uUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTk2REQ2QTI1MUU3MUQ0MDBDMjc1QTcgLyog
V0tDb250YWN0UGlja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODY1NDFFNzIzNUIxMDA5
NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNjQ2NTgw
MjdBOUM3NzQwMEUxRjJCQSAvKiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg2NTUxRTcyMzVCODAwOTRGREM4IC8qIFdLQ29udGVudFJ1
bGVMaXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNTEzOURCMjU5MjdEODAwMDlD
M0UzMCAvKiBXS0NvbnRlbnRSdWxlTGlzdFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
RDI4NjUxMUU3MjM1OTkwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0b3JlLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggOWMxYzEyZDg4
NTU0Li4xOTNlNGNiMmQ5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBA
IC0zNCw2ICszNCw3IEBACiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VIYW5kbGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyTm90aWZpY2F0
aW9uSGFuZGxlci5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1l
c3NhZ2VzLmgiCkBAIC00NSw2ICs0Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NXQ29udGV4dE1h
bmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjZW5k
aWYKIApAQCAtMTIxLDI1ICsxMjMsNDIgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpy
ZW1vdmVBbGxQZXJtaXNzaW9uc0ZvclRlc3RpbmcoKQogfQogCiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCi10ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmROb3RpZmljYXRpb25NZXNzYWdl
KFdlYlByb2Nlc3MmIHByb2Nlc3MsIFUmJiBtZXNzYWdlLCBXZWJQYWdlJiBwYWdlKQordGVtcGxh
dGU8dHlwZW5hbWUgVT4gYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTm90aWZpY2F0
aW9uTWVzc2FnZShVJiYgbWVzc2FnZSwgTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sIFdlYlBh
Z2UqIHBhZ2UpCiB7CisgICAgaWYgKCFwYWdlICYmICFub3RpZmljYXRpb24uc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICNpZiBFTkFCTEUoQlVJTFRf
SU5fTk9USUZJQ0FUSU9OUykKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5idWlsdEluTm90aWZpY2F0aW9uc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJu
IHByb2Nlc3MuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoV1RGTW92ZShtZXNzYWdlKSwgcGFnZS5zZXNzaW9uSUQoKS50b1VJbnQ2NCgpKTsKKyAgICAg
ICAgcmV0dXJuIG1fcHJvY2Vzcy5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBub3RpZmljYXRpb24uZGF0YSgpLnNvdXJj
ZVNlc3Npb24udG9VSW50NjQoKSk7CiAjZW5kaWYKLSAgICByZXR1cm4gcHJvY2Vzcy5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKFdURk1vdmUobWVzc2FnZSksIHBhZ2UuaWRlbnRpZmll
cigpKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
ZGVudGlmaWVyOworICAgIGlmIChwYWdlKQorICAgICAgICBwYWdlSWRlbnRpZmllciA9IHBhZ2Ut
PmlkZW50aWZpZXIoKTsKKyAgICBlbHNlIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKSB7CisgICAgICAgIC8vIFBhZ2VsZXNz
IG5vdGlmaWNhdGlvbiBtZXNzYWdlcyBhcmUsIGJ5IGRlZmF1bHQsIG9uIGJlaGFsZiBvZiBhIHNl
cnZpY2Ugd29ya2VyLgorICAgICAgICAvLyBTbyB1c2UgdGhlIHNlcnZpY2Ugd29ya2VyIGNvbm5l
Y3Rpb24ncyBwYWdlIGlkZW50aWZpZXIuCisgICAgICAgIHBhZ2VJZGVudGlmaWVyID0gY29ubmVj
dGlvbi0+cGFnZUlkZW50aWZpZXIoKTsKKyAgICB9CisKKyAgICBBU1NFUlQocGFnZUlkZW50aWZp
ZXIpOworCisgICAgcmV0dXJuIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKFdURk1vdmUobWVzc2FnZSksICpwYWdlSWRlbnRpZmllcik7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKE5PVElGSUNBVElPTlMpCiAKIGJvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhO
b3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKIHsKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIGlmICghcGFn
ZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5ub3RpZmljYXRpb25zRW5hYmxlZCgpKQorICAgIGlm
IChwYWdlICYmICFwYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLm5vdGlmaWNhdGlvbnNFbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fbm90aWZpY2F0aW9uSURNYXAu
c2V0KG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCksICZub3RpZmljYXRpb24pOworICAgIGlmICgh
c2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlcjo6U2hvd05vdGlmaWNhdGlvbihub3RpZmljYXRpb24uZGF0YSgpKSwgbm90aWZp
Y2F0aW9uLCBwYWdlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc2VuZE5vdGlmaWNh
dGlvbk1lc3NhZ2UobV9wcm9jZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3Nh
Z2VIYW5kbGVyOjpTaG93Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5kYXRhKCkpLCAqcGFnZSk7
CisgICAgbV9ub3RpZmljYXRpb25JRE1hcC5zZXQobm90aWZpY2F0aW9uLmlkZW50aWZpZXIoKSwg
Jm5vdGlmaWNhdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShub3RpZmljYXRpb24pOwpAQCAtMTUwLDE2ICsxNjksMTYgQEAgYm9vbCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdl
KQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbChOb3RpZmljYXRpb24mIG5v
dGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKIHsKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
LSAgICBpZiAoIXBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkubm90aWZpY2F0aW9uc0VuYWJs
ZWQoKSkKLSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBhdXRvIG1hcHBlZE5vdGlmaWNhdGlvbiA9IG1f
bm90aWZpY2F0aW9uSURNYXAuZ2V0KG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpOwogICAgIGlm
ICghbWFwcGVkTm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1hcHBl
ZE5vdGlmaWNhdGlvbiA9PSAmbm90aWZpY2F0aW9uKTsKIAotICAgIHNlbmROb3RpZmljYXRpb25N
ZXNzYWdlKG1fcHJvY2VzcywgTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlcjo6Q2FuY2VsTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpLCAqcGFn
ZSk7CisgICAgaWYgKCFzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShNZXNzYWdlczo6Tm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpDYW5jZWxOb3RpZmljYXRpb24obm90aWZpY2F0aW9u
LmlkZW50aWZpZXIoKSksIG5vdGlmaWNhdGlvbiwgcGFnZSkpCisgICAgICAgIHJldHVybjsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHBh
Z2UpOwpAQCAtMTY4LDYgKzE4Nyw4IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2Fu
Y2VsKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogCiB2b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oTm90aWZpY2F0aW9u
JiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIFJlZiBwcm90ZWN0ZWROb3Rp
ZmljYXRpb24geyBub3RpZmljYXRpb24gfTsKIApAQCAtMTc2LDcgKzE5Nyw3IEBAIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24m
IG5vdGlmaWNhdGlvbiwKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVCh0YWtlbk5vdGlmaWNh
dGlvbiA9PSAmbm90aWZpY2F0aW9uKTsKIAotICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKG1f
cHJvY2VzcywgTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6RGlk
RGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24uaWRlbnRpZmllcigpKSwgKnBhZ2UpOwor
ICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2Vy
TWVzc2FnZUhhbmRsZXI6OkRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmlkZW50
aWZpZXIoKSksIG5vdGlmaWNhdGlvbiwgcGFnZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShu
b3RpZmljYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKQEAgLTE4NSw2ICsyMDYsOCBA
QCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oTm90
aWZpY2F0aW9uJiBub3RpZmljYXRpb24sCiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
ZGlkU2hvd05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKIHsKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAg
UmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5n
ZXQobm90aWZpY2F0aW9uSUQpOwogICAgIGlmICghbm90aWZpY2F0aW9uKQpAQCAtMTk4LDYgKzIy
MSw4IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbihj
b25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpkaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKIHsKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAg
ICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1h
cC5nZXQobm90aWZpY2F0aW9uSUQpOwogICAgIGlmICghbm90aWZpY2F0aW9uKQpAQCAtMjEzLDYg
KzIzOCw4IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRp
b24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlcjo6ZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0
aW9uSURzKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKICAgICBzaXplX3QgY291bnQgPSBub3RpZmljYXRpb25JRHMuc2l6ZSgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlci5oCmluZGV4IGU2MzUxZmRmOTYxNi4uNDllYTcxODQ1NWIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC04MSw2ICs4MSw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRDbG9zZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25J
RHMpOwogICAgIHZvaWQgZGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBvcmlnaW5TdHJpbmdzKTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJv
b2wgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UoVSYmIG1lc3NhZ2UsIFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbiYsIFdlYlBhZ2UqKTsKKwogICAgIFdlYlByb2Nlc3MmIG1fcHJvY2VzczsKIAogI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXgg
YzFlZGQ5ZjBhMmVjLi4xZTMxNDBmNjgyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaApAQCAtNjYsNiArNjYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCisgICAgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3BhZ2VJRDsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVu
dC5jcHAKaW5kZXggYzI0ZWQzN2Q3NmVmLi40YTM2ZThmYmU4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3Rp
ZmljYXRpb25DbGllbnQuY3BwCkBAIC00MCwzNCArNDAsNjYgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiBXZWJOb3RpZmljYXRpb25DbGllbnQ6OldlYk5vdGlmaWNhdGlvbkNsaWVudChXZWJQ
YWdlKiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2UpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojp+V2ViTm90aWZpY2F0aW9uQ2xpZW50
KCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogfQogCiBib29sIFdlYk5vdGlmaWNh
dGlvbkNsaWVudDo6c2hvdyhOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKIHsKLSAgICByZXR1
cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5h
Z2VyPigpLT5zaG93KG5vdGlmaWNhdGlvbiwgbV9wYWdlKTsKKyAgICBpZiAoaXNNYWluVGhyZWFk
KCkpCisgICAgICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPnNob3cobm90aWZpY2F0aW9uLCBtX3BhZ2UpOworCisg
ICAgYm9vbCByZXN1bHQ7CisgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZyZXN1bHQsIHBy
b3RlY3RlZE5vdGlmaWNhdGlvbiA9IFJlZiB7IG5vdGlmaWNhdGlvbiB9XSgpIHsKKyAgICAgICAg
cmVzdWx0ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRp
b25NYW5hZ2VyPigpLT5zaG93KHByb3RlY3RlZE5vdGlmaWNhdGlvbi5nZXQoKSwgbnVsbHB0cik7
CisgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25D
bGllbnQ6OmNhbmNlbChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKIHsKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmNh
bmNlbChub3RpZmljYXRpb24sIG1fcGFnZSk7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7Cisg
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9u
TWFuYWdlcj4oKS0+Y2FuY2VsKG5vdGlmaWNhdGlvbiwgbV9wYWdlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFtwcm90ZWN0ZWROb3RpZmlj
YXRpb24gPSBSZWYgeyBub3RpZmljYXRpb24gfV0oKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+Y2FuY2VsKHBy
b3RlY3RlZE5vdGlmaWNhdGlvbi5nZXQoKSwgbnVsbHB0cik7CisgICAgfSk7CiB9CiAKIHZvaWQg
V2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZp
Y2F0aW9uJiBub3RpZmljYXRpb24pCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3Vw
cGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5kaWREZXN0cm95Tm90aWZpY2F0aW9u
KG5vdGlmaWNhdGlvbiwgbV9wYWdlKTsKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5h
Z2VyPigpLT5kaWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgbV9wYWdlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIE1ha2Ugc3VyZSB0aGlzIE5vdGlmaWNhdGlv
biBvYmplY3QgaXMgZGVhbGxvY2F0ZWQgb24gdGhpcyB0aHJlYWQgYnkgaG9sZGluZyBvbmUgbGFz
dCByZWYoKSB0byBpdCBoZXJlCisgICAgYXV0byBsYXN0Tm90aWZpY2F0aW9uUmVmID0gUmVmIHsg
bm90aWZpY2F0aW9uIH07CisKKyAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJm5vdGlmaWNh
dGlvbl0oKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRp
b24sIG51bGxwdHIpOworICAgIH0pOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6
bm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpCiB7Ci0gICAgZGVsZXRlIHRoaXM7Cisg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpc10geworICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9
KTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBlcm1pc3Npb25IYW5kbGVyJiYgcGVybWlz
c2lvbkhhbmRsZXIpCiB7CisgICAgLy8gT25seSBXaW5kb3cgY2xpZW50cyBjYW4gcmVxdWVzdCBw
ZXJtaXNzaW9uCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9wYWdl
KTsKKwogICAgIGF1dG8qIHNlY3VyaXR5T3JpZ2luID0gY29udGV4dC5zZWN1cml0eU9yaWdpbigp
OwogICAgIGlmICghc2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiBwZXJtaXNzaW9uSGFu
ZGxlcihOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb246OkRlbmllZCk7CkBAIC03Niw5ICsx
MDgsMjAgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFAKIAogTm90aWZpY2F0aW9uQ2xpZW50OjpQ
ZXJtaXNzaW9uIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgaWYgKCFjb250ZXh0IHx8ICFjb250ZXh0
LT5pc0RvY3VtZW50KCkgfHwgIWNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpCisgICAgaWYgKCFj
b250ZXh0KQogICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uOjpE
ZW5pZWQ7Ci0gICAgcmV0dXJuIG1fcGFnZS0+bm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyKCktPnBlcm1pc3Npb25MZXZlbChjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5kYXRh
KCkpOworICAgIGlmICghY29udGV4dC0+aXNEb2N1bWVudCgpICYmICFjb250ZXh0LT5pc1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSgpKQorICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50
OjpQZXJtaXNzaW9uOjpEZW5pZWQ7CisKKyAgICBhdXRvKiBvcmlnaW4gPSBjb250ZXh0LT5zZWN1
cml0eU9yaWdpbigpOworICAgIGlmICghb3JpZ2luKQorICAgICAgICByZXR1cm4gTm90aWZpY2F0
aW9uQ2xpZW50OjpQZXJtaXNzaW9uOjpEZW5pZWQ7CisKKyAgICBOb3RpZmljYXRpb25DbGllbnQ6
OlBlcm1pc3Npb24gcmVzdWx0UGVybWlzc2lvbjsKKyAgICBjYWxsT25NYWluVGhyZWFkQW5kV2Fp
dChbJnJlc3VsdFBlcm1pc3Npb24sIG9yaWdpbiA9IG9yaWdpbi0+ZGF0YSgpLnRvU3RyaW5nKCld
IHsKKyAgICAgICAgcmVzdWx0UGVybWlzc2lvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1
cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+cG9saWN5Rm9yT3JpZ2luKG9yaWdp
bik7CisgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdFBlcm1pc3Npb247CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggOGRlNjgxYjIyMjQx
Li5kZDM5NzYzYWM1MTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMjA4LDYgKzIw
OCw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB1bmRlZmluZWQgZGVueVdlYk5vdGlm
aWNhdGlvblBlcm1pc3Npb24oRE9NU3RyaW5nIG9yaWdpbik7CiAgICAgdW5kZWZpbmVkIHJlbW92
ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAgICAgdW5kZWZpbmVkIHNpbXVsYXRl
V2ViTm90aWZpY2F0aW9uQ2xpY2sob2JqZWN0IG5vdGlmaWNhdGlvbik7CisgICAgdW5kZWZpbmVk
IHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
cygpOwogCiAgICAgLy8gR2VvbG9jYXRpb24KICAgICB1bmRlZmluZWQgc2V0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uKGJvb2xlYW4gdmFsdWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAzM2U3MGFmMzJh
NmQuLjBkMGQxZmZiNjAwMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTY2OCw2ICs2NjgsMTEgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tE
YXRhUmVmIG5vdGlmaWNhdGlvbklEKQogICAgIHBvc3RQYWdlTWVzc2FnZSgiU2ltdWxhdGVXZWJO
b3RpZmljYXRpb25DbGljayIsIG5vdGlmaWNhdGlvbklEKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1
bmRsZTo6cG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90
aWZpY2F0aW9ucygpCit7CisgICAgcG9zdFBhZ2VNZXNzYWdlKCJTaW11bGF0ZVdlYk5vdGlmaWNh
dGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMiKTsKK30KKwogdm9pZCBJbmpl
Y3RlZEJ1bmRsZTo6cG9zdFNldEFkZHNWaXNpdGVkTGlua3MoYm9vbCBhZGRzVmlzaXRlZExpbmtz
KQogewogICAgIHBvc3RQYWdlTWVzc2FnZSgiU2V0QWRkc1Zpc2l0ZWRMaW5rcyIsIGFkb3B0V0so
V0tCb29sZWFuQ3JlYXRlKGFkZHNWaXNpdGVkTGlua3MpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggYmMx
NDc1Y2FmN2ZhLi4wYTg1OTk1ODBmYWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTk1LDYgKzk1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgcG9zdFNldFdpbmRvd0lzS2V5KGJvb2wpOwogICAgIHZvaWQgcG9z
dFNldFZpZXdTaXplKGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCk7CiAgICAgdm9pZCBwb3N0
U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpOwor
ICAgIHZvaWQgcG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9ucygpOwogICAgIHZvaWQgcG9zdFNldEFkZHNWaXNpdGVkTGlua3MoYm9vbCk7
CiAKICAgICAvLyBHZW9sb2NhdGlvbi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDc4MWI4MTY5MWFmYy4uMjRhOWE4
NWQwN2JhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKQEAgLTg2NywxMSArODY3LDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogdm9pZCBU
ZXN0UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYgb3Jp
Z2luKQogewogICAgIFdLQnVuZGxlU2V0V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihJbmplY3Rl
ZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIHBhZ2UoKSwgdG9XSyhvcmlnaW4pLmdldCgp
LCB0cnVlKTsKKyAgICBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZVJldHVybmluZ0Jvb2xlYW4o
IkdyYW50Tm90aWZpY2F0aW9uUGVybWlzc2lvbiIsIG9yaWdpbik7CiB9CiAKIHZvaWQgVGVzdFJ1
bm5lcjo6ZGVueVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYgb3JpZ2luKQog
ewogICAgIFdLQnVuZGxlU2V0V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIHBhZ2UoKSwgdG9XSyhvcmlnaW4pLmdldCgpLCBmYWxz
ZSk7CisgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2VSZXR1cm5pbmdCb29sZWFuKCJEZW55
Tm90aWZpY2F0aW9uUGVybWlzc2lvbiIsIG9yaWdpbik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6
cmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQpAQCAtODg3LDYgKzg4OSwxMSBA
QCB2b2lkIFRlc3RSdW5uZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soSlNWYWx1ZVJl
ZiBub3RpZmljYXRpb24pCiAgICAgaW5qZWN0ZWRCdW5kbGUucG9zdFNpbXVsYXRlV2ViTm90aWZp
Y2F0aW9uQ2xpY2sobm90aWZpY2F0aW9uSUQuZ2V0KCkpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6
OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
cygpCit7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBvc3RTaW11bGF0ZVdlYk5v
dGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKK30KKwogdm9p
ZCBUZXN0UnVubmVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBlbmFibGVkKQogewog
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkb25lIGJ5IGZyYW1lLgpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAyYjc4
YzFkYTk2YjEuLjkwZjVlZTQ4MWY0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTI5NCw2ICsyOTQsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgZGVueVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdS
ZWYgb3JpZ2luKTsKICAgICBzdGF0aWMgdm9pZCByZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJt
aXNzaW9ucygpOwogICAgIHN0YXRpYyB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2so
SlNWYWx1ZVJlZiBub3RpZmljYXRpb24pOworICAgIHN0YXRpYyB2b2lkIHNpbXVsYXRlV2ViTm90
aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpOwogCiAgICAgLy8g
R2VvbG9jYXRpb24uCiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCk7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDRkNmU5MDlhYmQy
YS4uNTAwYzcxZDVhNGExIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcApAQCAtNjk2LDYgKzY5Niw3IEBAIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25S
ZWY+IFRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvCiAgICAgV0tO
b3RpZmljYXRpb25NYW5hZ2VyUmVmIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBXS0NvbnRleHRHZXRO
b3RpZmljYXRpb25NYW5hZ2VyKG1fY29udGV4dC5nZXQoKSk7CiAgICAgV0tOb3RpZmljYXRpb25Q
cm92aWRlclYwIG5vdGlmaWNhdGlvbktpdCA9IG1fd2ViTm90aWZpY2F0aW9uUHJvdmlkZXIucHJv
dmlkZXIoKTsKICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihub3RpZmljYXRp
b25NYW5hZ2VyLCAmbm90aWZpY2F0aW9uS2l0LmJhc2UpOworICAgIFdLTm90aWZpY2F0aW9uTWFu
YWdlclNldFByb3ZpZGVyKFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb25NYW5hZ2VyKCksICZub3RpZmljYXRpb25LaXQuYmFzZSk7CiAKICAgICBp
ZiAodGVzdFBsdWdpbkRpcmVjdG9yeSgpKQogICAgICAgICBXS0NvbnRleHRTZXRBZGRpdGlvbmFs
UGx1Z2luc0RpcmVjdG9yeShtX2NvbnRleHQuZ2V0KCksIHRlc3RQbHVnaW5EaXJlY3RvcnkoKSk7
CkBAIC03MTcsNiArNzE4LDI0IEBAIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+
IFRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvCiAgICAgcmV0dXJu
IHBhZ2VDb25maWd1cmF0aW9uOwogfQogCitib29sIFRlc3RDb250cm9sbGVyOjpncmFudE5vdGlm
aWNhdGlvblBlcm1pc3Npb24oV0tTdHJpbmdSZWYgb3JpZ2luU3RyaW5nKQoreworICAgIG1fd2Vi
Tm90aWZpY2F0aW9uUHJvdmlkZXIuc2V0UGVybWlzc2lvbih0b1dURlN0cmluZyhvcmlnaW5TdHJp
bmcpLCB0cnVlKTsKKworICAgIGF1dG8gb3JpZ2luID0gYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2lu
Q3JlYXRlRnJvbVN0cmluZyhvcmlnaW5TdHJpbmcpKTsKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJQcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFn
ZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpLCBvcmlnaW4uZ2V0
KCksIHRydWUpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFRlc3RDb250cm9sbGVyOjpk
ZW55Tm90aWZpY2F0aW9uUGVybWlzc2lvbihXS1N0cmluZ1JlZiBvcmlnaW5TdHJpbmcpCit7Cisg
ICAgbV93ZWJOb3RpZmljYXRpb25Qcm92aWRlci5zZXRQZXJtaXNzaW9uKHRvV1RGU3RyaW5nKG9y
aWdpblN0cmluZyksIGZhbHNlKTsKKworICAgIGF1dG8gb3JpZ2luID0gYWRvcHRXSyhXS1NlY3Vy
aXR5T3JpZ2luQ3JlYXRlRnJvbVN0cmluZyhvcmlnaW5TdHJpbmcpKTsKKyAgICBXS05vdGlmaWNh
dGlvbk1hbmFnZXJQcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNh
dGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpLCBv
cmlnaW4uZ2V0KCksIGZhbHNlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBUZXN0Q29u
dHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRp
b25zKQogewogICAgIGF1dG8gYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gb3B0aW9ucy5h
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKQEAgLTIzNTksNiArMjM3OCwxMSBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLRGF0YVJlZiBu
b3RpZmljYXRpb25JRCkKICAgICBtX3dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLnNpbXVsYXRlV2Vi
Tm90aWZpY2F0aW9uQ2xpY2sobWFpbldlYlZpZXcoKS0+cGFnZSgpLCBub3RpZmljYXRpb25JRCk7
CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tG
b3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpCit7CisgICAgbV93ZWJOb3RpZmljYXRpb25Q
cm92aWRlci5zaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlm
aWNhdGlvbnMoKTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJt
aXNzaW9uKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBiNTJh
ZjY2NTU1MmIuLmUyNGFjMzIwMzRhZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaApAQCAtMTI3LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJlZm9yZVVu
bG9hZFJldHVyblZhbHVlKGJvb2wgdmFsdWUpIHsgbV9iZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZSA9
IHZhbHVlOyB9CiAKICAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tEYXRh
UmVmIG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xp
Y2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpOwogCiAgICAgLy8gR2VvbG9jYXRpb24u
CiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCk7CkBAIC0zNzMsNiArMzc0
LDkgQEAgcHVibGljOgogCiAgICAgV0tQcmVmZXJlbmNlc1JlZiBwbGF0Zm9ybVByZWZlcmVuY2Vz
KCk7CiAKKyAgICBib29sIGdyYW50Tm90aWZpY2F0aW9uUGVybWlzc2lvbihXS1N0cmluZ1JlZiBv
cmlnaW4pOworICAgIGJvb2wgZGVueU5vdGlmaWNhdGlvblBlcm1pc3Npb24oV0tTdHJpbmdSZWYg
b3JpZ2luKTsKKwogcHJpdmF0ZToKICAgICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9u
UmVmPiBnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJik7CiAgICAg
V0tSZXRhaW5QdHI8V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29u
ZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9ucyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAyY2E0MmMzZWU1YzMuLjZhOTAwM2JjYjgzMyAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTM5Niw2ICsz
OTYsMTEgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2lt
dWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25zIikp
IHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNpbXVsYXRlV2ViTm90aWZp
Y2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2Fn
ZU5hbWUsICJTZXRBZGRzVmlzaXRlZExpbmtzIikpIHsKICAgICAgICAgV0tQYWdlU2V0QWRkc1Zp
c2l0ZWRMaW5rcyhUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFn
ZSgpLCBib29sZWFuVmFsdWUobWVzc2FnZUJvZHkpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTAy
NSw2ICsxMDMwLDEyIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBh
ZG9wdFdLKFdLVUludDY0Q3JlYXRlKGNvdW50KSk7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJHcmFudE5vdGlmaWNhdGlvblBlcm1p
c3Npb24iKSkKKyAgICAgICAgcmV0dXJuIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKFRlc3RDb250
cm9sbGVyOjpzaW5nbGV0b24oKS5ncmFudE5vdGlmaWNhdGlvblBlcm1pc3Npb24oc3RyaW5nVmFs
dWUobWVzc2FnZUJvZHkpKSkpOworCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcobWVzc2FnZU5hbWUsICJEZW55Tm90aWZpY2F0aW9uUGVybWlzc2lvbiIpKQorICAgICAgICBy
ZXR1cm4gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
LmRlbnlOb3RpZmljYXRpb25QZXJtaXNzaW9uKHN0cmluZ1ZhbHVlKG1lc3NhZ2VCb2R5KSkpKTsK
KyAgICAgICAgCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJJc0RvaW5nTWVkaWFDYXB0dXJlIikpCiAgICAgICAgIHJldHVybiBhZG9wdFdLKFdLQm9v
bGVhbkNyZWF0ZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuaXNEb2luZ01lZGlhQ2FwdHVy
ZSgpKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlm
aWNhdGlvblByb3ZpZGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXIuY3BwCmluZGV4IGM4OGYyZTlmOGRiMi4uYzUxYjlhYWNkOWM0IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcApA
QCAtNjQsNiArNjQsNyBAQCBzdGF0aWMgV0tEaWN0aW9uYXJ5UmVmIG5vdGlmaWNhdGlvblBlcm1p
c3Npb25zKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiAKIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
OjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcigpCiB7CisgICAgbV9wZXJtaXNzaW9ucyA9IGFkb3B0
V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXI6On5XZWJOb3RpZmljYXRpb25Qcm92aWRlcigpCkBAIC04NywxMCArODgsMTkgQEAgV0tO
b3RpZmljYXRpb25Qcm92aWRlclYwIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpwcm92aWRlcigp
CiAgICAgcmV0dXJuIG5vdGlmaWNhdGlvblByb3ZpZGVyOwogfQogCitzdGF0aWMgV0tOb3RpZmlj
YXRpb25NYW5hZ2VyUmVmIG5vdGlmaWNhdGlvbk1hbmFnZXJGb3JQYWdlKFdLUGFnZVJlZiBwYWdl
KQoreworICAgIGlmIChwYWdlKSB7CisgICAgICAgIGF1dG8gY29udGV4dCA9IFdLUGFnZUdldENv
bnRleHQocGFnZSk7CisgICAgICAgIHJldHVybiBXS0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5h
Z2VyKGNvbnRleHQpOworICAgIH0KKworICAgIHJldHVybiBXS05vdGlmaWNhdGlvbk1hbmFnZXJH
ZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpOworfQorCiB2b2lkIFdl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzaG93V2ViTm90aWZpY2F0aW9uKFdLUGFnZVJlZiBwYWdl
LCBXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pCiB7Ci0gICAgYXV0byBjb250ZXh0ID0g
V0tQYWdlR2V0Q29udGV4dChwYWdlKTsKLSAgICBhdXRvIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBX
S0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5hZ2VyKGNvbnRleHQpOworICAgIGF1dG8gbm90aWZp
Y2F0aW9uTWFuYWdlciA9IG5vdGlmaWNhdGlvbk1hbmFnZXJGb3JQYWdlKHBhZ2UpOwogICAgIEFT
U0VSVChtX2tub3duTWFuYWdlcnMuY29udGFpbnMobm90aWZpY2F0aW9uTWFuYWdlcikpOwogCiAg
ICAgdWludDY0X3QgaWRlbnRpZmllciA9IFdLTm90aWZpY2F0aW9uR2V0SUQobm90aWZpY2F0aW9u
KTsKQEAgLTExOCw3ICsxMjgsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpjbG9z
ZVdlYk5vdGlmaWNhdGlvbihXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpbwogCiB2b2lkIFdl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyOjphZGROb3RpZmljYXRpb25NYW5hZ2VyKFdLTm90aWZpY2F0
aW9uTWFuYWdlclJlZiBtYW5hZ2VyKQogewotICAgIEFTU0VSVCghbV9rbm93bk1hbmFnZXJzLmNv
bnRhaW5zKG1hbmFnZXIpKTsKKyAgICBBU1NFUlQoIW1fa25vd25NYW5hZ2Vycy5jb250YWlucyht
YW5hZ2VyKSB8fCBtYW5hZ2VyID09IFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZp
Y2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyKCkpOwogICAgIG1fa25vd25NYW5hZ2Vycy5hZGQo
bWFuYWdlcik7CiB9CiAKQEAgLTE0NSw4ICsxNTUsMTQgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25Q
cm92aWRlcjo6cmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlcihXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYKIAogV0tEaWN0aW9uYXJ5UmVmIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmljYXRp
b25QZXJtaXNzaW9ucygpCiB7Ci0gICAgLy8gSW5pdGlhbCBwZXJtaXNzaW9ucyBhcmUgYWx3YXlz
IGVtcHR5LgotICAgIHJldHVybiBXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCk7CisgICAgV0tS
ZXRhaW4obV9wZXJtaXNzaW9ucy5nZXQoKSk7CisgICAgcmV0dXJuIG1fcGVybWlzc2lvbnMuZ2V0
KCk7Cit9CisKK3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNldFBlcm1pc3Npb24oY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGJvb2wgYWxsb3dlZCkKK3sKKyAgICBhdXRvIHdrQWxsb3dlZCA9
IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGFsbG93ZWQpKTsKKyAgICBXS0RpY3Rpb25hcnlTZXRJ
dGVtKG1fcGVybWlzc2lvbnMuZ2V0KCksIHRvV0sob3JpZ2luKS5nZXQoKSwgd2tBbGxvd2VkLmdl
dCgpKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2ltdWxhdGVXZWJOb3Rp
ZmljYXRpb25DbGljayhXS1BhZ2VSZWYsIFdLRGF0YVJlZiBub3RpZmljYXRpb25JRCkKQEAgLTE1
Nyw2ICsxNzMsMTYgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2ltdWxhdGVXZWJO
b3RpZmljYXRpb25DbGljayhXS1BhZ2VSZWYsIFdLRGF0YVJlZgogICAgIFdLTm90aWZpY2F0aW9u
TWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25fYihtX293bmluZ01hbmFnZXIuZ2V0
KGlkZW50aWZpZXIpLCBub3RpZmljYXRpb25JRCk7CiB9CiAKK3ZvaWQgV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90
aWZpY2F0aW9ucygpCit7CisgICAgYXV0byBzaGFyZWRNYW5hZ2VyID0gV0tOb3RpZmljYXRpb25N
YW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFnZXIoKTsKKyAgICBm
b3IgKGF1dG8mIGl0ZXJhdG9yIDogbV9vd25pbmdNYW5hZ2VyKSB7CisgICAgICAgIGlmIChpdGVy
YXRvci52YWx1ZSAhPSBzaGFyZWRNYW5hZ2VyKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25fYihz
aGFyZWRNYW5hZ2VyLCB1dWlkVG9EYXRhKGl0ZXJhdG9yLmtleSkuZ2V0KCkpOworICAgIH0KK30K
Kwogdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cmVzZXQoKQogewogICAgIGZvciAoYXV0
byBpdGVyYXRvciA6IG1fb3duaW5nTWFuYWdlcikgewpAQCAtMTY2LDYgKzE5Miw3IEBAIHZvaWQg
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlc2V0KCkKICAgICB9CiAKICAgICBtX293bmluZ01h
bmFnZXIuY2xlYXIoKTsKKyAgICBtX3Blcm1pc3Npb25zID0gYWRvcHRXSyhXS011dGFibGVEaWN0
aW9uYXJ5Q3JlYXRlKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaAppbmRleCAwYzM4N2E2ZTZi
NTUuLjU3YjZjZmFhNTEyZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJO
b3RpZmljYXRpb25Qcm92aWRlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXIuaApAQCAtNDksMTEgKzQ5LDE2IEBAIHB1YmxpYzoKICAgICBXS0Rp
Y3Rpb25hcnlSZWYgbm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKTsKIAogICAgIHZvaWQgc2ltdWxh
dGVXZWJOb3RpZmljYXRpb25DbGljayhXS1BhZ2VSZWYsIFdLRGF0YVJlZiBub3RpZmljYXRpb25J
RCk7CisgICAgdm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtl
ck5vdGlmaWNhdGlvbnMoKTsKKwogICAgIHZvaWQgcmVzZXQoKTsKIAorICAgIHZvaWQgc2V0UGVy
bWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgYm9vbCBhbGxvd2VkKTsKKwogcHJpdmF0ZToK
ICAgICBIYXNoU2V0PFdLUmV0YWluUHRyPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4+IG1fa25v
d25NYW5hZ2VyczsKICAgICBIYXNoTWFwPFVVSUQsIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4g
bV9vd25pbmdNYW5hZ2VyOworICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+
IG1fcGVybWlzc2lvbnM7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451795</attachid>
            <date>2022-02-12 15:03:07 -0800</date>
            <delta_ts>2022-02-12 17:48:13 -0800</delta_ts>
            <desc>EWS v6</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>111393</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjExNjczMDkyNDhiYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcwpAQCAtMCwwICsxLDMwIEBACisKK2xldCBt
ZXNzYWdlQ2xpZW50cyA9IGFzeW5jIGZ1bmN0aW9uKG1zZykgeyAKKyAgICBjb25zdCBhbGxDbGll
bnRzID0gYXdhaXQgY2xpZW50cy5tYXRjaEFsbCh7CisgICAgICAgIGluY2x1ZGVVbmNvbnRyb2xs
ZWQ6IHRydWUKKyAgICB9KTsKKworICAgIGZvciAoY29uc3QgY2xpZW50IG9mIGFsbENsaWVudHMp
CisgICAgICAgIGNsaWVudC5wb3N0TWVzc2FnZShtc2cpOworfQorCitzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ25vdGlmaWNhdGlvbmNsaWNrJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBh
d2FpdCBtZXNzYWdlQ2xpZW50cygiY2xpY2tlZCIpOworICAgIGV2ZW50Lm5vdGlmaWNhdGlvbi5j
bG9zZSgpOworfSk7CisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcignbm90aWZpY2F0aW9uY2xvc2Un
LCBhc3luYyBmdW5jdGlvbihldmVudCkgeworICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJjbG9z
ZWQiKTsKK30pOworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyBmdW5j
dGlvbihldmVudCkgeworICAgIC8vIFJlcGx5IGlmIHRoZSBzaG93IHN1Y2NlZWRlZCBvciBmYWls
ZWQuCisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgcmVnaXN0cmF0aW9uLnNob3dOb3RpZmljYXRp
b24oIlRoaXMgaXMgYSBub3RpZmljYXRpb24iKTsKKyAgICB9IGNhdGNoKGVycm9yKSB7CisgICAg
ICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJzaG93RmFpbGVkIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoInNob3duIik7Cit9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3Rp
ZmljYXRpb24tYWxsb3dlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmFkNTRiMDI0ZDEzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25v
dGlmaWNhdGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRl
c3RzIHRoYXQgYSBub3RpZmljYXRpb24gc2hvd24gYnkgYSBzZXJ2aWNlIHdvcmtlciBjYW4gYmUg
Y2xpY2tlZCBhbmQgY2xvc2VkLCB3aXRoIHRob3NlIGFjdGlvbnMgYmVpbmcgb2JzZXJ2YWJsZSBi
eSB0aGUgc2VydmljZSB3b3JrZXIKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgTm90aWZpY2F0aW9uLnBlcm1pc3Npb24gaXMgImdyYW50ZWQiCitQQVNTIGdvdENsaWNrZWQg
aXMgZmFsc2UKK1BBU1MgZ290Q2xvc2VkIGlzIGZhbHNlCitQQVNTIGdvdENsaWNrZWQgaXMgdHJ1
ZQorUEFTUyBnb3RDbG9zZWQgaXMgZmFsc2UKK1BBU1MgQ2xvc2UgaGFzIGJlZW4gb2JzZXJ2ZWQK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hv
d25vdGlmaWNhdGlvbi1hbGxvd2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFkNGEwMDE1Njc5NQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24t
YWxsb3dlZC5odG1sCkBAIC0wLDAgKzEsNzYgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
bm90aWZpY2F0aW9ucy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlv
biBmYWlsVGhlVGVzdChtc2cpCit7CisgICAgdGVzdEZhaWxlZChtc2cpOworICAgIGlmICh0ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVz
dFJ1bm5lci5ncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24odGVzdFVSTCk7CisgICAgc2V0
VGltZW91dCgiZmFpbFRoZVRlc3QoJ3RpbWVkIG91dCcpIiwgMTUwMDApOworfQorCitkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uIHNob3duIGJ5IGEgc2VydmljZSB3
b3JrZXIgY2FuIGJlIGNsaWNrZWQgYW5kIGNsb3NlZCwgd2l0aCB0aG9zZSBhY3Rpb25zIGJlaW5n
IG9ic2VydmFibGUgYnkgdGhlIHNlcnZpY2Ugd29ya2VyIik7CisKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygiTm90aWZpY2F0aW9uLnBlcm1pc3Npb24iLCAiZ3JhbnRlZCIpOworCithc3luYyBmdW5j
dGlvbiByZWdpc3RlclNlcnZpY2VXb3JrZXIoKSB7CisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3
YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCdyZXNvdXJjZXMvc2hvd25vdGlm
aWNhdGlvbi13b3JrZXIuanMnKTsKKyAgICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAg
ICAgcmV0dXJuIHRlc3RGYWlsZWQoIk5vIHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChy
ZWdpc3RyYXRpb24uYWN0aXZlKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1l
c3NhZ2UoIlN0YXJ0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFs
bGluZ1dvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGlu
Z1dvcmtlcikKKyAgICAgICAgZmFpbFRoZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcg
d29ya2VyIik7CisKKyAgICBpbnN0YWxsaW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRl
Y2hhbmdlIiwgKCkgPT4geworICAgICAgICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0g
ImFjdGl2YXRlZCIpIHsKKyAgICAgICAgICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2Uo
InRyeXNob3ciKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCit2YXIgZ290Q2xpY2tlZCA9IGZh
bHNlOwordmFyIGdvdENsb3NlZCA9IGZhbHNlOworCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5kYXRh
ID09ICJzaG93RmFpbGVkIikgeworICAgICAgICBmYWlsVGhlVGVzdCgiVW5leHBlY3RlZGx5IHJl
Y2VpdmVkIHRoZSBmYWlsZWQtdG8tc2hvdyBtZXNzYWdlIik7CisgICAgfSBlbHNlIGlmIChldmVu
dC5kYXRhID09ICJzaG93biIpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9ucygpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xpY2tlZCIp
IHsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZ290Q2xpY2tlZCIpOworICAgICAgICBzaG91bGRC
ZUZhbHNlKCJnb3RDbG9zZWQiKTsKKyAgICAgICAgZ290Q2xpY2tlZCA9IHRydWU7CisgICAgfSBl
bHNlIGlmIChldmVudC5kYXRhID09ICJjbG9zZWQiKSB7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgi
Z290Q2xpY2tlZCIpCisgICAgICAgIHNob3VsZEJlRmFsc2UoImdvdENsb3NlZCIpCisgICAgICAg
IGdvdENsb3NlZCA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTWVz
c2FnZSByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOworICAgIH0KKyAgICAKKyAgICBpZiAoZ290
Q2xvc2VkKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNsb3NlIGhhcyBiZWVuIG9ic2VydmVkIik7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgIH0KK30pOworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0icmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkiPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5p
ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
c2hvd25vdGlmaWNhdGlvbi1kZW5pZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uMjAxOGE0M2U1ZGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5p
ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgbm90aWZp
Y2F0aW9uIHNob3duIGJ5IGEgc2VydmljZSB3b3JrZXIgY2FuIGJlIGNsaWNrZWQgYW5kIGNsb3Nl
ZCwgd2l0aCB0aG9zZSBhY3Rpb25zIGJlaW5nIG9ic2VydmFibGUgYnkgdGhlIHNlcnZpY2Ugd29y
a2VyCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIE5vdGlmaWNhdGlvbi5w
ZXJtaXNzaW9uIGlzICJkZW5pZWQiCitQQVNTIE5vdGlmaWNhdGlvbiBmYWlsZWQgdG8gc2hvdwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zaG93
bm90aWZpY2F0aW9uLWRlbmllZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5pZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjc3NDZmN2M2NmU0NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tZGVu
aWVkLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy9ub3Rp
ZmljYXRpb25zLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGZh
aWxUaGVUZXN0KG1zZykKK3sKKyAgICB0ZXN0RmFpbGVkKG1zZyk7CisgICAgaWYgKHRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVu
bmVyLmRlbnlXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKHRlc3RVUkwpOworICAgIHNldFRpbWVv
dXQoImZhaWxUaGVUZXN0KCd0aW1lZCBvdXQnKSIsIDE1MDAwKTsKK30KKworZGVzY3JpcHRpb24o
IlRoaXMgdGVzdHMgdGhhdCBhIG5vdGlmaWNhdGlvbiBzaG93biBieSBhIHNlcnZpY2Ugd29ya2Vy
IGNhbiBiZSBjbGlja2VkIGFuZCBjbG9zZWQsIHdpdGggdGhvc2UgYWN0aW9ucyBiZWluZyBvYnNl
cnZhYmxlIGJ5IHRoZSBzZXJ2aWNlIHdvcmtlciIpOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmco
Ik5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIiwgImRlbmllZCIpOworCithc3luYyBmdW5jdGlvbiBy
ZWdpc3RlclNlcnZpY2VXb3JrZXIoKSB7CisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5h
dmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCdyZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlv
bi13b3JrZXIuanMnKTsKKyAgICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAgICAgcmV0
dXJuIHRlc3RGYWlsZWQoIk5vIHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChyZWdpc3Ry
YXRpb24uYWN0aXZlKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1lc3NhZ2Uo
IlN0YXJ0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFsbGluZ1dv
cmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGluZ1dvcmtl
cikKKyAgICAgICAgZmFpbFRoZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcgd29ya2Vy
Iik7CisKKyAgICBpbnN0YWxsaW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRlY2hhbmdl
IiwgKCkgPT4geworICAgICAgICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0gImFjdGl2
YXRlZCIpIHsKKyAgICAgICAgICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2UoInRyeXNo
b3ciKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5kYXRh
ID09ICJzaG93RmFpbGVkIikgeworICAgICAgICB0ZXN0UGFzc2VkKCJOb3RpZmljYXRpb24gZmFp
bGVkIHRvIHNob3ciKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09
ICJzaG93biIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTm90aWZpY2F0aW9uIHNob3duLCBidXQg
c2hvdWxkbid0IGhhdmUgYmVlbiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQo
Ik1lc3NhZ2UgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKKyAgICB9Cit9KTsKKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJlZ2lzdGVyU2VydmljZVdvcmtlcigpIj4KKzwv
Ym9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvbm90aWZpY2F0aW9ucy9pZGxoYXJuZXNzLmh0dHBzLmFueS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL25vdGlmaWNhdGlvbnMv
aWRsaGFybmVzcy5odHRwcy5hbnktZXhwZWN0ZWQudHh0CmluZGV4IDM1ODk5NWQ2ZWY1ZS4uMzNk
NDU2MDU1MzQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL25vdGlmaWNhdGlvbnMvaWRsaGFybmVzcy5odHRwcy5hbnktZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbm90aWZp
Y2F0aW9ucy9pZGxoYXJuZXNzLmh0dHBzLmFueS1leHBlY3RlZC50eHQKQEAgLTYyLDYgKzYyLDYg
QEAgRkFJTCBOb3RpZmljYXRpb24gaW50ZXJmYWNlOiBub3RpZmljYXRpb24gbXVzdCBpbmhlcml0
IHByb3BlcnR5ICJkYXRhIiB3aXRoIHRoZQogRkFJTCBOb3RpZmljYXRpb24gaW50ZXJmYWNlOiBu
b3RpZmljYXRpb24gbXVzdCBpbmhlcml0IHByb3BlcnR5ICJhY3Rpb25zIiB3aXRoIHRoZSBwcm9w
ZXIgdHlwZSBhc3NlcnRfaW5oZXJpdHM6IHByb3BlcnR5ICJhY3Rpb25zIiBub3QgZm91bmQgaW4g
cHJvdG90eXBlIGNoYWluCiBQQVNTIE5vdGlmaWNhdGlvbiBpbnRlcmZhY2U6IG5vdGlmaWNhdGlv
biBtdXN0IGluaGVyaXQgcHJvcGVydHkgImNsb3NlKCkiIHdpdGggdGhlIHByb3BlciB0eXBlCiBQ
QVNTIE5vdGlmaWNhdGlvbkV2ZW50IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVz
IG9mIGludGVyZmFjZSBvYmplY3QKLUZBSUwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRl
cmZhY2U6IG9wZXJhdGlvbiBzaG93Tm90aWZpY2F0aW9uKERPTVN0cmluZywgb3B0aW9uYWwgTm90
aWZpY2F0aW9uT3B0aW9ucykgYXNzZXJ0X293bl9wcm9wZXJ0eTogaW50ZXJmYWNlIHByb3RvdHlw
ZSBvYmplY3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJhdGlvbiBleHBlY3RlZCBwcm9wZXJ0eSAi
c2hvd05vdGlmaWNhdGlvbiIgbWlzc2luZwotRkFJTCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
IGludGVyZmFjZTogb3BlcmF0aW9uIGdldE5vdGlmaWNhdGlvbnMob3B0aW9uYWwgR2V0Tm90aWZp
Y2F0aW9uT3B0aW9ucykgYXNzZXJ0X293bl9wcm9wZXJ0eTogaW50ZXJmYWNlIHByb3RvdHlwZSBv
YmplY3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJhdGlvbiBleHBlY3RlZCBwcm9wZXJ0eSAiZ2V0
Tm90aWZpY2F0aW9ucyIgbWlzc2luZworUEFTUyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGlu
dGVyZmFjZTogb3BlcmF0aW9uIHNob3dOb3RpZmljYXRpb24oRE9NU3RyaW5nLCBvcHRpb25hbCBO
b3RpZmljYXRpb25PcHRpb25zKQorUEFTUyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGludGVy
ZmFjZTogb3BlcmF0aW9uIGdldE5vdGlmaWNhdGlvbnMob3B0aW9uYWwgR2V0Tm90aWZpY2F0aW9u
T3B0aW9ucykKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9ub3RpZmljYXRpb25zL2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3Jr
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9ub3RpZmljYXRpb25zL2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3JrZXItZXhw
ZWN0ZWQudHh0CmluZGV4IDQyNDZmZTU2NjJlZC4uMzE2YzEzN2MzYjM1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL25vdGlmaWNhdGlvbnMv
aWRsaGFybmVzcy5odHRwcy5hbnkuc2VydmljZXdvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ub3RpZmljYXRpb25zL2lk
bGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0zNSwxOCAr
MzUsMTggQEAgRkFJTCBOb3RpZmljYXRpb24gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgcmVxdWlyZUlu
dGVyYWN0aW9uIGFzc2VydF9vd25fcHJvcGVydHk6IHMKIEZBSUwgTm90aWZpY2F0aW9uIGludGVy
ZmFjZTogYXR0cmlidXRlIGRhdGEgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBo
YXZlIG93biBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uIiBleHBlY3RlZCBwcm9wZXJ0eSAiTm90aWZp
Y2F0aW9uIiBtaXNzaW5nCiBGQUlMIE5vdGlmaWNhdGlvbiBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBh
Y3Rpb25zIGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVy
dHkgIk5vdGlmaWNhdGlvbiIgZXhwZWN0ZWQgcHJvcGVydHkgIk5vdGlmaWNhdGlvbiIgbWlzc2lu
ZwogRkFJTCBOb3RpZmljYXRpb24gaW50ZXJmYWNlOiBvcGVyYXRpb24gY2xvc2UoKSBhc3NlcnRf
b3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJOb3RpZmljYXRp
b24iIGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb24iIG1pc3NpbmcKLUZBSUwgTm90aWZp
Y2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJm
YWNlIG9iamVjdCBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHBy
b3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgZXhwZWN0ZWQgcHJvcGVydHkgIk5vdGlmaWNhdGlv
bkV2ZW50IiBtaXNzaW5nCi1GQUlMIE5vdGlmaWNhdGlvbkV2ZW50IGludGVyZmFjZSBvYmplY3Qg
bGVuZ3RoIGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVy
dHkgIk5vdGlmaWNhdGlvbkV2ZW50IiBleHBlY3RlZCBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uRXZl
bnQiIG1pc3NpbmcKLUZBSUwgTm90aWZpY2F0aW9uRXZlbnQgaW50ZXJmYWNlIG9iamVjdCBuYW1l
IGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIk5v
dGlmaWNhdGlvbkV2ZW50IiBleHBlY3RlZCBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uRXZlbnQiIG1p
c3NpbmcKLUZBSUwgTm90aWZpY2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHBy
b3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgYXNzZXJ0X293bl9wcm9wZXJ0
eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uRXZlbnQiIGV4
cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgbWlzc2luZwotRkFJTCBOb3RpZmlj
YXRpb25FdmVudCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZh
Y2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25zdHJ1Y3RvciIgcHJvcGVydHkgYXNzZXJ0X293bl9w
cm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uRXZl
bnQiIGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgbWlzc2luZwotRkFJTCBO
b3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBp
bnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29wYWJsZXMgcHJvcGVydHkgYXNzZXJ0
X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90aWZpY2F0
aW9uRXZlbnQiIGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgbWlzc2luZwot
RkFJTCBOb3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBub3RpZmljYXRpb24g
YXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90
aWZpY2F0aW9uRXZlbnQiIGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgbWlz
c2luZwotRkFJTCBOb3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBhY3Rpb24g
YXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90
aWZpY2F0aW9uRXZlbnQiIGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgbWlz
c2luZwotRkFJTCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGludGVyZmFjZTogb3BlcmF0aW9u
IHNob3dOb3RpZmljYXRpb24oRE9NU3RyaW5nLCBvcHRpb25hbCBOb3RpZmljYXRpb25PcHRpb25z
KSBhc3NlcnRfb3duX3Byb3BlcnR5OiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBtaXNzaW5n
IG5vbi1zdGF0aWMgb3BlcmF0aW9uIGV4cGVjdGVkIHByb3BlcnR5ICJzaG93Tm90aWZpY2F0aW9u
IiBtaXNzaW5nCi1GQUlMIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gaW50ZXJmYWNlOiBvcGVy
YXRpb24gZ2V0Tm90aWZpY2F0aW9ucyhvcHRpb25hbCBHZXROb3RpZmljYXRpb25PcHRpb25zKSBh
c3NlcnRfb3duX3Byb3BlcnR5OiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBtaXNzaW5nIG5v
bi1zdGF0aWMgb3BlcmF0aW9uIGV4cGVjdGVkIHByb3BlcnR5ICJnZXROb3RpZmljYXRpb25zIiBt
aXNzaW5nCi1GQUlMIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJpYnV0
ZSBvbm5vdGlmaWNhdGlvbmNsaWNrIGFzc2VydF9vd25fcHJvcGVydHk6IFRoZSBnbG9iYWwgb2Jq
ZWN0IG11c3QgaGF2ZSBhIHByb3BlcnR5ICJvbm5vdGlmaWNhdGlvbmNsaWNrIiBleHBlY3RlZCBw
cm9wZXJ0eSAib25ub3RpZmljYXRpb25jbGljayIgbWlzc2luZwotRkFJTCBTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgb25ub3RpZmljYXRpb25jbG9zZSBhc3Nl
cnRfb3duX3Byb3BlcnR5OiBUaGUgZ2xvYmFsIG9iamVjdCBtdXN0IGhhdmUgYSBwcm9wZXJ0eSAi
b25ub3RpZmljYXRpb25jbG9zZSIgZXhwZWN0ZWQgcHJvcGVydHkgIm9ubm90aWZpY2F0aW9uY2xv
c2UiIG1pc3NpbmcKLUZBSUwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVyZmFjZTogc2Vs
ZiBtdXN0IGluaGVyaXQgcHJvcGVydHkgIm9ubm90aWZpY2F0aW9uY2xpY2siIHdpdGggdGhlIHBy
b3BlciB0eXBlIGFzc2VydF9vd25fcHJvcGVydHk6IGV4cGVjdGVkIHByb3BlcnR5ICJvbm5vdGlm
aWNhdGlvbmNsaWNrIiBtaXNzaW5nCi1GQUlMIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRl
cmZhY2U6IHNlbGYgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJvbm5vdGlmaWNhdGlvbmNsb3NlIiB3
aXRoIHRoZSBwcm9wZXIgdHlwZSBhc3NlcnRfb3duX3Byb3BlcnR5OiBleHBlY3RlZCBwcm9wZXJ0
eSAib25ub3RpZmljYXRpb25jbG9zZSIgbWlzc2luZworUEFTUyBOb3RpZmljYXRpb25FdmVudCBp
bnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0CitQ
QVNTIE5vdGlmaWNhdGlvbkV2ZW50IGludGVyZmFjZSBvYmplY3QgbGVuZ3RoCitQQVNTIE5vdGlm
aWNhdGlvbkV2ZW50IGludGVyZmFjZSBvYmplY3QgbmFtZQorUEFTUyBOb3RpZmljYXRpb25FdmVu
dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90
eXBlIG9iamVjdAorUEFTUyBOb3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBh
bmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25zdHJ1Y3Rv
ciIgcHJvcGVydHkKK1BBU1MgTm90aWZpY2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBleGlzdGVuY2Ug
YW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyBAQHVuc2NvcGFi
bGVzIHByb3BlcnR5CitQQVNTIE5vdGlmaWNhdGlvbkV2ZW50IGludGVyZmFjZTogYXR0cmlidXRl
IG5vdGlmaWNhdGlvbgorUEFTUyBOb3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2U6IGF0dHJpYnV0
ZSBhY3Rpb24KK1BBU1MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IG9wZXJh
dGlvbiBzaG93Tm90aWZpY2F0aW9uKERPTVN0cmluZywgb3B0aW9uYWwgTm90aWZpY2F0aW9uT3B0
aW9ucykKK1BBU1MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IG9wZXJhdGlv
biBnZXROb3RpZmljYXRpb25zKG9wdGlvbmFsIEdldE5vdGlmaWNhdGlvbk9wdGlvbnMpCitQQVNT
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBvbm5vdGlmaWNh
dGlvbmNsaWNrCitQQVNTIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJp
YnV0ZSBvbm5vdGlmaWNhdGlvbmNsb3NlCitQQVNTIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBp
bnRlcmZhY2U6IHNlbGYgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJvbm5vdGlmaWNhdGlvbmNsaWNr
IiB3aXRoIHRoZSBwcm9wZXIgdHlwZQorUEFTUyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgaW50
ZXJmYWNlOiBzZWxmIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAib25ub3RpZmljYXRpb25jbG9zZSIg
d2l0aCB0aGUgcHJvcGVyIHR5cGUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1By
ZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0
cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKaW5kZXggOGQzZWVkMTM5
NTRmLi4wMWIyZjVlNmI4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJl
bmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRz
L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbApAQCAtNjQ0LDggKzY0NCwx
MCBAQCBOb3RpZmljYXRpb25FdmVudEVuYWJsZWQ6CiAgIGNvbmRpdGlvbjogRU5BQkxFKE5PVElG
SUNBVElPTl9FVkVOVCkKICAgZGVmYXVsdFZhbHVlOgogICAgIFdlYkNvcmU6CisgICAgICAiRU5B
QkxFKE5PVElGSUNBVElPTl9FVkVOVCkiOiB0cnVlCiAgICAgICBkZWZhdWx0OiBmYWxzZQogICAg
IFdlYktpdDoKKyAgICAgICJFTkFCTEUoTk9USUZJQ0FUSU9OX0VWRU5UKSI6IHRydWUKICAgICAg
IGRlZmF1bHQ6IGZhbHNlCiAKIE9mZnNjcmVlbkNhbnZhc0VuYWJsZWQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4
IDY4NWIxZTRkMWEzYS4uMDhlMmE4ZWQ4YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtNDAsNyArNDAsOSBA
QAogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0
aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uRGF0YS5oIgorI2luY2x1ZGUgIk5v
dGlmaWNhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAi
V2luZG93RXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9y
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC0xMDIsOSArMTA0LDE5
IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KGNsaWVudC0+Y2hlY2tQZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgIT0gUGVy
bWlzc2lvbjo6R3JhbnRlZCkgewotICAgICAgICBkaXNwYXRjaEVycm9yRXZlbnQoKTsKKyAgICAg
ICAgc3dpdGNoIChtX25vdGlmaWNhdGlvblNvdXJjZSkgeworICAgICAgICBjYXNlIE5vdGlmaWNh
dGlvblNvdXJjZTo6RG9jdW1lbnQ6CisgICAgICAgICAgICBkaXNwYXRjaEVycm9yRXZlbnQoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5vdGlmaWNhdGlvblNvdXJjZTo6U2Vy
dmljZVdvcmtlcjoKKyAgICAgICAgICAgIC8vIFdlIGRpZCBhIHBlcm1pc3Npb24gY2hlY2sgd2hl
biBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKCkgd2FzIGNhbGxl
ZC4KKyAgICAgICAgICAgIC8vIElmIHBlcm1pc3Npb24gaGFzIHNpbmNlIGJlZW4gcmV2b2tlZCwg
dGhlbiBzaWxlbnRseSBmYWlsaW5nIGhlcmUgaXMgZXhwZWN0ZWQgYmVoYXZpb3IuCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBp
ZiAoY2xpZW50LT5zaG93KCp0aGlzKSkKICAgICAgICAgbV9zdGF0ZSA9IFNob3dpbmc7CiB9CkBA
IC0xNTgsMjAgKzE3MCw1NCBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6ZmluYWxpemUoKQogCiB2b2lk
IE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hTaG93RXZlbnQoKQogeworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisKKyAgICBpZiAobV9ub3RpZmljYXRpb25Tb3VyY2UgIT0gTm90aWZpY2F0aW9u
U291cmNlOjpEb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgcXVldWVUYXNrVG9EaXNw
YXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpVc2VySW50ZXJhY3Rpb24sIEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLnNob3dFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaENsaWNr
RXZlbnQoKQogewotICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1Nv
dXJjZTo6VXNlckludGVyYWN0aW9uLCBbdGhpc10gewotICAgICAgICBXaW5kb3dGb2N1c0FsbG93
ZWRJbmRpY2F0b3Igd2luZG93Rm9jdXNBbGxvd2VkOwotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5v
LCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgIH0pOworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisKKyAgICBzd2l0Y2ggKG1fbm90aWZpY2F0aW9uU291cmNlKSB7CisgICAgY2Fz
ZSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3VtZW50OgorICAgICAgICBxdWV1ZVRhc2tLZWVwaW5n
T2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgW3RoaXNdIHsK
KyAgICAgICAgICAgIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvciB3aW5kb3dGb2N1c0FsbG93
ZWQ7CisgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpO
bykpOworICAgICAgICB9KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb3RpZmljYXRpb25T
b3VyY2U6OlNlcnZpY2VXb3JrZXI6CisgICAgICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CisgICAgICAgIGlmICghY29udGV4dCkKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvbnRleHQtPmlzU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlKCkpOworICAgICAgICBzdGF0aWNfY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUq
Pihjb250ZXh0KS0+cG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChOb3RpZmljYXRpb25F
dmVudFR5cGU6OkNsaWNrLCAqdGhpcywgeyB9KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogfQog
CiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KCkKIHsKLSAgICBxdWV1ZVRh
c2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KworICAgIHN3aXRjaCAobV9ub3RpZmljYXRpb25Tb3VyY2UpIHsKKyAgICBjYXNlIE5vdGlmaWNh
dGlvblNvdXJjZTo6RG9jdW1lbnQ6CisgICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgq
dGhpcywgVGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5jbG9zZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OlNl
cnZpY2VXb3JrZXI6CisgICAgICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CisgICAgICAgIGlmICghY29udGV4dCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGNvbnRleHQtPmlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCkp
OworICAgICAgICBzdGF0aWNfY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUqPihjb250ZXh0
KS0+cG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChOb3RpZmljYXRpb25FdmVudFR5cGU6
OkNsb3NlLCAqdGhpcywgeyB9KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZmluYWxp
emUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25FdmVudC5jcHAKaW5kZXggNTg3NGI3NjEwMmZmLi5lMWQyOTdi
OTZhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkV2ZW50LmNwcApAQCAtMzAsNiArMzAsMjcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTm90aWZpY2F0aW9u
RXZlbnQpOworCitSZWY8Tm90aWZpY2F0aW9uRXZlbnQ+IE5vdGlmaWNhdGlvbkV2ZW50OjpjcmVh
dGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSW5pdCYmIGluaXQsIElzVHJ1c3RlZCBpc1RydXN0
ZWQpCit7CisgICAgYXV0byogbm90aWZpY2F0aW9uID0gaW5pdC5ub3RpZmljYXRpb24uZ2V0KCk7
CisgICAgYXV0byBhY3Rpb24gPSBpbml0LmFjdGlvbjsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBOb3RpZmljYXRpb25FdmVudCh0eXBlLCBXVEZNb3ZlKGluaXQpLCBub3RpZmljYXRpb24sIGFj
dGlvbiwgaXNUcnVzdGVkKSk7Cit9CisKK1JlZjxOb3RpZmljYXRpb25FdmVudD4gTm90aWZpY2F0
aW9uRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbiwgY29uc3QgU3RyaW5nJiBhY3Rpb24sIElzVHJ1c3RlZCBpc1RydXN0ZWQpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTm90aWZpY2F0aW9uRXZlbnQodHlwZSwgeyB9LCBu
b3RpZmljYXRpb24sIGFjdGlvbiwgaXNUcnVzdGVkKSk7Cit9CisKK05vdGlmaWNhdGlvbkV2ZW50
OjpOb3RpZmljYXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBOb3RpZmljYXRpb25F
dmVudEluaXQmJiBldmVudEluaXQsIE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBjb25zdCBT
dHJpbmcmIGFjdGlvbiwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKKyAgICA6IEV4dGVuZGFibGVFdmVu
dCh0eXBlLCBXVEZNb3ZlKGV2ZW50SW5pdCksIGlzVHJ1c3RlZCkKKyAgICAsIG1fbm90aWZpY2F0
aW9uKG5vdGlmaWNhdGlvbikKKyAgICAsIG1fYWN0aW9uKGFjdGlvbikKK3sKK30KKwogTm90aWZp
Y2F0aW9uRXZlbnQ6On5Ob3RpZmljYXRpb25FdmVudCgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25FdmVudC5oCmlu
ZGV4IDkyN2ViNTAxYWQ5Yi4uYjIxYzJlZDg0YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaApAQCAtMzMs
MTQgKzMzLDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZW51bSBjbGFzcyBOb3RpZmlj
YXRpb25FdmVudFR5cGUgOiBib29sIHsKKyAgICBDbGljaywKKyAgICBDbG9zZSwKK307CisKK3N0
cnVjdCBOb3RpZmljYXRpb25FdmVudEluaXQgOiBFeHRlbmRhYmxlRXZlbnRJbml0IHsKKyAgICBS
ZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb247CisgICAgU3RyaW5nIGFjdGlvbjsKK307
CisKIGNsYXNzIE5vdGlmaWNhdGlvbkV2ZW50IGZpbmFsIDogcHVibGljIEV4dGVuZGFibGVFdmVu
dCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChOb3RpZmljYXRpb25FdmVudCk7CiBwdWJs
aWM6CiAgICAgfk5vdGlmaWNhdGlvbkV2ZW50KCk7CiAKLSAgICBzdHJ1Y3QgSW5pdCA6IEV4dGVu
ZGFibGVFdmVudEluaXQgewotICAgICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRp
b247Ci0gICAgICAgIFN0cmluZyBhY3Rpb247Ci0gICAgfTsKKyAgICB1c2luZyBJbml0ID0gTm90
aWZpY2F0aW9uRXZlbnRJbml0OworCisgICAgc3RhdGljIFJlZjxOb3RpZmljYXRpb25FdmVudD4g
Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmLCBJbml0JiYsIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6
Tm8pOworICAgIHN0YXRpYyBSZWY8Tm90aWZpY2F0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
U3RyaW5nJiwgTm90aWZpY2F0aW9uKiwgY29uc3QgU3RyaW5nJiBhY3Rpb24sIElzVHJ1c3RlZCA9
IElzVHJ1c3RlZDo6Tm8pOwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBOb3RpZmljYXRpb25FdmVudEludGVyZmFjZVR5cGU7IH0KIApA
QCAtNDgsNiArNTksOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBhY3Rpb24oKSB7IHJl
dHVybiBtX2FjdGlvbjsgfQogCiBwcml2YXRlOgorICAgIE5vdGlmaWNhdGlvbkV2ZW50KGNvbnN0
IEF0b21TdHJpbmcmLCBOb3RpZmljYXRpb25FdmVudEluaXQmJiwgTm90aWZpY2F0aW9uKiwgY29u
c3QgU3RyaW5nJiBhY3Rpb24sIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOworCiAgICAgUmVm
UHRyPE5vdGlmaWNhdGlvbj4gbV9ub3RpZmljYXRpb247CiAgICAgU3RyaW5nIG1fYWN0aW9uOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbXB0eVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbXB0eVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAppbmRleCAyMzFiM2JmMWNhOTguLjcxYzcyZWY5Yzk2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VtcHR5U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbXB0eVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtOTQsNiArOTQsMTAgQEAg
cHJpdmF0ZToKIAogICAgIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdzVmFsdWVzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXR0aW5nc1ZhbHVlczsgfQogCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCisgICAgTm90aWZpY2F0aW9uQ2xpZW50KiBub3RpZmljYXRpb25DbGllbnQo
KSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKKwogICAgIGNsYXNzIEVtcHR5RXZl
bnRMb29wIGZpbmFsIDogcHVibGljIEV2ZW50TG9vcCB7CiAgICAgcHVibGljOgogICAgICAgICBz
dGF0aWMgUmVmPEVtcHR5RXZlbnRMb29wPiBjcmVhdGUoSlNDOjpWTSYgdm0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBkMDAwZDU5ZDVhMDUuLjA3
MjdiMWYxNGEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCkBAIC04MCw2ICs4MCwxMCBAQCBlbnVtIGNsYXNzIExvYWRlZEZyb21PcGFxdWVTb3VyY2Ug
OiB1aW50OF90OwogZW51bSBjbGFzcyBSZWZlcnJlclBvbGljeSA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIFRhc2tTb3VyY2UgOiB1aW50OF90OwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitj
bGFzcyBOb3RpZmljYXRpb25DbGllbnQ7CisjZW5kaWYKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKIGNsYXNzIFNlcnZpY2VXb3JrZXI7CiBjbGFzcyBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCBj
YmYyNmNiMTViZDUuLjNmZTUxZmQxZTQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTQwMyw3ICs0MDMsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VWRU5UKQotICAgIGJvb2wgbV9ub3RpZmljYXRp
b25FdmVudEVuYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9ub3RpZmljYXRpb25FdmVudEVu
YWJsZWQgeyB0cnVlIH07CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5o
CmluZGV4IDFkOGUzYWQyYWNiOS4uYTBkMTZkNzQ3MDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC05NCw2ICs5NCwx
MCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9
CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIG5vdGlmaWNhdGlv
bkNsaWVudCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgorCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI+IG1fc2NyaXB0Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRNb2R1bGVMb2FkZXI+IG1fbW9kdWxlTG9hZGVyOwog
ICAgIFdvcmtlck9yV29ya2xldFRocmVhZCogbV90aHJlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuaAppbmRleCBiNGY3Njk0YzZiMWUuLmRjOTc3NGU5MmU3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiQ3Jvc3NP
cmlnaW5FbWJlZGRlclBvbGljeS5oIgogI2luY2x1ZGUgIkZldGNoUmVxdWVzdENyZWRlbnRpYWxz
LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbi5oIgogI2luY2x1ZGUgIldvcmtl
ck9yV29ya2xldFRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRl
ICJXb3JrZXJUeXBlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDkwNGQ0ZmM4OGNhYS4u
ZjMzYjljMDYzZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlv
bkV2ZW50LmgiCiAjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50LmgiCkBAIC02OSw3ICs3
MCwxMyBAQCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjbwogewogfQogCi1TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU6On5TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSA9IGRlZmF1bHQ7CitTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGU6On5TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKQoreworICAgIC8v
IE5vdGlmaWNhdGlvbkNsaWVudCBtaWdodCBoYXZlIHNvbWUgaW50ZXJhY3Rpb25zIHBlbmRpbmcg
d2l0aCB0aGUgbWFpbiB0aHJlYWQsCisgICAgLy8gc28gaXQgc2hvdWxkIGFsc28gYmUgZGVzdHJv
eWVkIHRoZXJlLgorICAgIGNhbGxPbk1haW5UaHJlYWQoW25vdGlmaWNhdGlvbkNsaWVudCA9IFdU
Rk1vdmUobV9ub3RpZmljYXRpb25DbGllbnQpXSB7CisgICAgfSk7Cit9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlOjpub3RpZnlTZXJ2aWNlV29ya2VyUGFnZU9mQ3JlYXRpb25JZk5l
Y2Vzc2FyeSgpCiB7CkBAIC0yMDgsNiArMjE1LDMwIEBAIHZvaWQgU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlOjpkaWRTYXZlU2NyaXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiBzY3JpcHQsIEhhc2hN
CiAgICAgfQogfQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTl9FVkVOVCkKK3ZvaWQgU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlOjpwb3N0VGFza1RvRmlyZU5vdGlmaWNhdGlvbkV2ZW50KE5vdGlm
aWNhdGlvbkV2ZW50VHlwZSBldmVudFR5cGUsIE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBj
b25zdCBTdHJpbmcmIGFjdGlvbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisg
ICAgdGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbZXZlbnRUeXBlLCBwcm90ZWN0
ZWROb3RpZmljYXRpb24gPSBSZWYgeyBub3RpZmljYXRpb24gfSwgYWN0aW9uID0gYWN0aW9uLmlz
b2xhdGVkQ29weSgpXShhdXRvJiBzY29wZSkgeworICAgICAgICBzY29wZS5ldmVudExvb3AoKS5x
dWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbJnNjb3BlLCBwcm90ZWN0ZWRT
Y29wZSA9IFJlZiB7IHNjb3BlIH0sIGV2ZW50VHlwZSwgcHJvdGVjdGVkTm90aWZpY2F0aW9uLCBh
Y3Rpb25dIHsKKyAgICAgICAgICAgIEF0b21TdHJpbmcgZXZlbnROYW1lOworICAgICAgICAgICAg
c3dpdGNoIChldmVudFR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRU
eXBlOjpDbGljazoKKyAgICAgICAgICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkubm90
aWZpY2F0aW9uY2xpY2tFdmVudDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbG9zZToKKyAgICAgICAgICAgICAgICBldmVu
dE5hbWUgPSBldmVudE5hbWVzKCkubm90aWZpY2F0aW9uY2xvc2VFdmVudDsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byBldmVudCA9IE5v
dGlmaWNhdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBwcm90ZWN0ZWROb3RpZmljYXRpb24u
cHRyKCksIGFjdGlvbiwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmPihzY29wZSkuZGlzcGF0
Y2hFdmVudChldmVudCk7CisgICAgICAgIH0pOworICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1
bHRNb2RlKCkpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCAwNzA3OWYx
OTUzNDMuLjUxMGMxYjA3MmI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMzksMTEgKzM5LDE0
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIEV4
dGVuZGFibGVFdmVudDsKIGNsYXNzIFBhZ2U7Ci1zdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERh
dGE7CiBjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50OwogY2xhc3MgU2VydmljZVdvcmtlckNsaWVu
dHM7CiBjbGFzcyBTZXJ2aWNlV29ya2VyVGhyZWFkOwogCitlbnVtIGNsYXNzIE5vdGlmaWNhdGlv
bkV2ZW50VHlwZSA6IGJvb2w7CisKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsKKwog
Y2xhc3MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGZpbmFsIDogcHVibGljIFdvcmtlckdsb2Jh
bFNjb3BlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSk7CiBwdWJsaWM6CkBAIC04MCw3ICs4MywxMSBAQCBwdWJsaWM6CiAgICAgRmV0Y2hPcHRp
b25zOjpEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEZldGNo
T3B0aW9uczo6RGVzdGluYXRpb246OlNlcnZpY2V3b3JrZXI7IH0KIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFBhZ2UqIHNlcnZpY2VXb3JrZXJQYWdlKCk7Ci0gICAgCisKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OX0VWRU5UKQorICAgIHZvaWQgcG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChO
b3RpZmljYXRpb25FdmVudFR5cGUsIE5vdGlmaWNhdGlvbiYsIGNvbnN0IFN0cmluZyYgYWN0aW9u
KTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmJiwgU2VydmljZVdvcmtlckRhdGEmJiwgY29uc3QgV29ya2Vy
UGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgU2VydmljZVdvcmtlclRocmVhZCYs
IFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlv
blByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xp
ZW50PiYmLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBub3RpZnlTZXJ2aWNlV29ya2VyUGFn
ZU9mQ3JlYXRpb25JZk5lY2Vzc2FyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDUw
MTc4MWY3MGQ1Zi4uMTVmMmI2YmNmNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0z
MCwxMCArMzAsMTMgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25QcmVsb2FkTWFuYWdlci5oIgor
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBl
cm1pc3Npb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgpAQCAt
MjY0LDIwICsyNjcsMzggQEAgTmF2aWdhdGlvblByZWxvYWRNYW5hZ2VyJiBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uOjpuYXZpZ2F0aW9uUHJlbG9hZCgpCiB9CiAKICNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OX0VWRU5UKQotdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZp
Y2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBOb3RpZmljYXRpb25PcHRpb25zJiBvcHRpb25zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
JiBwcm9taXNlKQordm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IE5vdGlmaWNhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByb21pc2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsKLSAgICBVTlVTRURf
UEFSQU0ob3B0aW9ucyk7CisgICAgaWYgKCFtX2FjdGl2ZVdvcmtlcikgeworICAgICAgICBwcm9t
aXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsICJSZWdpc3RyYXRpb24gZG9lcyBub3Qg
aGF2ZSBhbiBhY3RpdmUgd29ya2VyIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYXV0byogY2xpZW50ID0gY29udGV4dC5ub3RpZmljYXRpb25DbGllbnQoKTsKKyAgICBpZiAo
IWNsaWVudCkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3Is
ICJSZWdpc3RyYXRpb24gbm90IGFjdGl2ZSJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAotICAgIHByb21pc2UucmVqZWN0KCk7CisgICAgaWYgKGNsaWVudC0+Y2hlY2tQZXJtaXNzaW9u
KCZjb250ZXh0KSAhPSBOb3RpZmljYXRpb25QZXJtaXNzaW9uOjpHcmFudGVkKSB7CisgICAgICAg
IHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlJlZ2lzdHJhdGlvbiBkb2Vz
IG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gc2hvdyBub3RpZmljYXRpb25zIl9zIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gVGhlIE5vdGlmaWNhdGlvbiBpcyBrZXB0IGFsaXZl
IGJ5IHZpcnR1ZSBvZiBiZWluZyBzaG93KCknbiBzb29uLgorICAgIC8vIEZJWE1FOiBXaGVuIGlt
cGxlbWVudGluZyBnZXROb3RpZmljYXRpb25zKCksIHN0b3JlIHRoaXMgTm90aWZpY2F0aW9uIGlu
IHRoZSByZWdpc3RyYXRpb24ncyBub3RpZmljYXRpb24gbGlzdC4KKyAgICBhdXRvIG5vdGlmaWNh
dGlvbiA9IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnRleHQsIHRpdGxlLCBvcHRpb25zKTsKKwor
ICAgIGNvbnRleHQuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxh
dGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgpIG11dGFibGUgeworICAgICAgICBw
cm9taXNlLnJlc29sdmUoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uOjpnZXROb3RpZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBH
ZXROb3RpZmljYXRpb25PcHRpb25zJiBmaWx0ZXIsIERPTVByb21pc2VEZWZlcnJlZDxJRExTZXF1
ZW5jZTxJRExET01TdHJpbmc+PiBwcm9taXNlKQogewogICAgIFVOVVNFRF9QQVJBTShmaWx0ZXIp
OwogCi0gICAgcHJvbWlzZS5yZWplY3QoKTsKLQorICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlv
biB7IFR5cGVFcnJvciwgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uZ2V0Tm90aWZpY2F0aW9u
cyBub3QgeWV0IGltcGxlbWVudGVkIl9zIH0pOwogfQogI2VuZGlmIC8vIEVOQUJMRShOT1RJRklD
QVRJT05fRVZFTlQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBjMGUwMzYzNmIxODkuLmYzYmVh
NWYxOGYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAi
UGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckNsaWVudFF1ZXJ5T3B0aW9ucy5oIgpAQCAtNzAsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCA9
IDA7CisgICAgICAgIHZpcnR1YWwgUGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIoKSBjb25z
dCA9IDA7CiAKICAgICAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbG9z
ZWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCA4YzgxYzdiMTA3ZWMuLmUy
ZTQwOGIxMDkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTI3OSw2ICsyNzks
MTAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFydChGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYsIGJvb2wpPiYmIGNhbGxiYWNrKQogICAgIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsK
IAogICAgIFdvcmtlclRocmVhZDo6c3RhcnQoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dKGF1dG8mIGVycm9yTWVzc2FnZSkgbXV0YWJs
ZSB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBpZiAoIWVycm9yTWVzc2FnZS5pc0VtcHR5KCkp
CisgICAgICAgICAgICBMT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHRocmVhZCBm
YWlsZWQgdG8gc3RhcnQ6ICVzIiwgZXJyb3JNZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworI2VuZGlm
CiAgICAgICAgIGJvb2wgZG9lc0hhbmRsZUZldGNoID0gdHJ1ZTsKICAgICAgICAgaWYgKHdlYWtU
aGlzKSB7CiAgICAgICAgICAgICB3ZWFrVGhpcy0+ZmluaXNoZWRTdGFydGluZygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCAwYTRiYzdmZjQ5NDIuLmU1Y2I1YzFkZDE0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKQEAgLTQ4LDYgKzQ4LDcgQEAg
Y2xhc3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CiBjbGFzcyBGZXRjaExvYWRlcjsKIGNsYXNzIEZl
dGNoTG9hZGVyQ2xpZW50OwogY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CitjbGFzcyBOb3RpZmlj
YXRpb25DbGllbnQ7CiBjbGFzcyBTZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHk7CiBzdHJ1Y3Qg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOwogZW51bSBjbGFzcyBXb3JrZXJUaHJlYWRNb2RlIDog
Ym9vbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKaW5kZXggMzlmZTFiNzg3ZGE3Li5iYjE2ZWRiYmY3YjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xNjMs
NiArMTYzLDcgQEAgdm9pZCBTV1NlcnZlcjo6d2hlbkltcG9ydElzQ29tcGxldGVkSWZOZWVkZWQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWMKIAogdm9pZCBTV1NlcnZlcjo6cmVn
aXN0cmF0aW9uU3RvcmVEYXRhYmFzZUZhaWxlZFRvT3BlbigpCiB7CisgICAgTE9HKFNlcnZpY2VX
b3JrZXIsICJGYWlsZWQgdG8gb3BlbiBTVyByZWdpc3RyYXRpb24gZGF0YWJhc2UiKTsKICAgICBB
U1NFUlQoIW1faW1wb3J0Q29tcGxldGVkKTsKICAgICBpZiAoIW1faW1wb3J0Q29tcGxldGVkKQog
ICAgICAgICByZWdpc3RyYXRpb25TdG9yZUltcG9ydENvbXBsZXRlKCk7CkBAIC0xNzMsNiArMTc0
LDggQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAgICAgLy8gUGFnZXMgc2hvdWxkIG5vdCBoYXZlIGJlZW4g
YWJsZSB0byBtYWtlIGEgbmV3IHJlZ2lzdHJhdGlvbiB0byB0aGlzIGtleSB3aGlsZSB0aGUgaW1w
b3J0IHdhcyBzdGlsbCB0YWtpbmcgcGxhY2UuCiAgICAgQVNTRVJUKCFtX3Njb3BlVG9SZWdpc3Ry
YXRpb25NYXAuY29udGFpbnMoZGF0YS5yZWdpc3RyYXRpb24ua2V5KSk7CiAKKyAgICBMT0coU2Vy
dmljZVdvcmtlciwgIkFkZGluZyByZWdpc3RyYXRpb24gZnJvbSBzdG9yZSBmb3IgJXMiLCBkYXRh
LnJlZ2lzdHJhdGlvbi5rZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCiAgICAg
YXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKGRhdGEu
c2NyaXB0VVJMKTsKICAgICB2YWxpZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbihyZWdpc3RyYWJsZURv
bWFpbiwgU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIChib29sIGlzVmFsaWQpIG11
dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtMTk4LDYgKzIwMSw4IEBAIHZvaWQg
U1dTZXJ2ZXI6OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJCiAKIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbihzdGQ6
OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+JiYgcmVnaXN0cmF0aW9uKQogeworICAg
IExPRyhTZXJ2aWNlV29ya2VyLCAiQWRkaW5nIHJlZ2lzdHJhdGlvbiBsaXZlIGZvciAlcyIsIHJl
Z2lzdHJhdGlvbi0+a2V5KCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCiAgICAg
aWYgKCFtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAuY29udGFpbnMocmVnaXN0cmF0aW9uLT5rZXko
KSkgJiYgIVNlY3VyaXR5T3JpZ2luOjppc0xvY2FsSG9zdE9yTG9vcGJhY2tJUEFkZHJlc3MocmVn
aXN0cmF0aW9uLT5rZXkoKS50b3BPcmlnaW4oKS5ob3N0KSkKICAgICAgICAgbV91bmlxdWVSZWdp
c3RyYXRpb25Db3VudCsrOwogCkBAIC0xMjI0LDIwICsxMjI5LDI0IEBAIHZvaWQgU1dTZXJ2ZXI6
OnNvZnRVcGRhdGUoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKIHZvaWQgU1dT
ZXJ2ZXI6OnByb2Nlc3NQdXNoTWVzc2FnZShzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4m
JiBkYXRhLCBVUkwmJiByZWdpc3RyYXRpb25VUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY2FsbGJhY2spCiB7CiAgICAgd2hlbkltcG9ydElzQ29tcGxldGVkSWZOZWVkZWQoW3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBy
ZWdpc3RyYXRpb25VUkwgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlvblVSTCksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIExPRyhQdXNoLCAiU2VydmljZVdv
cmtlciBpbXBvcnQgaXMgY29tcGxldGUsIGNhbiBoYW5kbGUgcHVzaCBtZXNzYXNnZSBub3ciKTsK
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewogICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKICAgICAgICAgYXV0byBvcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwocmVnaXN0cmF0aW9uVVJMKTsKICAgICAgICAgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXkgeyBXVEZNb3ZlKG9yaWdp
biksIFdURk1vdmUocmVnaXN0cmF0aW9uVVJMKSB9OwogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlv
biA9IG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5nZXQocmVnaXN0cmF0aW9uS2V5KTsKICAgICAg
ICAgaWYgKCFyZWdpc3RyYXRpb24pIHsKKyAgICAgICAgICAgIExPRyhQdXNoLCAiQ2Fubm90IHBy
b2Nlc3MgcHVzaCBtZXNzYXNnZTogRmFpbGVkIHRvIGZpbmQgU1cgcmVnaXN0cmF0aW9uIGZvciBy
ZWdpc3RyYXRpb24ga2V5ICVzIiwgcmVnaXN0cmF0aW9uS2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGNhbGxiYWNrKHRydWUpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byogd29ya2VyID0gcmVnaXN0cmF0aW9uLT5h
Y3RpdmVXb3JrZXIoKTsKICAgICAgICAgaWYgKCF3b3JrZXIpIHsKKyAgICAgICAgICAgIExPRyhQ
dXNoLCAiQ2Fubm90IHByb2Nlc3MgcHVzaCBtZXNzYXNnZTogTm8gYWN0aXZlIHdvcmtlciBmb3Ig
cmVnaXN0cmF0aW9uIGtleSAlcyIsIHJlZ2lzdHJhdGlvbktleS5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAppbmRleCAxNzViZDM4MTY0NzQuLmVjNzM1MmQ4MTIwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIyNTQs
MTcgKzIyNTQsMjIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UGVuZGluZ1B1c2hNZXNzYWdl
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb24KIHsKICNpZiBFTkFCTEUoQlVJ
TFRfSU5fTk9USUZJQ0FUSU9OUykKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJOZXR3b3JrUHJv
Y2VzcyBnZXR0aW5nIHBlbmRpbmcgcHVzaCBtZXNzYWdlcyBmb3Igc2Vzc2lvbiBJRCAlbGx1Iiwg
c2Vzc2lvbklELnRvVUludDY0KCkpOwogICAgICAgICBzZXNzaW9uLT5ub3RpZmljYXRpb25NYW5h
Z2VyKCkuZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIExPRyhOb3RpZmljYXRpb25zLCAi
TmV0d29ya1Byb2Nlc3MgY291bGQgbm90IGZpbmQgc2Vzc2lvbiBmb3IgSUQgJWxsdSB0byBnZXQg
cGVuZGluZyBwdXNoIG1lc3NhZ2VzIiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwogI2VuZGlmCiAg
ICAgY2FsbGJhY2soeyB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hN
ZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiBwdXNoTWVz
c2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKLSAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIExPRyhQ
dXNoLCAiTmV0d29ya2luZyBwcm9jZXNzIGhhbmRsaW5nIGEgcHVzaCBtZXNzYWdlIGZyb20gVUkg
cHJvY2VzcyBpbiBzZXNzaW9uICVsbHUiLCBzZXNzaW9uSUQudG9VSW50NjQoKSk7CiAgICAgICAg
IHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkucHJvY2Vzc1B1c2hNZXNzYWdlKFdURk1vdmUocHVz
aE1lc3NhZ2UucHVzaERhdGEpLCBXVEZNb3ZlKHB1c2hNZXNzYWdlLnJlZ2lzdHJhdGlvblVSTCks
IFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICB9IGVsc2UKKyAgICAgICAgTE9HKFB1c2gsICJOZXR3
b3JraW5nIHByb2Nlc3MgYXNrZWQgdG8gaGFuZGxlIGEgcHVzaCBtZXNzYWdlIGZyb20gVUkgcHJv
Y2VzcyBpbiBzZXNzaW9uICVsbHUsIGJ1dCB0aGF0IHNlc3Npb24gZG9lc24ndCBleGlzdCIsIHNl
c3Npb25JRC50b1VJbnQ2NCgpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9u
cy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4
IDE3Y2VmOTE0YWI4Ni4uNDg2Y2I1YjNkZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTkzLDEzICs5MywxNCBAQCB2b2lkIE5ldHdvcmtO
b3RpZmljYXRpb25NYW5hZ2VyOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJt
aXNzaW9ucyhDbwogdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Z2V0UGVuZGluZ1B1
c2hNZXNzYWdlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNoTWVz
c2FnZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4mJik+IHJlcGx5SGFuZGxlciA9IFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVjdG9yPFdlYlB1c2hNZXNz
YWdlPiYmIG1lc3NhZ2VzKSBtdXRhYmxlIHsKKyAgICAgICAgTE9HKFB1c2gsICJEb25lIGdldHRp
bmcgcHVzaCBtZXNzYWdlcyIpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG1l
c3NhZ2VzKSk7CiAgICAgfTsKIAogICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PFdlYlB1c2hEOjpN
ZXNzYWdlVHlwZTo6R2V0UGVuZGluZ1B1c2hNZXNzYWdlcz4oV1RGTW92ZShyZXBseUhhbmRsZXIp
KTsKIH0KIAotdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvd05vdGlmaWNhdGlv
bihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikKK3ZvaWQgTmV0d29ya05vdGlmaWNh
dGlvbk1hbmFnZXI6OnNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90
aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgK
aW5kZXggYTkyYmQyZjViZDE3Li41MmE2Mzg0YmFiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAg
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcm
IHdlYlB1c2hNYWNoU2VydmljZU5hbWUpOwogCiAgICAgdm9pZCByZXF1ZXN0U3lzdGVtTm90aWZp
Y2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7Ci0gICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNv
bnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHNob3dOb3Rp
ZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0
YSYpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlm
aWNhdGlvbklEKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0
b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7CiAgICAgdm9pZCBkaWREZXN0cm95Tm90
aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9Mb2dnaW5nLmgKaW5kZXggZGUzMmY4MTcxNzE1Li43MzZjZjZjZWZhN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vTG9nZ2luZy5oCkBAIC04MCw2ICs4MCw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oTmV0
d29ya0NhY2hlU3RvcmFnZSkgXAogICAgIE0oTmV0d29ya1NjaGVkdWxpbmcpIFwKICAgICBNKE5l
dHdvcmtTZXNzaW9uKSBcCisgICAgTShOb3RpZmljYXRpb25zKSBcCiAgICAgTShQZXJmb3JtYW5j
ZUxvZ2dpbmcpIFwKICAgICBNKFBsdWdpbnMpIFwKICAgICBNKFByaW50aW5nKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAppbmRleCBhN2UzNmNkY2ExODEuLjlm
OTk2YWExMzZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5o
CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNh
dGlvbklEcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNv
bnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluCmluZGV4IDQ4OWIwYjZhZDBmNy4u
MzdjY2RkZjFmYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlci5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBAQAogCiBtZXNzYWdlcyAtPiBO
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIgTm90UmVmQ291bnRlZCB7CiAgICAgUmVx
dWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oU3RyaW5nIG9yaWdpbklkZW50aWZpZXIp
IC0+IChib29sIGFsbG93ZWQpIEFzeW5jCi0gICAgU2hvd05vdGlmaWNhdGlvbihzdHJ1Y3QgV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uRGF0YSBub3RpZmljYXRpb25EYXRhKQorICAgIFNob3dOb3RpZmlj
YXRpb24oc3RydWN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEgbm90aWZpY2F0aW9uRGF0YSkg
V2FudHNDb25uZWN0aW9uCiAgICAgQ2FuY2VsTm90aWZpY2F0aW9uKFVVSUQgbm90aWZpY2F0aW9u
SUQpCiAgICAgQ2xlYXJOb3RpZmljYXRpb25zKFZlY3RvcjxVVUlEPiBub3RpZmljYXRpb25JRHMp
CiAgICAgRGlkRGVzdHJveU5vdGlmaWNhdGlvbihVVUlEIG5vdGlmaWNhdGlvbklEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKaW5kZXggMDY3NzBkMGRmYzdkLi5mMzhiM2VkNzAxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNTg1
LDYgKzU4NSw3IEBAIFVJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRv
clByb3h5LmNwcAogVUlQcm9jZXNzL01lZGlhL01lZGlhVXNhZ2VNYW5hZ2VyLmNwcAogVUlQcm9j
ZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwCiAKK1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmNwcAog
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcAogVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAogVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5vdGlmaWNhdGlvblByb3Zp
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTm90aWZpY2F0aW9uUHJvdmlk
ZXIuaAppbmRleCBjNDgxM2FhNTE2NTAuLmY3M2M1ODhmNjU0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAgLTQy
LDcgKzQyLDcgQEAgY2xhc3MgTm90aWZpY2F0aW9uUHJvdmlkZXIgewogcHVibGljOgogICAgIHZp
cnR1YWwgfk5vdGlmaWNhdGlvblByb3ZpZGVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2
b2lkIHNob3coV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbiYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBzaG93KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0
OjpXZWJOb3RpZmljYXRpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKFdlYktpdDo6
V2ViTm90aWZpY2F0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lOb3RpZmlj
YXRpb24oV2ViS2l0OjpXZWJOb3RpZmljYXRpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIC8qbm90aWZpY2F0aW9uSURz
Ki8pIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90
aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggODJiYjk1MWU1YzFlLi5kNTM4ZGI1NDA3NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRp
b25NYW5hZ2VyLmNwcApAQCAtNzgsMyArNzgsOCBAQCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdl
clByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoV0tOb3RpZmljYXRpb25NYQog
ewogICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Q
b2xpY2llcyh0b0ltcGwob3JpZ2lucykpOwogfQorCitXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYg
V0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbk1h
bmFnZXIoKQoreworICAgIHJldHVybiB0b0FQSSgmV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKaW5kZXggNzllZGJm
NThjZTQzLi4zNGJiNWVjMGIxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC00Myw2ICs0Myw4IEBAIFdLX0VY
UE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRp
b25zKFdLTm90aWZpY2F0aW9uCiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQ
cm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYgbWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGJvb2wgYWxsb3dlZCk7
CiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFJlbW92ZU5v
dGlmaWNhdGlvblBvbGljaWVzKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBX
S0FycmF5UmVmIG9yaWdpbnMpOwogCitXS19FWFBPUlQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVm
IFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25N
YW5hZ2VyKCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpp
bmRleCBmOTEzNDgzZGVkYTAuLmVhYTJhZDYyMTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0zOCw2
ICszOCw3IEBACiAjaW1wb3J0ICJXS1NlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJu
YWwuaCIKKyNpbXBvcnQgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2ltcG9ydCAi
V2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQdXNoTWVzc2FnZS5oIgogI2ltcG9ydCAiV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCkBAIC02NTksNiArNjYwLDEyIEBAIHN0YXRp
YyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9XZWJzaXRlRGF0YVJlY29yZHMo
TlNBcnJheSAqZGF0YVJlY29yCiAgICAgcmV0dXJuIHdyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUt
PmNvbmZpZ3VyYXRpb24oKS5jb3B5KCkpOwogfQogCisrIChXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYpX3NoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyCit7CisgICAgTE9HKFB1
c2gsICJBY2Nlc3NpbmcgX3NoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyIik7
CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpKTsKK30KKwogLSAodm9pZClfYWxs
b3dUTFNDZXJ0aWZpY2F0ZUNoYWluOihOU0FycmF5ICopY2VydGlmaWNhdGVDaGFpbiBmb3JIb3N0
OihOU1N0cmluZyAqKWhvc3QKIHsKICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+YWxsb3dTcGVjaWZp
Y0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbygoX19icmlk
Z2UgQ0ZBcnJheVJlZiljZXJ0aWZpY2F0ZUNoYWluKSwgaG9zdCk7CkBAIC03NzEsMTIgKzc3OCwx
NSBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0ZURh
dGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogCiAtKHZvaWQpX2dldFBlbmRpbmdQdXNoTWVz
c2FnZXM6KHZvaWQoXikoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKikpY29tcGxldGlvbkhhbmRs
ZXIKIHsKKyAgICBMT0coUHVzaCwgIkdldHRpbmcgcGVuZGluZyBwdXNoIG1lc3NhZ2VzIik7CisK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5ldHdv
cmtQcm9jZXNzKCkuZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhfd2Vic2l0ZURhdGFTdG9yZS0+c2Vz
c2lvbklEKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildIChjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQdXNoTWVzc2FnZT4mIG1lc3NhZ2VzKSB7
CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aENhcGFjaXR5Om1lc3NhZ2VzLnNpemUoKV0pOwogICAgICAgICBmb3IgKGF1dG8mIG1l
c3NhZ2UgOiBtZXNzYWdlcykKICAgICAgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0Om1lc3NhZ2Uu
dG9EaWN0aW9uYXJ5KCldOwogCisgICAgICAgIExPRyhQdXNoLCAiR2l2aW5nIGFwcGxpY2F0aW9u
ICV1IHBlbmRpbmcgcHVzaCBtZXNzYWdlcyIsIG1lc3NhZ2VzLnNpemUoKSk7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJlc3VsdC5nZXQoKSk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTc4Nywx
MSArNzk3LDE0IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9X
ZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIGF1dG8gcHVzaE1lc3NhZ2UgPSBXZWJLaXQ6OldlYlB1c2hNZXNzYWdlOjpm
cm9tRGljdGlvbmFyeShwdXNoTWVzc2FnZURpY3Rpb25hcnkpOwogICAgIGlmICghcHVzaE1lc3Nh
Z2UpIHsKKyAgICAgICAgTE9HKFB1c2gsICJBc2tlZCB0byBoYW5kbGUgYW4gaW52YWxpZCBwdXNo
IG1lc3NhZ2UiKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCisgICAgTE9HKFB1c2gsICJTZW5kaW5nIHB1c2ggbWVzc2FnZSB0byBu
ZXR3b3JrIHByb2Nlc3MgdG8gaGFuZGxlIik7CiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5ldHdv
cmtQcm9jZXNzKCkucHJvY2Vzc1B1c2hNZXNzYWdlKF93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9u
SUQoKSwgKnB1c2hNZXNzYWdlLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpXSAoYm9vbCB3YXNQcm9jZXNzZWQpIHsKKyAgICAgICAgTE9HKFB1c2gs
ICJQdXNoIG1lc3NhZ2UgcHJvY2Vzc2luZyBjb21wbGV0ZS4gQ2FsbGJhY2sgcmVzdWx0OiAlaSIs
IHdhc1Byb2Nlc3NlZCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdhc1Byb2Nlc3NlZCk7
CiAgICAgfSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDMxYTg1NDA3
NDE0ZC4uYzM2ZTExMzFmMDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTk2LDYg
Kzk2LDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3Rv
cmVGZXRjaE9wdGlvbnMpIHsKIEBwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21pYywgd2Vhaykg
aWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4gX2RlbGVnYXRlIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBjb3B5KSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqX2NvbmZpZ3VyYXRp
b247CiAKKysgKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZilfc2hhcmVkU2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbk1hbmFnZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfdGVybWluYXRlTmV0d29ya1Byb2Nlc3MgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3NlbmROZXR3b3Jr
UHJvY2Vzc1ByZXBhcmVUb1N1c3BlbmQ6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3NlbmRO
ZXR3b3JrUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEyLjApLCBpb3MoMTUuMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4IDU1
MTYzNjQ0Nzc1NS4uODRjNmFiODU2OTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3Bw
CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBz
aG93KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pIG92
ZXJyaWRlCisgICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViTm90aWZpY2F0aW9u
JiBub3RpZmljYXRpb24pIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX3Byb3ZpZGVyLnNob3co
cGFnZSwgbm90aWZpY2F0aW9uKTsKICAgICB9CkBAIC0xMTUsMTAgKzExNSwxNiBAQCB2b2lkIFdl
YktpdE5vdGlmaWNhdGlvblByb3ZpZGVyOjp3aXRoZHJhd0FueVByZXZpb3VzTm90aWZpY2F0aW9u
TWF0Y2hpbmdUYWcoY29ucwogI2VuZGlmCiB9CiAKLXZvaWQgV2ViS2l0Tm90aWZpY2F0aW9uUHJv
dmlkZXI6OnNob3coV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXZWJOb3RpZmljYXRpb24mIHdl
Yk5vdGlmaWNhdGlvbikKK3ZvaWQgV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OnNob3coV2Vi
UGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJOb3RpZmljYXRpb24mIHdlYk5vdGlmaWNhdGlvbikK
IHsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAgICAgLy8gRklYTUU6IGdsaWIgbmVlZHMgdG8gZmlu
ZCB0aGVpciBvd24gc29sdXRpb24gdG8gaGFuZGxpbmcgcGFnZWxlc3Mgbm90aWZpY2F0aW9ucy4K
KyAgICAgICAgLy8gSSB3b24ndCBtYWtlIHNvbWV0aGluZyB1cCBmb3IgdGhlbS4KKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKICAgICBHUmVmUHRyPFdlYktpdE5vdGlmaWNhdGlvbj4gbm90
aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldCh3ZWJOb3RpZmljYXRpb24ubm90aWZpY2F0
aW9uSUQoKSk7Ci0gICAgYXV0byogd2ViVmlldyA9IHdlYmtpdFdlYkNvbnRleHRHZXRXZWJWaWV3
Rm9yUGFnZShtX3dlYkNvbnRleHQsICZwYWdlKTsKKyAgICBhdXRvKiB3ZWJWaWV3ID0gd2Via2l0
V2ViQ29udGV4dEdldFdlYlZpZXdGb3JQYWdlKG1fd2ViQ29udGV4dCwgcGFnZSk7CiAgICAgQVNT
RVJUKHdlYlZpZXcpOwogCiAgICAgaWYgKCFub3RpZmljYXRpb24pIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Q
cm92aWRlci5oCmluZGV4IDM2Yjc4MzQzODgwZC4uYmU1MjIwZDUwZWE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNh
dGlvblByb3ZpZGVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIFdlYktpdE5vdGlm
aWNhdGlvblByb3ZpZGVyKFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSosIFdlYktpdFdlYkNv
bnRleHQqKTsKICAgICB+V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKTsKIAotICAgIHZvaWQg
c2hvdyhXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJOb3RpZmljYXRpb24mKTsKKyAgICB2b2lkIHNo
b3coV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViTm90aWZpY2F0aW9uJik7CiAgICAgdm9pZCBjYW5j
ZWwoY29uc3QgV2ViTm90aWZpY2F0aW9uJik7CiAgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMo
Y29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvU2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbkhhbmRsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uMzYzZDhjMTI0Mjc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5jcHAK
QEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIgorCisjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGF0YS5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIm
IFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOjpzaW5nbGV0b24oKQoreworICAgIHN0
YXRpYyBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlciYgaGFuZGxlciA9ICpuZXcgU2Vy
dmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI7CisgICAgcmV0dXJuIGhhbmRsZXI7Cit9CisK
K1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOjpTZXJ2aWNlV29ya2VyTm90aWZpY2F0
aW9uSGFuZGxlcigpCit7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRs
ZXI6OnJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworV2Vic2l0ZURhdGFTdG9yZSogU2VydmljZVdvcmtlck5vdGlmaWNh
dGlvbkhhbmRsZXI6OmRhdGFTdG9yZUZvck5vdGlmaWNhdGlvbklEKGNvbnN0IFVVSUQmIG5vdGlm
aWNhdGlvbklEKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX25vdGlmaWNhdGlvblRvU2Vzc2lv
bk1hcC5maW5kKG5vdGlmaWNhdGlvbklEKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9ub3RpZmlj
YXRpb25Ub1Nlc3Npb25NYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKGl0
ZXJhdG9yLT52YWx1ZSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRs
ZXI6OnNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhKQoreworICAgIGF1dG8qIGRhdGFTdG9yZSA9
IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKGRhdGEuc291
cmNlU2Vzc2lvbik7CisgICAgaWYgKCFkYXRhU3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fbm90aWZpY2F0aW9uVG9TZXNzaW9uTWFwLnNldChkYXRhLm5vdGlmaWNhdGlvbklELCBkYXRh
LnNvdXJjZVNlc3Npb24pOworICAgIGRhdGFTdG9yZS0+c2hvd1NlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb24oY29ubmVjdGlvbiwgZGF0YSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNh
dGlvbkhhbmRsZXI6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25J
RCkKK3sKKyAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gZGF0YVN0b3JlRm9yTm90aWZpY2F0aW9u
SUQobm90aWZpY2F0aW9uSUQpKQorICAgICAgICBkYXRhU3RvcmUtPmNhbmNlbFNlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJO
b3RpZmljYXRpb25IYW5kbGVyOjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+
JiBub3RpZmljYXRpb25JRHMpCit7CisgICAgZm9yIChhdXRvJiBub3RpZmljYXRpb25JRCA6IG5v
dGlmaWNhdGlvbklEcykgeworICAgICAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gZGF0YVN0b3Jl
Rm9yTm90aWZpY2F0aW9uSUQobm90aWZpY2F0aW9uSUQpKQorICAgICAgICAgICAgZGF0YVN0b3Jl
LT5jbGVhclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOworICAgIH0K
K30KKwordm9pZCBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6ZGlkRGVzdHJveU5v
dGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKK3sKKyAgICBpZiAoYXV0byog
ZGF0YVN0b3JlID0gZGF0YVN0b3JlRm9yTm90aWZpY2F0aW9uSUQobm90aWZpY2F0aW9uSUQpKQor
ICAgICAgICBkYXRhU3RvcmUtPmRpZERlc3Ryb3lTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKG5v
dGlmaWNhdGlvbklEKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb25IYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1Nl
cnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5lZDUxMjBjOTY1NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25I
YW5kbGVyLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2Vy
dmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIgOiBwdWJsaWMgTm90aWZpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU2VydmljZVdvcmtlck5vdGlm
aWNhdGlvbkhhbmRsZXImIHNpbmdsZXRvbigpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFNl
cnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyKCk7CisKKyAgICB2b2lkIHJlcXVlc3RTeXN0
ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikgZmluYWw7CisgICAg
dm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpIGZpbmFs
OworICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZp
Y2F0aW9uSURzKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3Qg
VVVJRCYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOworCisgICAgV2Vic2l0ZURhdGFTdG9yZSogZGF0
YVN0b3JlRm9yTm90aWZpY2F0aW9uSUQoY29uc3QgVVVJRCYpOworCisgICAgSGFzaE1hcDxVVUlE
LCBQQUw6OlNlc3Npb25JRD4gbV9ub3RpZmljYXRpb25Ub1Nlc3Npb25NYXA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcAppbmRleCBiOGRhNzFiYjBmZDYuLmI5
MDE4NDIxMTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotV2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oY29uc3Qg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlSWRlbnRpZmllcikKK1dlYk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKGNvbnN0IFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgc291cmNlQ29ubmVjdGlvbikKICAgICA6IG1f
dGl0bGUoZGF0YS50aXRsZSkKICAgICAsIG1fYm9keShkYXRhLmJvZHkpCiAgICAgLCBtX2ljb25V
UkwoZGF0YS5pY29uVVJMKQpAQCAtNDAsNiArNDAsNyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5v
dGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdl
UAogICAgICwgbV9vcmlnaW4oQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhk
YXRhLm9yaWdpblN0cmluZykpCiAgICAgLCBtX2NvcmVOb3RpZmljYXRpb25JRChkYXRhLm5vdGlm
aWNhdGlvbklEKQogICAgICwgbV9wYWdlSWRlbnRpZmllcihwYWdlSWRlbnRpZmllcikKKyAgICAs
IG1fc291cmNlQ29ubmVjdGlvbihzb3VyY2VDb25uZWN0aW9uKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24u
aAppbmRleCBiYzc4MmZiZWZmZjMuLmU4OTQyNjMzZDQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElTZWN1
cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CkBAIC00MSw5ICs0Miw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBXZWJOb3RpZmljYXRpb24gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpOb3RpZmljYXRpb24+LCBwdWJsaWMgSWRlbnRpZmllZDxXZWJOb3RpZmljYXRpb24+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYk5vdGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0
IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxXZWJOb3RpZmljYXRpb24+IGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIHNvdXJjZUNvbm5lY3Rpb24pCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJOb3RpZmljYXRpb24oZGF0YSwg
cGFnZUlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTm90aWZp
Y2F0aW9uKGRhdGEsIHBhZ2VJZGVudGlmaWVyLCBzb3VyY2VDb25uZWN0aW9uKSk7CiAgICAgfQog
CiAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KQEAg
LTU4LDkgKzU5LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBVVUlEJiBjb3JlTm90aWZpY2F0aW9u
SUQoKSBjb25zdCB7IHJldHVybiBtX2NvcmVOb3RpZmljYXRpb25JRDsgfQogCiAgICAgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlk
ZW50aWZpZXI7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24qIHNvdXJjZUNvbm5lY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZUNvbm5lY3Rpb24uZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBX
ZWJOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIpOworICAgIFdlYk5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3Rp
ZmljYXRpb25EYXRhJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJik7
CiAKICAgICBTdHJpbmcgbV90aXRsZTsKICAgICBTdHJpbmcgbV9ib2R5OwpAQCAtNzIsNiArNzQs
NyBAQCBwcml2YXRlOgogICAgIFVVSUQgbV9jb3JlTm90aWZpY2F0aW9uSUQ7CiAKICAgICBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CisgICAgV2Vha1B0cjxJUEM6OkNv
bm5lY3Rpb24+IG1fc291cmNlQ29ubmVjdGlvbjsKIH07CiAKIGlubGluZSBib29sIGlzTm90aWZp
Y2F0aW9uSURWYWxpZCh1aW50NjRfdCBpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAppbmRleCBkMDY3Y2VmMDk2NGEuLjRjNjg0ZDlj
OWQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VI
YW5kbGVyLmNwcApAQCAtNDAsOSArNDAsOSBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlcjo6cmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oYwogICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkRhdGEmIGRhdGEpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlcjo6c2hvd05vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEpCiB7Ci0gICAgbV93ZWJQYWdlUHJv
eHkuc2hvd05vdGlmaWNhdGlvbihkYXRhKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5zaG93Tm90aWZp
Y2F0aW9uKGNvbm5lY3Rpb24sIGRhdGEpOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlcjo6Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNh
dGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5k
bGVyLmgKaW5kZXggYTZkYjAzMzdiN2U1Li41MjUwNWU5ZDI1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzcsNyArMzcsNyBA
QCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlcihXZWJQYWdlUHJveHkmKTsKIAogICAgIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlv
blBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JikgZmluYWw7Ci0gICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbkRhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpIGZpbmFsOwogICAgIHZv
aWQgY2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsK
ICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNh
dGlvbklEcykgZmluYWw7CiAgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFVV
SUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmNwcAppbmRleCBkMTNhNTg4MzhlYzYuLjliOGNjMTI5ZjM1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtNDksNiArNDksMTIgQEAgUmVmPFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpj
cmVhdGUoV2ViUHJvY2Vzc1AKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkocHJvY2Vzc1Bvb2wpKTsKIH0KIAorV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5JiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJN
YW5hZ2VyKCkKK3sKKyAgICBzdGF0aWMgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KiBzaGFy
ZWRNYW5hZ2VyID0gbmV3IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShudWxscHRyKTsKKyAg
ICByZXR1cm4gKnNoYXJlZE1hbmFnZXI7Cit9CisKIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9v
bCkKICAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQogICAgICwgbV9wcm92
aWRlcihtYWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCkpCkBAIC04OCwyMSAr
OTQsMjggQEAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogICAgIHJldHVybiBtX3Byb3ZpZGVyLT5ub3Rp
ZmljYXRpb25QZXJtaXNzaW9ucygpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6c2hvdyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkRhdGEmIG5vdGlmaWNhdGlvbkRhdGEpCitzdGF0aWMgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciBpZGVudGlmaWVyRm9yUGFnZVBvaW50ZXIoV2ViUGFnZVByb3h5KiB3ZWJQYWdlKQogewotICAg
IGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUobm90aWZpY2F0aW9u
RGF0YSwgd2ViUGFnZS0+aWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gd2ViUGFnZSA/IHdlYlBh
Z2UtPmlkZW50aWZpZXIoKSA6IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIoKTsKK30KKwordm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRh
dGEmIG5vdGlmaWNhdGlvbkRhdGEpCit7CisgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJXZWJQYWdl
UHJveHkgKCVwKSBhc2tpbmcgdG8gc2hvdyBub3RpZmljYXRpb24gKCVzKSIsIHdlYlBhZ2UsIG5v
dGlmaWNhdGlvbkRhdGEubm90aWZpY2F0aW9uSUQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KworICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUobm90aWZp
Y2F0aW9uRGF0YSwgaWRlbnRpZmllckZvclBhZ2VQb2ludGVyKHdlYlBhZ2UpLCBjb25uZWN0aW9u
KTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQobm90aWZpY2F0aW9uLT5ub3RpZmlj
YXRpb25JRCgpLCBub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpKTsKICAgICBtX25v
dGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCksIG5vdGlm
aWNhdGlvbik7Ci0gICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0aW9uLmdl
dCgpKTsKKyAgICBtX3Byb3ZpZGVyLT5zaG93KHdlYlBhZ2UsIG5vdGlmaWNhdGlvbi5nZXQoKSk7
CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjYW5jZWwoV2ViUGFnZVBy
b3h5KiB3ZWJQYWdlLCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKFdlYlBhZ2VQcm94eSosIGNvbnN0IFVVSUQm
IHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKICAgICBpZiAoYXV0byB3ZWJOb3RpZmljYXRpb24gPSBt
X25vdGlmaWNhdGlvbnMuZ2V0KHBhZ2VOb3RpZmljYXRpb25JRCkpCiAgICAgICAgIG1fcHJvdmlk
ZXItPmNhbmNlbCgqd2ViTm90aWZpY2F0aW9uKTsKIH0KICAgICAKLXZvaWQgV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2Vi
UGFnZSwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiwgY29u
c3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklEKQogewogICAgIGlmIChhdXRvIHdlYk5vdGlmaWNh
dGlvbiA9IG1fbm90aWZpY2F0aW9ucy50YWtlKHBhZ2VOb3RpZmljYXRpb25JRCkpIHsKICAgICAg
ICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAucmVtb3ZlKHdlYk5vdGlmaWNhdGlvbi0+bm90aWZp
Y2F0aW9uSUQoKSk7CkBAIC0xMTAsMzcgKzEyMywyNiBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBhZ2Us
CiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwYWdlSURzTWF0Y2goV2ViUGFnZVByb3h5SWRlbnRp
ZmllciBwYWdlSUQsIGNvbnN0IFVVSUQmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQ
YWdlSUQsIGNvbnN0IFZlY3RvcjxVVUlEPiYpCi17Ci0gICAgcmV0dXJuIHBhZ2VJRCA9PSBkZXNp
cmVkUGFnZUlEOwotfQotCi1zdGF0aWMgYm9vbCBwYWdlQW5kTm90aWZpY2F0aW9uSURzTWF0Y2go
V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRp
b25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8
VVVJRD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQotewotICAgIHJldHVybiBwYWdlSUQg
PT0gZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250YWlucyhw
YWdlTm90aWZpY2F0aW9uSUQpOwotfQotCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSkKIHsKLSAgICBjbGVh
ck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgVmVjdG9yPFVVSUQ+KCksIHBhZ2VJRHNNYXRjaCk7Cisg
ICAgQVNTRVJUKHdlYlBhZ2UpOworICAgIGNsZWFyTm90aWZpY2F0aW9ucyh3ZWJQYWdlLCB7IH0p
OwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRp
b25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZp
Y2F0aW9uSURzKQogewotICAgIGNsZWFyTm90aWZpY2F0aW9ucyh3ZWJQYWdlLCBwYWdlTm90aWZp
Y2F0aW9uSURzLCBwYWdlQW5kTm90aWZpY2F0aW9uSURzTWF0Y2gpOwotfQotCi12b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSog
d2ViUGFnZSwgY29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZpY2F0aW9uSURzLCBOb3RpZmlj
YXRpb25GaWx0ZXJGdW5jdGlvbiBmaWx0ZXJGdW5jdGlvbikKLXsKLSAgICBhdXRvIHRhcmdldFBh
Z2VQcm94eUlEID0gd2ViUGFnZS0+aWRlbnRpZmllcigpOwotCiAgICAgVmVjdG9yPHVpbnQ2NF90
PiBnbG9iYWxOb3RpZmljYXRpb25JRHM7CiAgICAgZ2xvYmFsTm90aWZpY2F0aW9uSURzLnJlc2Vy
dmVDYXBhY2l0eShtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zaXplKCkpOwogCisgICAgLy8gV2Ug
YWx3YXlzIGNoZWNrIHBhZ2UgaWRlbnRpdHkuCisgICAgLy8gSWYgdGhlIHNldCBvZiBub3RpZmlj
YXRpb24gSURzIGlzIG5vbi1lbXB0eSwgd2UgYWxzbyBjaGVjayB0aGF0LgorICAgIGF1dG8gdGFy
Z2V0UGFnZUlkZW50aWZpZXIgPSBpZGVudGlmaWVyRm9yUGFnZVBvaW50ZXIod2ViUGFnZSk7Cisg
ICAgYm9vbCBjaGVja05vdGlmaWNhdGlvbklEcyA9ICFwYWdlTm90aWZpY2F0aW9uSURzLmlzRW1w
dHkoKTsKKwogICAgIGZvciAoYXV0byBub3RpZmljYXRpb24gOiBtX25vdGlmaWNhdGlvbnMudmFs
dWVzKCkpIHsKLSAgICAgICAgYXV0byBwYWdlUHJveHlJRCA9IG5vdGlmaWNhdGlvbi0+cGFnZUlk
ZW50aWZpZXIoKTsKLSAgICAgICAgYXV0byBjb3JlTm90aWZpY2F0aW9uSUQgPSBub3RpZmljYXRp
b24tPmNvcmVOb3RpZmljYXRpb25JRCgpOwotICAgICAgICBpZiAoIWZpbHRlckZ1bmN0aW9uKHBh
Z2VQcm94eUlELCBjb3JlTm90aWZpY2F0aW9uSUQsIHRhcmdldFBhZ2VQcm94eUlELCBwYWdlTm90
aWZpY2F0aW9uSURzKSkKKyAgICAgICAgaWYgKGNoZWNrTm90aWZpY2F0aW9uSURzICYmICFwYWdl
Tm90aWZpY2F0aW9uSURzLmNvbnRhaW5zKG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklE
KCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICh0YXJnZXRQYWdlSWRlbnRp
ZmllciAhPSBub3RpZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IG5vdGlmaWNh
dGlvbi0+bm90aWZpY2F0aW9uSUQoKTsKQEAgLTE2Nyw0OCArMTY5LDQ2IEBAIHZvaWQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24odWludDY0
X3QgZ2xvYmFsTm90CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvKiB3ZWJQYWdl
ID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKG5vdGlmaWNhdGlvbi0+cGFnZUlkZW50aWZpZXIo
KSk7Ci0gICAgaWYgKCF3ZWJQYWdlKQorICAgIExPRyhOb3RpZmljYXRpb25zLCAiUHJvdmlkZXIg
ZGlkIHNob3cgbm90aWZpY2F0aW9uICglcykiLCBub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRp
b25JRCgpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBhdXRvKiBjb25uZWN0aW9u
ID0gbm90aWZpY2F0aW9uLT5zb3VyY2VDb25uZWN0aW9uKCk7CisgICAgaWYgKCFjb25uZWN0aW9u
KQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkU2hvd05vdGlmaWNhdGlvbihpdC0+dmFsdWUp
LCAwKTsKKyAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpEaWRTaG93Tm90aWZpY2F0aW9uKGl0LT52YWx1ZSksIDApOwogfQogCi12b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50
NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCkKK3N0YXRpYyB2b2lkIGRpc3BhdGNoRGlkQ2xpY2tO
b3RpZmljYXRpb24oV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgYXV0byBp
dCA9IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmZpbmQoZ2xvYmFsTm90aWZpY2F0aW9uSUQpOwot
ICAgIGlmIChpdCA9PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKLSAgICAgICAgcmV0
dXJuOworICAgIExPRyhOb3RpZmljYXRpb25zLCAiUHJvdmlkZXIgZGlkIGNsaWNrIG5vdGlmaWNh
dGlvbiAoJXMpIiwgbm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9uSUQoKS50b1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgYXV0byBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlv
bnMuZ2V0KGl0LT52YWx1ZSk7Ci0gICAgaWYgKCFub3RpZmljYXRpb24pIHsKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKCFub3RpZmljYXRpb24pCiAgICAgICAgIHJldHVy
bjsKLSAgICB9CiAKLSAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KG5vdGlmaWNhdGlvbi0+cGFnZUlkZW50aWZpZXIoKSk7Ci0gICAgaWYgKCF3ZWJQYWdlKQorICAg
IGF1dG8qIGNvbm5lY3Rpb24gPSBub3RpZmljYXRpb24tPnNvdXJjZUNvbm5lY3Rpb24oKTsKKyAg
ICBpZiAoIWNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYlBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlm
aWNhdGlvbihpdC0+dmFsdWUpLCAwKTsKKyAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlmaWNhdGlvbihub3RpZmljYXRpb24t
PmNvcmVOb3RpZmljYXRpb25JRCgpKSwgMCk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIGNvcmVO
b3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRl
ckRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEKQogewot
ICAgIGF1dG8gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldChjb3JlTm90aWZpY2F0
aW9uSUQpOwotICAgIGlmICghbm90aWZpY2F0aW9uKQorICAgIGF1dG8gaXQgPSBtX2dsb2JhbE5v
dGlmaWNhdGlvbk1hcC5maW5kKGdsb2JhbE5vdGlmaWNhdGlvbklEKTsKKyAgICBpZiAoaXQgPT0g
bV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uobm90aWZpY2F0aW9uLT5wYWdl
SWRlbnRpZmllcigpKTsKLSAgICBpZiAoIXdlYlBhZ2UpCi0gICAgICAgIHJldHVybjsKKyAgICBk
aXNwYXRjaERpZENsaWNrTm90aWZpY2F0aW9uKG1fbm90aWZpY2F0aW9ucy5nZXQoaXQtPnZhbHVl
KSk7Cit9CiAKLSAgICB3ZWJQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmljYXRpb24oY29yZU5vdGlmaWNhdGlvbklEKSwg
MCk7Cit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05v
dGlmaWNhdGlvbihjb25zdCBVVUlEJiBjb3JlTm90aWZpY2F0aW9uSUQpCit7CisgICAgZGlzcGF0
Y2hEaWRDbGlja05vdGlmaWNhdGlvbihtX25vdGlmaWNhdGlvbnMuZ2V0KGNvcmVOb3RpZmljYXRp
b25JRCkpOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJE
aWRDbG9zZU5vdGlmaWNhdGlvbnMoQVBJOjpBcnJheSogZ2xvYmFsTm90aWZpY2F0aW9uSURzKQog
ewotICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5KiwgVmVjdG9yPFVVSUQ+PiBwYWdlTm90aWZpY2F0
aW9uSURzOworICAgIFZlY3RvcjxSZWZQdHI8V2ViTm90aWZpY2F0aW9uPj4gY2xvc2VkTm90aWZp
Y2F0aW9uczsKIAogICAgIHNpemVfdCBzaXplID0gZ2xvYmFsTm90aWZpY2F0aW9uSURzLT5zaXpl
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKQEAgLTI0MSwyNiAr
MjQxLDI1IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENs
b3NlTm90aWZpY2F0aW9ucyhBUEk6OkFycmF5KiBnbG9iCiAgICAgICAgIGlmICghbm90aWZpY2F0
aW9uKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKFdlYlBhZ2VQcm94eSog
d2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3RpZmljYXRpb24tPnBhZ2VJZGVu
dGlmaWVyKCkpKSB7Ci0gICAgICAgICAgICBhdXRvIHBhZ2VJdCA9IHBhZ2VOb3RpZmljYXRpb25J
RHMuZmluZCh3ZWJQYWdlKTsKLSAgICAgICAgICAgIGlmIChwYWdlSXQgPT0gcGFnZU5vdGlmaWNh
dGlvbklEcy5lbmQoKSkgewotICAgICAgICAgICAgICAgIFZlY3RvcjxVVUlEPiBuZXdWZWN0b3I7
Ci0gICAgICAgICAgICAgICAgbmV3VmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7
Ci0gICAgICAgICAgICAgICAgcGFnZUl0ID0gcGFnZU5vdGlmaWNhdGlvbklEcy5hZGQod2ViUGFn
ZSwgV1RGTW92ZShuZXdWZWN0b3IpKS5pdGVyYXRvcjsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgcGFnZUl0LT52YWx1ZS5hcHBlbmQobm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9u
SUQoKSk7Ci0gICAgICAgIH0KLQogICAgICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5yZW1v
dmUobm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25JRCgpKTsKKyAgICAgICAgY2xvc2VkTm90aWZp
Y2F0aW9ucy5hcHBlbmQoV1RGTW92ZShub3RpZmljYXRpb24pKTsKICAgICB9CiAKLSAgICBmb3Ig
KGF1dG8gaXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmJlZ2luKCksIGVuZCA9IHBhZ2VOb3RpZmlj
YXRpb25JRHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPmtleS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsb3NlTm90aWZp
Y2F0aW9ucyhpdC0+dmFsdWUpLCAwKTsKKyAgICBmb3IgKGF1dG8mIG5vdGlmaWNhdGlvbiA6IGNs
b3NlZE5vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBub3Rp
ZmljYXRpb24tPnNvdXJjZUNvbm5lY3Rpb24oKSkgeworICAgICAgICAgICAgTE9HKE5vdGlmaWNh
dGlvbnMsICJQcm92aWRlciBkaWQgY2xvc2Ugbm90aWZpY2F0aW9uICglcykiLCBub3RpZmljYXRp
b24tPmNvcmVOb3RpZmljYXRpb25JRCgpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgICAgICBWZWN0b3I8VVVJRD4gbm90aWZpY2F0aW9uSURzID0geyBub3RpZmljYXRpb24tPmNv
cmVOb3RpZmljYXRpb25JRCgpIH07CisgICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbG9zZU5vdGlmaWNhdGlvbnMobm90aWZp
Y2F0aW9uSURzKSwgMCk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShjb25z
dCBBUEk6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGJvb2wgYWxsb3dlZCkKIHsKKyAgICBMT0co
Tm90aWZpY2F0aW9ucywgIlByb3ZpZGVyIGRpZCB1cGRhdGUgbm90aWZpY2F0aW9uIHBvbGljeSBm
b3Igb3JpZ2luICVzIHRvICVpIiwgb3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgYWxsb3dlZCk7CisKKyAgICBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvQWxs
UmVtb3RlV29ya2VyUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpE
aWRVcGRhdGVOb3RpZmljYXRpb25EZWNpc2lvbihvcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkudG9T
dHJpbmcoKSwgYWxsb3dlZCkpOworCiAgICAgaWYgKCFwcm9jZXNzUG9vbCgpKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTI4MSw3ICsyODAsMTEgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OnByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoQVBJOjpBcnIKICAg
ICAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgb3JpZ2lu
U3RyaW5ncy5hcHBlbmQob3JpZ2lucy0+YXQ8QVBJOjpTZWN1cml0eU9yaWdpbj4oaSktPnNlY3Vy
aXR5T3JpZ2luKCkudG9TdHJpbmcoKSk7Ci0gICAgCisKKyAgICBXZWJQcm9jZXNzUG9vbDo6c2Vu
ZFRvQWxsUmVtb3RlV29ya2VyUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpEaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMob3JpZ2luU3RyaW5ncykpOworCisg
ICAgaWYgKCFwcm9jZXNzUG9vbCgpKQorICAgICAgICByZXR1cm47CiAgICAgcHJvY2Vzc1Bvb2wo
KS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpE
aWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMob3JpZ2luU3RyaW5ncykpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCBjNmQzNWQ4NjIyYjguLmU4N2Ri
MTBmNTFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC01Nywx
MCArNTcsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCopOwogCisgICAgc3RhdGljIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eSYgc2hhcmVkU2VydmljZVdvcmtlck1hbmFnZXIoKTsKKwogICAg
IHZvaWQgc2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlk
ZXI+JiYpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBub3RpZmljYXRpb25QZXJtaXNzaW9u
cygpOwogCi0gICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbkRhdGEmKTsKKyAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5KiwgSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpOwogICAgIHZvaWQgY2FuY2Vs
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCk7CiAgICAgdm9p
ZCBjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5Kik7CiAgICAgdm9pZCBjbGVhck5vdGlm
aWNhdGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZpY2F0
aW9uSURzKTsKQEAgLTc5LDkgKzgxLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHR5
cGVkZWYgYm9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKShXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VJRCwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3RvcjxVVUlEPiYgZGVzaXJlZFBh
Z2VOb3RpZmljYXRpb25JRHMpOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQ
cm94eSosIGNvbnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0
aW9uRmlsdGVyRnVuY3Rpb24pOwotCiAgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKICAgICB2
b2lkIHByb2Nlc3NQb29sRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWZXZWJDb250
ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNw
cAppbmRleCAyNjVjMTU5ZDlkNzkuLjg1OGQ3NjQ2MmZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25Qcm92aWRlci5jcHAKQEAgLTQyLDEyICs0MiwxMiBAQCBXZWJOb3RpZmljYXRpb25Qcm92aWRl
cjo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIoY29uc3QgV0tOb3RpZmljYXRpb25Qcm92aWRlckJh
cwogICAgIGluaXRpYWxpemUocHJvdmlkZXIpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyOjpzaG93KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViTm90aWZpY2F0aW9uJiBub3RpZmlj
YXRpb24pCit2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzaG93KFdlYlBhZ2VQcm94eSog
cGFnZSwgV2ViTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCiB7CiAgICAgaWYgKCFtX2NsaWVu
dC5zaG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5zaG93KHRvQVBJKCZwYWdl
KSwgdG9BUEkoJm5vdGlmaWNhdGlvbiksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
bV9jbGllbnQuc2hvdyh0b0FQSShwYWdlKSwgdG9BUEkoJm5vdGlmaWNhdGlvbiksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OmNh
bmNlbChXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIuaAppbmRleCA3YjJlOWNlMWM1YTYuLmMxYjBhOWQ0ZWFlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXIuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBXZWJOb3RpZmljYXRpb25Q
cm92aWRlciA6IHB1YmxpYyBBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyLCBwdWJsaWMgQVBJOjpD
bAogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyKGNvbnN0IFdL
Tm90aWZpY2F0aW9uUHJvdmlkZXJCYXNlKik7CiAKLSAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5
JiwgV2ViTm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94
eSosIFdlYk5vdGlmaWNhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuY2VsKFdlYk5vdGlm
aWNhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJO
b3RpZmljYXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25z
dCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOWU2ZTUyYWZhMDQ2Li44NjBhNDUw
NjI0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODg3
NCw5ICs4ODc0LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3ROb3RpZmljYXRpb25QZXJt
aXNzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb20KICAgICBtX3VpQ2xpZW50LT5k
ZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCgqdGhpcywgb3JpZ2lu
LmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIG5v
dGlmaWNhdGlvbkRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd05vdGlmaWNhdGlvbihJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEm
IG5vdGlmaWNhdGlvbkRhdGEpCiB7Ci0gICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnN1cHBs
ZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5zaG93KHRoaXMsIG5vdGlmaWNh
dGlvbkRhdGEpOworICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+c2hvdyh0aGlzLCBjb25uZWN0aW9uLCBub3RpZmlj
YXRpb25EYXRhKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbihj
b25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggNWJjYTgyNjViNjcyLi40MDBmOTQwNDlkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMDU0LDcgKzIwNTQsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc1F1YXJhbnRpbmVkQW5kTm90VXNlckFwcHJvdmVkKGNvbnN0IFN0cmluZyYpOwogI2Vu
ZGlmCiAKLSAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0
aW9uRGF0YSYpOworICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJik7CiAgICAgdm9pZCBjYW5jZWxOb3RpZmlj
YXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgY2xlYXJOb3RpZmlj
YXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGRp
ZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDZkODgyOGYyZTRkMS4u
ZjYwZDNlY2QyY2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCkBAIC01ODgsNyArNTg4LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWcKIAogICAgIHJl
bW90ZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7CiAK
LSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29u
dGV4dChwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29s
LT5tX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZh
dWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICBhdXRvIHByZWZlcmVuY2VzU3RvcmUgPSBwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJQ
cmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzLnZhbHVl
KCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3Jl
KCk7CisgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtl
ckNvbnRleHQocHJlZmVyZW5jZXNTdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGlmICgh
cHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQogICAgICAgICBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQocHJvY2Vz
c1Bvb2wtPm1fcmVtb3RlV29ya2VyVXNlckFnZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGUyNTNhNWU3M2E0OC4uM2FhMmRhODJkNmU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTIwMyw2ICsyMDMsOCBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kVG9BbGxQcm9jZXNz
ZXMoY29uc3QgVCYgbWVzc2FnZSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5k
VG9BbGxQcm9jZXNzZXNGb3JTZXNzaW9uKGNvbnN0IFQmIG1lc3NhZ2UsIFBBTDo6U2Vzc2lvbklE
KTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIHNlbmRUb0FsbFJlbW90
ZVdvcmtlclByb2Nlc3Nlcyhjb25zdCBUJiBtZXNzYWdlKTsKKwogICAgIHZvaWQgcHJvY2Vzc0Rp
ZEZpbmlzaExhdW5jaGluZyhXZWJQcm9jZXNzUHJveHkmKTsKIAogICAgIFdlYlByb2Nlc3NDYWNo
ZSYgd2ViUHJvY2Vzc0NhY2hlKCkgeyByZXR1cm4gbV93ZWJQcm9jZXNzQ2FjaGUuZ2V0KCk7IH0K
QEAgLTgzMiw0ICs4MzQsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvQWxsUHJvY2Vz
c2VzRm9yU2Vzc2lvbihjb25zdCBUJiBtZXNzYWdlLCBQQUw6OlNlc3Npb24KICAgICB9CiB9CiAK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9BbGxSZW1v
dGVXb3JrZXJQcm9jZXNzZXMoY29uc3QgVCYgbWVzc2FnZSkKK3sKKyAgICBmb3IgKGF1dG8mIHBy
b2Nlc3MgOiByZW1vdGVXb3JrZXJQcm9jZXNzZXMoKSkgeworICAgICAgICBpZiAocHJvY2Vzcy5j
YW5TZW5kTWVzc2FnZSgpKQorICAgICAgICAgICAgcHJvY2Vzcy5zZW5kKFQobWVzc2FnZSksIDAp
OworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyYzBhODAzMDAzMTQuLjU1MjQwN2FkZTIw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRp
b25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VzLmgiCkBAIC0yMDE1LDYg
KzIwMTYsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVJlbW90ZVdvcmtlcnMoT3B0
aW9uU2V0PFJlbW90ZVdvcmtlclR5cGU+IHdvcmtlclR5cAogCiAgICAgV0VCUFJPQ0VTU1BST1hZ
X1JFTEVBU0VfTE9HKFByb2Nlc3MsICJkaXNhYmxlV29ya2VyczogRGlzYWJsaW5nIHdvcmtlcnMg
KFNoYXJlZFdvcmtlcnM9JWQsIFNlcnZpY2VXb3JrZXJzPSVkKSIsIHdvcmtlclR5cGUuY29udGFp
bnMoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSwgd29ya2VyVHlwZS5jb250YWlucyhS
ZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSk7CiAKKyAgICByZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2Vy
UGFnZUlEKTsKKyAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKwogICAgIHVw
ZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAKICAgICBpZiAoIWlzUnVubmlu
Z1dvcmtlcnMoKSkKQEAgLTIwNjQsNiArMjA2OCwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
ZW5hYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIGNvbnN0IFVz
ZQogICAgICAgICBudWxscHRyLAogICAgICAgICB7IH0KICAgICB9OworCisgICAgaWYgKHdvcmtl
clR5cGUgPT0gUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikKKyAgICAgICAgYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnJlbW90
ZVdvcmtlclBhZ2VJRCwgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OnNpbmdsZXRv
bigpKTsKKwogICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAKICAg
ICB1cGRhdGVSZW1vdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKHdvcmtlclR5cGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAppbmRleCAxMzI5MDU1NzJmNGIuLjJjN2E2YzY5YzU5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZENhY2hlLmgiCiAj
aW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0MkluaXRp
YWxpemUuaCIKKyNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ2FjaGUuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTIwNTQsNCArMjA1NSwyNiBAQCBib29sIFdl
YnNpdGVEYXRhU3RvcmU6OnNob3VsZE1ha2VOZXh0TmV0d29ya1Byb2Nlc3NMYXVuY2hGYWlsRm9y
VGVzdGluZygpCiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobmV4dE5ldHdvcmtQcm9jZXNzTGF1
bmNoU2hvdWxkRmFpbEZvclRlc3RpbmcsIGZhbHNlKTsKIH0KIAordm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpzaG93U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIG5vdGlmaWNhdGlvbkRhdGEp
Cit7CisgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2Vy
TWFuYWdlcigpLnNob3cobnVsbHB0ciwgY29ubmVjdGlvbiwgbm90aWZpY2F0aW9uRGF0YSk7Cit9
CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Y2FuY2VsU2VydmljZVdvcmtlck5vdGlmaWNhdGlv
bihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKK3sKKyAgICBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkuY2FuY2VsKG51bGxwdHIsIG5v
dGlmaWNhdGlvbklEKTsKK30KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpjbGVhclNlcnZpY2VX
b3JrZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit7CisgICAgVmVj
dG9yPFVVSUQ+IG5vdGlmaWNhdGlvbnM7CisgICAgbm90aWZpY2F0aW9ucy5hcHBlbmQobm90aWZp
Y2F0aW9uSUQpOworICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hhcmVkU2Vydmlj
ZVdvcmtlck1hbmFnZXIoKS5jbGVhck5vdGlmaWNhdGlvbnMobnVsbHB0ciwgbm90aWZpY2F0aW9u
cyk7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGlkRGVzdHJveVNlcnZpY2VXb3JrZXJO
b3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit7CisgICAgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpLmRpZERlc3Ry
b3lOb3RpZmljYXRpb24obnVsbHB0ciwgbm90aWZpY2F0aW9uSUQpOworfQorCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKaW5kZXggODVlZTMxZTEzODNkLi40NmFmMGVmNTllYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTc4
LDYgKzc4LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBMb2NhbFdlYkxvY2tSZWdp
c3RyeTsKIAogc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247CitzdHJ1
Y3QgTm90aWZpY2F0aW9uRGF0YTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zNzAsNiAr
MzcxLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY291bnROb25EZWZhdWx0U2Vzc2lvblNldHMo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3QpPiYmKTsKIAorICAgIHZvaWQgc2hvd1NlcnZp
Y2VXb3JrZXJOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uRGF0YSYpOworICAgIHZvaWQgY2FuY2VsU2VydmljZVdvcmtlck5vdGlmaWNhdGlv
bihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBjbGVhclNlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgZGlk
RGVzdHJveVNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9u
SUQpOworCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRm9yY2VSZWluaXRpYWxpemF0aW9uIDog
Ym9vbCB7IE5vLCBZZXMgfTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmN2JlZTU0
M2NlMGYuLmMxNWUxYjFkZGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC05OTYsNiArOTk2LDcgQEAKIAkJNTE1QkUxQjUxRDU5MTdG
RjAwREQ3QzY4IC8qIFVJR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE1QkUxQUQxRDU1NUM1MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5oICov
OyB9OwogCQk1MTYzMTk5NDE2Mjg5QTYwMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFBQ0M5MzQxNjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLzsgfTsKIAkJNTE2MzE5OTUxNjI4OUE2MzAwRTIyRjAwIC8qIE5ldHdvcmtQcm9j
ZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQUNDOTM1MTYyODA2NDgwMDM0MjU1MCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgg
Ki87IH07CisJCTUxNjQ2NTgwMjdBOUM3NzQwMEUxRjJCQSAvKiBTZXJ2aWNlV29ya2VyTm90aWZp
Y2F0aW9uSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE2NDY1N0YyN0E5Qzc2NzAwRTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b25IYW5kbGVyLmggKi87IH07CiAJCTUxNkE0QTVEMTIwQTJDQ0QwMEMwNUI3RiAvKiBBUElFcnJv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2QTRB
NUIxMjBBMkNDRDAwQzA1QjdGIC8qIEFQSUVycm9yLmggKi87IH07CiAJCTUxNzk1NTZBMTYyODc2
RjMwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQ0M3RTAxNjEzOEUyOTAwRDAzRUQzIC8qIE5ldHdvcmtQ
cm9jZXNzLmggKi87IH07CiAJCTUxNzk1NTZFMTYyODc3QjMwMEZBNDNCNiAvKiBOZXR3b3JrUHJv
Y2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTBDQzdFQjE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5oICovOyB9
OwpAQCAtNDQ4MSw2ICs0NDgyLDggQEAKIAkJNTE2MEU5NTgyNzRDMEQ4ODAwNTY3Mzg4IC8qIFB1
c2hBcHBCdW5kbGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
dXNoQXBwQnVuZGxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTYwRTk1QzI3
NEMyQTAzMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTYwRTk1RjI3NEMyQTNGMDA1NjczODggLyogTW9ja0FwcEJ1bmRs
ZVJlZ2lzdHJ5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9j
a0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTY0
NjU3RTI3QTlDNzY1MDBFMUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTY0NjU3RjI3QTlDNzY3MDBFMUYy
QkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTE2NEMwOTQxQjA1Qjc1NzAwNEYxMDJBIC8qIEF1eGlsaWFyeVByb2Nlc3MubWVz
c2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXV4aWxpYXJ5UHJvY2Vzcy5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2QTRBNUIxMjBBMkNDRDAwQzA1
QjdGIC8qIEFQSUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUVy
cm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0EzM0IzMTMwQjMwOEMwMEY4
MENCNSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtODY3NSw2ICs4Njc4LDggQEAKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMzFBMkVDNTMxNDg5OTgyNTAwODEwRDcxIC8qIE5v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi8sCisJCQkJNTE2NDY1N0UyN0E5Qzc2NTAw
RTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmNwcCAqLywKKwkJCQk1
MTY0NjU3RjI3QTlDNzY3MDBFMUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRs
ZXIuaCAqLywKIAkJCQkzMUEyRUM0MTE0ODk5N0JFMDA4MTBENzEgLyogV2ViTm90aWZpY2F0aW9u
LmNwcCAqLywKIAkJCQkzMUEyRUM0MjE0ODk5N0JFMDA4MTBENzEgLyogV2ViTm90aWZpY2F0aW9u
LmggKi8sCiAJCQkJNTE0NTI3MDYyNzFGQkVDMTAwMDQ2N0I2IC8qIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8sCkBAIC0xMzkxOSw2ICsxMzkyNCw3IEBACiAJCQkJ
QkM0QTYyOTcxNDczMTNBMDAwNkM2ODFBIC8qIFdLQ29ubmVjdGlvblJlZi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTU5NkRENkEyNTFFNzFENDAwQzI3NUE3IC8qIFdLQ29udGFjdFBpY2tlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg2NTQxRTcyMzVCMTAwOTRGREM4IC8qIFdLQ29udGVudFJ1
bGVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTY0NjU4MDI3QTlDNzc0MDBFMUYyQkEgLyog
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
RDI4NjU1MUU3MjM1QjgwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdEludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1QzUxMzlEQjI1OTI3RDgwMDA5QzNFMzAgLyogV0tDb250ZW50UnVs
ZUxpc3RQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODY1MTFFNzIzNTk5MDA5NEZE
QzggLyogV0tDb250ZW50UnVsZUxpc3RTdG9yZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDljMWMxMmQ4ODU1NC4uZmY3ZmQzMWFmOWJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlck1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCIKICNpbmNs
dWRlICJXZWJOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgpAQCAtNDIsNiAr
NDMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGF0YS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1dDb250ZXh0TWFuYWdlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CkBAIC0xMjEsMjUgKzEy
Myw0MiBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnJlbW92ZUFsbFBlcm1pc3Npb25z
Rm9yVGVzdGluZygpCiB9CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLXRlbXBsYXRlPHR5
cGVuYW1lIFU+IGJvb2wgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UoV2ViUHJvY2VzcyYgcHJvY2Vz
cywgVSYmIG1lc3NhZ2UsIFdlYlBhZ2UmIHBhZ2UpCit0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29s
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnNlbmROb3RpZmljYXRpb25NZXNzYWdlKFUmJiBtZXNz
YWdlLCBOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKIHsKKyAgICBp
ZiAoIXBhZ2UgJiYgIW5vdGlmaWNhdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKwogI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQog
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmJ1aWx0SW5O
b3RpZmljYXRpb25zRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gcHJvY2Vzcy5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2Up
LCBwYWdlLnNlc3Npb25JRCgpLnRvVUludDY0KCkpOworICAgICAgICByZXR1cm4gbV9wcm9jZXNz
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKFdURk1v
dmUobWVzc2FnZSksIG5vdGlmaWNhdGlvbi5kYXRhKCkuc291cmNlU2Vzc2lvbi50b1VJbnQ2NCgp
KTsKICNlbmRpZgotICAgIHJldHVybiBwcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgcGFnZS5pZGVudGlmaWVyKCkpOworCisgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlkZW50aWZpZXI7CisgICAgaWYg
KHBhZ2UpCisgICAgICAgIHBhZ2VJZGVudGlmaWVyID0gcGFnZS0+aWRlbnRpZmllcigpOworICAg
IGVsc2UgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24o
KS5jb25uZWN0aW9uKCkpIHsKKyAgICAgICAgLy8gUGFnZWxlc3Mgbm90aWZpY2F0aW9uIG1lc3Nh
Z2VzIGFyZSwgYnkgZGVmYXVsdCwgb24gYmVoYWxmIG9mIGEgc2VydmljZSB3b3JrZXIuCisgICAg
ICAgIC8vIFNvIHVzZSB0aGUgc2VydmljZSB3b3JrZXIgY29ubmVjdGlvbidzIHBhZ2UgaWRlbnRp
Zmllci4KKyAgICAgICAgcGFnZUlkZW50aWZpZXIgPSBjb25uZWN0aW9uLT5wYWdlSWRlbnRpZmll
cigpOworICAgIH0KKworICAgIEFTU0VSVChwYWdlSWRlbnRpZmllcik7CisKKyAgICByZXR1cm4g
bV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoV1RGTW92ZShtZXNzYWdl
KSwgKnBhZ2VJZGVudGlmaWVyKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
IAogYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlvbiYgbm90aWZp
Y2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogeworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwog
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIGlmICghcGFnZS0+Y29yZVBhZ2UoKS0+c2V0
dGluZ3MoKS5ub3RpZmljYXRpb25zRW5hYmxlZCgpKQorICAgIGlmIChwYWdlICYmICFwYWdlLT5j
b3JlUGFnZSgpLT5zZXR0aW5ncygpLm5vdGlmaWNhdGlvbnNFbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIG1fbm90aWZpY2F0aW9uSURNYXAuc2V0KG5vdGlmaWNhdGlvbi5p
ZGVudGlmaWVyKCksICZub3RpZmljYXRpb24pOworICAgIGlmICghc2VuZE5vdGlmaWNhdGlvbk1l
c3NhZ2UoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6U2hvd05v
dGlmaWNhdGlvbihub3RpZmljYXRpb24uZGF0YSgpKSwgbm90aWZpY2F0aW9uLCBwYWdlKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UobV9wcm9j
ZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpTaG93Tm90
aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5kYXRhKCkpLCAqcGFnZSk7CisgICAgbV9ub3RpZmljYXRp
b25JRE1hcC5zZXQobm90aWZpY2F0aW9uLmlkZW50aWZpZXIoKSwgJm5vdGlmaWNhdGlvbik7CiAg
ICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwpA
QCAtMTUwLDE2ICsxNjksMTYgQEAgYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KE5v
dGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogCiB2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXI6OmNhbmNlbChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFn
ZSogcGFnZSkKIHsKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBpZiAoIXBhZ2UtPmNv
cmVQYWdlKCktPnNldHRpbmdzKCkubm90aWZpY2F0aW9uc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0
dXJuOworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogCisjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCiAgICAgYXV0byBtYXBwZWROb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFw
LmdldChub3RpZmljYXRpb24uaWRlbnRpZmllcigpKTsKICAgICBpZiAoIW1hcHBlZE5vdGlmaWNh
dGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChtYXBwZWROb3RpZmljYXRpb24gPT0g
Jm5vdGlmaWNhdGlvbik7CiAKLSAgICBzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShtX3Byb2Nlc3Ms
IE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OkNhbmNlbE5vdGlm
aWNhdGlvbihub3RpZmljYXRpb24uaWRlbnRpZmllcigpKSwgKnBhZ2UpOworICAgIGlmICghc2Vu
ZE5vdGlmaWNhdGlvbk1lc3NhZ2UoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlcjo6Q2FuY2VsTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpLCBu
b3RpZmljYXRpb24sIHBhZ2UpKQorICAgICAgICByZXR1cm47CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShub3RpZmljYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKQEAgLTE2OCw2ICsx
ODcsOCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbChOb3RpZmljYXRpb24m
IG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBX
ZWJQYWdlKiBwYWdlKQogeworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOworCiAjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCiAgICAgUmVmIHByb3RlY3RlZE5vdGlmaWNhdGlvbiB7IG5vdGlm
aWNhdGlvbiB9OwogCkBAIC0xNzYsNyArMTk3LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLAog
ICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKHRha2VuTm90aWZpY2F0aW9uID09ICZub3RpZmlj
YXRpb24pOwogCi0gICAgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UobV9wcm9jZXNzLCBNZXNzYWdl
czo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpEaWREZXN0cm95Tm90aWZpY2F0
aW9uKG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpLCAqcGFnZSk7CisgICAgc2VuZE5vdGlmaWNh
dGlvbk1lc3NhZ2UoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6
RGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24uaWRlbnRpZmllcigpKSwgbm90aWZp
Y2F0aW9uLCBwYWdlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CiAg
ICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwpAQCAtMTg1LDYgKzIwNiw4IEBAIHZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24mIG5vdGlm
aWNhdGlvbiwKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0
aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQogeworICAgIEFTU0VSVChpc01haW5SdW5M
b29wKCkpOworCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgUmVmUHRyPE5vdGlmaWNh
dGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9u
SUQpOwogICAgIGlmICghbm90aWZpY2F0aW9uKQpAQCAtMTk4LDYgKzIyMSw4IEBAIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3Rp
ZmljYXRpb25JRCkKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbGlja05vdGlm
aWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKIHsKKyAgICBBU1NFUlQoaXNNYWlu
UnVuTG9vcCgpKTsKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIFJlZlB0cjxOb3Rp
ZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAuZ2V0KG5vdGlmaWNh
dGlvbklEKTsKICAgICBpZiAoIW5vdGlmaWNhdGlvbikKQEAgLTIxMyw2ICsyMzgsOCBAQCB2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQm
IG5vdGlmaWNhdGlvbklEKQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsb3Nl
Tm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykKIHsKKyAg
ICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQog
ICAgIHNpemVfdCBjb3VudCA9IG5vdGlmaWNhdGlvbklEcy5zaXplKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgK
aW5kZXggZTYzNTFmZGY5NjE2Li40OWVhNzE4NDU1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyLmgKQEAgLTgxLDYgKzgxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENsb3NlTm90
aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcyk7CiAgICAgdm9p
ZCBkaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9y
aWdpblN0cmluZ3MpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kTm90aWZp
Y2F0aW9uTWVzc2FnZShVJiYgbWVzc2FnZSwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uJiwgV2ViUGFn
ZSopOworCiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwogCiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBjMWVkZDlmMGEyZWMu
LjFlMzE0MGY2ODJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC02Niw2
ICs2Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGFnZUlEOyB9CisK
IHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcAppbmRleCBj
MjRlZDM3ZDc2ZWYuLjQxMWJiZWFiMzk1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVu
dC5jcHAKQEAgLTQwLDM0ICs0MCw2NiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYk5v
dGlmaWNhdGlvbkNsaWVudDo6V2ViTm90aWZpY2F0aW9uQ2xpZW50KFdlYlBhZ2UqIHBhZ2UpCiAg
ICAgOiBtX3BhZ2UocGFnZSkKIHsKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKIH0KIAog
V2ViTm90aWZpY2F0aW9uQ2xpZW50Ojp+V2ViTm90aWZpY2F0aW9uQ2xpZW50KCkKIHsKKyAgICBB
U1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKIH0KIAogYm9vbCBXZWJOb3RpZmljYXRpb25DbGllbnQ6
OnNob3coTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCiB7Ci0gICAgcmV0dXJuIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+c2hv
dyhub3RpZmljYXRpb24sIG1fcGFnZSk7CisgICAgaWYgKGlzTWFpblJ1bkxvb3AoKSkKKyAgICAg
ICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0
aW9uTWFuYWdlcj4oKS0+c2hvdyhub3RpZmljYXRpb24sIG1fcGFnZSk7CisKKyAgICBib29sIHJl
c3VsdDsKKyAgICBjYWxsT25NYWluUnVuTG9vcEFuZFdhaXQoWyZyZXN1bHQsIHByb3RlY3RlZE5v
dGlmaWNhdGlvbiA9IFJlZiB7IG5vdGlmaWNhdGlvbiB9XSgpIHsKKyAgICAgICAgcmVzdWx0ID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
PigpLT5zaG93KHByb3RlY3RlZE5vdGlmaWNhdGlvbi5nZXQoKSwgbnVsbHB0cik7CisgICAgfSk7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNh
bmNlbChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmNhbmNlbChub3Rp
ZmljYXRpb24sIG1fcGFnZSk7CisgICAgaWYgKGlzTWFpblJ1bkxvb3AoKSkgeworICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+
KCktPmNhbmNlbChub3RpZmljYXRpb24sIG1fcGFnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBjYWxsT25NYWluUnVuTG9vcEFuZFdhaXQoW3Byb3RlY3RlZE5vdGlmaWNhdGlvbiA9
IFJlZiB7IG5vdGlmaWNhdGlvbiB9XSgpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5jYW5jZWwocHJvdGVjdGVk
Tm90aWZpY2F0aW9uLmdldCgpLCBudWxscHRyKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJOb3Rp
ZmljYXRpb25DbGllbnQ6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3RpZmljYXRpb24m
IG5vdGlmaWNhdGlvbikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50
PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZp
Y2F0aW9uLCBtX3BhZ2UpOworICAgIGlmIChpc01haW5SdW5Mb29wKCkpIHsKKyAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigp
LT5kaWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgbV9wYWdlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIE1ha2Ugc3VyZSB0aGlzIE5vdGlmaWNhdGlvbiBvYmpl
Y3QgaXMgZGVhbGxvY2F0ZWQgb24gdGhpcyB0aHJlYWQgYnkgaG9sZGluZyBvbmUgbGFzdCByZWYo
KSB0byBpdCBoZXJlCisgICAgYXV0byBsYXN0Tm90aWZpY2F0aW9uUmVmID0gUmVmIHsgbm90aWZp
Y2F0aW9uIH07CisKKyAgICBjYWxsT25NYWluUnVuTG9vcEFuZFdhaXQoWyZub3RpZmljYXRpb25d
KCkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXI+KCktPmRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLCBu
dWxscHRyKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6Om5vdGlm
aWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKQogewotICAgIGRlbGV0ZSB0aGlzOworICAgIGNh
bGxPbk1haW5SdW5Mb29wKFt0aGlzXSB7CisgICAgICAgIGRlbGV0ZSB0aGlzOworICAgIH0pOwog
fQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUGVybWlzc2lvbkhhbmRsZXImJiBwZXJtaXNzaW9u
SGFuZGxlcikKIHsKKyAgICAvLyBPbmx5IFdpbmRvdyBjbGllbnRzIGNhbiByZXF1ZXN0IHBlcm1p
c3Npb24KKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBBU1NFUlQobV9wYWdlKTsK
KwogICAgIGF1dG8qIHNlY3VyaXR5T3JpZ2luID0gY29udGV4dC5zZWN1cml0eU9yaWdpbigpOwog
ICAgIGlmICghc2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiBwZXJtaXNzaW9uSGFuZGxl
cihOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb246OkRlbmllZCk7CkBAIC03Niw5ICsxMDgs
MjAgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFAKIAogTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJt
aXNzaW9uIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgaWYgKCFjb250ZXh0IHx8ICFjb250ZXh0LT5p
c0RvY3VtZW50KCkgfHwgIWNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpCisgICAgaWYgKCFjb250
ZXh0KQogICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uOjpEZW5p
ZWQ7Ci0gICAgcmV0dXJuIG1fcGFnZS0+bm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyKCktPnBlcm1pc3Npb25MZXZlbChjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCkp
OworICAgIGlmICghY29udGV4dC0+aXNEb2N1bWVudCgpICYmICFjb250ZXh0LT5pc1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSgpKQorICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQ
ZXJtaXNzaW9uOjpEZW5pZWQ7CisKKyAgICBhdXRvKiBvcmlnaW4gPSBjb250ZXh0LT5zZWN1cml0
eU9yaWdpbigpOworICAgIGlmICghb3JpZ2luKQorICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9u
Q2xpZW50OjpQZXJtaXNzaW9uOjpEZW5pZWQ7CisKKyAgICBOb3RpZmljYXRpb25DbGllbnQ6OlBl
cm1pc3Npb24gcmVzdWx0UGVybWlzc2lvbjsKKyAgICBjYWxsT25NYWluUnVuTG9vcEFuZFdhaXQo
WyZyZXN1bHRQZXJtaXNzaW9uLCBvcmlnaW4gPSBvcmlnaW4tPmRhdGEoKS50b1N0cmluZygpXSB7
CisgICAgICAgIHJlc3VsdFBlcm1pc3Npb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBw
bGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPnBvbGljeUZvck9yaWdpbihvcmlnaW4p
OworICAgIH0pOworICAgIHJldHVybiByZXN1bHRQZXJtaXNzaW9uOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDhkZTY4MWIyMjI0MS4u
ZGQzOTc2M2FjNTEyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTIwOCw2ICsyMDgs
NyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdW5kZWZpbmVkIGRlbnlXZWJOb3RpZmlj
YXRpb25QZXJtaXNzaW9uKERPTVN0cmluZyBvcmlnaW4pOwogICAgIHVuZGVmaW5lZCByZW1vdmVB
bGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwogICAgIHVuZGVmaW5lZCBzaW11bGF0ZVdl
Yk5vdGlmaWNhdGlvbkNsaWNrKG9iamVjdCBub3RpZmljYXRpb24pOworICAgIHVuZGVmaW5lZCBz
aW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMo
KTsKIAogICAgIC8vIEdlb2xvY2F0aW9uCiAgICAgdW5kZWZpbmVkIHNldEdlb2xvY2F0aW9uUGVy
bWlzc2lvbihib29sZWFuIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggMzNlNzBhZjMyYTZk
Li4wZDBkMWZmYjYwMDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC02NjgsNiArNjY4LDExIEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLRGF0
YVJlZiBub3RpZmljYXRpb25JRCkKICAgICBwb3N0UGFnZU1lc3NhZ2UoIlNpbXVsYXRlV2ViTm90
aWZpY2F0aW9uQ2xpY2siLCBub3RpZmljYXRpb25JRCk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5k
bGU6OnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlm
aWNhdGlvbnMoKQoreworICAgIHBvc3RQYWdlTWVzc2FnZSgiU2ltdWxhdGVXZWJOb3RpZmljYXRp
b25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25zIik7Cit9CisKIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnBvc3RTZXRBZGRzVmlzaXRlZExpbmtzKGJvb2wgYWRkc1Zpc2l0ZWRMaW5rcykK
IHsKICAgICBwb3N0UGFnZU1lc3NhZ2UoIlNldEFkZHNWaXNpdGVkTGlua3MiLCBhZG9wdFdLKFdL
Qm9vbGVhbkNyZWF0ZShhZGRzVmlzaXRlZExpbmtzKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IGJjMTQ3
NWNhZjdmYS4uMGE4NTk5NTgwZmFjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC05NSw2ICs5NSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHBvc3RTZXRXaW5kb3dJc0tleShib29sKTsKICAgICB2b2lkIHBvc3RT
ZXRWaWV3U2l6ZShkb3VibGUgd2lkdGgsIGRvdWJsZSBoZWlnaHQpOwogICAgIHZvaWQgcG9zdFNp
bXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKTsKKyAg
ICB2b2lkIHBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbnMoKTsKICAgICB2b2lkIHBvc3RTZXRBZGRzVmlzaXRlZExpbmtzKGJvb2wpOwog
CiAgICAgLy8gR2VvbG9jYXRpb24uCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA3ODFiODE2OTFhZmMuLjI0YTlhODVk
MDdiYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCkBAIC04NjcsMTEgKzg2NywxMyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNl
dEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHZvaWQgVGVz
dFJ1bm5lcjo6Z3JhbnRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKEpTU3RyaW5nUmVmIG9yaWdp
bikKIHsKICAgICBXS0J1bmRsZVNldFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oSW5qZWN0ZWRC
dW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBwYWdlKCksIHRvV0sob3JpZ2luKS5nZXQoKSwg
dHJ1ZSk7CisgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2VSZXR1cm5pbmdCb29sZWFuKCJH
cmFudE5vdGlmaWNhdGlvblBlcm1pc3Npb24iLCBvcmlnaW4pOwogfQogCiB2b2lkIFRlc3RSdW5u
ZXI6OmRlbnlXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKEpTU3RyaW5nUmVmIG9yaWdpbikKIHsK
ICAgICBXS0J1bmRsZVNldFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oSW5qZWN0ZWRCdW5kbGU6
OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBwYWdlKCksIHRvV0sob3JpZ2luKS5nZXQoKSwgZmFsc2Up
OworICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlUmV0dXJuaW5nQm9vbGVhbigiRGVueU5v
dGlmaWNhdGlvblBlcm1pc3Npb24iLCBvcmlnaW4pOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnJl
bW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkKQEAgLTg4Nyw2ICs4ODksMTEgQEAg
dm9pZCBUZXN0UnVubmVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKEpTVmFsdWVSZWYg
bm90aWZpY2F0aW9uKQogICAgIGluamVjdGVkQnVuZGxlLnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNh
dGlvbkNsaWNrKG5vdGlmaWNhdGlvbklELmdldCgpKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpz
aW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMo
KQoreworICAgIEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wb3N0U2ltdWxhdGVXZWJOb3Rp
ZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25zKCk7Cit9CisKIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgZW5hYmxlZCkKIHsKICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBieSBmcmFtZS4KZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggMmI3OGMx
ZGE5NmIxLi45MGY1ZWU0ODFmNDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0yOTQsNiArMjk0LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGRlbnlXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKEpTU3RyaW5nUmVm
IG9yaWdpbik7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlz
c2lvbnMoKTsKICAgICBzdGF0aWMgdm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKEpT
VmFsdWVSZWYgbm90aWZpY2F0aW9uKTsKKyAgICBzdGF0aWMgdm9pZCBzaW11bGF0ZVdlYk5vdGlm
aWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKIAogICAgIC8vIEdl
b2xvY2F0aW9uLgogICAgIHZvaWQgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA0ZDZlOTA5YWJkMmEu
LjUwMGM3MWQ1YTRhMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKQEAgLTY5Niw2ICs2OTYsNyBAQCBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVm
PiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjbwogICAgIFdLTm90
aWZpY2F0aW9uTWFuYWdlclJlZiBub3RpZmljYXRpb25NYW5hZ2VyID0gV0tDb250ZXh0R2V0Tm90
aWZpY2F0aW9uTWFuYWdlcihtX2NvbnRleHQuZ2V0KCkpOwogICAgIFdLTm90aWZpY2F0aW9uUHJv
dmlkZXJWMCBub3RpZmljYXRpb25LaXQgPSBtX3dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLnByb3Zp
ZGVyKCk7CiAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIobm90aWZpY2F0aW9u
TWFuYWdlciwgJm5vdGlmaWNhdGlvbktpdC5iYXNlKTsKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJTZXRQcm92aWRlcihXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9uTWFuYWdlcigpLCAmbm90aWZpY2F0aW9uS2l0LmJhc2UpOwogCiAgICAgaWYg
KHRlc3RQbHVnaW5EaXJlY3RvcnkoKSkKICAgICAgICAgV0tDb250ZXh0U2V0QWRkaXRpb25hbFBs
dWdpbnNEaXJlY3RvcnkobV9jb250ZXh0LmdldCgpLCB0ZXN0UGx1Z2luRGlyZWN0b3J5KCkpOwpA
QCAtNzE3LDYgKzcxOCwyNCBAQCBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBU
ZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjbwogICAgIHJldHVybiBw
YWdlQ29uZmlndXJhdGlvbjsKIH0KIAorYm9vbCBUZXN0Q29udHJvbGxlcjo6Z3JhbnROb3RpZmlj
YXRpb25QZXJtaXNzaW9uKFdLU3RyaW5nUmVmIG9yaWdpblN0cmluZykKK3sKKyAgICBtX3dlYk5v
dGlmaWNhdGlvblByb3ZpZGVyLnNldFBlcm1pc3Npb24odG9XVEZTdHJpbmcob3JpZ2luU3RyaW5n
KSwgdHJ1ZSk7CisKKyAgICBhdXRvIG9yaWdpbiA9IGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNy
ZWF0ZUZyb21TdHJpbmcob3JpZ2luU3RyaW5nKSk7CisgICAgV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xpY3koV0tOb3RpZmljYXRpb25NYW5hZ2Vy
R2V0U2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFnZXIoKSwgb3JpZ2luLmdldCgp
LCB0cnVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBUZXN0Q29udHJvbGxlcjo6ZGVu
eU5vdGlmaWNhdGlvblBlcm1pc3Npb24oV0tTdHJpbmdSZWYgb3JpZ2luU3RyaW5nKQoreworICAg
IG1fd2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuc2V0UGVybWlzc2lvbih0b1dURlN0cmluZyhvcmln
aW5TdHJpbmcpLCBmYWxzZSk7CisKKyAgICBhdXRvIG9yaWdpbiA9IGFkb3B0V0soV0tTZWN1cml0
eU9yaWdpbkNyZWF0ZUZyb21TdHJpbmcob3JpZ2luU3RyaW5nKSk7CisgICAgV0tOb3RpZmljYXRp
b25NYW5hZ2VyUHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xpY3koV0tOb3RpZmljYXRp
b25NYW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFnZXIoKSwgb3Jp
Z2luLmdldCgpLCBmYWxzZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9u
cykKIHsKICAgICBhdXRvIGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IG9wdGlvbnMuYXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CkBAIC0yMzU5LDYgKzIzNzgsMTEgQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS0RhdGFSZWYgbm90
aWZpY2F0aW9uSUQpCiAgICAgbV93ZWJOb3RpZmljYXRpb25Qcm92aWRlci5zaW11bGF0ZVdlYk5v
dGlmaWNhdGlvbkNsaWNrKG1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbm90aWZpY2F0aW9uSUQpOwog
fQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9y
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKQoreworICAgIG1fd2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIuc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb25zKCk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlz
c2lvbihib29sIGVuYWJsZWQpCiB7CiAgICAgbV9pc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldCA9
IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYjUyYWY2
NjU1NTJiLi5lMjRhYzMyMDM0YWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCZWZvcmVVbmxv
YWRSZXR1cm5WYWx1ZShib29sIHZhbHVlKSB7IG1fYmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUgPSB2
YWx1ZTsgfQogCiAgICAgdm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLRGF0YVJl
ZiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNr
Rm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKIAogICAgIC8vIEdlb2xvY2F0aW9uLgog
ICAgIHZvaWQgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wpOwpAQCAtMzczLDYgKzM3NCw5
IEBAIHB1YmxpYzoKIAogICAgIFdLUHJlZmVyZW5jZXNSZWYgcGxhdGZvcm1QcmVmZXJlbmNlcygp
OwogCisgICAgYm9vbCBncmFudE5vdGlmaWNhdGlvblBlcm1pc3Npb24oV0tTdHJpbmdSZWYgb3Jp
Z2luKTsKKyAgICBib29sIGRlbnlOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdLU3RyaW5nUmVmIG9y
aWdpbik7CisKIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJl
Zj4gZ2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9ucyYpOwogICAgIFdL
UmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlQ29udGV4dENvbmZp
Z3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnMmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMmNhNDJjM2VlNWMzLi45NGEwNDZiMjAyZTIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0zOTYsNiArMzk2
LDExIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNpbXVs
YXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucyIpKSB7
CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zaW11bGF0ZVdlYk5vdGlmaWNh
dGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiU2V0QWRkc1Zpc2l0ZWRMaW5rcyIpKSB7CiAgICAgICAgIFdLUGFnZVNldEFkZHNWaXNp
dGVkTGlua3MoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2Uo
KSwgYm9vbGVhblZhbHVlKG1lc3NhZ2VCb2R5KSk7CiAgICAgICAgIHJldHVybjsKQEAgLTEwMjUs
NiArMTAzMCwxMiBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4gYWRv
cHRXSyhXS1VJbnQ2NENyZWF0ZShjb3VudCkpOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiR3JhbnROb3RpZmljYXRpb25QZXJtaXNz
aW9uIikpCisgICAgICAgIHJldHVybiBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkuZ3JhbnROb3RpZmljYXRpb25QZXJtaXNzaW9uKHN0cmluZ1ZhbHVl
KG1lc3NhZ2VCb2R5KSkpKTsKKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiRGVueU5vdGlmaWNhdGlvblBlcm1pc3Npb24iKSkKKyAgICAgICAgcmV0
dXJuIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5k
ZW55Tm90aWZpY2F0aW9uUGVybWlzc2lvbihzdHJpbmdWYWx1ZShtZXNzYWdlQm9keSkpKSk7CisK
ICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIklzRG9p
bmdNZWRpYUNhcHR1cmUiKSkKICAgICAgICAgcmV0dXJuIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRl
KFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5pc0RvaW5nTWVkaWFDYXB0dXJlKCkpKTsKICAg
ICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRl
ci5jcHAKaW5kZXggYzg4ZjJlOWY4ZGIyLi5jNTFiOWFhY2Q5YzQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCkBAIC02NCw2ICs2
NCw3IEBAIHN0YXRpYyBXS0RpY3Rpb25hcnlSZWYgbm90aWZpY2F0aW9uUGVybWlzc2lvbnMoY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKIAogV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OldlYk5vdGlm
aWNhdGlvblByb3ZpZGVyKCkKIHsKKyAgICBtX3Blcm1pc3Npb25zID0gYWRvcHRXSyhXS011dGFi
bGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOwogfQogCiBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6fldl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyKCkKQEAgLTg3LDEwICs4OCwxOSBAQCBXS05vdGlmaWNhdGlv
blByb3ZpZGVyVjAgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnByb3ZpZGVyKCkKICAgICByZXR1
cm4gbm90aWZpY2F0aW9uUHJvdmlkZXI7CiB9CiAKK3N0YXRpYyBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJSZWYgbm90aWZpY2F0aW9uTWFuYWdlckZvclBhZ2UoV0tQYWdlUmVmIHBhZ2UpCit7CisgICAg
aWYgKHBhZ2UpIHsKKyAgICAgICAgYXV0byBjb250ZXh0ID0gV0tQYWdlR2V0Q29udGV4dChwYWdl
KTsKKyAgICAgICAgcmV0dXJuIFdLQ29udGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIoY29udGV4
dCk7CisgICAgfQorCisgICAgcmV0dXJuIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNl
cnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyKCk7Cit9CisKIHZvaWQgV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXI6OnNob3dXZWJOb3RpZmljYXRpb24oV0tQYWdlUmVmIHBhZ2UsIFdLTm90aWZp
Y2F0aW9uUmVmIG5vdGlmaWNhdGlvbikKIHsKLSAgICBhdXRvIGNvbnRleHQgPSBXS1BhZ2VHZXRD
b250ZXh0KHBhZ2UpOwotICAgIGF1dG8gbm90aWZpY2F0aW9uTWFuYWdlciA9IFdLQ29udGV4dEdl
dE5vdGlmaWNhdGlvbk1hbmFnZXIoY29udGV4dCk7CisgICAgYXV0byBub3RpZmljYXRpb25NYW5h
Z2VyID0gbm90aWZpY2F0aW9uTWFuYWdlckZvclBhZ2UocGFnZSk7CiAgICAgQVNTRVJUKG1fa25v
d25NYW5hZ2Vycy5jb250YWlucyhub3RpZmljYXRpb25NYW5hZ2VyKSk7CiAKICAgICB1aW50NjRf
dCBpZGVudGlmaWVyID0gV0tOb3RpZmljYXRpb25HZXRJRChub3RpZmljYXRpb24pOwpAQCAtMTE4
LDcgKzEyOCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OmNsb3NlV2ViTm90aWZp
Y2F0aW9uKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvCiAKIHZvaWQgV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXI6OmFkZE5vdGlmaWNhdGlvbk1hbmFnZXIoV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UmVmIG1hbmFnZXIpCiB7Ci0gICAgQVNTRVJUKCFtX2tub3duTWFuYWdlcnMuY29udGFpbnMobWFu
YWdlcikpOworICAgIEFTU0VSVCghbV9rbm93bk1hbmFnZXJzLmNvbnRhaW5zKG1hbmFnZXIpIHx8
IG1hbmFnZXIgPT0gV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbk1hbmFnZXIoKSk7CiAgICAgbV9rbm93bk1hbmFnZXJzLmFkZChtYW5hZ2VyKTsK
IH0KIApAQCAtMTQ1LDggKzE1NSwxNCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpy
ZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZgogCiBXS0Rp
Y3Rpb25hcnlSZWYgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6Om5vdGlmaWNhdGlvblBlcm1pc3Np
b25zKCkKIHsKLSAgICAvLyBJbml0aWFsIHBlcm1pc3Npb25zIGFyZSBhbHdheXMgZW1wdHkuCi0g
ICAgcmV0dXJuIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKTsKKyAgICBXS1JldGFpbihtX3Bl
cm1pc3Npb25zLmdldCgpKTsKKyAgICByZXR1cm4gbV9wZXJtaXNzaW9ucy5nZXQoKTsKK30KKwor
dm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2V0UGVybWlzc2lvbihjb25zdCBTdHJpbmcm
IG9yaWdpbiwgYm9vbCBhbGxvd2VkKQoreworICAgIGF1dG8gd2tBbGxvd2VkID0gYWRvcHRXSyhX
S0Jvb2xlYW5DcmVhdGUoYWxsb3dlZCkpOworICAgIFdLRGljdGlvbmFyeVNldEl0ZW0obV9wZXJt
aXNzaW9ucy5nZXQoKSwgdG9XSyhvcmlnaW4pLmdldCgpLCB3a0FsbG93ZWQuZ2V0KCkpOwogfQog
CiB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNs
aWNrKFdLUGFnZVJlZiwgV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKQpAQCAtMTU3LDYgKzE3Mywx
NiBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlv
bkNsaWNrKFdLUGFnZVJlZiwgV0tEYXRhUmVmCiAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJv
dmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbl9iKG1fb3duaW5nTWFuYWdlci5nZXQoaWRlbnRpZmll
ciksIG5vdGlmaWNhdGlvbklEKTsKIH0KIAordm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6
c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25z
KCkKK3sKKyAgICBhdXRvIHNoYXJlZE1hbmFnZXIgPSBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRT
aGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpOworICAgIGZvciAoYXV0byYg
aXRlcmF0b3IgOiBtX293bmluZ01hbmFnZXIpIHsKKyAgICAgICAgaWYgKGl0ZXJhdG9yLnZhbHVl
ICE9IHNoYXJlZE1hbmFnZXIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbl9iKHNoYXJlZE1hbmFn
ZXIsIHV1aWRUb0RhdGEoaXRlcmF0b3Iua2V5KS5nZXQoKSk7CisgICAgfQorfQorCiB2b2lkIFdl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZXNldCgpCiB7CiAgICAgZm9yIChhdXRvIGl0ZXJhdG9y
IDogbV9vd25pbmdNYW5hZ2VyKSB7CkBAIC0xNjYsNiArMTkyLDcgQEAgdm9pZCBXZWJOb3RpZmlj
YXRpb25Qcm92aWRlcjo6cmVzZXQoKQogICAgIH0KIAogICAgIG1fb3duaW5nTWFuYWdlci5jbGVh
cigpOworICAgIG1fcGVybWlzc2lvbnMgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVh
dGUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oCmluZGV4IDBjMzg3YTZlNmI1NS4uNTdiNmNm
YWE1MTJlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlv
blByb3ZpZGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Q
cm92aWRlci5oCkBAIC00OSwxMSArNDksMTYgQEAgcHVibGljOgogICAgIFdLRGljdGlvbmFyeVJl
ZiBub3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwogCiAgICAgdm9pZCBzaW11bGF0ZVdlYk5vdGlm
aWNhdGlvbkNsaWNrKFdLUGFnZVJlZiwgV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKTsKKyAgICB2
b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0
aW9ucygpOworCiAgICAgdm9pZCByZXNldCgpOwogCisgICAgdm9pZCBzZXRQZXJtaXNzaW9uKGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGFsbG93ZWQpOworCiBwcml2YXRlOgogICAgIEhhc2hT
ZXQ8V0tSZXRhaW5QdHI8V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPj4gbV9rbm93bk1hbmFnZXJz
OwogICAgIEhhc2hNYXA8VVVJRCwgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiBtX293bmluZ01h
bmFnZXI7CisgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gbV9wZXJtaXNz
aW9uczsKIH07CiAKIH0K
</data>
<flag name="commit-queue"
          id="478642"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451798</attachid>
            <date>2022-02-12 16:57:14 -0800</date>
            <delta_ts>2022-02-12 20:50:00 -0800</delta_ts>
            <desc>EWS v7</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>111254</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjExNjczMDkyNDhiYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcwpAQCAtMCwwICsxLDMwIEBACisKK2xldCBt
ZXNzYWdlQ2xpZW50cyA9IGFzeW5jIGZ1bmN0aW9uKG1zZykgeyAKKyAgICBjb25zdCBhbGxDbGll
bnRzID0gYXdhaXQgY2xpZW50cy5tYXRjaEFsbCh7CisgICAgICAgIGluY2x1ZGVVbmNvbnRyb2xs
ZWQ6IHRydWUKKyAgICB9KTsKKworICAgIGZvciAoY29uc3QgY2xpZW50IG9mIGFsbENsaWVudHMp
CisgICAgICAgIGNsaWVudC5wb3N0TWVzc2FnZShtc2cpOworfQorCitzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ25vdGlmaWNhdGlvbmNsaWNrJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBh
d2FpdCBtZXNzYWdlQ2xpZW50cygiY2xpY2tlZCIpOworICAgIGV2ZW50Lm5vdGlmaWNhdGlvbi5j
bG9zZSgpOworfSk7CisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcignbm90aWZpY2F0aW9uY2xvc2Un
LCBhc3luYyBmdW5jdGlvbihldmVudCkgeworICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJjbG9z
ZWQiKTsKK30pOworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyBmdW5j
dGlvbihldmVudCkgeworICAgIC8vIFJlcGx5IGlmIHRoZSBzaG93IHN1Y2NlZWRlZCBvciBmYWls
ZWQuCisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgcmVnaXN0cmF0aW9uLnNob3dOb3RpZmljYXRp
b24oIlRoaXMgaXMgYSBub3RpZmljYXRpb24iKTsKKyAgICB9IGNhdGNoKGVycm9yKSB7CisgICAg
ICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJzaG93RmFpbGVkIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoInNob3duIik7Cit9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3Rp
ZmljYXRpb24tYWxsb3dlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmFkNTRiMDI0ZDEzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25v
dGlmaWNhdGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRl
c3RzIHRoYXQgYSBub3RpZmljYXRpb24gc2hvd24gYnkgYSBzZXJ2aWNlIHdvcmtlciBjYW4gYmUg
Y2xpY2tlZCBhbmQgY2xvc2VkLCB3aXRoIHRob3NlIGFjdGlvbnMgYmVpbmcgb2JzZXJ2YWJsZSBi
eSB0aGUgc2VydmljZSB3b3JrZXIKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgTm90aWZpY2F0aW9uLnBlcm1pc3Npb24gaXMgImdyYW50ZWQiCitQQVNTIGdvdENsaWNrZWQg
aXMgZmFsc2UKK1BBU1MgZ290Q2xvc2VkIGlzIGZhbHNlCitQQVNTIGdvdENsaWNrZWQgaXMgdHJ1
ZQorUEFTUyBnb3RDbG9zZWQgaXMgZmFsc2UKK1BBU1MgQ2xvc2UgaGFzIGJlZW4gb2JzZXJ2ZWQK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hv
d25vdGlmaWNhdGlvbi1hbGxvd2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFkNGEwMDE1Njc5NQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24t
YWxsb3dlZC5odG1sCkBAIC0wLDAgKzEsNzYgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
bm90aWZpY2F0aW9ucy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlv
biBmYWlsVGhlVGVzdChtc2cpCit7CisgICAgdGVzdEZhaWxlZChtc2cpOworICAgIGlmICh0ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVz
dFJ1bm5lci5ncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24odGVzdFVSTCk7CisgICAgc2V0
VGltZW91dCgiZmFpbFRoZVRlc3QoJ3RpbWVkIG91dCcpIiwgMTUwMDApOworfQorCitkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uIHNob3duIGJ5IGEgc2VydmljZSB3
b3JrZXIgY2FuIGJlIGNsaWNrZWQgYW5kIGNsb3NlZCwgd2l0aCB0aG9zZSBhY3Rpb25zIGJlaW5n
IG9ic2VydmFibGUgYnkgdGhlIHNlcnZpY2Ugd29ya2VyIik7CisKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygiTm90aWZpY2F0aW9uLnBlcm1pc3Npb24iLCAiZ3JhbnRlZCIpOworCithc3luYyBmdW5j
dGlvbiByZWdpc3RlclNlcnZpY2VXb3JrZXIoKSB7CisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3
YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCdyZXNvdXJjZXMvc2hvd25vdGlm
aWNhdGlvbi13b3JrZXIuanMnKTsKKyAgICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAg
ICAgcmV0dXJuIHRlc3RGYWlsZWQoIk5vIHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChy
ZWdpc3RyYXRpb24uYWN0aXZlKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1l
c3NhZ2UoIlN0YXJ0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFs
bGluZ1dvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGlu
Z1dvcmtlcikKKyAgICAgICAgZmFpbFRoZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcg
d29ya2VyIik7CisKKyAgICBpbnN0YWxsaW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRl
Y2hhbmdlIiwgKCkgPT4geworICAgICAgICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0g
ImFjdGl2YXRlZCIpIHsKKyAgICAgICAgICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2Uo
InRyeXNob3ciKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCit2YXIgZ290Q2xpY2tlZCA9IGZh
bHNlOwordmFyIGdvdENsb3NlZCA9IGZhbHNlOworCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5kYXRh
ID09ICJzaG93RmFpbGVkIikgeworICAgICAgICBmYWlsVGhlVGVzdCgiVW5leHBlY3RlZGx5IHJl
Y2VpdmVkIHRoZSBmYWlsZWQtdG8tc2hvdyBtZXNzYWdlIik7CisgICAgfSBlbHNlIGlmIChldmVu
dC5kYXRhID09ICJzaG93biIpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9ucygpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xpY2tlZCIp
IHsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZ290Q2xpY2tlZCIpOworICAgICAgICBzaG91bGRC
ZUZhbHNlKCJnb3RDbG9zZWQiKTsKKyAgICAgICAgZ290Q2xpY2tlZCA9IHRydWU7CisgICAgfSBl
bHNlIGlmIChldmVudC5kYXRhID09ICJjbG9zZWQiKSB7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgi
Z290Q2xpY2tlZCIpCisgICAgICAgIHNob3VsZEJlRmFsc2UoImdvdENsb3NlZCIpCisgICAgICAg
IGdvdENsb3NlZCA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTWVz
c2FnZSByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOworICAgIH0KKyAgICAKKyAgICBpZiAoZ290
Q2xvc2VkKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNsb3NlIGhhcyBiZWVuIG9ic2VydmVkIik7
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgIH0KK30pOworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0icmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkiPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5p
ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
c2hvd25vdGlmaWNhdGlvbi1kZW5pZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uMjAxOGE0M2U1ZGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5p
ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgbm90aWZp
Y2F0aW9uIHNob3duIGJ5IGEgc2VydmljZSB3b3JrZXIgY2FuIGJlIGNsaWNrZWQgYW5kIGNsb3Nl
ZCwgd2l0aCB0aG9zZSBhY3Rpb25zIGJlaW5nIG9ic2VydmFibGUgYnkgdGhlIHNlcnZpY2Ugd29y
a2VyCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIE5vdGlmaWNhdGlvbi5w
ZXJtaXNzaW9uIGlzICJkZW5pZWQiCitQQVNTIE5vdGlmaWNhdGlvbiBmYWlsZWQgdG8gc2hvdwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zaG93
bm90aWZpY2F0aW9uLWRlbmllZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5pZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjc3NDZmN2M2NmU0NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tZGVu
aWVkLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy9ub3Rp
ZmljYXRpb25zLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGZh
aWxUaGVUZXN0KG1zZykKK3sKKyAgICB0ZXN0RmFpbGVkKG1zZyk7CisgICAgaWYgKHRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVu
bmVyLmRlbnlXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKHRlc3RVUkwpOworICAgIHNldFRpbWVv
dXQoImZhaWxUaGVUZXN0KCd0aW1lZCBvdXQnKSIsIDE1MDAwKTsKK30KKworZGVzY3JpcHRpb24o
IlRoaXMgdGVzdHMgdGhhdCBhIG5vdGlmaWNhdGlvbiBzaG93biBieSBhIHNlcnZpY2Ugd29ya2Vy
IGNhbiBiZSBjbGlja2VkIGFuZCBjbG9zZWQsIHdpdGggdGhvc2UgYWN0aW9ucyBiZWluZyBvYnNl
cnZhYmxlIGJ5IHRoZSBzZXJ2aWNlIHdvcmtlciIpOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmco
Ik5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIiwgImRlbmllZCIpOworCithc3luYyBmdW5jdGlvbiBy
ZWdpc3RlclNlcnZpY2VXb3JrZXIoKSB7CisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5h
dmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCdyZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlv
bi13b3JrZXIuanMnKTsKKyAgICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAgICAgcmV0
dXJuIHRlc3RGYWlsZWQoIk5vIHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChyZWdpc3Ry
YXRpb24uYWN0aXZlKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1lc3NhZ2Uo
IlN0YXJ0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFsbGluZ1dv
cmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGluZ1dvcmtl
cikKKyAgICAgICAgZmFpbFRoZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcgd29ya2Vy
Iik7CisKKyAgICBpbnN0YWxsaW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRlY2hhbmdl
IiwgKCkgPT4geworICAgICAgICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0gImFjdGl2
YXRlZCIpIHsKKyAgICAgICAgICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2UoInRyeXNo
b3ciKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5kYXRh
ID09ICJzaG93RmFpbGVkIikgeworICAgICAgICB0ZXN0UGFzc2VkKCJOb3RpZmljYXRpb24gZmFp
bGVkIHRvIHNob3ciKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09
ICJzaG93biIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTm90aWZpY2F0aW9uIHNob3duLCBidXQg
c2hvdWxkbid0IGhhdmUgYmVlbiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQo
Ik1lc3NhZ2UgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKKyAgICB9Cit9KTsKKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJlZ2lzdGVyU2VydmljZVdvcmtlcigpIj4KKzwv
Ym9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvbm90aWZpY2F0aW9ucy9pZGxoYXJuZXNzLmh0dHBzLmFueS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL25vdGlmaWNhdGlvbnMv
aWRsaGFybmVzcy5odHRwcy5hbnktZXhwZWN0ZWQudHh0CmluZGV4IDM1ODk5NWQ2ZWY1ZS4uMzNk
NDU2MDU1MzQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL25vdGlmaWNhdGlvbnMvaWRsaGFybmVzcy5odHRwcy5hbnktZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbm90aWZp
Y2F0aW9ucy9pZGxoYXJuZXNzLmh0dHBzLmFueS1leHBlY3RlZC50eHQKQEAgLTYyLDYgKzYyLDYg
QEAgRkFJTCBOb3RpZmljYXRpb24gaW50ZXJmYWNlOiBub3RpZmljYXRpb24gbXVzdCBpbmhlcml0
IHByb3BlcnR5ICJkYXRhIiB3aXRoIHRoZQogRkFJTCBOb3RpZmljYXRpb24gaW50ZXJmYWNlOiBu
b3RpZmljYXRpb24gbXVzdCBpbmhlcml0IHByb3BlcnR5ICJhY3Rpb25zIiB3aXRoIHRoZSBwcm9w
ZXIgdHlwZSBhc3NlcnRfaW5oZXJpdHM6IHByb3BlcnR5ICJhY3Rpb25zIiBub3QgZm91bmQgaW4g
cHJvdG90eXBlIGNoYWluCiBQQVNTIE5vdGlmaWNhdGlvbiBpbnRlcmZhY2U6IG5vdGlmaWNhdGlv
biBtdXN0IGluaGVyaXQgcHJvcGVydHkgImNsb3NlKCkiIHdpdGggdGhlIHByb3BlciB0eXBlCiBQ
QVNTIE5vdGlmaWNhdGlvbkV2ZW50IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVz
IG9mIGludGVyZmFjZSBvYmplY3QKLUZBSUwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRl
cmZhY2U6IG9wZXJhdGlvbiBzaG93Tm90aWZpY2F0aW9uKERPTVN0cmluZywgb3B0aW9uYWwgTm90
aWZpY2F0aW9uT3B0aW9ucykgYXNzZXJ0X293bl9wcm9wZXJ0eTogaW50ZXJmYWNlIHByb3RvdHlw
ZSBvYmplY3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJhdGlvbiBleHBlY3RlZCBwcm9wZXJ0eSAi
c2hvd05vdGlmaWNhdGlvbiIgbWlzc2luZwotRkFJTCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
IGludGVyZmFjZTogb3BlcmF0aW9uIGdldE5vdGlmaWNhdGlvbnMob3B0aW9uYWwgR2V0Tm90aWZp
Y2F0aW9uT3B0aW9ucykgYXNzZXJ0X293bl9wcm9wZXJ0eTogaW50ZXJmYWNlIHByb3RvdHlwZSBv
YmplY3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJhdGlvbiBleHBlY3RlZCBwcm9wZXJ0eSAiZ2V0
Tm90aWZpY2F0aW9ucyIgbWlzc2luZworUEFTUyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGlu
dGVyZmFjZTogb3BlcmF0aW9uIHNob3dOb3RpZmljYXRpb24oRE9NU3RyaW5nLCBvcHRpb25hbCBO
b3RpZmljYXRpb25PcHRpb25zKQorUEFTUyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGludGVy
ZmFjZTogb3BlcmF0aW9uIGdldE5vdGlmaWNhdGlvbnMob3B0aW9uYWwgR2V0Tm90aWZpY2F0aW9u
T3B0aW9ucykKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9ub3RpZmljYXRpb25zL2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3Jr
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9ub3RpZmljYXRpb25zL2lkbGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3JrZXItZXhw
ZWN0ZWQudHh0CmluZGV4IDQyNDZmZTU2NjJlZC4uMzE2YzEzN2MzYjM1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL25vdGlmaWNhdGlvbnMv
aWRsaGFybmVzcy5odHRwcy5hbnkuc2VydmljZXdvcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ub3RpZmljYXRpb25zL2lk
bGhhcm5lc3MuaHR0cHMuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0zNSwxOCAr
MzUsMTggQEAgRkFJTCBOb3RpZmljYXRpb24gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgcmVxdWlyZUlu
dGVyYWN0aW9uIGFzc2VydF9vd25fcHJvcGVydHk6IHMKIEZBSUwgTm90aWZpY2F0aW9uIGludGVy
ZmFjZTogYXR0cmlidXRlIGRhdGEgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBo
YXZlIG93biBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uIiBleHBlY3RlZCBwcm9wZXJ0eSAiTm90aWZp
Y2F0aW9uIiBtaXNzaW5nCiBGQUlMIE5vdGlmaWNhdGlvbiBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBh
Y3Rpb25zIGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVy
dHkgIk5vdGlmaWNhdGlvbiIgZXhwZWN0ZWQgcHJvcGVydHkgIk5vdGlmaWNhdGlvbiIgbWlzc2lu
ZwogRkFJTCBOb3RpZmljYXRpb24gaW50ZXJmYWNlOiBvcGVyYXRpb24gY2xvc2UoKSBhc3NlcnRf
b3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJOb3RpZmljYXRp
b24iIGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb24iIG1pc3NpbmcKLUZBSUwgTm90aWZp
Y2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJm
YWNlIG9iamVjdCBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHBy
b3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgZXhwZWN0ZWQgcHJvcGVydHkgIk5vdGlmaWNhdGlv
bkV2ZW50IiBtaXNzaW5nCi1GQUlMIE5vdGlmaWNhdGlvbkV2ZW50IGludGVyZmFjZSBvYmplY3Qg
bGVuZ3RoIGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVy
dHkgIk5vdGlmaWNhdGlvbkV2ZW50IiBleHBlY3RlZCBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uRXZl
bnQiIG1pc3NpbmcKLUZBSUwgTm90aWZpY2F0aW9uRXZlbnQgaW50ZXJmYWNlIG9iamVjdCBuYW1l
IGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIk5v
dGlmaWNhdGlvbkV2ZW50IiBleHBlY3RlZCBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uRXZlbnQiIG1p
c3NpbmcKLUZBSUwgTm90aWZpY2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHBy
b3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgYXNzZXJ0X293bl9wcm9wZXJ0
eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uRXZlbnQiIGV4
cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgbWlzc2luZwotRkFJTCBOb3RpZmlj
YXRpb25FdmVudCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZh
Y2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25zdHJ1Y3RvciIgcHJvcGVydHkgYXNzZXJ0X293bl9w
cm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uRXZl
bnQiIGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgbWlzc2luZwotRkFJTCBO
b3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBp
bnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29wYWJsZXMgcHJvcGVydHkgYXNzZXJ0
X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90aWZpY2F0
aW9uRXZlbnQiIGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgbWlzc2luZwot
RkFJTCBOb3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBub3RpZmljYXRpb24g
YXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90
aWZpY2F0aW9uRXZlbnQiIGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgbWlz
c2luZwotRkFJTCBOb3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBhY3Rpb24g
YXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90
aWZpY2F0aW9uRXZlbnQiIGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgbWlz
c2luZwotRkFJTCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGludGVyZmFjZTogb3BlcmF0aW9u
IHNob3dOb3RpZmljYXRpb24oRE9NU3RyaW5nLCBvcHRpb25hbCBOb3RpZmljYXRpb25PcHRpb25z
KSBhc3NlcnRfb3duX3Byb3BlcnR5OiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBtaXNzaW5n
IG5vbi1zdGF0aWMgb3BlcmF0aW9uIGV4cGVjdGVkIHByb3BlcnR5ICJzaG93Tm90aWZpY2F0aW9u
IiBtaXNzaW5nCi1GQUlMIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gaW50ZXJmYWNlOiBvcGVy
YXRpb24gZ2V0Tm90aWZpY2F0aW9ucyhvcHRpb25hbCBHZXROb3RpZmljYXRpb25PcHRpb25zKSBh
c3NlcnRfb3duX3Byb3BlcnR5OiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBtaXNzaW5nIG5v
bi1zdGF0aWMgb3BlcmF0aW9uIGV4cGVjdGVkIHByb3BlcnR5ICJnZXROb3RpZmljYXRpb25zIiBt
aXNzaW5nCi1GQUlMIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJpYnV0
ZSBvbm5vdGlmaWNhdGlvbmNsaWNrIGFzc2VydF9vd25fcHJvcGVydHk6IFRoZSBnbG9iYWwgb2Jq
ZWN0IG11c3QgaGF2ZSBhIHByb3BlcnR5ICJvbm5vdGlmaWNhdGlvbmNsaWNrIiBleHBlY3RlZCBw
cm9wZXJ0eSAib25ub3RpZmljYXRpb25jbGljayIgbWlzc2luZwotRkFJTCBTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgb25ub3RpZmljYXRpb25jbG9zZSBhc3Nl
cnRfb3duX3Byb3BlcnR5OiBUaGUgZ2xvYmFsIG9iamVjdCBtdXN0IGhhdmUgYSBwcm9wZXJ0eSAi
b25ub3RpZmljYXRpb25jbG9zZSIgZXhwZWN0ZWQgcHJvcGVydHkgIm9ubm90aWZpY2F0aW9uY2xv
c2UiIG1pc3NpbmcKLUZBSUwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVyZmFjZTogc2Vs
ZiBtdXN0IGluaGVyaXQgcHJvcGVydHkgIm9ubm90aWZpY2F0aW9uY2xpY2siIHdpdGggdGhlIHBy
b3BlciB0eXBlIGFzc2VydF9vd25fcHJvcGVydHk6IGV4cGVjdGVkIHByb3BlcnR5ICJvbm5vdGlm
aWNhdGlvbmNsaWNrIiBtaXNzaW5nCi1GQUlMIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRl
cmZhY2U6IHNlbGYgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJvbm5vdGlmaWNhdGlvbmNsb3NlIiB3
aXRoIHRoZSBwcm9wZXIgdHlwZSBhc3NlcnRfb3duX3Byb3BlcnR5OiBleHBlY3RlZCBwcm9wZXJ0
eSAib25ub3RpZmljYXRpb25jbG9zZSIgbWlzc2luZworUEFTUyBOb3RpZmljYXRpb25FdmVudCBp
bnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0CitQ
QVNTIE5vdGlmaWNhdGlvbkV2ZW50IGludGVyZmFjZSBvYmplY3QgbGVuZ3RoCitQQVNTIE5vdGlm
aWNhdGlvbkV2ZW50IGludGVyZmFjZSBvYmplY3QgbmFtZQorUEFTUyBOb3RpZmljYXRpb25FdmVu
dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90
eXBlIG9iamVjdAorUEFTUyBOb3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBh
bmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25zdHJ1Y3Rv
ciIgcHJvcGVydHkKK1BBU1MgTm90aWZpY2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBleGlzdGVuY2Ug
YW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyBAQHVuc2NvcGFi
bGVzIHByb3BlcnR5CitQQVNTIE5vdGlmaWNhdGlvbkV2ZW50IGludGVyZmFjZTogYXR0cmlidXRl
IG5vdGlmaWNhdGlvbgorUEFTUyBOb3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2U6IGF0dHJpYnV0
ZSBhY3Rpb24KK1BBU1MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IG9wZXJh
dGlvbiBzaG93Tm90aWZpY2F0aW9uKERPTVN0cmluZywgb3B0aW9uYWwgTm90aWZpY2F0aW9uT3B0
aW9ucykKK1BBU1MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IG9wZXJhdGlv
biBnZXROb3RpZmljYXRpb25zKG9wdGlvbmFsIEdldE5vdGlmaWNhdGlvbk9wdGlvbnMpCitQQVNT
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBvbm5vdGlmaWNh
dGlvbmNsaWNrCitQQVNTIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IGF0dHJp
YnV0ZSBvbm5vdGlmaWNhdGlvbmNsb3NlCitQQVNTIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBp
bnRlcmZhY2U6IHNlbGYgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJvbm5vdGlmaWNhdGlvbmNsaWNr
IiB3aXRoIHRoZSBwcm9wZXIgdHlwZQorUEFTUyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgaW50
ZXJmYWNlOiBzZWxmIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAib25ub3RpZmljYXRpb25jbG9zZSIg
d2l0aCB0aGUgcHJvcGVyIHR5cGUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1By
ZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0
cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKaW5kZXggOGQzZWVkMTM5
NTRmLi4wMWIyZjVlNmI4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJl
bmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRz
L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbApAQCAtNjQ0LDggKzY0NCwx
MCBAQCBOb3RpZmljYXRpb25FdmVudEVuYWJsZWQ6CiAgIGNvbmRpdGlvbjogRU5BQkxFKE5PVElG
SUNBVElPTl9FVkVOVCkKICAgZGVmYXVsdFZhbHVlOgogICAgIFdlYkNvcmU6CisgICAgICAiRU5B
QkxFKE5PVElGSUNBVElPTl9FVkVOVCkiOiB0cnVlCiAgICAgICBkZWZhdWx0OiBmYWxzZQogICAg
IFdlYktpdDoKKyAgICAgICJFTkFCTEUoTk9USUZJQ0FUSU9OX0VWRU5UKSI6IHRydWUKICAgICAg
IGRlZmF1bHQ6IGZhbHNlCiAKIE9mZnNjcmVlbkNhbnZhc0VuYWJsZWQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4
IDY4NWIxZTRkMWEzYS4uMDhlMmE4ZWQ4YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtNDAsNyArNDAsOSBA
QAogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0
aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uRGF0YS5oIgorI2luY2x1ZGUgIk5v
dGlmaWNhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAi
V2luZG93RXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9y
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC0xMDIsOSArMTA0LDE5
IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KGNsaWVudC0+Y2hlY2tQZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgIT0gUGVy
bWlzc2lvbjo6R3JhbnRlZCkgewotICAgICAgICBkaXNwYXRjaEVycm9yRXZlbnQoKTsKKyAgICAg
ICAgc3dpdGNoIChtX25vdGlmaWNhdGlvblNvdXJjZSkgeworICAgICAgICBjYXNlIE5vdGlmaWNh
dGlvblNvdXJjZTo6RG9jdW1lbnQ6CisgICAgICAgICAgICBkaXNwYXRjaEVycm9yRXZlbnQoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5vdGlmaWNhdGlvblNvdXJjZTo6U2Vy
dmljZVdvcmtlcjoKKyAgICAgICAgICAgIC8vIFdlIGRpZCBhIHBlcm1pc3Npb24gY2hlY2sgd2hl
biBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKCkgd2FzIGNhbGxl
ZC4KKyAgICAgICAgICAgIC8vIElmIHBlcm1pc3Npb24gaGFzIHNpbmNlIGJlZW4gcmV2b2tlZCwg
dGhlbiBzaWxlbnRseSBmYWlsaW5nIGhlcmUgaXMgZXhwZWN0ZWQgYmVoYXZpb3IuCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBp
ZiAoY2xpZW50LT5zaG93KCp0aGlzKSkKICAgICAgICAgbV9zdGF0ZSA9IFNob3dpbmc7CiB9CkBA
IC0xNTgsMjAgKzE3MCw1NCBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6ZmluYWxpemUoKQogCiB2b2lk
IE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hTaG93RXZlbnQoKQogeworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisKKyAgICBpZiAobV9ub3RpZmljYXRpb25Tb3VyY2UgIT0gTm90aWZpY2F0aW9u
U291cmNlOjpEb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgcXVldWVUYXNrVG9EaXNw
YXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpVc2VySW50ZXJhY3Rpb24sIEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLnNob3dFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRjaENsaWNr
RXZlbnQoKQogewotICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1Nv
dXJjZTo6VXNlckludGVyYWN0aW9uLCBbdGhpc10gewotICAgICAgICBXaW5kb3dGb2N1c0FsbG93
ZWRJbmRpY2F0b3Igd2luZG93Rm9jdXNBbGxvd2VkOwotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5v
LCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwotICAgIH0pOworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisKKyAgICBzd2l0Y2ggKG1fbm90aWZpY2F0aW9uU291cmNlKSB7CisgICAgY2Fz
ZSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3VtZW50OgorICAgICAgICBxdWV1ZVRhc2tLZWVwaW5n
T2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgW3RoaXNdIHsK
KyAgICAgICAgICAgIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvciB3aW5kb3dGb2N1c0FsbG93
ZWQ7CisgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpO
bykpOworICAgICAgICB9KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb3RpZmljYXRpb25T
b3VyY2U6OlNlcnZpY2VXb3JrZXI6CisgICAgICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CisgICAgICAgIGlmICghY29udGV4dCkKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvbnRleHQtPmlzU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlKCkpOworICAgICAgICBzdGF0aWNfY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUq
Pihjb250ZXh0KS0+cG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChOb3RpZmljYXRpb25F
dmVudFR5cGU6OkNsaWNrLCAqdGhpcywgeyB9KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogfQog
CiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KCkKIHsKLSAgICBxdWV1ZVRh
c2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KworICAgIHN3aXRjaCAobV9ub3RpZmljYXRpb25Tb3VyY2UpIHsKKyAgICBjYXNlIE5vdGlmaWNh
dGlvblNvdXJjZTo6RG9jdW1lbnQ6CisgICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgq
dGhpcywgVGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5jbG9zZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8pKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb3RpZmljYXRpb25Tb3VyY2U6OlNl
cnZpY2VXb3JrZXI6CisgICAgICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CisgICAgICAgIGlmICghY29udGV4dCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGNvbnRleHQtPmlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCkp
OworICAgICAgICBzdGF0aWNfY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUqPihjb250ZXh0
KS0+cG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChOb3RpZmljYXRpb25FdmVudFR5cGU6
OkNsb3NlLCAqdGhpcywgeyB9KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZmluYWxp
emUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25FdmVudC5jcHAKaW5kZXggNTg3NGI3NjEwMmZmLi5lMWQyOTdi
OTZhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkV2ZW50LmNwcApAQCAtMzAsNiArMzAsMjcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTm90aWZpY2F0aW9u
RXZlbnQpOworCitSZWY8Tm90aWZpY2F0aW9uRXZlbnQ+IE5vdGlmaWNhdGlvbkV2ZW50OjpjcmVh
dGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSW5pdCYmIGluaXQsIElzVHJ1c3RlZCBpc1RydXN0
ZWQpCit7CisgICAgYXV0byogbm90aWZpY2F0aW9uID0gaW5pdC5ub3RpZmljYXRpb24uZ2V0KCk7
CisgICAgYXV0byBhY3Rpb24gPSBpbml0LmFjdGlvbjsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBOb3RpZmljYXRpb25FdmVudCh0eXBlLCBXVEZNb3ZlKGluaXQpLCBub3RpZmljYXRpb24sIGFj
dGlvbiwgaXNUcnVzdGVkKSk7Cit9CisKK1JlZjxOb3RpZmljYXRpb25FdmVudD4gTm90aWZpY2F0
aW9uRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbiwgY29uc3QgU3RyaW5nJiBhY3Rpb24sIElzVHJ1c3RlZCBpc1RydXN0ZWQpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTm90aWZpY2F0aW9uRXZlbnQodHlwZSwgeyB9LCBu
b3RpZmljYXRpb24sIGFjdGlvbiwgaXNUcnVzdGVkKSk7Cit9CisKK05vdGlmaWNhdGlvbkV2ZW50
OjpOb3RpZmljYXRpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBOb3RpZmljYXRpb25F
dmVudEluaXQmJiBldmVudEluaXQsIE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBjb25zdCBT
dHJpbmcmIGFjdGlvbiwgSXNUcnVzdGVkIGlzVHJ1c3RlZCkKKyAgICA6IEV4dGVuZGFibGVFdmVu
dCh0eXBlLCBXVEZNb3ZlKGV2ZW50SW5pdCksIGlzVHJ1c3RlZCkKKyAgICAsIG1fbm90aWZpY2F0
aW9uKG5vdGlmaWNhdGlvbikKKyAgICAsIG1fYWN0aW9uKGFjdGlvbikKK3sKK30KKwogTm90aWZp
Y2F0aW9uRXZlbnQ6On5Ob3RpZmljYXRpb25FdmVudCgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25FdmVudC5oCmlu
ZGV4IDkyN2ViNTAxYWQ5Yi4uYjIxYzJlZDg0YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRXZlbnQuaApAQCAtMzMs
MTQgKzMzLDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZW51bSBjbGFzcyBOb3RpZmlj
YXRpb25FdmVudFR5cGUgOiBib29sIHsKKyAgICBDbGljaywKKyAgICBDbG9zZSwKK307CisKK3N0
cnVjdCBOb3RpZmljYXRpb25FdmVudEluaXQgOiBFeHRlbmRhYmxlRXZlbnRJbml0IHsKKyAgICBS
ZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb247CisgICAgU3RyaW5nIGFjdGlvbjsKK307
CisKIGNsYXNzIE5vdGlmaWNhdGlvbkV2ZW50IGZpbmFsIDogcHVibGljIEV4dGVuZGFibGVFdmVu
dCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChOb3RpZmljYXRpb25FdmVudCk7CiBwdWJs
aWM6CiAgICAgfk5vdGlmaWNhdGlvbkV2ZW50KCk7CiAKLSAgICBzdHJ1Y3QgSW5pdCA6IEV4dGVu
ZGFibGVFdmVudEluaXQgewotICAgICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRp
b247Ci0gICAgICAgIFN0cmluZyBhY3Rpb247Ci0gICAgfTsKKyAgICB1c2luZyBJbml0ID0gTm90
aWZpY2F0aW9uRXZlbnRJbml0OworCisgICAgc3RhdGljIFJlZjxOb3RpZmljYXRpb25FdmVudD4g
Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmLCBJbml0JiYsIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6
Tm8pOworICAgIHN0YXRpYyBSZWY8Tm90aWZpY2F0aW9uRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
U3RyaW5nJiwgTm90aWZpY2F0aW9uKiwgY29uc3QgU3RyaW5nJiBhY3Rpb24sIElzVHJ1c3RlZCA9
IElzVHJ1c3RlZDo6Tm8pOwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBOb3RpZmljYXRpb25FdmVudEludGVyZmFjZVR5cGU7IH0KIApA
QCAtNDgsNiArNTksOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBhY3Rpb24oKSB7IHJl
dHVybiBtX2FjdGlvbjsgfQogCiBwcml2YXRlOgorICAgIE5vdGlmaWNhdGlvbkV2ZW50KGNvbnN0
IEF0b21TdHJpbmcmLCBOb3RpZmljYXRpb25FdmVudEluaXQmJiwgTm90aWZpY2F0aW9uKiwgY29u
c3QgU3RyaW5nJiBhY3Rpb24sIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOworCiAgICAgUmVm
UHRyPE5vdGlmaWNhdGlvbj4gbV9ub3RpZmljYXRpb247CiAgICAgU3RyaW5nIG1fYWN0aW9uOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbXB0eVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbXB0eVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAppbmRleCAyMzFiM2JmMWNhOTguLjcxYzcyZWY5Yzk2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VtcHR5U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbXB0eVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtOTQsNiArOTQsMTAgQEAg
cHJpdmF0ZToKIAogICAgIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdzVmFsdWVzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXR0aW5nc1ZhbHVlczsgfQogCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCisgICAgTm90aWZpY2F0aW9uQ2xpZW50KiBub3RpZmljYXRpb25DbGllbnQo
KSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisjZW5kaWYKKwogICAgIGNsYXNzIEVtcHR5RXZl
bnRMb29wIGZpbmFsIDogcHVibGljIEV2ZW50TG9vcCB7CiAgICAgcHVibGljOgogICAgICAgICBz
dGF0aWMgUmVmPEVtcHR5RXZlbnRMb29wPiBjcmVhdGUoSlNDOjpWTSYgdm0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBkMDAwZDU5ZDVhMDUuLjA3
MjdiMWYxNGEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCkBAIC04MCw2ICs4MCwxMCBAQCBlbnVtIGNsYXNzIExvYWRlZEZyb21PcGFxdWVTb3VyY2Ug
OiB1aW50OF90OwogZW51bSBjbGFzcyBSZWZlcnJlclBvbGljeSA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIFRhc2tTb3VyY2UgOiB1aW50OF90OwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitj
bGFzcyBOb3RpZmljYXRpb25DbGllbnQ7CisjZW5kaWYKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKIGNsYXNzIFNlcnZpY2VXb3JrZXI7CiBjbGFzcyBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCBj
YmYyNmNiMTViZDUuLjNmZTUxZmQxZTQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTQwMyw3ICs0MDMsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VWRU5UKQotICAgIGJvb2wgbV9ub3RpZmljYXRp
b25FdmVudEVuYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9ub3RpZmljYXRpb25FdmVudEVu
YWJsZWQgeyB0cnVlIH07CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5o
CmluZGV4IDFkOGUzYWQyYWNiOS4uYTBkMTZkNzQ3MDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC05NCw2ICs5NCwx
MCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9
CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIG5vdGlmaWNhdGlv
bkNsaWVudCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRpZgorCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI+IG1fc2NyaXB0Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRNb2R1bGVMb2FkZXI+IG1fbW9kdWxlTG9hZGVyOwog
ICAgIFdvcmtlck9yV29ya2xldFRocmVhZCogbV90aHJlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuaAppbmRleCBiNGY3Njk0YzZiMWUuLmRjOTc3NGU5MmU3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiQ3Jvc3NP
cmlnaW5FbWJlZGRlclBvbGljeS5oIgogI2luY2x1ZGUgIkZldGNoUmVxdWVzdENyZWRlbnRpYWxz
LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbi5oIgogI2luY2x1ZGUgIldvcmtl
ck9yV29ya2xldFRocmVhZC5oIgogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRl
ICJXb3JrZXJUeXBlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDkwNGQ0ZmM4OGNhYS4u
ZjMzYjljMDYzZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlv
bkV2ZW50LmgiCiAjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50LmgiCkBAIC02OSw3ICs3
MCwxMyBAQCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjbwogewogfQogCi1TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU6On5TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSA9IGRlZmF1bHQ7CitTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGU6On5TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKQoreworICAgIC8v
IE5vdGlmaWNhdGlvbkNsaWVudCBtaWdodCBoYXZlIHNvbWUgaW50ZXJhY3Rpb25zIHBlbmRpbmcg
d2l0aCB0aGUgbWFpbiB0aHJlYWQsCisgICAgLy8gc28gaXQgc2hvdWxkIGFsc28gYmUgZGVzdHJv
eWVkIHRoZXJlLgorICAgIGNhbGxPbk1haW5UaHJlYWQoW25vdGlmaWNhdGlvbkNsaWVudCA9IFdU
Rk1vdmUobV9ub3RpZmljYXRpb25DbGllbnQpXSB7CisgICAgfSk7Cit9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlOjpub3RpZnlTZXJ2aWNlV29ya2VyUGFnZU9mQ3JlYXRpb25JZk5l
Y2Vzc2FyeSgpCiB7CkBAIC0yMDgsNiArMjE1LDMwIEBAIHZvaWQgU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlOjpkaWRTYXZlU2NyaXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiBzY3JpcHQsIEhhc2hN
CiAgICAgfQogfQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTl9FVkVOVCkKK3ZvaWQgU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlOjpwb3N0VGFza1RvRmlyZU5vdGlmaWNhdGlvbkV2ZW50KE5vdGlm
aWNhdGlvbkV2ZW50VHlwZSBldmVudFR5cGUsIE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBj
b25zdCBTdHJpbmcmIGFjdGlvbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisg
ICAgdGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbZXZlbnRUeXBlLCBwcm90ZWN0
ZWROb3RpZmljYXRpb24gPSBSZWYgeyBub3RpZmljYXRpb24gfSwgYWN0aW9uID0gYWN0aW9uLmlz
b2xhdGVkQ29weSgpXShhdXRvJiBzY29wZSkgeworICAgICAgICBzY29wZS5ldmVudExvb3AoKS5x
dWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbJnNjb3BlLCBwcm90ZWN0ZWRT
Y29wZSA9IFJlZiB7IHNjb3BlIH0sIGV2ZW50VHlwZSwgcHJvdGVjdGVkTm90aWZpY2F0aW9uLCBh
Y3Rpb25dIHsKKyAgICAgICAgICAgIEF0b21TdHJpbmcgZXZlbnROYW1lOworICAgICAgICAgICAg
c3dpdGNoIChldmVudFR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRU
eXBlOjpDbGljazoKKyAgICAgICAgICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkubm90
aWZpY2F0aW9uY2xpY2tFdmVudDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbG9zZToKKyAgICAgICAgICAgICAgICBldmVu
dE5hbWUgPSBldmVudE5hbWVzKCkubm90aWZpY2F0aW9uY2xvc2VFdmVudDsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byBldmVudCA9IE5v
dGlmaWNhdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBwcm90ZWN0ZWROb3RpZmljYXRpb24u
cHRyKCksIGFjdGlvbiwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmPihzY29wZSkuZGlzcGF0
Y2hFdmVudChldmVudCk7CisgICAgICAgIH0pOworICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1
bHRNb2RlKCkpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCAwNzA3OWYx
OTUzNDMuLjUxMGMxYjA3MmI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMzksMTEgKzM5LDE0
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIEV4
dGVuZGFibGVFdmVudDsKIGNsYXNzIFBhZ2U7Ci1zdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERh
dGE7CiBjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50OwogY2xhc3MgU2VydmljZVdvcmtlckNsaWVu
dHM7CiBjbGFzcyBTZXJ2aWNlV29ya2VyVGhyZWFkOwogCitlbnVtIGNsYXNzIE5vdGlmaWNhdGlv
bkV2ZW50VHlwZSA6IGJvb2w7CisKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsKKwog
Y2xhc3MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGZpbmFsIDogcHVibGljIFdvcmtlckdsb2Jh
bFNjb3BlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSk7CiBwdWJsaWM6CkBAIC04MCw3ICs4MywxMSBAQCBwdWJsaWM6CiAgICAgRmV0Y2hPcHRp
b25zOjpEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEZldGNo
T3B0aW9uczo6RGVzdGluYXRpb246OlNlcnZpY2V3b3JrZXI7IH0KIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFBhZ2UqIHNlcnZpY2VXb3JrZXJQYWdlKCk7Ci0gICAgCisKKyNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OX0VWRU5UKQorICAgIHZvaWQgcG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChO
b3RpZmljYXRpb25FdmVudFR5cGUsIE5vdGlmaWNhdGlvbiYsIGNvbnN0IFN0cmluZyYgYWN0aW9u
KTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmJiwgU2VydmljZVdvcmtlckRhdGEmJiwgY29uc3QgV29ya2Vy
UGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgU2VydmljZVdvcmtlclRocmVhZCYs
IFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlv
blByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xp
ZW50PiYmLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBub3RpZnlTZXJ2aWNlV29ya2VyUGFn
ZU9mQ3JlYXRpb25JZk5lY2Vzc2FyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDUw
MTc4MWY3MGQ1Zi4uMTVmMmI2YmNmNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0z
MCwxMCArMzAsMTMgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25QcmVsb2FkTWFuYWdlci5oIgor
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBl
cm1pc3Npb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgpAQCAt
MjY0LDIwICsyNjcsMzggQEAgTmF2aWdhdGlvblByZWxvYWRNYW5hZ2VyJiBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uOjpuYXZpZ2F0aW9uUHJlbG9hZCgpCiB9CiAKICNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OX0VWRU5UKQotdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZp
Y2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBOb3RpZmljYXRpb25PcHRpb25zJiBvcHRpb25zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
JiBwcm9taXNlKQordm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IE5vdGlmaWNhdGlvbk9wdGlvbnMmIG9wdGlvbnMsIERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByb21pc2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsKLSAgICBVTlVTRURf
UEFSQU0ob3B0aW9ucyk7CisgICAgaWYgKCFtX2FjdGl2ZVdvcmtlcikgeworICAgICAgICBwcm9t
aXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsICJSZWdpc3RyYXRpb24gZG9lcyBub3Qg
aGF2ZSBhbiBhY3RpdmUgd29ya2VyIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYXV0byogY2xpZW50ID0gY29udGV4dC5ub3RpZmljYXRpb25DbGllbnQoKTsKKyAgICBpZiAo
IWNsaWVudCkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3Is
ICJSZWdpc3RyYXRpb24gbm90IGFjdGl2ZSJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAotICAgIHByb21pc2UucmVqZWN0KCk7CisgICAgaWYgKGNsaWVudC0+Y2hlY2tQZXJtaXNzaW9u
KCZjb250ZXh0KSAhPSBOb3RpZmljYXRpb25QZXJtaXNzaW9uOjpHcmFudGVkKSB7CisgICAgICAg
IHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlJlZ2lzdHJhdGlvbiBkb2Vz
IG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gc2hvdyBub3RpZmljYXRpb25zIl9zIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gVGhlIE5vdGlmaWNhdGlvbiBpcyBrZXB0IGFsaXZl
IGJ5IHZpcnR1ZSBvZiBiZWluZyBzaG93KCknbiBzb29uLgorICAgIC8vIEZJWE1FOiBXaGVuIGlt
cGxlbWVudGluZyBnZXROb3RpZmljYXRpb25zKCksIHN0b3JlIHRoaXMgTm90aWZpY2F0aW9uIGlu
IHRoZSByZWdpc3RyYXRpb24ncyBub3RpZmljYXRpb24gbGlzdC4KKyAgICBhdXRvIG5vdGlmaWNh
dGlvbiA9IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnRleHQsIHRpdGxlLCBvcHRpb25zKTsKKwor
ICAgIGNvbnRleHQuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxh
dGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgpIG11dGFibGUgeworICAgICAgICBw
cm9taXNlLnJlc29sdmUoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uOjpnZXROb3RpZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBH
ZXROb3RpZmljYXRpb25PcHRpb25zJiBmaWx0ZXIsIERPTVByb21pc2VEZWZlcnJlZDxJRExTZXF1
ZW5jZTxJRExET01TdHJpbmc+PiBwcm9taXNlKQogewogICAgIFVOVVNFRF9QQVJBTShmaWx0ZXIp
OwogCi0gICAgcHJvbWlzZS5yZWplY3QoKTsKLQorICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlv
biB7IFR5cGVFcnJvciwgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uZ2V0Tm90aWZpY2F0aW9u
cyBub3QgeWV0IGltcGxlbWVudGVkIl9zIH0pOwogfQogI2VuZGlmIC8vIEVOQUJMRShOT1RJRklD
QVRJT05fRVZFTlQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBjMGUwMzYzNmIxODkuLmYzYmVh
NWYxOGYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAi
UGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckNsaWVudFF1ZXJ5T3B0aW9ucy5oIgpAQCAtNzAsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCA9
IDA7CisgICAgICAgIHZpcnR1YWwgUGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIoKSBjb25z
dCA9IDA7CiAKICAgICAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbG9z
ZWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCA4YzgxYzdiMTA3ZWMuLmUy
ZTQwOGIxMDkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTI3OSw2ICsyNzks
MTAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFydChGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYsIGJvb2wpPiYmIGNhbGxiYWNrKQogICAgIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsK
IAogICAgIFdvcmtlclRocmVhZDo6c3RhcnQoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dKGF1dG8mIGVycm9yTWVzc2FnZSkgbXV0YWJs
ZSB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBpZiAoIWVycm9yTWVzc2FnZS5pc0VtcHR5KCkp
CisgICAgICAgICAgICBMT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHRocmVhZCBm
YWlsZWQgdG8gc3RhcnQ6ICVzIiwgZXJyb3JNZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworI2VuZGlm
CiAgICAgICAgIGJvb2wgZG9lc0hhbmRsZUZldGNoID0gdHJ1ZTsKICAgICAgICAgaWYgKHdlYWtU
aGlzKSB7CiAgICAgICAgICAgICB3ZWFrVGhpcy0+ZmluaXNoZWRTdGFydGluZygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCAwYTRiYzdmZjQ5NDIuLmU1Y2I1YzFkZDE0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKQEAgLTQ4LDYgKzQ4LDcgQEAg
Y2xhc3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CiBjbGFzcyBGZXRjaExvYWRlcjsKIGNsYXNzIEZl
dGNoTG9hZGVyQ2xpZW50OwogY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CitjbGFzcyBOb3RpZmlj
YXRpb25DbGllbnQ7CiBjbGFzcyBTZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHk7CiBzdHJ1Y3Qg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOwogZW51bSBjbGFzcyBXb3JrZXJUaHJlYWRNb2RlIDog
Ym9vbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKaW5kZXggMzlmZTFiNzg3ZGE3Li5iYjE2ZWRiYmY3YjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xNjMs
NiArMTYzLDcgQEAgdm9pZCBTV1NlcnZlcjo6d2hlbkltcG9ydElzQ29tcGxldGVkSWZOZWVkZWQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWMKIAogdm9pZCBTV1NlcnZlcjo6cmVn
aXN0cmF0aW9uU3RvcmVEYXRhYmFzZUZhaWxlZFRvT3BlbigpCiB7CisgICAgTE9HKFNlcnZpY2VX
b3JrZXIsICJGYWlsZWQgdG8gb3BlbiBTVyByZWdpc3RyYXRpb24gZGF0YWJhc2UiKTsKICAgICBB
U1NFUlQoIW1faW1wb3J0Q29tcGxldGVkKTsKICAgICBpZiAoIW1faW1wb3J0Q29tcGxldGVkKQog
ICAgICAgICByZWdpc3RyYXRpb25TdG9yZUltcG9ydENvbXBsZXRlKCk7CkBAIC0xNzMsNiArMTc0
LDggQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAgICAgLy8gUGFnZXMgc2hvdWxkIG5vdCBoYXZlIGJlZW4g
YWJsZSB0byBtYWtlIGEgbmV3IHJlZ2lzdHJhdGlvbiB0byB0aGlzIGtleSB3aGlsZSB0aGUgaW1w
b3J0IHdhcyBzdGlsbCB0YWtpbmcgcGxhY2UuCiAgICAgQVNTRVJUKCFtX3Njb3BlVG9SZWdpc3Ry
YXRpb25NYXAuY29udGFpbnMoZGF0YS5yZWdpc3RyYXRpb24ua2V5KSk7CiAKKyAgICBMT0coU2Vy
dmljZVdvcmtlciwgIkFkZGluZyByZWdpc3RyYXRpb24gZnJvbSBzdG9yZSBmb3IgJXMiLCBkYXRh
LnJlZ2lzdHJhdGlvbi5rZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCiAgICAg
YXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKGRhdGEu
c2NyaXB0VVJMKTsKICAgICB2YWxpZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbihyZWdpc3RyYWJsZURv
bWFpbiwgU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIChib29sIGlzVmFsaWQpIG11
dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtMTk4LDYgKzIwMSw4IEBAIHZvaWQg
U1dTZXJ2ZXI6OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJCiAKIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbihzdGQ6
OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+JiYgcmVnaXN0cmF0aW9uKQogeworICAg
IExPRyhTZXJ2aWNlV29ya2VyLCAiQWRkaW5nIHJlZ2lzdHJhdGlvbiBsaXZlIGZvciAlcyIsIHJl
Z2lzdHJhdGlvbi0+a2V5KCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCiAgICAg
aWYgKCFtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAuY29udGFpbnMocmVnaXN0cmF0aW9uLT5rZXko
KSkgJiYgIVNlY3VyaXR5T3JpZ2luOjppc0xvY2FsSG9zdE9yTG9vcGJhY2tJUEFkZHJlc3MocmVn
aXN0cmF0aW9uLT5rZXkoKS50b3BPcmlnaW4oKS5ob3N0KSkKICAgICAgICAgbV91bmlxdWVSZWdp
c3RyYXRpb25Db3VudCsrOwogCkBAIC0xMjI0LDIwICsxMjI5LDI0IEBAIHZvaWQgU1dTZXJ2ZXI6
OnNvZnRVcGRhdGUoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKIHZvaWQgU1dT
ZXJ2ZXI6OnByb2Nlc3NQdXNoTWVzc2FnZShzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4m
JiBkYXRhLCBVUkwmJiByZWdpc3RyYXRpb25VUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY2FsbGJhY2spCiB7CiAgICAgd2hlbkltcG9ydElzQ29tcGxldGVkSWZOZWVkZWQoW3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBy
ZWdpc3RyYXRpb25VUkwgPSBXVEZNb3ZlKHJlZ2lzdHJhdGlvblVSTCksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIExPRyhQdXNoLCAiU2VydmljZVdv
cmtlciBpbXBvcnQgaXMgY29tcGxldGUsIGNhbiBoYW5kbGUgcHVzaCBtZXNzYXNnZSBub3ciKTsK
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewogICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKICAgICAgICAgYXV0byBvcmlnaW4gPSBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwocmVnaXN0cmF0aW9uVVJMKTsKICAgICAgICAgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXkgeyBXVEZNb3ZlKG9yaWdp
biksIFdURk1vdmUocmVnaXN0cmF0aW9uVVJMKSB9OwogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlv
biA9IG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5nZXQocmVnaXN0cmF0aW9uS2V5KTsKICAgICAg
ICAgaWYgKCFyZWdpc3RyYXRpb24pIHsKKyAgICAgICAgICAgIExPRyhQdXNoLCAiQ2Fubm90IHBy
b2Nlc3MgcHVzaCBtZXNzYXNnZTogRmFpbGVkIHRvIGZpbmQgU1cgcmVnaXN0cmF0aW9uIGZvciBy
ZWdpc3RyYXRpb24ga2V5ICVzIiwgcmVnaXN0cmF0aW9uS2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGNhbGxiYWNrKHRydWUpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byogd29ya2VyID0gcmVnaXN0cmF0aW9uLT5h
Y3RpdmVXb3JrZXIoKTsKICAgICAgICAgaWYgKCF3b3JrZXIpIHsKKyAgICAgICAgICAgIExPRyhQ
dXNoLCAiQ2Fubm90IHByb2Nlc3MgcHVzaCBtZXNzYXNnZTogTm8gYWN0aXZlIHdvcmtlciBmb3Ig
cmVnaXN0cmF0aW9uIGtleSAlcyIsIHJlZ2lzdHJhdGlvbktleS5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAppbmRleCAxNzViZDM4MTY0NzQuLmVjNzM1MmQ4MTIwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIyNTQs
MTcgKzIyNTQsMjIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UGVuZGluZ1B1c2hNZXNzYWdl
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb24KIHsKICNpZiBFTkFCTEUoQlVJ
TFRfSU5fTk9USUZJQ0FUSU9OUykKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJOZXR3b3JrUHJv
Y2VzcyBnZXR0aW5nIHBlbmRpbmcgcHVzaCBtZXNzYWdlcyBmb3Igc2Vzc2lvbiBJRCAlbGx1Iiwg
c2Vzc2lvbklELnRvVUludDY0KCkpOwogICAgICAgICBzZXNzaW9uLT5ub3RpZmljYXRpb25NYW5h
Z2VyKCkuZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIExPRyhOb3RpZmljYXRpb25zLCAi
TmV0d29ya1Byb2Nlc3MgY291bGQgbm90IGZpbmQgc2Vzc2lvbiBmb3IgSUQgJWxsdSB0byBnZXQg
cGVuZGluZyBwdXNoIG1lc3NhZ2VzIiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwogI2VuZGlmCiAg
ICAgY2FsbGJhY2soeyB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hN
ZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiBwdXNoTWVz
c2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKLSAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIExPRyhQ
dXNoLCAiTmV0d29ya2luZyBwcm9jZXNzIGhhbmRsaW5nIGEgcHVzaCBtZXNzYWdlIGZyb20gVUkg
cHJvY2VzcyBpbiBzZXNzaW9uICVsbHUiLCBzZXNzaW9uSUQudG9VSW50NjQoKSk7CiAgICAgICAg
IHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkucHJvY2Vzc1B1c2hNZXNzYWdlKFdURk1vdmUocHVz
aE1lc3NhZ2UucHVzaERhdGEpLCBXVEZNb3ZlKHB1c2hNZXNzYWdlLnJlZ2lzdHJhdGlvblVSTCks
IFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICB9IGVsc2UKKyAgICAgICAgTE9HKFB1c2gsICJOZXR3
b3JraW5nIHByb2Nlc3MgYXNrZWQgdG8gaGFuZGxlIGEgcHVzaCBtZXNzYWdlIGZyb20gVUkgcHJv
Y2VzcyBpbiBzZXNzaW9uICVsbHUsIGJ1dCB0aGF0IHNlc3Npb24gZG9lc24ndCBleGlzdCIsIHNl
c3Npb25JRC50b1VJbnQ2NCgpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9u
cy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4
IDE3Y2VmOTE0YWI4Ni4uNDg2Y2I1YjNkZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTkzLDEzICs5MywxNCBAQCB2b2lkIE5ldHdvcmtO
b3RpZmljYXRpb25NYW5hZ2VyOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJt
aXNzaW9ucyhDbwogdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Z2V0UGVuZGluZ1B1
c2hNZXNzYWdlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNoTWVz
c2FnZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4mJik+IHJlcGx5SGFuZGxlciA9IFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoVmVjdG9yPFdlYlB1c2hNZXNz
YWdlPiYmIG1lc3NhZ2VzKSBtdXRhYmxlIHsKKyAgICAgICAgTE9HKFB1c2gsICJEb25lIGdldHRp
bmcgcHVzaCBtZXNzYWdlcyIpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG1l
c3NhZ2VzKSk7CiAgICAgfTsKIAogICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PFdlYlB1c2hEOjpN
ZXNzYWdlVHlwZTo6R2V0UGVuZGluZ1B1c2hNZXNzYWdlcz4oV1RGTW92ZShyZXBseUhhbmRsZXIp
KTsKIH0KIAotdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvd05vdGlmaWNhdGlv
bihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikKK3ZvaWQgTmV0d29ya05vdGlmaWNh
dGlvbk1hbmFnZXI6OnNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90
aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgK
aW5kZXggYTkyYmQyZjViZDE3Li41MmE2Mzg0YmFiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAg
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcm
IHdlYlB1c2hNYWNoU2VydmljZU5hbWUpOwogCiAgICAgdm9pZCByZXF1ZXN0U3lzdGVtTm90aWZp
Y2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7Ci0gICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNv
bnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHNob3dOb3Rp
ZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0
YSYpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlm
aWNhdGlvbklEKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0
b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7CiAgICAgdm9pZCBkaWREZXN0cm95Tm90
aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9Mb2dnaW5nLmgKaW5kZXggZGUzMmY4MTcxNzE1Li43MzZjZjZjZWZhN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vTG9nZ2luZy5oCkBAIC04MCw2ICs4MCw3IEBAIGV4dGVybiAiQyIgewogICAgIE0oTmV0
d29ya0NhY2hlU3RvcmFnZSkgXAogICAgIE0oTmV0d29ya1NjaGVkdWxpbmcpIFwKICAgICBNKE5l
dHdvcmtTZXNzaW9uKSBcCisgICAgTShOb3RpZmljYXRpb25zKSBcCiAgICAgTShQZXJmb3JtYW5j
ZUxvZ2dpbmcpIFwKICAgICBNKFBsdWdpbnMpIFwKICAgICBNKFByaW50aW5nKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAppbmRleCBhN2UzNmNkY2ExODEuLjlm
OTk2YWExMzZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5o
CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNh
dGlvbklEcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNv
bnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluCmluZGV4IDQ4OWIwYjZhZDBmNy4u
MzdjY2RkZjFmYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlci5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBAQAogCiBtZXNzYWdlcyAtPiBO
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIgTm90UmVmQ291bnRlZCB7CiAgICAgUmVx
dWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oU3RyaW5nIG9yaWdpbklkZW50aWZpZXIp
IC0+IChib29sIGFsbG93ZWQpIEFzeW5jCi0gICAgU2hvd05vdGlmaWNhdGlvbihzdHJ1Y3QgV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uRGF0YSBub3RpZmljYXRpb25EYXRhKQorICAgIFNob3dOb3RpZmlj
YXRpb24oc3RydWN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEgbm90aWZpY2F0aW9uRGF0YSkg
V2FudHNDb25uZWN0aW9uCiAgICAgQ2FuY2VsTm90aWZpY2F0aW9uKFVVSUQgbm90aWZpY2F0aW9u
SUQpCiAgICAgQ2xlYXJOb3RpZmljYXRpb25zKFZlY3RvcjxVVUlEPiBub3RpZmljYXRpb25JRHMp
CiAgICAgRGlkRGVzdHJveU5vdGlmaWNhdGlvbihVVUlEIG5vdGlmaWNhdGlvbklEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKaW5kZXggMDY3NzBkMGRmYzdkLi5mMzhiM2VkNzAxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNTg1
LDYgKzU4NSw3IEBAIFVJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRv
clByb3h5LmNwcAogVUlQcm9jZXNzL01lZGlhL01lZGlhVXNhZ2VNYW5hZ2VyLmNwcAogVUlQcm9j
ZXNzL01lZGlhL1JlbW90ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveHkuY3BwCiAKK1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmNwcAog
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcAogVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAogVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5vdGlmaWNhdGlvblByb3Zp
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTm90aWZpY2F0aW9uUHJvdmlk
ZXIuaAppbmRleCBjNDgxM2FhNTE2NTAuLmY3M2M1ODhmNjU0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAgLTQy
LDcgKzQyLDcgQEAgY2xhc3MgTm90aWZpY2F0aW9uUHJvdmlkZXIgewogcHVibGljOgogICAgIHZp
cnR1YWwgfk5vdGlmaWNhdGlvblByb3ZpZGVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2
b2lkIHNob3coV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbiYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBzaG93KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0
OjpXZWJOb3RpZmljYXRpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKFdlYktpdDo6
V2ViTm90aWZpY2F0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lOb3RpZmlj
YXRpb24oV2ViS2l0OjpXZWJOb3RpZmljYXRpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIC8qbm90aWZpY2F0aW9uSURz
Ki8pIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90
aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggODJiYjk1MWU1YzFlLi5kNTM4ZGI1NDA3NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRp
b25NYW5hZ2VyLmNwcApAQCAtNzgsMyArNzgsOCBAQCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdl
clByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoV0tOb3RpZmljYXRpb25NYQog
ewogICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Q
b2xpY2llcyh0b0ltcGwob3JpZ2lucykpOwogfQorCitXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYg
V0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbk1h
bmFnZXIoKQoreworICAgIHJldHVybiB0b0FQSSgmV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKaW5kZXggNzllZGJm
NThjZTQzLi4zNGJiNWVjMGIxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC00Myw2ICs0Myw4IEBAIFdLX0VY
UE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRp
b25zKFdLTm90aWZpY2F0aW9uCiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQ
cm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYgbWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGJvb2wgYWxsb3dlZCk7
CiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFJlbW92ZU5v
dGlmaWNhdGlvblBvbGljaWVzKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBX
S0FycmF5UmVmIG9yaWdpbnMpOwogCitXS19FWFBPUlQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVm
IFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25N
YW5hZ2VyKCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpp
bmRleCBmOTEzNDgzZGVkYTAuLmVhYTJhZDYyMTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0zOCw2
ICszOCw3IEBACiAjaW1wb3J0ICJXS1NlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJu
YWwuaCIKKyNpbXBvcnQgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2ltcG9ydCAi
V2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQdXNoTWVzc2FnZS5oIgogI2ltcG9ydCAiV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCkBAIC02NTksNiArNjYwLDEyIEBAIHN0YXRp
YyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9XZWJzaXRlRGF0YVJlY29yZHMo
TlNBcnJheSAqZGF0YVJlY29yCiAgICAgcmV0dXJuIHdyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUt
PmNvbmZpZ3VyYXRpb24oKS5jb3B5KCkpOwogfQogCisrIChXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYpX3NoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyCit7CisgICAgTE9HKFB1
c2gsICJBY2Nlc3NpbmcgX3NoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyIik7
CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpKTsKK30KKwogLSAodm9pZClfYWxs
b3dUTFNDZXJ0aWZpY2F0ZUNoYWluOihOU0FycmF5ICopY2VydGlmaWNhdGVDaGFpbiBmb3JIb3N0
OihOU1N0cmluZyAqKWhvc3QKIHsKICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+YWxsb3dTcGVjaWZp
Y0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbygoX19icmlk
Z2UgQ0ZBcnJheVJlZiljZXJ0aWZpY2F0ZUNoYWluKSwgaG9zdCk7CkBAIC03NzEsMTIgKzc3OCwx
NSBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0ZURh
dGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogCiAtKHZvaWQpX2dldFBlbmRpbmdQdXNoTWVz
c2FnZXM6KHZvaWQoXikoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKikpY29tcGxldGlvbkhhbmRs
ZXIKIHsKKyAgICBMT0coUHVzaCwgIkdldHRpbmcgcGVuZGluZyBwdXNoIG1lc3NhZ2VzIik7CisK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5ldHdv
cmtQcm9jZXNzKCkuZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhfd2Vic2l0ZURhdGFTdG9yZS0+c2Vz
c2lvbklEKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildIChjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQdXNoTWVzc2FnZT4mIG1lc3NhZ2VzKSB7
CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aENhcGFjaXR5Om1lc3NhZ2VzLnNpemUoKV0pOwogICAgICAgICBmb3IgKGF1dG8mIG1l
c3NhZ2UgOiBtZXNzYWdlcykKICAgICAgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0Om1lc3NhZ2Uu
dG9EaWN0aW9uYXJ5KCldOwogCisgICAgICAgIExPRyhQdXNoLCAiR2l2aW5nIGFwcGxpY2F0aW9u
ICV1IHBlbmRpbmcgcHVzaCBtZXNzYWdlcyIsIG1lc3NhZ2VzLnNpemUoKSk7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJlc3VsdC5nZXQoKSk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTc4Nywx
MSArNzk3LDE0IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9X
ZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIGF1dG8gcHVzaE1lc3NhZ2UgPSBXZWJLaXQ6OldlYlB1c2hNZXNzYWdlOjpm
cm9tRGljdGlvbmFyeShwdXNoTWVzc2FnZURpY3Rpb25hcnkpOwogICAgIGlmICghcHVzaE1lc3Nh
Z2UpIHsKKyAgICAgICAgTE9HKFB1c2gsICJBc2tlZCB0byBoYW5kbGUgYW4gaW52YWxpZCBwdXNo
IG1lc3NhZ2UiKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCisgICAgTE9HKFB1c2gsICJTZW5kaW5nIHB1c2ggbWVzc2FnZSB0byBu
ZXR3b3JrIHByb2Nlc3MgdG8gaGFuZGxlIik7CiAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5ldHdv
cmtQcm9jZXNzKCkucHJvY2Vzc1B1c2hNZXNzYWdlKF93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9u
SUQoKSwgKnB1c2hNZXNzYWdlLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpXSAoYm9vbCB3YXNQcm9jZXNzZWQpIHsKKyAgICAgICAgTE9HKFB1c2gs
ICJQdXNoIG1lc3NhZ2UgcHJvY2Vzc2luZyBjb21wbGV0ZS4gQ2FsbGJhY2sgcmVzdWx0OiAlaSIs
IHdhc1Byb2Nlc3NlZCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdhc1Byb2Nlc3NlZCk7
CiAgICAgfSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDMxYTg1NDA3
NDE0ZC4uYzM2ZTExMzFmMDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTk2LDYg
Kzk2LDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdGVEYXRhU3Rv
cmVGZXRjaE9wdGlvbnMpIHsKIEBwcm9wZXJ0eSAobnVsbGFibGUsIG5vbmF0b21pYywgd2Vhaykg
aWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4gX2RlbGVnYXRlIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBjb3B5KSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqX2NvbmZpZ3VyYXRp
b247CiAKKysgKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZilfc2hhcmVkU2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbk1hbmFnZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfdGVybWluYXRlTmV0d29ya1Byb2Nlc3MgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3NlbmROZXR3b3Jr
UHJvY2Vzc1ByZXBhcmVUb1N1c3BlbmQ6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3NlbmRO
ZXR3b3JrUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEyLjApLCBpb3MoMTUuMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4IDU1
MTYzNjQ0Nzc1NS4uODRjNmFiODU2OTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3Bw
CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBz
aG93KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pIG92
ZXJyaWRlCisgICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViTm90aWZpY2F0aW9u
JiBub3RpZmljYXRpb24pIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX3Byb3ZpZGVyLnNob3co
cGFnZSwgbm90aWZpY2F0aW9uKTsKICAgICB9CkBAIC0xMTUsMTAgKzExNSwxNiBAQCB2b2lkIFdl
YktpdE5vdGlmaWNhdGlvblByb3ZpZGVyOjp3aXRoZHJhd0FueVByZXZpb3VzTm90aWZpY2F0aW9u
TWF0Y2hpbmdUYWcoY29ucwogI2VuZGlmCiB9CiAKLXZvaWQgV2ViS2l0Tm90aWZpY2F0aW9uUHJv
dmlkZXI6OnNob3coV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXZWJOb3RpZmljYXRpb24mIHdl
Yk5vdGlmaWNhdGlvbikKK3ZvaWQgV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OnNob3coV2Vi
UGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJOb3RpZmljYXRpb24mIHdlYk5vdGlmaWNhdGlvbikK
IHsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAgICAgLy8gRklYTUU6IGdsaWIgbmVlZHMgdG8gZmlu
ZCB0aGVpciBvd24gc29sdXRpb24gdG8gaGFuZGxpbmcgcGFnZWxlc3Mgbm90aWZpY2F0aW9ucy4K
KyAgICAgICAgLy8gSSB3b24ndCBtYWtlIHNvbWV0aGluZyB1cCBmb3IgdGhlbS4KKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKICAgICBHUmVmUHRyPFdlYktpdE5vdGlmaWNhdGlvbj4gbm90
aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldCh3ZWJOb3RpZmljYXRpb24ubm90aWZpY2F0
aW9uSUQoKSk7Ci0gICAgYXV0byogd2ViVmlldyA9IHdlYmtpdFdlYkNvbnRleHRHZXRXZWJWaWV3
Rm9yUGFnZShtX3dlYkNvbnRleHQsICZwYWdlKTsKKyAgICBhdXRvKiB3ZWJWaWV3ID0gd2Via2l0
V2ViQ29udGV4dEdldFdlYlZpZXdGb3JQYWdlKG1fd2ViQ29udGV4dCwgcGFnZSk7CiAgICAgQVNT
RVJUKHdlYlZpZXcpOwogCiAgICAgaWYgKCFub3RpZmljYXRpb24pIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Q
cm92aWRlci5oCmluZGV4IDM2Yjc4MzQzODgwZC4uYmU1MjIwZDUwZWE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNh
dGlvblByb3ZpZGVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIFdlYktpdE5vdGlm
aWNhdGlvblByb3ZpZGVyKFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSosIFdlYktpdFdlYkNv
bnRleHQqKTsKICAgICB+V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKTsKIAotICAgIHZvaWQg
c2hvdyhXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJOb3RpZmljYXRpb24mKTsKKyAgICB2b2lkIHNo
b3coV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViTm90aWZpY2F0aW9uJik7CiAgICAgdm9pZCBjYW5j
ZWwoY29uc3QgV2ViTm90aWZpY2F0aW9uJik7CiAgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMo
Y29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvU2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbkhhbmRsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uMzYzZDhjMTI0Mjc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5jcHAK
QEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIgorCisjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGF0YS5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIm
IFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOjpzaW5nbGV0b24oKQoreworICAgIHN0
YXRpYyBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlciYgaGFuZGxlciA9ICpuZXcgU2Vy
dmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI7CisgICAgcmV0dXJuIGhhbmRsZXI7Cit9CisK
K1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOjpTZXJ2aWNlV29ya2VyTm90aWZpY2F0
aW9uSGFuZGxlcigpCit7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRs
ZXI6OnJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKworV2Vic2l0ZURhdGFTdG9yZSogU2VydmljZVdvcmtlck5vdGlmaWNh
dGlvbkhhbmRsZXI6OmRhdGFTdG9yZUZvck5vdGlmaWNhdGlvbklEKGNvbnN0IFVVSUQmIG5vdGlm
aWNhdGlvbklEKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX25vdGlmaWNhdGlvblRvU2Vzc2lv
bk1hcC5maW5kKG5vdGlmaWNhdGlvbklEKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9ub3RpZmlj
YXRpb25Ub1Nlc3Npb25NYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKGl0
ZXJhdG9yLT52YWx1ZSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRs
ZXI6OnNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhKQoreworICAgIGF1dG8qIGRhdGFTdG9yZSA9
IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKGRhdGEuc291
cmNlU2Vzc2lvbik7CisgICAgaWYgKCFkYXRhU3RvcmUpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fbm90aWZpY2F0aW9uVG9TZXNzaW9uTWFwLnNldChkYXRhLm5vdGlmaWNhdGlvbklELCBkYXRh
LnNvdXJjZVNlc3Npb24pOworICAgIGRhdGFTdG9yZS0+c2hvd1NlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb24oY29ubmVjdGlvbiwgZGF0YSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNh
dGlvbkhhbmRsZXI6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25J
RCkKK3sKKyAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gZGF0YVN0b3JlRm9yTm90aWZpY2F0aW9u
SUQobm90aWZpY2F0aW9uSUQpKQorICAgICAgICBkYXRhU3RvcmUtPmNhbmNlbFNlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJO
b3RpZmljYXRpb25IYW5kbGVyOjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+
JiBub3RpZmljYXRpb25JRHMpCit7CisgICAgZm9yIChhdXRvJiBub3RpZmljYXRpb25JRCA6IG5v
dGlmaWNhdGlvbklEcykgeworICAgICAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gZGF0YVN0b3Jl
Rm9yTm90aWZpY2F0aW9uSUQobm90aWZpY2F0aW9uSUQpKQorICAgICAgICAgICAgZGF0YVN0b3Jl
LT5jbGVhclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOworICAgIH0K
K30KKwordm9pZCBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6ZGlkRGVzdHJveU5v
dGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKK3sKKyAgICBpZiAoYXV0byog
ZGF0YVN0b3JlID0gZGF0YVN0b3JlRm9yTm90aWZpY2F0aW9uSUQobm90aWZpY2F0aW9uSUQpKQor
ICAgICAgICBkYXRhU3RvcmUtPmRpZERlc3Ryb3lTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKG5v
dGlmaWNhdGlvbklEKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb25IYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1Nl
cnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi5lZDUxMjBjOTY1NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25I
YW5kbGVyLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2Vy
dmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIgOiBwdWJsaWMgTm90aWZpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU2VydmljZVdvcmtlck5vdGlm
aWNhdGlvbkhhbmRsZXImIHNpbmdsZXRvbigpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFNl
cnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyKCk7CisKKyAgICB2b2lkIHJlcXVlc3RTeXN0
ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihJUEM6OkNv
bm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikgZmluYWw7CisgICAg
dm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpIGZpbmFs
OworICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZp
Y2F0aW9uSURzKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3Qg
VVVJRCYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOworCisgICAgV2Vic2l0ZURhdGFTdG9yZSogZGF0
YVN0b3JlRm9yTm90aWZpY2F0aW9uSUQoY29uc3QgVVVJRCYpOworCisgICAgSGFzaE1hcDxVVUlE
LCBQQUw6OlNlc3Npb25JRD4gbV9ub3RpZmljYXRpb25Ub1Nlc3Npb25NYXA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcAppbmRleCBiOGRhNzFiYjBmZDYuLmI5
MDE4NDIxMTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotV2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oY29uc3Qg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlSWRlbnRpZmllcikKK1dlYk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKGNvbnN0IFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgc291cmNlQ29ubmVjdGlvbikKICAgICA6IG1f
dGl0bGUoZGF0YS50aXRsZSkKICAgICAsIG1fYm9keShkYXRhLmJvZHkpCiAgICAgLCBtX2ljb25V
UkwoZGF0YS5pY29uVVJMKQpAQCAtNDAsNiArNDAsNyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5v
dGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdl
UAogICAgICwgbV9vcmlnaW4oQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhk
YXRhLm9yaWdpblN0cmluZykpCiAgICAgLCBtX2NvcmVOb3RpZmljYXRpb25JRChkYXRhLm5vdGlm
aWNhdGlvbklEKQogICAgICwgbV9wYWdlSWRlbnRpZmllcihwYWdlSWRlbnRpZmllcikKKyAgICAs
IG1fc291cmNlQ29ubmVjdGlvbihzb3VyY2VDb25uZWN0aW9uKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24u
aAppbmRleCBiYzc4MmZiZWZmZjMuLmU4OTQyNjMzZDQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElTZWN1
cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CkBAIC00MSw5ICs0Miw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBXZWJOb3RpZmljYXRpb24gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpOb3RpZmljYXRpb24+LCBwdWJsaWMgSWRlbnRpZmllZDxXZWJOb3RpZmljYXRpb24+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYk5vdGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0
IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxXZWJOb3RpZmljYXRpb24+IGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIHNvdXJjZUNvbm5lY3Rpb24pCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJOb3RpZmljYXRpb24oZGF0YSwg
cGFnZUlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTm90aWZp
Y2F0aW9uKGRhdGEsIHBhZ2VJZGVudGlmaWVyLCBzb3VyY2VDb25uZWN0aW9uKSk7CiAgICAgfQog
CiAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KQEAg
LTU4LDkgKzU5LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBVVUlEJiBjb3JlTm90aWZpY2F0aW9u
SUQoKSBjb25zdCB7IHJldHVybiBtX2NvcmVOb3RpZmljYXRpb25JRDsgfQogCiAgICAgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlk
ZW50aWZpZXI7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24qIHNvdXJjZUNvbm5lY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZUNvbm5lY3Rpb24uZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBX
ZWJOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIpOworICAgIFdlYk5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3Rp
ZmljYXRpb25EYXRhJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJik7
CiAKICAgICBTdHJpbmcgbV90aXRsZTsKICAgICBTdHJpbmcgbV9ib2R5OwpAQCAtNzIsNiArNzQs
NyBAQCBwcml2YXRlOgogICAgIFVVSUQgbV9jb3JlTm90aWZpY2F0aW9uSUQ7CiAKICAgICBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CisgICAgV2Vha1B0cjxJUEM6OkNv
bm5lY3Rpb24+IG1fc291cmNlQ29ubmVjdGlvbjsKIH07CiAKIGlubGluZSBib29sIGlzTm90aWZp
Y2F0aW9uSURWYWxpZCh1aW50NjRfdCBpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAppbmRleCBkMDY3Y2VmMDk2NGEuLjRjNjg0ZDlj
OWQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VI
YW5kbGVyLmNwcApAQCAtNDAsOSArNDAsOSBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlcjo6cmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oYwogICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkRhdGEmIGRhdGEpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlcjo6c2hvd05vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEpCiB7Ci0gICAgbV93ZWJQYWdlUHJv
eHkuc2hvd05vdGlmaWNhdGlvbihkYXRhKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5zaG93Tm90aWZp
Y2F0aW9uKGNvbm5lY3Rpb24sIGRhdGEpOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlcjo6Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNh
dGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5k
bGVyLmgKaW5kZXggYTZkYjAzMzdiN2U1Li41MjUwNWU5ZDI1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzcsNyArMzcsNyBA
QCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlcihXZWJQYWdlUHJveHkmKTsKIAogICAgIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlv
blBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JikgZmluYWw7Ci0gICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbkRhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oSVBDOjpDb25u
ZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpIGZpbmFsOwogICAgIHZv
aWQgY2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsK
ICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNh
dGlvbklEcykgZmluYWw7CiAgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFVV
SUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmNwcAppbmRleCBkMTNhNTg4MzhlYzYuLjliOGNjMTI5ZjM1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtNDksNiArNDksMTIgQEAgUmVmPFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpj
cmVhdGUoV2ViUHJvY2Vzc1AKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkocHJvY2Vzc1Bvb2wpKTsKIH0KIAorV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5JiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJN
YW5hZ2VyKCkKK3sKKyAgICBzdGF0aWMgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KiBzaGFy
ZWRNYW5hZ2VyID0gbmV3IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShudWxscHRyKTsKKyAg
ICByZXR1cm4gKnNoYXJlZE1hbmFnZXI7Cit9CisKIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9v
bCkKICAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQogICAgICwgbV9wcm92
aWRlcihtYWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCkpCkBAIC04OCwyMSAr
OTQsMjggQEAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogICAgIHJldHVybiBtX3Byb3ZpZGVyLT5ub3Rp
ZmljYXRpb25QZXJtaXNzaW9ucygpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6c2hvdyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkRhdGEmIG5vdGlmaWNhdGlvbkRhdGEpCitzdGF0aWMgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciBpZGVudGlmaWVyRm9yUGFnZVBvaW50ZXIoV2ViUGFnZVByb3h5KiB3ZWJQYWdlKQogewotICAg
IGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUobm90aWZpY2F0aW9u
RGF0YSwgd2ViUGFnZS0+aWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gd2ViUGFnZSA/IHdlYlBh
Z2UtPmlkZW50aWZpZXIoKSA6IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIoKTsKK30KKwordm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRh
dGEmIG5vdGlmaWNhdGlvbkRhdGEpCit7CisgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJXZWJQYWdl
UHJveHkgKCVwKSBhc2tpbmcgdG8gc2hvdyBub3RpZmljYXRpb24gKCVzKSIsIHdlYlBhZ2UsIG5v
dGlmaWNhdGlvbkRhdGEubm90aWZpY2F0aW9uSUQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KworICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUobm90aWZp
Y2F0aW9uRGF0YSwgaWRlbnRpZmllckZvclBhZ2VQb2ludGVyKHdlYlBhZ2UpLCBjb25uZWN0aW9u
KTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQobm90aWZpY2F0aW9uLT5ub3RpZmlj
YXRpb25JRCgpLCBub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpKTsKICAgICBtX25v
dGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCksIG5vdGlm
aWNhdGlvbik7Ci0gICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0aW9uLmdl
dCgpKTsKKyAgICBtX3Byb3ZpZGVyLT5zaG93KHdlYlBhZ2UsIG5vdGlmaWNhdGlvbi5nZXQoKSk7
CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjYW5jZWwoV2ViUGFnZVBy
b3h5KiB3ZWJQYWdlLCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKFdlYlBhZ2VQcm94eSosIGNvbnN0IFVVSUQm
IHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKICAgICBpZiAoYXV0byB3ZWJOb3RpZmljYXRpb24gPSBt
X25vdGlmaWNhdGlvbnMuZ2V0KHBhZ2VOb3RpZmljYXRpb25JRCkpCiAgICAgICAgIG1fcHJvdmlk
ZXItPmNhbmNlbCgqd2ViTm90aWZpY2F0aW9uKTsKIH0KICAgICAKLXZvaWQgV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2Vi
UGFnZSwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiwgY29u
c3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklEKQogewogICAgIGlmIChhdXRvIHdlYk5vdGlmaWNh
dGlvbiA9IG1fbm90aWZpY2F0aW9ucy50YWtlKHBhZ2VOb3RpZmljYXRpb25JRCkpIHsKICAgICAg
ICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAucmVtb3ZlKHdlYk5vdGlmaWNhdGlvbi0+bm90aWZp
Y2F0aW9uSUQoKSk7CkBAIC0xMTAsMzcgKzEyMywyNiBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBhZ2Us
CiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwYWdlSURzTWF0Y2goV2ViUGFnZVByb3h5SWRlbnRp
ZmllciBwYWdlSUQsIGNvbnN0IFVVSUQmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQ
YWdlSUQsIGNvbnN0IFZlY3RvcjxVVUlEPiYpCi17Ci0gICAgcmV0dXJuIHBhZ2VJRCA9PSBkZXNp
cmVkUGFnZUlEOwotfQotCi1zdGF0aWMgYm9vbCBwYWdlQW5kTm90aWZpY2F0aW9uSURzTWF0Y2go
V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRp
b25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8
VVVJRD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQotewotICAgIHJldHVybiBwYWdlSUQg
PT0gZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250YWlucyhw
YWdlTm90aWZpY2F0aW9uSUQpOwotfQotCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSkKIHsKLSAgICBjbGVh
ck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgVmVjdG9yPFVVSUQ+KCksIHBhZ2VJRHNNYXRjaCk7Cisg
ICAgQVNTRVJUKHdlYlBhZ2UpOworICAgIGNsZWFyTm90aWZpY2F0aW9ucyh3ZWJQYWdlLCB7IH0p
OwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRp
b25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZp
Y2F0aW9uSURzKQogewotICAgIGNsZWFyTm90aWZpY2F0aW9ucyh3ZWJQYWdlLCBwYWdlTm90aWZp
Y2F0aW9uSURzLCBwYWdlQW5kTm90aWZpY2F0aW9uSURzTWF0Y2gpOwotfQotCi12b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSog
d2ViUGFnZSwgY29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZpY2F0aW9uSURzLCBOb3RpZmlj
YXRpb25GaWx0ZXJGdW5jdGlvbiBmaWx0ZXJGdW5jdGlvbikKLXsKLSAgICBhdXRvIHRhcmdldFBh
Z2VQcm94eUlEID0gd2ViUGFnZS0+aWRlbnRpZmllcigpOwotCiAgICAgVmVjdG9yPHVpbnQ2NF90
PiBnbG9iYWxOb3RpZmljYXRpb25JRHM7CiAgICAgZ2xvYmFsTm90aWZpY2F0aW9uSURzLnJlc2Vy
dmVDYXBhY2l0eShtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zaXplKCkpOwogCisgICAgLy8gV2Ug
YWx3YXlzIGNoZWNrIHBhZ2UgaWRlbnRpdHkuCisgICAgLy8gSWYgdGhlIHNldCBvZiBub3RpZmlj
YXRpb24gSURzIGlzIG5vbi1lbXB0eSwgd2UgYWxzbyBjaGVjayB0aGF0LgorICAgIGF1dG8gdGFy
Z2V0UGFnZUlkZW50aWZpZXIgPSBpZGVudGlmaWVyRm9yUGFnZVBvaW50ZXIod2ViUGFnZSk7Cisg
ICAgYm9vbCBjaGVja05vdGlmaWNhdGlvbklEcyA9ICFwYWdlTm90aWZpY2F0aW9uSURzLmlzRW1w
dHkoKTsKKwogICAgIGZvciAoYXV0byBub3RpZmljYXRpb24gOiBtX25vdGlmaWNhdGlvbnMudmFs
dWVzKCkpIHsKLSAgICAgICAgYXV0byBwYWdlUHJveHlJRCA9IG5vdGlmaWNhdGlvbi0+cGFnZUlk
ZW50aWZpZXIoKTsKLSAgICAgICAgYXV0byBjb3JlTm90aWZpY2F0aW9uSUQgPSBub3RpZmljYXRp
b24tPmNvcmVOb3RpZmljYXRpb25JRCgpOwotICAgICAgICBpZiAoIWZpbHRlckZ1bmN0aW9uKHBh
Z2VQcm94eUlELCBjb3JlTm90aWZpY2F0aW9uSUQsIHRhcmdldFBhZ2VQcm94eUlELCBwYWdlTm90
aWZpY2F0aW9uSURzKSkKKyAgICAgICAgaWYgKGNoZWNrTm90aWZpY2F0aW9uSURzICYmICFwYWdl
Tm90aWZpY2F0aW9uSURzLmNvbnRhaW5zKG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklE
KCkpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICh0YXJnZXRQYWdlSWRlbnRp
ZmllciAhPSBub3RpZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IG5vdGlmaWNh
dGlvbi0+bm90aWZpY2F0aW9uSUQoKTsKQEAgLTE2Nyw0OCArMTY5LDQ2IEBAIHZvaWQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24odWludDY0
X3QgZ2xvYmFsTm90CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvKiB3ZWJQYWdl
ID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKG5vdGlmaWNhdGlvbi0+cGFnZUlkZW50aWZpZXIo
KSk7Ci0gICAgaWYgKCF3ZWJQYWdlKQorICAgIExPRyhOb3RpZmljYXRpb25zLCAiUHJvdmlkZXIg
ZGlkIHNob3cgbm90aWZpY2F0aW9uICglcykiLCBub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRp
b25JRCgpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBhdXRvKiBjb25uZWN0aW9u
ID0gbm90aWZpY2F0aW9uLT5zb3VyY2VDb25uZWN0aW9uKCk7CisgICAgaWYgKCFjb25uZWN0aW9u
KQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkU2hvd05vdGlmaWNhdGlvbihpdC0+dmFsdWUp
LCAwKTsKKyAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpEaWRTaG93Tm90aWZpY2F0aW9uKGl0LT52YWx1ZSksIDApOwogfQogCi12b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50
NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCkKK3N0YXRpYyB2b2lkIGRpc3BhdGNoRGlkQ2xpY2tO
b3RpZmljYXRpb24oV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgYXV0byBp
dCA9IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmZpbmQoZ2xvYmFsTm90aWZpY2F0aW9uSUQpOwot
ICAgIGlmIChpdCA9PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKLSAgICAgICAgcmV0
dXJuOworICAgIExPRyhOb3RpZmljYXRpb25zLCAiUHJvdmlkZXIgZGlkIGNsaWNrIG5vdGlmaWNh
dGlvbiAoJXMpIiwgbm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9uSUQoKS50b1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgYXV0byBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlv
bnMuZ2V0KGl0LT52YWx1ZSk7Ci0gICAgaWYgKCFub3RpZmljYXRpb24pIHsKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKCFub3RpZmljYXRpb24pCiAgICAgICAgIHJldHVy
bjsKLSAgICB9CiAKLSAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KG5vdGlmaWNhdGlvbi0+cGFnZUlkZW50aWZpZXIoKSk7Ci0gICAgaWYgKCF3ZWJQYWdlKQorICAg
IGF1dG8qIGNvbm5lY3Rpb24gPSBub3RpZmljYXRpb24tPnNvdXJjZUNvbm5lY3Rpb24oKTsKKyAg
ICBpZiAoIWNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYlBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlm
aWNhdGlvbihpdC0+dmFsdWUpLCAwKTsKKyAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlmaWNhdGlvbihub3RpZmljYXRpb24t
PmNvcmVOb3RpZmljYXRpb25JRCgpKSwgMCk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIGNvcmVO
b3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRl
ckRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEKQogewot
ICAgIGF1dG8gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldChjb3JlTm90aWZpY2F0
aW9uSUQpOwotICAgIGlmICghbm90aWZpY2F0aW9uKQorICAgIGF1dG8gaXQgPSBtX2dsb2JhbE5v
dGlmaWNhdGlvbk1hcC5maW5kKGdsb2JhbE5vdGlmaWNhdGlvbklEKTsKKyAgICBpZiAoaXQgPT0g
bV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uobm90aWZpY2F0aW9uLT5wYWdl
SWRlbnRpZmllcigpKTsKLSAgICBpZiAoIXdlYlBhZ2UpCi0gICAgICAgIHJldHVybjsKKyAgICBk
aXNwYXRjaERpZENsaWNrTm90aWZpY2F0aW9uKG1fbm90aWZpY2F0aW9ucy5nZXQoaXQtPnZhbHVl
KSk7Cit9CiAKLSAgICB3ZWJQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmljYXRpb24oY29yZU5vdGlmaWNhdGlvbklEKSwg
MCk7Cit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05v
dGlmaWNhdGlvbihjb25zdCBVVUlEJiBjb3JlTm90aWZpY2F0aW9uSUQpCit7CisgICAgZGlzcGF0
Y2hEaWRDbGlja05vdGlmaWNhdGlvbihtX25vdGlmaWNhdGlvbnMuZ2V0KGNvcmVOb3RpZmljYXRp
b25JRCkpOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJE
aWRDbG9zZU5vdGlmaWNhdGlvbnMoQVBJOjpBcnJheSogZ2xvYmFsTm90aWZpY2F0aW9uSURzKQog
ewotICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5KiwgVmVjdG9yPFVVSUQ+PiBwYWdlTm90aWZpY2F0
aW9uSURzOworICAgIFZlY3RvcjxSZWZQdHI8V2ViTm90aWZpY2F0aW9uPj4gY2xvc2VkTm90aWZp
Y2F0aW9uczsKIAogICAgIHNpemVfdCBzaXplID0gZ2xvYmFsTm90aWZpY2F0aW9uSURzLT5zaXpl
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKQEAgLTI0MSwyNiAr
MjQxLDI1IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENs
b3NlTm90aWZpY2F0aW9ucyhBUEk6OkFycmF5KiBnbG9iCiAgICAgICAgIGlmICghbm90aWZpY2F0
aW9uKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKFdlYlBhZ2VQcm94eSog
d2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3RpZmljYXRpb24tPnBhZ2VJZGVu
dGlmaWVyKCkpKSB7Ci0gICAgICAgICAgICBhdXRvIHBhZ2VJdCA9IHBhZ2VOb3RpZmljYXRpb25J
RHMuZmluZCh3ZWJQYWdlKTsKLSAgICAgICAgICAgIGlmIChwYWdlSXQgPT0gcGFnZU5vdGlmaWNh
dGlvbklEcy5lbmQoKSkgewotICAgICAgICAgICAgICAgIFZlY3RvcjxVVUlEPiBuZXdWZWN0b3I7
Ci0gICAgICAgICAgICAgICAgbmV3VmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7
Ci0gICAgICAgICAgICAgICAgcGFnZUl0ID0gcGFnZU5vdGlmaWNhdGlvbklEcy5hZGQod2ViUGFn
ZSwgV1RGTW92ZShuZXdWZWN0b3IpKS5pdGVyYXRvcjsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgcGFnZUl0LT52YWx1ZS5hcHBlbmQobm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9u
SUQoKSk7Ci0gICAgICAgIH0KLQogICAgICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5yZW1v
dmUobm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25JRCgpKTsKKyAgICAgICAgY2xvc2VkTm90aWZp
Y2F0aW9ucy5hcHBlbmQoV1RGTW92ZShub3RpZmljYXRpb24pKTsKICAgICB9CiAKLSAgICBmb3Ig
KGF1dG8gaXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmJlZ2luKCksIGVuZCA9IHBhZ2VOb3RpZmlj
YXRpb25JRHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPmtleS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsb3NlTm90aWZp
Y2F0aW9ucyhpdC0+dmFsdWUpLCAwKTsKKyAgICBmb3IgKGF1dG8mIG5vdGlmaWNhdGlvbiA6IGNs
b3NlZE5vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBub3Rp
ZmljYXRpb24tPnNvdXJjZUNvbm5lY3Rpb24oKSkgeworICAgICAgICAgICAgTE9HKE5vdGlmaWNh
dGlvbnMsICJQcm92aWRlciBkaWQgY2xvc2Ugbm90aWZpY2F0aW9uICglcykiLCBub3RpZmljYXRp
b24tPmNvcmVOb3RpZmljYXRpb25JRCgpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgICAgICBWZWN0b3I8VVVJRD4gbm90aWZpY2F0aW9uSURzID0geyBub3RpZmljYXRpb24tPmNv
cmVOb3RpZmljYXRpb25JRCgpIH07CisgICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbG9zZU5vdGlmaWNhdGlvbnMobm90aWZp
Y2F0aW9uSURzKSwgMCk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShjb25z
dCBBUEk6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGJvb2wgYWxsb3dlZCkKIHsKKyAgICBMT0co
Tm90aWZpY2F0aW9ucywgIlByb3ZpZGVyIGRpZCB1cGRhdGUgbm90aWZpY2F0aW9uIHBvbGljeSBm
b3Igb3JpZ2luICVzIHRvICVpIiwgb3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgYWxsb3dlZCk7CisKKyAgICBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvQWxs
UmVtb3RlV29ya2VyUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpE
aWRVcGRhdGVOb3RpZmljYXRpb25EZWNpc2lvbihvcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkudG9T
dHJpbmcoKSwgYWxsb3dlZCkpOworCiAgICAgaWYgKCFwcm9jZXNzUG9vbCgpKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTI4MSw3ICsyODAsMTEgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OnByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoQVBJOjpBcnIKICAg
ICAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgb3JpZ2lu
U3RyaW5ncy5hcHBlbmQob3JpZ2lucy0+YXQ8QVBJOjpTZWN1cml0eU9yaWdpbj4oaSktPnNlY3Vy
aXR5T3JpZ2luKCkudG9TdHJpbmcoKSk7Ci0gICAgCisKKyAgICBXZWJQcm9jZXNzUG9vbDo6c2Vu
ZFRvQWxsUmVtb3RlV29ya2VyUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpEaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMob3JpZ2luU3RyaW5ncykpOworCisg
ICAgaWYgKCFwcm9jZXNzUG9vbCgpKQorICAgICAgICByZXR1cm47CiAgICAgcHJvY2Vzc1Bvb2wo
KS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpE
aWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMob3JpZ2luU3RyaW5ncykpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCBjNmQzNWQ4NjIyYjguLmU4N2Ri
MTBmNTFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC01Nywx
MCArNTcsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCopOwogCisgICAgc3RhdGljIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eSYgc2hhcmVkU2VydmljZVdvcmtlck1hbmFnZXIoKTsKKwogICAg
IHZvaWQgc2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlk
ZXI+JiYpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBub3RpZmljYXRpb25QZXJtaXNzaW9u
cygpOwogCi0gICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbkRhdGEmKTsKKyAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5KiwgSVBDOjpDb25uZWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpOwogICAgIHZvaWQgY2FuY2Vs
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCk7CiAgICAgdm9p
ZCBjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5Kik7CiAgICAgdm9pZCBjbGVhck5vdGlm
aWNhdGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZpY2F0
aW9uSURzKTsKQEAgLTc5LDkgKzgxLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHR5
cGVkZWYgYm9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKShXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VJRCwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3RvcjxVVUlEPiYgZGVzaXJlZFBh
Z2VOb3RpZmljYXRpb25JRHMpOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQ
cm94eSosIGNvbnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0
aW9uRmlsdGVyRnVuY3Rpb24pOwotCiAgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKICAgICB2
b2lkIHByb2Nlc3NQb29sRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWZXZWJDb250
ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNw
cAppbmRleCAyNjVjMTU5ZDlkNzkuLjg1OGQ3NjQ2MmZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25Qcm92aWRlci5jcHAKQEAgLTQyLDEyICs0MiwxMiBAQCBXZWJOb3RpZmljYXRpb25Qcm92aWRl
cjo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIoY29uc3QgV0tOb3RpZmljYXRpb25Qcm92aWRlckJh
cwogICAgIGluaXRpYWxpemUocHJvdmlkZXIpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyOjpzaG93KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViTm90aWZpY2F0aW9uJiBub3RpZmlj
YXRpb24pCit2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzaG93KFdlYlBhZ2VQcm94eSog
cGFnZSwgV2ViTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCiB7CiAgICAgaWYgKCFtX2NsaWVu
dC5zaG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5zaG93KHRvQVBJKCZwYWdl
KSwgdG9BUEkoJm5vdGlmaWNhdGlvbiksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
bV9jbGllbnQuc2hvdyh0b0FQSShwYWdlKSwgdG9BUEkoJm5vdGlmaWNhdGlvbiksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OmNh
bmNlbChXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIuaAppbmRleCA3YjJlOWNlMWM1YTYuLmMxYjBhOWQ0ZWFlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXIuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBXZWJOb3RpZmljYXRpb25Q
cm92aWRlciA6IHB1YmxpYyBBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyLCBwdWJsaWMgQVBJOjpD
bAogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyKGNvbnN0IFdL
Tm90aWZpY2F0aW9uUHJvdmlkZXJCYXNlKik7CiAKLSAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5
JiwgV2ViTm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94
eSosIFdlYk5vdGlmaWNhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FuY2VsKFdlYk5vdGlm
aWNhdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJO
b3RpZmljYXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25z
dCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOWU2ZTUyYWZhMDQ2Li44NjBhNDUw
NjI0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODg3
NCw5ICs4ODc0LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3ROb3RpZmljYXRpb25QZXJt
aXNzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb20KICAgICBtX3VpQ2xpZW50LT5k
ZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCgqdGhpcywgb3JpZ2lu
LmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIG5v
dGlmaWNhdGlvbkRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd05vdGlmaWNhdGlvbihJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEm
IG5vdGlmaWNhdGlvbkRhdGEpCiB7Ci0gICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnN1cHBs
ZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5zaG93KHRoaXMsIG5vdGlmaWNh
dGlvbkRhdGEpOworICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+c2hvdyh0aGlzLCBjb25uZWN0aW9uLCBub3RpZmlj
YXRpb25EYXRhKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbihj
b25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggNWJjYTgyNjViNjcyLi40MDBmOTQwNDlkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMDU0LDcgKzIwNTQsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc1F1YXJhbnRpbmVkQW5kTm90VXNlckFwcHJvdmVkKGNvbnN0IFN0cmluZyYpOwogI2Vu
ZGlmCiAKLSAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0
aW9uRGF0YSYpOworICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJik7CiAgICAgdm9pZCBjYW5jZWxOb3RpZmlj
YXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgY2xlYXJOb3RpZmlj
YXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGRp
ZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDZkODgyOGYyZTRkMS4u
ZjYwZDNlY2QyY2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCkBAIC01ODgsNyArNTg4LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWcKIAogICAgIHJl
bW90ZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7CiAK
LSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29u
dGV4dChwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29s
LT5tX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZh
dWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICBhdXRvIHByZWZlcmVuY2VzU3RvcmUgPSBwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJQ
cmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzLnZhbHVl
KCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3Jl
KCk7CisgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtl
ckNvbnRleHQocHJlZmVyZW5jZXNTdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGlmICgh
cHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQogICAgICAgICBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQocHJvY2Vz
c1Bvb2wtPm1fcmVtb3RlV29ya2VyVXNlckFnZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGUyNTNhNWU3M2E0OC4uM2FhMmRhODJkNmU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTIwMyw2ICsyMDMsOCBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kVG9BbGxQcm9jZXNz
ZXMoY29uc3QgVCYgbWVzc2FnZSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5k
VG9BbGxQcm9jZXNzZXNGb3JTZXNzaW9uKGNvbnN0IFQmIG1lc3NhZ2UsIFBBTDo6U2Vzc2lvbklE
KTsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIHNlbmRUb0FsbFJlbW90
ZVdvcmtlclByb2Nlc3Nlcyhjb25zdCBUJiBtZXNzYWdlKTsKKwogICAgIHZvaWQgcHJvY2Vzc0Rp
ZEZpbmlzaExhdW5jaGluZyhXZWJQcm9jZXNzUHJveHkmKTsKIAogICAgIFdlYlByb2Nlc3NDYWNo
ZSYgd2ViUHJvY2Vzc0NhY2hlKCkgeyByZXR1cm4gbV93ZWJQcm9jZXNzQ2FjaGUuZ2V0KCk7IH0K
QEAgLTgzMiw0ICs4MzQsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2VuZFRvQWxsUHJvY2Vz
c2VzRm9yU2Vzc2lvbihjb25zdCBUJiBtZXNzYWdlLCBQQUw6OlNlc3Npb24KICAgICB9CiB9CiAK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9BbGxSZW1v
dGVXb3JrZXJQcm9jZXNzZXMoY29uc3QgVCYgbWVzc2FnZSkKK3sKKyAgICBmb3IgKGF1dG8mIHBy
b2Nlc3MgOiByZW1vdGVXb3JrZXJQcm9jZXNzZXMoKSkgeworICAgICAgICBpZiAocHJvY2Vzcy5j
YW5TZW5kTWVzc2FnZSgpKQorICAgICAgICAgICAgcHJvY2Vzcy5zZW5kKFQobWVzc2FnZSksIDAp
OworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyYzBhODAzMDAzMTQuLmUxYmRkNWNhNTdh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRp
b25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlck1lc3NhZ2VzLmgiCkBAIC0yMDAzLDYg
KzIwMDQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVJlbW90ZVdvcmtlcnMoT3B0
aW9uU2V0PFJlbW90ZVdvcmtlclR5cGU+IHdvcmtlclR5cAogCiAgICAgYm9vbCBkaWRDaGFuZ2Ug
PSBmYWxzZTsKICAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyKSAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikgeworICAgICAgICBy
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bi0+cmVtb3RlV29ya2VyUGFnZUlEKTsKICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24gPSB7IH07CiAgICAgICAgIGRpZENoYW5nZSA9IHRydWU7CiAgICAgfQpAQCAtMjA2NCw2ICsy
MDY2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVSZW1vdGVXb3JrZXJzKFJlbW90
ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29uc3QgVXNlCiAgICAgICAgIG51bGxwdHIsCiAgICAg
ICAgIHsgfQogICAgIH07CisKKyAgICBpZiAod29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBl
OjpTZXJ2aWNlV29ya2VyKQorICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Ok5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZUlELCBTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6c2luZ2xldG9uKCkpOworCiAgICAgdXBkYXRlQmFja2dy
b3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAogICAgIHVwZGF0ZVJlbW90ZVdvcmtlclByb2Nl
c3NBc3NlcnRpb24od29ya2VyVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDEzMjkwNTU3MmY0
Yi4uMmM3YTZjNjljNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2lu
Y2x1ZGUgIldlYkJhY2tGb3J3YXJkQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2Vy
UHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgorI2luY2x1ZGUgIldlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NDYWNoZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5o
IgpAQCAtMjA1NCw0ICsyMDU1LDI2IEBAIGJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6c2hvdWxkTWFr
ZU5leHROZXR3b3JrUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5nKCkKICAgICByZXR1cm4gc3Rk
OjpleGNoYW5nZShuZXh0TmV0d29ya1Byb2Nlc3NMYXVuY2hTaG91bGRGYWlsRm9yVGVzdGluZywg
ZmFsc2UpOwogfQogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNob3dTZXJ2aWNlV29ya2VyTm90
aWZpY2F0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uRGF0YSYgbm90aWZpY2F0aW9uRGF0YSkKK3sKKyAgICBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkuc2hvdyhudWxscHRyLCBj
b25uZWN0aW9uLCBub3RpZmljYXRpb25EYXRhKTsKK30KKwordm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpjYW5jZWxTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlv
bklEKQoreworICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hhcmVkU2VydmljZVdv
cmtlck1hbmFnZXIoKS5jYW5jZWwobnVsbHB0ciwgbm90aWZpY2F0aW9uSUQpOworfQorCit2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OmNsZWFyU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihjb25zdCBV
VUlEJiBub3RpZmljYXRpb25JRCkKK3sKKyAgICBWZWN0b3I8VVVJRD4gbm90aWZpY2F0aW9uczsK
KyAgICBub3RpZmljYXRpb25zLmFwcGVuZChub3RpZmljYXRpb25JRCk7CisgICAgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpLmNsZWFyTm90
aWZpY2F0aW9ucyhudWxscHRyLCBub3RpZmljYXRpb25zKTsKK30KKwordm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpkaWREZXN0cm95U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBu
b3RpZmljYXRpb25JRCkKK3sKKyAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNoYXJl
ZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkuZGlkRGVzdHJveU5vdGlmaWNhdGlvbihudWxscHRyLCBu
b3RpZmljYXRpb25JRCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA4NWVlMzFlMTM4M2QuLjQ2
YWYwZWY1OWViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKIGNsYXNzIExvY2FsV2ViTG9ja1JlZ2lzdHJ5OwogCiBzdHJ1Y3QgTW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjsKK3N0cnVjdCBOb3RpZmljYXRpb25EYXRhOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM3MCw2ICszNzEsMTEgQEAgcHVibGljOgogCiAgICAg
dm9pZCBjb3VudE5vbkRlZmF1bHRTZXNzaW9uU2V0cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNp
emVfdCk+JiYpOwogCisgICAgdm9pZCBzaG93U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihJUEM6
OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJik7CisgICAgdm9p
ZCBjYW5jZWxTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlv
bklEKTsKKyAgICB2b2lkIGNsZWFyU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihjb25zdCBVVUlE
JiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBkaWREZXN0cm95U2VydmljZVdvcmtlck5vdGlm
aWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CisKIHByaXZhdGU6CiAgICAgZW51
bSBjbGFzcyBGb3JjZVJlaW5pdGlhbGl6YXRpb24gOiBib29sIHsgTm8sIFllcyB9OwogI2lmIEVO
QUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY3YmVlNTQzY2UwZi4uYzE1ZTFiMWRkZjc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk5
Niw2ICs5OTYsNyBAQAogCQk1MTVCRTFCNTFENTkxN0ZGMDBERDdDNjggLyogVUlHYW1lcGFkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVCRTFBRDFE
NTU1QzUxMDBERDdDNjggLyogVUlHYW1lcGFkLmggKi87IH07CiAJCTUxNjMxOTk0MTYyODlBNjAw
MEUyMkYwMCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFDQzkzNDE2MjgwNjQ4MDAzNDI1
NTAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MTYzMTk5
NTE2Mjg5QTYzMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQ0M5MzUxNjI4MDY0ODAwMzQy
NTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCAqLzsgfTsKKwkJNTE2NDY1ODAyN0E5Qzc3
NDAwRTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY0NjU3RjI3QTlDNzY3MDBF
MUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCAqLzsgfTsKIAkJNTE2
QTRBNUQxMjBBMkNDRDAwQzA1QjdGIC8qIEFQSUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogQVBJ
RXJyb3IuaCAqLzsgfTsKIAkJNTE3OTU1NkExNjI4NzZGMzAwRkE0M0I2IC8qIE5ldHdvcmtQcm9j
ZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBD
QzdFMDE2MTM4RTI5MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3MuaCAqLzsgfTsKIAkJNTE3OTU1
NkUxNjI4NzdCMzAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMENDN0VCMTYxMzhFNzIwMEQwM0VE
MyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmggKi87IH07CkBAIC00NDgxLDYgKzQ0ODIsOCBAQAog
CQk1MTYwRTk1ODI3NEMwRDg4MDA1NjczODggLyogUHVzaEFwcEJ1bmRsZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFB1c2hBcHBCdW5kbGUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjBFOTVDMjc0QzJBMDMwMDU2NzM4OCAvKiBNb2NrQXBw
QnVuZGxlUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0Fw
cEJ1bmRsZVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjBFOTVG
Mjc0QzJBM0YwMDU2NzM4OCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNb2NrQXBwQnVuZGxlUmVnaXN0cnkubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjQ2NTdFMjdBOUM3NjUwMEUxRjJCQSAvKiBT
ZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
ZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxNjQ2NTdGMjdBOUM3NjcwMEUxRjJCQSAvKiBTZXJ2aWNlV29ya2VyTm90aWZp
Y2F0aW9uSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
SGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTY0QzA5NDFCMDVCNzU3
MDA0RjEwMkEgLyogQXV4aWxpYXJ5UHJvY2Vzcy5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBBdXhpbGlhcnlQcm9jZXNzLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogQVBJRXJyb3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE3QTMzQjMxMzBCMzA4QzAwRjgwQ0I1IC8qIFdLQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
Njc1LDYgKzg2NzgsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQkzMUEyRUM1MzE0ODk5ODI1MDA4MTBENzEgLyogTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QuaCAqLywKKwkJCQk1MTY0NjU3RTI3QTlDNzY1MDBFMUYyQkEgLyogU2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbkhhbmRsZXIuY3BwICovLAorCQkJCTUxNjQ2NTdGMjdBOUM3NjcwMEUxRjJCQSAv
KiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oICovLAogCQkJCTMxQTJFQzQxMTQ4
OTk3QkUwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb24uY3BwICovLAogCQkJCTMxQTJFQzQyMTQ4
OTk3QkUwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb24uaCAqLywKIAkJCQk1MTQ1MjcwNjI3MUZC
RUMxMDAwNDY3QjYgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcCAq
LywKQEAgLTEzOTE5LDYgKzEzOTI0LDcgQEAKIAkJCQlCQzRBNjI5NzE0NzMxM0EwMDA2QzY4MUEg
LyogV0tDb25uZWN0aW9uUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTk2REQ2QTI1MUU3MUQ0
MDBDMjc1QTcgLyogV0tDb250YWN0UGlja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODY1
NDFFNzIzNUIxMDA5NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxNjQ2NTgwMjdBOUM3NzQwMEUxRjJCQSAvKiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
SGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg2NTUxRTcyMzVCODAwOTRGREM4IC8q
IFdLQ29udGVudFJ1bGVMaXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNTEzOURC
MjU5MjdEODAwMDlDM0UzMCAvKiBXS0NvbnRlbnRSdWxlTGlzdFByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDRDI4NjUxMUU3MjM1OTkwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdFN0
b3JlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5k
ZXggOWMxYzEyZDg4NTU0Li5mZjdmZDMxYWY5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAj
aW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbi5oIgog
I2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eU1lc3NhZ2VzLmgiCkBAIC00Miw2ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RpZmljYXRpb25EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
V0NvbnRleHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2V0dGluZ3MuaD4KQEAgLTEyMSwyNSArMTIzLDQyIEBAIHZvaWQgV2ViTm90aWZpY2F0
aW9uTWFuYWdlcjo6cmVtb3ZlQWxsUGVybWlzc2lvbnNGb3JUZXN0aW5nKCkKIH0KIAogI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQotdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kTm90aWZp
Y2F0aW9uTWVzc2FnZShXZWJQcm9jZXNzJiBwcm9jZXNzLCBVJiYgbWVzc2FnZSwgV2ViUGFnZSYg
cGFnZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
c2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UoVSYmIG1lc3NhZ2UsIE5vdGlmaWNhdGlvbiYgbm90aWZp
Y2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogeworICAgIGlmICghcGFnZSAmJiAhbm90aWZpY2F0aW9u
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAjaWYg
RU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYnVpbHRJbk5vdGlmaWNhdGlvbnNFbmFibGVkKCkpCi0g
ICAgICAgIHJldHVybiBwcm9jZXNzLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIHBhZ2Uuc2Vzc2lvbklEKCkudG9VSW50
NjQoKSk7CisgICAgICAgIHJldHVybiBtX3Byb2Nlc3MuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgbm90aWZpY2F0aW9u
LmRhdGEoKS5zb3VyY2VTZXNzaW9uLnRvVUludDY0KCkpOwogI2VuZGlmCi0gICAgcmV0dXJuIHBy
b2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBw
YWdlLmlkZW50aWZpZXIoKSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSWRlbnRpZmllcjsKKyAgICBpZiAocGFnZSkKKyAgICAgICAgcGFnZUlkZW50
aWZpZXIgPSBwYWdlLT5pZGVudGlmaWVyKCk7CisgICAgZWxzZSBpZiAoYXV0byogY29ubmVjdGlv
biA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkgeworICAgICAg
ICAvLyBQYWdlbGVzcyBub3RpZmljYXRpb24gbWVzc2FnZXMgYXJlLCBieSBkZWZhdWx0LCBvbiBi
ZWhhbGYgb2YgYSBzZXJ2aWNlIHdvcmtlci4KKyAgICAgICAgLy8gU28gdXNlIHRoZSBzZXJ2aWNl
IHdvcmtlciBjb25uZWN0aW9uJ3MgcGFnZSBpZGVudGlmaWVyLgorICAgICAgICBwYWdlSWRlbnRp
ZmllciA9IGNvbm5lY3Rpb24tPnBhZ2VJZGVudGlmaWVyKCk7CisgICAgfQorCisgICAgQVNTRVJU
KHBhZ2VJZGVudGlmaWVyKTsKKworICAgIHJldHVybiBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCAqcGFnZUlkZW50aWZpZXIpOwogfQog
I2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQogCiBib29sIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXI6OnNob3coTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiB7
CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
Ci0gICAgaWYgKCFwYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLm5vdGlmaWNhdGlvbnNFbmFi
bGVkKCkpCisgICAgaWYgKHBhZ2UgJiYgIXBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkubm90
aWZpY2F0aW9uc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9ub3Rp
ZmljYXRpb25JRE1hcC5zZXQobm90aWZpY2F0aW9uLmlkZW50aWZpZXIoKSwgJm5vdGlmaWNhdGlv
bik7CisgICAgaWYgKCFzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShNZXNzYWdlczo6Tm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpTaG93Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5k
YXRhKCkpLCBub3RpZmljYXRpb24sIHBhZ2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShtX3Byb2Nlc3MsIE1lc3NhZ2VzOjpOb3RpZmljYXRp
b25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OlNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmRh
dGEoKSksICpwYWdlKTsKKyAgICBtX25vdGlmaWNhdGlvbklETWFwLnNldChub3RpZmljYXRpb24u
aWRlbnRpZmllcigpLCAmbm90aWZpY2F0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CkBAIC0xNTAsMTYgKzE2OSwxNiBAQCBib29s
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnNob3coTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24s
IFdlYlBhZ2UqIHBhZ2UpCiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsKE5v
dGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogewotI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQotICAgIGlmICghcGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5ub3Rp
ZmljYXRpb25zRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKGlzTWFpblJ1
bkxvb3AoKSk7CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBhdXRvIG1hcHBlZE5v
dGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAuZ2V0KG5vdGlmaWNhdGlvbi5pZGVudGlm
aWVyKCkpOwogICAgIGlmICghbWFwcGVkTm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47CiAg
ICAgQVNTRVJUKG1hcHBlZE5vdGlmaWNhdGlvbiA9PSAmbm90aWZpY2F0aW9uKTsKIAotICAgIHNl
bmROb3RpZmljYXRpb25NZXNzYWdlKG1fcHJvY2VzcywgTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlcjo6Q2FuY2VsTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5pZGVu
dGlmaWVyKCkpLCAqcGFnZSk7CisgICAgaWYgKCFzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShNZXNz
YWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpDYW5jZWxOb3RpZmljYXRp
b24obm90aWZpY2F0aW9uLmlkZW50aWZpZXIoKSksIG5vdGlmaWNhdGlvbiwgcGFnZSkpCisgICAg
ICAgIHJldHVybjsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2UpOwpAQCAtMTY4LDYgKzE4Nyw4IEBAIHZvaWQgV2ViTm90aWZpY2F0
aW9uTWFuYWdlcjo6Y2FuY2VsKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBw
YWdlKQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRp
b24oTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiB7CisgICAgQVNT
RVJUKGlzTWFpblJ1bkxvb3AoKSk7CisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBS
ZWYgcHJvdGVjdGVkTm90aWZpY2F0aW9uIHsgbm90aWZpY2F0aW9uIH07CiAKQEAgLTE3Niw3ICsx
OTcsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRp
b24oTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sCiAgICAgICAgIHJldHVybjsKICAgICBBU1NF
UlQodGFrZW5Ob3RpZmljYXRpb24gPT0gJm5vdGlmaWNhdGlvbik7CiAKLSAgICBzZW5kTm90aWZp
Y2F0aW9uTWVzc2FnZShtX3Byb2Nlc3MsIE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXI6OkRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmlkZW50aWZp
ZXIoKSksICpwYWdlKTsKKyAgICBzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShNZXNzYWdlczo6Tm90
aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpEaWREZXN0cm95Tm90aWZpY2F0aW9uKG5v
dGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpLCBub3RpZmljYXRpb24sIHBhZ2UpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CkBA
IC0xODUsNiArMjA2LDggQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95
Tm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLAogCiB2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXI6OmRpZFNob3dOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0
aW9uSUQpCiB7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CisKICNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25v
dGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRpb25JRCk7CiAgICAgaWYgKCFub3RpZmljYXRp
b24pCkBAIC0xOTgsNiArMjIxLDggQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRT
aG93Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQogCiB2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlm
aWNhdGlvbklEKQogeworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOworCiAjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0g
bV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQpOwogICAgIGlmICghbm90aWZp
Y2F0aW9uKQpAQCAtMjEzLDYgKzIzOCw4IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
ZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCiAKIHZvaWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rv
cjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKQogeworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkp
OworCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgc2l6ZV90IGNvdW50ID0gbm90aWZp
Y2F0aW9uSURzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCBlNjM1MWZkZjk2MTYuLjQ5ZWE3
MTg0NTViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaApAQCAtODEsNiArODEsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxV
VUlEPiYgbm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGRpZFJlbW92ZU5vdGlmaWNhdGlvbkRl
Y2lzaW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3JpZ2luU3RyaW5ncyk7CiAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKFUmJiBtZXNzYWdl
LCBXZWJDb3JlOjpOb3RpZmljYXRpb24mLCBXZWJQYWdlKik7CisKICAgICBXZWJQcm9jZXNzJiBt
X3Byb2Nlc3M7CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oCmluZGV4IGMxZWRkOWYwYTJlYy4uMWUzMTQwZjY4MmVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTY2LDYgKzY2LDggQEAgcHVibGljOgogCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKIAorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0
ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0
aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJOb3RpZmljYXRpb25DbGllbnQuY3BwCmluZGV4IGMyNGVkMzdkNzZlZi4uNDExYmJlYWIzOTU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcApAQCAtNDAsMzQgKzQwLDY2IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpXZWJOb3Rp
ZmljYXRpb25DbGllbnQoV2ViUGFnZSogcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQogeworICAg
IEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogfQogCiBXZWJOb3RpZmljYXRpb25DbGllbnQ6On5X
ZWJOb3RpZmljYXRpb25DbGllbnQoKQogeworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwog
fQogCiBib29sIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6c2hvdyhOb3RpZmljYXRpb24mIG5vdGlm
aWNhdGlvbikKIHsKLSAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVu
dDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5zaG93KG5vdGlmaWNhdGlvbiwgbV9wYWdlKTsK
KyAgICBpZiAoaXNNYWluUnVuTG9vcCgpKQorICAgICAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5zaG93KG5vdGlm
aWNhdGlvbiwgbV9wYWdlKTsKKworICAgIGJvb2wgcmVzdWx0OworICAgIGNhbGxPbk1haW5SdW5M
b29wQW5kV2FpdChbJnJlc3VsdCwgcHJvdGVjdGVkTm90aWZpY2F0aW9uID0gUmVmIHsgbm90aWZp
Y2F0aW9uIH1dKCkgeworICAgICAgICByZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5z
dXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPnNob3cocHJvdGVjdGVkTm90aWZp
Y2F0aW9uLmdldCgpLCBudWxscHRyKTsKKyAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQog
CiB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2FuY2VsKE5vdGlmaWNhdGlvbiYgbm90aWZp
Y2F0aW9uKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90
aWZpY2F0aW9uTWFuYWdlcj4oKS0+Y2FuY2VsKG5vdGlmaWNhdGlvbiwgbV9wYWdlKTsKKyAgICBp
ZiAoaXNNYWluUnVuTG9vcCgpKSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1
cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+Y2FuY2VsKG5vdGlmaWNhdGlvbiwg
bV9wYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhbGxPbk1haW5SdW5Mb29w
QW5kV2FpdChbcHJvdGVjdGVkTm90aWZpY2F0aW9uID0gUmVmIHsgbm90aWZpY2F0aW9uIH1dKCkg
eworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXI+KCktPmNhbmNlbChwcm90ZWN0ZWROb3RpZmljYXRpb24uZ2V0KCksIG51bGxw
dHIpOworICAgIH0pOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0
aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQogewotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4o
KS0+ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIG1fcGFnZSk7CisgICAgaWYg
KGlzTWFpblJ1bkxvb3AoKSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBw
bGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmRpZERlc3Ryb3lOb3RpZmljYXRpb24o
bm90aWZpY2F0aW9uLCBtX3BhZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
TWFrZSBzdXJlIHRoaXMgTm90aWZpY2F0aW9uIG9iamVjdCBpcyBkZWFsbG9jYXRlZCBvbiB0aGlz
IHRocmVhZCBieSBob2xkaW5nIG9uZSBsYXN0IHJlZigpIHRvIGl0IGhlcmUKKyAgICBhdXRvIGxh
c3ROb3RpZmljYXRpb25SZWYgPSBSZWYgeyBub3RpZmljYXRpb24gfTsKKworICAgIGNhbGxPbk1h
aW5SdW5Mb29wQW5kV2FpdChbJm5vdGlmaWNhdGlvbl0oKSB7CisgICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+ZGlkRGVz
dHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIG51bGxwdHIpOworICAgIH0pOwogfQogCiB2
b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3ll
ZCgpCiB7Ci0gICAgZGVsZXRlIHRoaXM7CisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXNdIHsK
KyAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9u
Q2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBQZXJtaXNzaW9uSGFuZGxlciYmIHBlcm1pc3Npb25IYW5kbGVyKQogeworICAgIC8vIE9ubHkg
V2luZG93IGNsaWVudHMgY2FuIHJlcXVlc3QgcGVybWlzc2lvbgorICAgIEFTU0VSVChpc01haW5S
dW5Mb29wKCkpOworICAgIEFTU0VSVChtX3BhZ2UpOworCiAgICAgYXV0byogc2VjdXJpdHlPcmln
aW4gPSBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgaWYgKCFzZWN1cml0eU9yaWdpbikK
ICAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25IYW5kbGVyKE5vdGlmaWNhdGlvbkNsaWVudDo6UGVy
bWlzc2lvbjo6RGVuaWVkKTsKQEAgLTc2LDkgKzEwOCwyMCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlv
bkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgUAogCiBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gV2ViTm90aWZpY2F0aW9uQ2xp
ZW50OjpjaGVja1Blcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsK
LSAgICBpZiAoIWNvbnRleHQgfHwgIWNvbnRleHQtPmlzRG9jdW1lbnQoKSB8fCAhY29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKSkKKyAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBOb3Rp
ZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb246OkRlbmllZDsKLSAgICByZXR1cm4gbV9wYWdlLT5u
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKS0+cGVybWlzc2lvbkxldmVsKGNv
bnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSk7CisgICAgaWYgKCFjb250ZXh0LT5pc0Rv
Y3VtZW50KCkgJiYgIWNvbnRleHQtPmlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCkpCisgICAg
ICAgIHJldHVybiBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb246OkRlbmllZDsKKworICAg
IGF1dG8qIG9yaWdpbiA9IGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgaWYgKCFvcmln
aW4pCisgICAgICAgIHJldHVybiBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb246OkRlbmll
ZDsKKworICAgIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiByZXN1bHRQZXJtaXNzaW9u
OworICAgIGNhbGxPbk1haW5SdW5Mb29wQW5kV2FpdChbJnJlc3VsdFBlcm1pc3Npb24sIG9yaWdp
biA9IG9yaWdpbi0+ZGF0YSgpLnRvU3RyaW5nKCldIHsKKyAgICAgICAgcmVzdWx0UGVybWlzc2lv
biA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFu
YWdlcj4oKS0+cG9saWN5Rm9yT3JpZ2luKG9yaWdpbik7CisgICAgfSk7CisgICAgcmV0dXJuIHJl
c3VsdFBlcm1pc3Npb247CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwKaW5kZXggOGRlNjgxYjIyMjQxLi5kZDM5NzYzYWM1MTIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbApAQCAtMjA4LDYgKzIwOCw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVy
IHsKICAgICB1bmRlZmluZWQgZGVueVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oRE9NU3RyaW5n
IG9yaWdpbik7CiAgICAgdW5kZWZpbmVkIHJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Np
b25zKCk7CiAgICAgdW5kZWZpbmVkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2sob2JqZWN0
IG5vdGlmaWNhdGlvbik7CisgICAgdW5kZWZpbmVkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xp
Y2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpOwogCiAgICAgLy8gR2VvbG9jYXRpb24K
ICAgICB1bmRlZmluZWQgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2xlYW4gdmFsdWUpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcAppbmRleCAzM2U3MGFmMzJhNmQuLjBkMGQxZmZiNjAwMiAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKQEAgLTY2OCw2ICs2NjgsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNp
bXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKQogICAg
IHBvc3RQYWdlTWVzc2FnZSgiU2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayIsIG5vdGlmaWNh
dGlvbklEKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNpbXVsYXRlV2ViTm90aWZp
Y2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpCit7CisgICAgcG9zdFBh
Z2VNZXNzYWdlKCJTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbnMiKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNldEFkZHNWaXNp
dGVkTGlua3MoYm9vbCBhZGRzVmlzaXRlZExpbmtzKQogewogICAgIHBvc3RQYWdlTWVzc2FnZSgi
U2V0QWRkc1Zpc2l0ZWRMaW5rcyIsIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGFkZHNWaXNpdGVk
TGlua3MpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggYmMxNDc1Y2FmN2ZhLi4wYTg1OTk1ODBmYWMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmgKQEAgLTk1LDYgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdFNldFdp
bmRvd0lzS2V5KGJvb2wpOwogICAgIHZvaWQgcG9zdFNldFZpZXdTaXplKGRvdWJsZSB3aWR0aCwg
ZG91YmxlIGhlaWdodCk7CiAgICAgdm9pZCBwb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlj
ayhXS0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgcG9zdFNpbXVsYXRlV2ViTm90
aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpOwogICAgIHZvaWQg
cG9zdFNldEFkZHNWaXNpdGVkTGlua3MoYm9vbCk7CiAKICAgICAvLyBHZW9sb2NhdGlvbi4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwCmluZGV4IDc4MWI4MTY5MWFmYy4uMjRhOWE4NWQwN2JhIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTg2Nywx
MSArODY3LDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoYm9vbCBlbmFibGVkKQogdm9pZCBUZXN0UnVubmVyOjpncmFudFdlYk5vdGlmaWNh
dGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYgb3JpZ2luKQogewogICAgIFdLQnVuZGxlU2V0V2Vi
Tm90aWZpY2F0aW9uUGVybWlzc2lvbihJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxl
KCksIHBhZ2UoKSwgdG9XSyhvcmlnaW4pLmdldCgpLCB0cnVlKTsKKyAgICBwb3N0U3luY2hyb25v
dXNQYWdlTWVzc2FnZVJldHVybmluZ0Jvb2xlYW4oIkdyYW50Tm90aWZpY2F0aW9uUGVybWlzc2lv
biIsIG9yaWdpbik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6ZGVueVdlYk5vdGlmaWNhdGlvblBl
cm1pc3Npb24oSlNTdHJpbmdSZWYgb3JpZ2luKQogewogICAgIFdLQnVuZGxlU2V0V2ViTm90aWZp
Y2F0aW9uUGVybWlzc2lvbihJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIHBh
Z2UoKSwgdG9XSyhvcmlnaW4pLmdldCgpLCBmYWxzZSk7CisgICAgcG9zdFN5bmNocm9ub3VzUGFn
ZU1lc3NhZ2VSZXR1cm5pbmdCb29sZWFuKCJEZW55Tm90aWZpY2F0aW9uUGVybWlzc2lvbiIsIG9y
aWdpbik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVy
bWlzc2lvbnMoKQpAQCAtODg3LDYgKzg4OSwxMSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNpbXVsYXRl
V2ViTm90aWZpY2F0aW9uQ2xpY2soSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pCiAgICAgaW5qZWN0
ZWRCdW5kbGUucG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2sobm90aWZpY2F0aW9uSUQu
Z2V0KCkpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xp
Y2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpCit7CisgICAgSW5qZWN0ZWRCdW5kbGU6
OnNpbmdsZXRvbigpLnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdv
cmtlck5vdGlmaWNhdGlvbnMoKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpzZXRHZW9sb2NhdGlv
blBlcm1pc3Npb24oYm9vbCBlbmFibGVkKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSBkb25lIGJ5IGZyYW1lLgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAyYjc4YzFkYTk2YjEuLjkwZjVlZTQ4MWY0NSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKQEAgLTI5NCw2ICsyOTQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGVueVdlYk5v
dGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYgb3JpZ2luKTsKICAgICBzdGF0aWMgdm9p
ZCByZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwogICAgIHN0YXRpYyB2b2lk
IHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pOwor
ICAgIHN0YXRpYyB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9ucygpOwogCiAgICAgLy8gR2VvbG9jYXRpb24uCiAgICAgdm9pZCBzZXRH
ZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCmluZGV4IDRkNmU5MDlhYmQyYS4uNTAwYzcxZDVhNGExIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNjk2LDYgKzY5Niw3IEBAIFdL
UmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVyOjpnZW5lcmF0
ZVBhZ2VDb25maWd1cmF0aW9uKGNvCiAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG5vdGlm
aWNhdGlvbk1hbmFnZXIgPSBXS0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5hZ2VyKG1fY29udGV4
dC5nZXQoKSk7CiAgICAgV0tOb3RpZmljYXRpb25Qcm92aWRlclYwIG5vdGlmaWNhdGlvbktpdCA9
IG1fd2ViTm90aWZpY2F0aW9uUHJvdmlkZXIucHJvdmlkZXIoKTsKICAgICBXS05vdGlmaWNhdGlv
bk1hbmFnZXJTZXRQcm92aWRlcihub3RpZmljYXRpb25NYW5hZ2VyLCAmbm90aWZpY2F0aW9uS2l0
LmJhc2UpOworICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKFdLTm90aWZpY2F0
aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyKCksICZu
b3RpZmljYXRpb25LaXQuYmFzZSk7CiAKICAgICBpZiAodGVzdFBsdWdpbkRpcmVjdG9yeSgpKQog
ICAgICAgICBXS0NvbnRleHRTZXRBZGRpdGlvbmFsUGx1Z2luc0RpcmVjdG9yeShtX2NvbnRleHQu
Z2V0KCksIHRlc3RQbHVnaW5EaXJlY3RvcnkoKSk7CkBAIC03MTcsNiArNzE4LDI0IEBAIFdLUmV0
YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZVBh
Z2VDb25maWd1cmF0aW9uKGNvCiAgICAgcmV0dXJuIHBhZ2VDb25maWd1cmF0aW9uOwogfQogCiti
b29sIFRlc3RDb250cm9sbGVyOjpncmFudE5vdGlmaWNhdGlvblBlcm1pc3Npb24oV0tTdHJpbmdS
ZWYgb3JpZ2luU3RyaW5nKQoreworICAgIG1fd2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuc2V0UGVy
bWlzc2lvbih0b1dURlN0cmluZyhvcmlnaW5TdHJpbmcpLCB0cnVlKTsKKworICAgIGF1dG8gb3Jp
Z2luID0gYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbVN0cmluZyhvcmlnaW5TdHJp
bmcpKTsKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNh
dGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90
aWZpY2F0aW9uTWFuYWdlcigpLCBvcmlnaW4uZ2V0KCksIHRydWUpOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFRlc3RDb250cm9sbGVyOjpkZW55Tm90aWZpY2F0aW9uUGVybWlzc2lvbihX
S1N0cmluZ1JlZiBvcmlnaW5TdHJpbmcpCit7CisgICAgbV93ZWJOb3RpZmljYXRpb25Qcm92aWRl
ci5zZXRQZXJtaXNzaW9uKHRvV1RGU3RyaW5nKG9yaWdpblN0cmluZyksIGZhbHNlKTsKKworICAg
IGF1dG8gb3JpZ2luID0gYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbVN0cmluZyhv
cmlnaW5TdHJpbmcpKTsKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFVwZGF0
ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNl
V29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpLCBvcmlnaW4uZ2V0KCksIGZhbHNlKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhP
cHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIGF1dG8gYXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyID0gb3B0aW9ucy5hcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIo
KTsKQEAgLTIzNTksNiArMjM3OCwxMSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzaW11bGF0ZVdl
Yk5vdGlmaWNhdGlvbkNsaWNrKFdLRGF0YVJlZiBub3RpZmljYXRpb25JRCkKICAgICBtX3dlYk5v
dGlmaWNhdGlvblByb3ZpZGVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2sobWFpbldlYlZp
ZXcoKS0+cGFnZSgpLCBub3RpZmljYXRpb25JRCk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6
OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
cygpCit7CisgICAgbV93ZWJOb3RpZmljYXRpb25Qcm92aWRlci5zaW11bGF0ZVdlYk5vdGlmaWNh
dGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKK30KKwogdm9pZCBUZXN0
Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgZW5hYmxlZCkKIHsKICAg
ICBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBiNTJhZjY2NTU1MmIuLmUyNGFjMzIwMzRhZCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMTI3LDYgKzEyNyw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEJlZm9yZVVubG9hZFJldHVyblZhbHVlKGJvb2wgdmFsdWUp
IHsgbV9iZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZSA9IHZhbHVlOyB9CiAKICAgICB2b2lkIHNpbXVs
YXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKTsKKyAgICB2
b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0
aW9ucygpOwogCiAgICAgLy8gR2VvbG9jYXRpb24uCiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBl
cm1pc3Npb24oYm9vbCk7CkBAIC0zNzMsNiArMzc0LDkgQEAgcHVibGljOgogCiAgICAgV0tQcmVm
ZXJlbmNlc1JlZiBwbGF0Zm9ybVByZWZlcmVuY2VzKCk7CiAKKyAgICBib29sIGdyYW50Tm90aWZp
Y2F0aW9uUGVybWlzc2lvbihXS1N0cmluZ1JlZiBvcmlnaW4pOworICAgIGJvb2wgZGVueU5vdGlm
aWNhdGlvblBlcm1pc3Npb24oV0tTdHJpbmdSZWYgb3JpZ2luKTsKKwogcHJpdmF0ZToKICAgICBX
S1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZVBhZ2VDb25maWd1cmF0
aW9uKGNvbnN0IFRlc3RPcHRpb25zJik7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0Q29uZmln
dXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9u
cyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRl
eCAyY2E0MmMzZWU1YzMuLjk0YTA0NmIyMDJlMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAKQEAgLTM5Niw2ICszOTYsMTEgQEAgdm9pZCBUZXN0SW52b2NhdGlv
bjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2Fn
ZU5hbWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0Zv
clNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25zIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9ucygpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRBZGRzVmlzaXRlZExpbmtz
IikpIHsKICAgICAgICAgV0tQYWdlU2V0QWRkc1Zpc2l0ZWRMaW5rcyhUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBib29sZWFuVmFsdWUobWVzc2FnZUJv
ZHkpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTAyNSw2ICsxMDMwLDEyIEBAIFdLUmV0YWluUHRy
PFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VG
cm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKGNvdW50
KSk7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2Fn
ZU5hbWUsICJHcmFudE5vdGlmaWNhdGlvblBlcm1pc3Npb24iKSkKKyAgICAgICAgcmV0dXJuIGFk
b3B0V0soV0tCb29sZWFuQ3JlYXRlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5ncmFudE5v
dGlmaWNhdGlvblBlcm1pc3Npb24oc3RyaW5nVmFsdWUobWVzc2FnZUJvZHkpKSkpOworCisgICAg
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJEZW55Tm90aWZp
Y2F0aW9uUGVybWlzc2lvbiIpKQorICAgICAgICByZXR1cm4gYWRvcHRXSyhXS0Jvb2xlYW5DcmVh
dGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmRlbnlOb3RpZmljYXRpb25QZXJtaXNzaW9u
KHN0cmluZ1ZhbHVlKG1lc3NhZ2VCb2R5KSkpKTsKKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiSXNEb2luZ01lZGlhQ2FwdHVyZSIpKQogICAgICAg
ICByZXR1cm4gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLmlzRG9pbmdNZWRpYUNhcHR1cmUoKSkpOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAppbmRleCBjODhmMmU5ZjhkYjIu
LmM1MWI5YWFjZDljNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgc3RhdGljIFdLRGljdGlvbmFy
eVJlZiBub3RpZmljYXRpb25QZXJtaXNzaW9ucyhjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogCiBX
ZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIoKQogeworICAg
IG1fcGVybWlzc2lvbnMgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CiB9
CiAKIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjp+V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIoKQpA
QCAtODcsMTAgKzg4LDE5IEBAIFdLTm90aWZpY2F0aW9uUHJvdmlkZXJWMCBXZWJOb3RpZmljYXRp
b25Qcm92aWRlcjo6cHJvdmlkZXIoKQogICAgIHJldHVybiBub3RpZmljYXRpb25Qcm92aWRlcjsK
IH0KIAorc3RhdGljIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBub3RpZmljYXRpb25NYW5hZ2Vy
Rm9yUGFnZShXS1BhZ2VSZWYgcGFnZSkKK3sKKyAgICBpZiAocGFnZSkgeworICAgICAgICBhdXRv
IGNvbnRleHQgPSBXS1BhZ2VHZXRDb250ZXh0KHBhZ2UpOworICAgICAgICByZXR1cm4gV0tDb250
ZXh0R2V0Tm90aWZpY2F0aW9uTWFuYWdlcihjb250ZXh0KTsKKyAgICB9CisKKyAgICByZXR1cm4g
V0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbk1h
bmFnZXIoKTsKK30KKwogdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2hvd1dlYk5vdGlm
aWNhdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKQog
ewotICAgIGF1dG8gY29udGV4dCA9IFdLUGFnZUdldENvbnRleHQocGFnZSk7Ci0gICAgYXV0byBu
b3RpZmljYXRpb25NYW5hZ2VyID0gV0tDb250ZXh0R2V0Tm90aWZpY2F0aW9uTWFuYWdlcihjb250
ZXh0KTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBub3RpZmljYXRpb25NYW5hZ2Vy
Rm9yUGFnZShwYWdlKTsKICAgICBBU1NFUlQobV9rbm93bk1hbmFnZXJzLmNvbnRhaW5zKG5vdGlm
aWNhdGlvbk1hbmFnZXIpKTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIgPSBXS05vdGlmaWNh
dGlvbkdldElEKG5vdGlmaWNhdGlvbik7CkBAIC0xMTgsNyArMTI4LDcgQEAgdm9pZCBXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlcjo6Y2xvc2VXZWJOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25SZWYg
bm90aWZpY2F0aW8KIAogdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6YWRkTm90aWZpY2F0
aW9uTWFuYWdlcihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlcikKIHsKLSAgICBBU1NF
UlQoIW1fa25vd25NYW5hZ2Vycy5jb250YWlucyhtYW5hZ2VyKSk7CisgICAgQVNTRVJUKCFtX2tu
b3duTWFuYWdlcnMuY29udGFpbnMobWFuYWdlcikgfHwgbWFuYWdlciA9PSBXS05vdGlmaWNhdGlv
bk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpKTsKICAg
ICBtX2tub3duTWFuYWdlcnMuYWRkKG1hbmFnZXIpOwogfQogCkBAIC0xNDUsOCArMTU1LDE0IEBA
IHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIo
V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmCiAKIFdLRGljdGlvbmFyeVJlZiBXZWJOb3RpZmljYXRp
b25Qcm92aWRlcjo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogewotICAgIC8vIEluaXRpYWwg
cGVybWlzc2lvbnMgYXJlIGFsd2F5cyBlbXB0eS4KLSAgICByZXR1cm4gV0tNdXRhYmxlRGljdGlv
bmFyeUNyZWF0ZSgpOworICAgIFdLUmV0YWluKG1fcGVybWlzc2lvbnMuZ2V0KCkpOworICAgIHJl
dHVybiBtX3Blcm1pc3Npb25zLmdldCgpOworfQorCit2b2lkIFdlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyOjpzZXRQZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGFsbG93ZWQpCit7
CisgICAgYXV0byB3a0FsbG93ZWQgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShhbGxvd2VkKSk7
CisgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShtX3Blcm1pc3Npb25zLmdldCgpLCB0b1dLKG9yaWdp
bikuZ2V0KCksIHdrQWxsb3dlZC5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tQYWdlUmVmLCBXS0RhdGFSZWYg
bm90aWZpY2F0aW9uSUQpCkBAIC0xNTcsNiArMTczLDE2IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tQYWdlUmVmLCBXS0RhdGFS
ZWYKICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9u
X2IobV9vd25pbmdNYW5hZ2VyLmdldChpZGVudGlmaWVyKSwgbm90aWZpY2F0aW9uSUQpOwogfQog
Cit2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNs
aWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKQoreworICAgIGF1dG8gc2hhcmVkTWFu
YWdlciA9IFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb25NYW5hZ2VyKCk7CisgICAgZm9yIChhdXRvJiBpdGVyYXRvciA6IG1fb3duaW5nTWFuYWdl
cikgeworICAgICAgICBpZiAoaXRlcmF0b3IudmFsdWUgIT0gc2hhcmVkTWFuYWdlcikKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRp
ZENsaWNrTm90aWZpY2F0aW9uX2Ioc2hhcmVkTWFuYWdlciwgdXVpZFRvRGF0YShpdGVyYXRvci5r
ZXkpLmdldCgpKTsKKyAgICB9Cit9CisKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJl
c2V0KCkKIHsKICAgICBmb3IgKGF1dG8gaXRlcmF0b3IgOiBtX293bmluZ01hbmFnZXIpIHsKQEAg
LTE2Niw2ICsxOTIsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZXNldCgpCiAg
ICAgfQogCiAgICAgbV9vd25pbmdNYW5hZ2VyLmNsZWFyKCk7CisgICAgbV9wZXJtaXNzaW9ucyA9
IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlv
blByb3ZpZGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyLmgKaW5kZXggMGMzODdhNmU2YjU1Li41N2I2Y2ZhYTUxMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAgLTQ5LDExICs0OSwx
NiBAQCBwdWJsaWM6CiAgICAgV0tEaWN0aW9uYXJ5UmVmIG5vdGlmaWNhdGlvblBlcm1pc3Npb25z
KCk7CiAKICAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tQYWdlUmVmLCBX
S0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgc2ltdWxhdGVXZWJOb3RpZmljYXRp
b25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25zKCk7CisKICAgICB2b2lkIHJlc2V0
KCk7CiAKKyAgICB2b2lkIHNldFBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGJvb2wg
YWxsb3dlZCk7CisKIHByaXZhdGU6CiAgICAgSGFzaFNldDxXS1JldGFpblB0cjxXS05vdGlmaWNh
dGlvbk1hbmFnZXJSZWY+PiBtX2tub3duTWFuYWdlcnM7CiAgICAgSGFzaE1hcDxVVUlELCBXS05v
dGlmaWNhdGlvbk1hbmFnZXJSZWY+IG1fb3duaW5nTWFuYWdlcjsKKyAgICBXS1JldGFpblB0cjxX
S011dGFibGVEaWN0aW9uYXJ5UmVmPiBtX3Blcm1pc3Npb25zOwogfTsKIAogfQo=
</data>
<flag name="review"
          id="478644"
          type_id="1"
          status="+"
          setter="cdumez"
    />
    <flag name="commit-queue"
          id="478643"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451802</attachid>
            <date>2022-02-12 20:50:00 -0800</date>
            <delta_ts>2022-02-13 14:11:26 -0800</delta_ts>
            <desc>Patch for landing v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>127016</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NmJjMDg3ZmI4OTguLjdkNTRjZjU5OGUxOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBA
CisyMDIyLTAyLTEyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbXBsZW1lbnQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzIyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgVGVzdCBhIFNlcnZp
Y2VXb3JrZXIgc2hvd2luZyBhIG5vdGlmaWNhdGlvbiBib3RoIHdoZW4gaXQncyBhbGxvd2VkIGFu
ZCB3aGVuIGl0J3MgZGVuaWVkLgorCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvcmVzb3VyY2VzL3Nob3dub3RpZmljYXRpb24td29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAg
KGFzeW5jIGNvbnN0KToKKyAgICAgICAgKGxldC5tZXNzYWdlQ2xpZW50cyk6CisgICAgICAgIChh
c3luYyBldmVudCk6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25v
dGlmaWNhdGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1hbGxvd2VkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24t
ZGVuaWVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5pZWQuaHRtbDogQWRkZWQuCisKIDIwMjItMDIt
MTEgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIGBjb250YWluOmNv
bnRlbnRgIGJyZWFrcyBmdWxsc2NyZWVuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi13b3JrZXIuanMg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25v
dGlmaWNhdGlvbi13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi4xMTY3MzA5MjQ4YmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi13b3JrZXIuanMK
QEAgLTAsMCArMSwzMCBAQAorCitsZXQgbWVzc2FnZUNsaWVudHMgPSBhc3luYyBmdW5jdGlvbiht
c2cpIHsgCisgICAgY29uc3QgYWxsQ2xpZW50cyA9IGF3YWl0IGNsaWVudHMubWF0Y2hBbGwoewor
ICAgICAgICBpbmNsdWRlVW5jb250cm9sbGVkOiB0cnVlCisgICAgfSk7CisKKyAgICBmb3IgKGNv
bnN0IGNsaWVudCBvZiBhbGxDbGllbnRzKQorICAgICAgICBjbGllbnQucG9zdE1lc3NhZ2UobXNn
KTsKK30KKworc2VsZi5hZGRFdmVudExpc3RlbmVyKCdub3RpZmljYXRpb25jbGljaycsIGFzeW5j
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoImNsaWNrZWQiKTsK
KyAgICBldmVudC5ub3RpZmljYXRpb24uY2xvc2UoKTsKK30pOworCitzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ25vdGlmaWNhdGlvbmNsb3NlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBh
d2FpdCBtZXNzYWdlQ2xpZW50cygiY2xvc2VkIik7Cit9KTsKKworc2VsZi5hZGRFdmVudExpc3Rl
bmVyKCdtZXNzYWdlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAvLyBSZXBseSBpZiB0
aGUgc2hvdyBzdWNjZWVkZWQgb3IgZmFpbGVkLgorICAgIHRyeSB7CisgICAgICAgIGF3YWl0IHJl
Z2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKCJUaGlzIGlzIGEgbm90aWZpY2F0aW9uIik7Cisg
ICAgfSBjYXRjaChlcnJvcikgeworICAgICAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygic2hvd0Zh
aWxlZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGF3YWl0IG1lc3NhZ2VD
bGllbnRzKCJzaG93biIpOworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1h
bGxvd2VkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmJhZDU0YjAyNGQxMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tYWxsb3dlZC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uIHNob3duIGJ5
IGEgc2VydmljZSB3b3JrZXIgY2FuIGJlIGNsaWNrZWQgYW5kIGNsb3NlZCwgd2l0aCB0aG9zZSBh
Y3Rpb25zIGJlaW5nIG9ic2VydmFibGUgYnkgdGhlIHNlcnZpY2Ugd29ya2VyCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIE5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIGlzICJn
cmFudGVkIgorUEFTUyBnb3RDbGlja2VkIGlzIGZhbHNlCitQQVNTIGdvdENsb3NlZCBpcyBmYWxz
ZQorUEFTUyBnb3RDbGlja2VkIGlzIHRydWUKK1BBU1MgZ290Q2xvc2VkIGlzIGZhbHNlCitQQVNT
IENsb3NlIGhhcyBiZWVuIG9ic2VydmVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tYWxsb3dlZC5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1hbGxv
d2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hZDRhMDAx
NTY3OTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMv
c2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQuaHRtbApAQCAtMCwwICsxLDc2IEBACis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL25vdGlmaWNhdGlvbnMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gZmFpbFRoZVRlc3QobXNnKQoreworICAgIHRlc3RG
YWlsZWQobXNnKTsKKyAgICBpZiAodGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZ3JhbnRXZWJOb3RpZmljYXRpb25QZXJt
aXNzaW9uKHRlc3RVUkwpOworICAgIHNldFRpbWVvdXQoImZhaWxUaGVUZXN0KCd0aW1lZCBvdXQn
KSIsIDE1MDAwKTsKK30KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBhIG5vdGlmaWNh
dGlvbiBzaG93biBieSBhIHNlcnZpY2Ugd29ya2VyIGNhbiBiZSBjbGlja2VkIGFuZCBjbG9zZWQs
IHdpdGggdGhvc2UgYWN0aW9ucyBiZWluZyBvYnNlcnZhYmxlIGJ5IHRoZSBzZXJ2aWNlIHdvcmtl
ciIpOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIiwg
ImdyYW50ZWQiKTsKKworYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkgewor
ICAgIHZhciByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdp
c3RlcigncmVzb3VyY2VzL3Nob3dub3RpZmljYXRpb24td29ya2VyLmpzJyk7CisgICAgCisgICAg
aWYgKCFyZWdpc3RyYXRpb24pCisgICAgICAgIHJldHVybiB0ZXN0RmFpbGVkKCJObyByZWdpc3Ry
YXRpb24iKTsKKyAgICAKKyAgICBpZiAocmVnaXN0cmF0aW9uLmFjdGl2ZSkgeworICAgICAgICBy
ZWdpc3RyYXRpb24uYWN0aXZlLnBvc3RNZXNzYWdlKCJTdGFydCIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgdmFyIGluc3RhbGxpbmdXb3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFs
bGluZzsKKyAgICBpZiAoIWluc3RhbGxpbmdXb3JrZXIpCisgICAgICAgIGZhaWxUaGVUZXN0KCJO
byBhY3RpdmUgKm9yKiBpbnN0YWxsaW5nIHdvcmtlciIpOworCisgICAgaW5zdGFsbGluZ1dvcmtl
ci5hZGRFdmVudExpc3RlbmVyKCJzdGF0ZWNoYW5nZSIsICgpID0+IHsKKyAgICAgICAgaWYgKGlu
c3RhbGxpbmdXb3JrZXIuc3RhdGUgPT09ICJhY3RpdmF0ZWQiKSB7CisgICAgICAgICAgICBpbnN0
YWxsaW5nV29ya2VyLnBvc3RNZXNzYWdlKCJ0cnlzaG93Iik7CisgICAgICAgIH0KKyAgICB9KTsK
K30KKwordmFyIGdvdENsaWNrZWQgPSBmYWxzZTsKK3ZhciBnb3RDbG9zZWQgPSBmYWxzZTsKKwor
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGV2ZW50
ID0+IHsKKyAgICBpZiAoZXZlbnQuZGF0YSA9PSAic2hvd0ZhaWxlZCIpIHsKKyAgICAgICAgZmFp
bFRoZVRlc3QoIlVuZXhwZWN0ZWRseSByZWNlaXZlZCB0aGUgZmFpbGVkLXRvLXNob3cgbWVzc2Fn
ZSIpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAic2hvd24iKSB7CisgICAgICAgIGlm
ICh0ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zaW11bGF0ZVdlYk5vdGlmaWNh
dGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKKyAgICB9IGVsc2UgaWYg
KGV2ZW50LmRhdGEgPT0gImNsaWNrZWQiKSB7CisgICAgICAgIHNob3VsZEJlRmFsc2UoImdvdENs
aWNrZWQiKTsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZ290Q2xvc2VkIik7CisgICAgICAgIGdv
dENsaWNrZWQgPSB0cnVlOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xvc2VkIikg
eworICAgICAgICBzaG91bGRCZVRydWUoImdvdENsaWNrZWQiKQorICAgICAgICBzaG91bGRCZUZh
bHNlKCJnb3RDbG9zZWQiKQorICAgICAgICBnb3RDbG9zZWQgPSB0cnVlOworICAgIH0gZWxzZSB7
CisgICAgICAgIHRlc3RGYWlsZWQoIk1lc3NhZ2UgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsK
KyAgICB9CisgICAgCisgICAgaWYgKGdvdENsb3NlZCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJD
bG9zZSBoYXMgYmVlbiBvYnNlcnZlZCIpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9KTsKKworPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJlZ2lzdGVyU2VydmljZVdvcmtlcigpIj4K
KzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Nob3dub3RpZmljYXRpb24tZGVuaWVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tZGVuaWVkLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjIwMThhNDNlNWRk
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Nob3dub3RpZmljYXRpb24tZGVuaWVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAK
K1RoaXMgdGVzdHMgdGhhdCBhIG5vdGlmaWNhdGlvbiBzaG93biBieSBhIHNlcnZpY2Ugd29ya2Vy
IGNhbiBiZSBjbGlja2VkIGFuZCBjbG9zZWQsIHdpdGggdGhvc2UgYWN0aW9ucyBiZWluZyBvYnNl
cnZhYmxlIGJ5IHRoZSBzZXJ2aWNlIHdvcmtlcgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBOb3RpZmljYXRpb24ucGVybWlzc2lvbiBpcyAiZGVuaWVkIgorUEFTUyBOb3Rp
ZmljYXRpb24gZmFpbGVkIHRvIHNob3cKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5pZWQuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tZGVuaWVk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43NzQ2ZjdjNjZl
NDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vy
dmljZS9zaG93bm90aWZpY2F0aW9uLWRlbmllZC5odG1sCkBAIC0wLDAgKzEsNjAgQEAKKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvbm90aWZpY2F0aW9ucy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorCitmdW5jdGlvbiBmYWlsVGhlVGVzdChtc2cpCit7CisgICAgdGVzdEZhaWxl
ZChtc2cpOworICAgIGlmICh0ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kZW55V2ViTm90aWZpY2F0aW9uUGVybWlzc2lv
bih0ZXN0VVJMKTsKKyAgICBzZXRUaW1lb3V0KCJmYWlsVGhlVGVzdCgndGltZWQgb3V0JykiLCAx
NTAwMCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgYSBub3RpZmljYXRpb24g
c2hvd24gYnkgYSBzZXJ2aWNlIHdvcmtlciBjYW4gYmUgY2xpY2tlZCBhbmQgY2xvc2VkLCB3aXRo
IHRob3NlIGFjdGlvbnMgYmVpbmcgb2JzZXJ2YWJsZSBieSB0aGUgc2VydmljZSB3b3JrZXIiKTsK
Kworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJOb3RpZmljYXRpb24ucGVybWlzc2lvbiIsICJkZW5p
ZWQiKTsKKworYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkgeworICAgIHZh
ciByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcign
cmVzb3VyY2VzL3Nob3dub3RpZmljYXRpb24td29ya2VyLmpzJyk7CisgICAgCisgICAgaWYgKCFy
ZWdpc3RyYXRpb24pCisgICAgICAgIHJldHVybiB0ZXN0RmFpbGVkKCJObyByZWdpc3RyYXRpb24i
KTsKKyAgICAKKyAgICBpZiAocmVnaXN0cmF0aW9uLmFjdGl2ZSkgeworICAgICAgICByZWdpc3Ry
YXRpb24uYWN0aXZlLnBvc3RNZXNzYWdlKCJTdGFydCIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgdmFyIGluc3RhbGxpbmdXb3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsK
KyAgICBpZiAoIWluc3RhbGxpbmdXb3JrZXIpCisgICAgICAgIGZhaWxUaGVUZXN0KCJObyBhY3Rp
dmUgKm9yKiBpbnN0YWxsaW5nIHdvcmtlciIpOworCisgICAgaW5zdGFsbGluZ1dvcmtlci5hZGRF
dmVudExpc3RlbmVyKCJzdGF0ZWNoYW5nZSIsICgpID0+IHsKKyAgICAgICAgaWYgKGluc3RhbGxp
bmdXb3JrZXIuc3RhdGUgPT09ICJhY3RpdmF0ZWQiKSB7CisgICAgICAgICAgICBpbnN0YWxsaW5n
V29ya2VyLnBvc3RNZXNzYWdlKCJ0cnlzaG93Iik7CisgICAgICAgIH0KKyAgICB9KTsKK30KKwor
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGV2ZW50
ID0+IHsKKyAgICBpZiAoZXZlbnQuZGF0YSA9PSAic2hvd0ZhaWxlZCIpIHsKKyAgICAgICAgdGVz
dFBhc3NlZCgiTm90aWZpY2F0aW9uIGZhaWxlZCB0byBzaG93Iik7CisgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAg
IH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAic2hvd24iKSB7CisgICAgICAgIHRlc3RGYWlsZWQo
Ik5vdGlmaWNhdGlvbiBzaG93biwgYnV0IHNob3VsZG4ndCBoYXZlIGJlZW4iKTsKKyAgICB9IGVs
c2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJNZXNzYWdlIHJlY2VpdmVkOiAiICsgZXZlbnQuZGF0
YSk7CisgICAgfQorfSk7CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJyZWdp
c3RlclNlcnZpY2VXb3JrZXIoKSI+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwppbmRleCA3MzhhZGExY2VhZDEuLmVlMzM3MmI4YmM0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMTIgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uLnNob3dOb3RpZmljYXRpb24oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MjIKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1l
ei4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9ub3RpZmljYXRpb25zL2lkbGhhcm5l
c3MuaHR0cHMuYW55LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
bm90aWZpY2F0aW9ucy9pZGxoYXJuZXNzLmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVk
LnR4dDoKKwogMjAyMi0wMi0xMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODk0OTguCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL25vdGlmaWNhdGlv
bnMvaWRsaGFybmVzcy5odHRwcy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ub3RpZmljYXRpb25zL2lkbGhhcm5lc3MuaHR0cHMu
YW55LWV4cGVjdGVkLnR4dAppbmRleCAzNTg5OTVkNmVmNWUuLjMzZDQ1NjA1NTM0OCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ub3RpZmlj
YXRpb25zL2lkbGhhcm5lc3MuaHR0cHMuYW55LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL25vdGlmaWNhdGlvbnMvaWRsaGFybmVz
cy5odHRwcy5hbnktZXhwZWN0ZWQudHh0CkBAIC02Miw2ICs2Miw2IEBAIEZBSUwgTm90aWZpY2F0
aW9uIGludGVyZmFjZTogbm90aWZpY2F0aW9uIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiZGF0YSIg
d2l0aCB0aGUKIEZBSUwgTm90aWZpY2F0aW9uIGludGVyZmFjZTogbm90aWZpY2F0aW9uIG11c3Qg
aW5oZXJpdCBwcm9wZXJ0eSAiYWN0aW9ucyIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgYXNzZXJ0X2lu
aGVyaXRzOiBwcm9wZXJ0eSAiYWN0aW9ucyIgbm90IGZvdW5kIGluIHByb3RvdHlwZSBjaGFpbgog
UEFTUyBOb3RpZmljYXRpb24gaW50ZXJmYWNlOiBub3RpZmljYXRpb24gbXVzdCBpbmhlcml0IHBy
b3BlcnR5ICJjbG9zZSgpIiB3aXRoIHRoZSBwcm9wZXIgdHlwZQogUEFTUyBOb3RpZmljYXRpb25F
dmVudCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2Jq
ZWN0Ci1GQUlMIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gaW50ZXJmYWNlOiBvcGVyYXRpb24g
c2hvd05vdGlmaWNhdGlvbihET01TdHJpbmcsIG9wdGlvbmFsIE5vdGlmaWNhdGlvbk9wdGlvbnMp
IGFzc2VydF9vd25fcHJvcGVydHk6IGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IG1pc3Npbmcg
bm9uLXN0YXRpYyBvcGVyYXRpb24gZXhwZWN0ZWQgcHJvcGVydHkgInNob3dOb3RpZmljYXRpb24i
IG1pc3NpbmcKLUZBSUwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IG9wZXJh
dGlvbiBnZXROb3RpZmljYXRpb25zKG9wdGlvbmFsIEdldE5vdGlmaWNhdGlvbk9wdGlvbnMpIGFz
c2VydF9vd25fcHJvcGVydHk6IGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IG1pc3Npbmcgbm9u
LXN0YXRpYyBvcGVyYXRpb24gZXhwZWN0ZWQgcHJvcGVydHkgImdldE5vdGlmaWNhdGlvbnMiIG1p
c3NpbmcKK1BBU1MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IG9wZXJhdGlv
biBzaG93Tm90aWZpY2F0aW9uKERPTVN0cmluZywgb3B0aW9uYWwgTm90aWZpY2F0aW9uT3B0aW9u
cykKK1BBU1MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IG9wZXJhdGlvbiBn
ZXROb3RpZmljYXRpb25zKG9wdGlvbmFsIEdldE5vdGlmaWNhdGlvbk9wdGlvbnMpCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbm90aWZp
Y2F0aW9ucy9pZGxoYXJuZXNzLmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbm90aWZpY2F0aW9u
cy9pZGxoYXJuZXNzLmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCA0
MjQ2ZmU1NjYyZWQuLjMxNmMxMzdjM2IzNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ub3RpZmljYXRpb25zL2lkbGhhcm5lc3MuaHR0cHMu
YW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbm90aWZpY2F0aW9ucy9pZGxoYXJuZXNzLmh0dHBzLmFu
eS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMzUsMTggKzM1LDE4IEBAIEZBSUwgTm90
aWZpY2F0aW9uIGludGVyZmFjZTogYXR0cmlidXRlIHJlcXVpcmVJbnRlcmFjdGlvbiBhc3NlcnRf
b3duX3Byb3BlcnR5OiBzCiBGQUlMIE5vdGlmaWNhdGlvbiBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBk
YXRhIGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkg
Ik5vdGlmaWNhdGlvbiIgZXhwZWN0ZWQgcHJvcGVydHkgIk5vdGlmaWNhdGlvbiIgbWlzc2luZwog
RkFJTCBOb3RpZmljYXRpb24gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgYWN0aW9ucyBhc3NlcnRfb3du
X3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJOb3RpZmljYXRpb24i
IGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb24iIG1pc3NpbmcKIEZBSUwgTm90aWZpY2F0
aW9uIGludGVyZmFjZTogb3BlcmF0aW9uIGNsb3NlKCkgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2Vs
ZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uIiBleHBlY3RlZCBwcm9w
ZXJ0eSAiTm90aWZpY2F0aW9uIiBtaXNzaW5nCi1GQUlMIE5vdGlmaWNhdGlvbkV2ZW50IGludGVy
ZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QgYXNzZXJ0
X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90aWZpY2F0
aW9uRXZlbnQiIGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgbWlzc2luZwot
RkFJTCBOb3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aCBhc3NlcnRfb3du
X3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJOb3RpZmljYXRpb25F
dmVudCIgZXhwZWN0ZWQgcHJvcGVydHkgIk5vdGlmaWNhdGlvbkV2ZW50IiBtaXNzaW5nCi1GQUlM
IE5vdGlmaWNhdGlvbkV2ZW50IGludGVyZmFjZSBvYmplY3QgbmFtZSBhc3NlcnRfb3duX3Byb3Bl
cnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIg
ZXhwZWN0ZWQgcHJvcGVydHkgIk5vdGlmaWNhdGlvbkV2ZW50IiBtaXNzaW5nCi1GQUlMIE5vdGlm
aWNhdGlvbkV2ZW50IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVy
ZmFjZSBwcm90b3R5cGUgb2JqZWN0IGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3Qg
aGF2ZSBvd24gcHJvcGVydHkgIk5vdGlmaWNhdGlvbkV2ZW50IiBleHBlY3RlZCBwcm9wZXJ0eSAi
Tm90aWZpY2F0aW9uRXZlbnQiIG1pc3NpbmcKLUZBSUwgTm90aWZpY2F0aW9uRXZlbnQgaW50ZXJm
YWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmpl
Y3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5IGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9l
cyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIk5vdGlmaWNhdGlvbkV2ZW50IiBleHBlY3RlZCBwcm9w
ZXJ0eSAiTm90aWZpY2F0aW9uRXZlbnQiIG1pc3NpbmcKLUZBSUwgTm90aWZpY2F0aW9uRXZlbnQg
aW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlw
ZSBvYmplY3QncyBAQHVuc2NvcGFibGVzIHByb3BlcnR5IGFzc2VydF9vd25fcHJvcGVydHk6IHNl
bGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIk5vdGlmaWNhdGlvbkV2ZW50IiBleHBlY3Rl
ZCBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uRXZlbnQiIG1pc3NpbmcKLUZBSUwgTm90aWZpY2F0aW9u
RXZlbnQgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgbm90aWZpY2F0aW9uIGFzc2VydF9vd25fcHJvcGVy
dHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIk5vdGlmaWNhdGlvbkV2ZW50IiBl
eHBlY3RlZCBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uRXZlbnQiIG1pc3NpbmcKLUZBSUwgTm90aWZp
Y2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgYWN0aW9uIGFzc2VydF9vd25fcHJvcGVy
dHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIk5vdGlmaWNhdGlvbkV2ZW50IiBl
eHBlY3RlZCBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uRXZlbnQiIG1pc3NpbmcKLUZBSUwgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IG9wZXJhdGlvbiBzaG93Tm90aWZpY2F0aW9u
KERPTVN0cmluZywgb3B0aW9uYWwgTm90aWZpY2F0aW9uT3B0aW9ucykgYXNzZXJ0X293bl9wcm9w
ZXJ0eTogaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJh
dGlvbiBleHBlY3RlZCBwcm9wZXJ0eSAic2hvd05vdGlmaWNhdGlvbiIgbWlzc2luZwotRkFJTCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGludGVyZmFjZTogb3BlcmF0aW9uIGdldE5vdGlmaWNh
dGlvbnMob3B0aW9uYWwgR2V0Tm90aWZpY2F0aW9uT3B0aW9ucykgYXNzZXJ0X293bl9wcm9wZXJ0
eTogaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJhdGlv
biBleHBlY3RlZCBwcm9wZXJ0eSAiZ2V0Tm90aWZpY2F0aW9ucyIgbWlzc2luZwotRkFJTCBTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgb25ub3RpZmljYXRpb25j
bGljayBhc3NlcnRfb3duX3Byb3BlcnR5OiBUaGUgZ2xvYmFsIG9iamVjdCBtdXN0IGhhdmUgYSBw
cm9wZXJ0eSAib25ub3RpZmljYXRpb25jbGljayIgZXhwZWN0ZWQgcHJvcGVydHkgIm9ubm90aWZp
Y2F0aW9uY2xpY2siIG1pc3NpbmcKLUZBSUwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVy
ZmFjZTogYXR0cmlidXRlIG9ubm90aWZpY2F0aW9uY2xvc2UgYXNzZXJ0X293bl9wcm9wZXJ0eTog
VGhlIGdsb2JhbCBvYmplY3QgbXVzdCBoYXZlIGEgcHJvcGVydHkgIm9ubm90aWZpY2F0aW9uY2xv
c2UiIGV4cGVjdGVkIHByb3BlcnR5ICJvbm5vdGlmaWNhdGlvbmNsb3NlIiBtaXNzaW5nCi1GQUlM
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IHNlbGYgbXVzdCBpbmhlcml0IHBy
b3BlcnR5ICJvbm5vdGlmaWNhdGlvbmNsaWNrIiB3aXRoIHRoZSBwcm9wZXIgdHlwZSBhc3NlcnRf
b3duX3Byb3BlcnR5OiBleHBlY3RlZCBwcm9wZXJ0eSAib25ub3RpZmljYXRpb25jbGljayIgbWlz
c2luZwotRkFJTCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgaW50ZXJmYWNlOiBzZWxmIG11c3Qg
aW5oZXJpdCBwcm9wZXJ0eSAib25ub3RpZmljYXRpb25jbG9zZSIgd2l0aCB0aGUgcHJvcGVyIHR5
cGUgYXNzZXJ0X293bl9wcm9wZXJ0eTogZXhwZWN0ZWQgcHJvcGVydHkgIm9ubm90aWZpY2F0aW9u
Y2xvc2UiIG1pc3NpbmcKK1BBU1MgTm90aWZpY2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBleGlzdGVu
Y2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdAorUEFTUyBOb3RpZmljYXRpb25F
dmVudCBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aAorUEFTUyBOb3RpZmljYXRpb25FdmVudCBpbnRl
cmZhY2Ugb2JqZWN0IG5hbWUKK1BBU1MgTm90aWZpY2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBleGlz
dGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QKK1BBU1Mg
Tm90aWZpY2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2Yg
aW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5CitQQVNT
IE5vdGlmaWNhdGlvbkV2ZW50IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9m
IGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgQEB1bnNjb3BhYmxlcyBwcm9wZXJ0eQorUEFT
UyBOb3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBub3RpZmljYXRpb24KK1BB
U1MgTm90aWZpY2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgYWN0aW9uCitQQVNTIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gaW50ZXJmYWNlOiBvcGVyYXRpb24gc2hvd05vdGlmaWNh
dGlvbihET01TdHJpbmcsIG9wdGlvbmFsIE5vdGlmaWNhdGlvbk9wdGlvbnMpCitQQVNTIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24gaW50ZXJmYWNlOiBvcGVyYXRpb24gZ2V0Tm90aWZpY2F0aW9u
cyhvcHRpb25hbCBHZXROb3RpZmljYXRpb25PcHRpb25zKQorUEFTUyBTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgb25ub3RpZmljYXRpb25jbGljaworUEFTUyBT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgb25ub3RpZmljYXRp
b25jbG9zZQorUEFTUyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgaW50ZXJmYWNlOiBzZWxmIG11
c3QgaW5oZXJpdCBwcm9wZXJ0eSAib25ub3RpZmljYXRpb25jbGljayIgd2l0aCB0aGUgcHJvcGVy
IHR5cGUKK1BBU1MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVyZmFjZTogc2VsZiBtdXN0
IGluaGVyaXQgcHJvcGVydHkgIm9ubm90aWZpY2F0aW9uY2xvc2UiIHdpdGggdGhlIHByb3BlciB0
eXBlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggNTA2OGQyMWU3ZDkyLi5hMjc4N2MzY2IyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMjItMDItMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLnNob3dOb3RpZmljYXRpb24o
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MjIK
KworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIFNjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sOgorCiAyMDIyLTAyLTExICBO
aWtvbGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgogCiAgICAgICAgIFR1
cm4gb3ZlcnNjcm9sbC1iZWhhdmlvciBvbiBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIGIvU291
cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbApp
bmRleCA4ZDNlZWQxMzk1NGYuLjAxYjJmNWU2YjgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9T
Y3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAorKysgYi9Tb3Vy
Y2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCkBA
IC02NDQsOCArNjQ0LDEwIEBAIE5vdGlmaWNhdGlvbkV2ZW50RW5hYmxlZDoKICAgY29uZGl0aW9u
OiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VWRU5UKQogICBkZWZhdWx0VmFsdWU6CiAgICAgV2ViQ29y
ZToKKyAgICAgICJFTkFCTEUoTk9USUZJQ0FUSU9OX0VWRU5UKSI6IHRydWUKICAgICAgIGRlZmF1
bHQ6IGZhbHNlCiAgICAgV2ViS2l0OgorICAgICAgIkVOQUJMRShOT1RJRklDQVRJT05fRVZFTlQp
IjogdHJ1ZQogICAgICAgZGVmYXVsdDogZmFsc2UKIAogT2Zmc2NyZWVuQ2FudmFzRW5hYmxlZDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1Mzg1OTdhODJiZmIuLmJhNzc3OGMyMWFiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY0IEBACisyMDIyLTAyLTEyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5zaG93Tm90
aWZpY2F0aW9uKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAg
VGVzdHM6IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tYWxsb3dl
ZC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zaG93bm90
aWZpY2F0aW9uLWRlbmllZC5odG1sCisKKyAgICAgICAgUHJldmlvdXNseSBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uLnNob3dOb3RpZmljYXRpb24oKSwgTm90aWZpY2F0aW9uRXZlbnQsIGFuZCBv
bm5vdGlmaWNhdGlvbmNsaWNrZWQvY2xvc2VkIHdlcmUgc3R1YmJlZCBvdXQuCisgICAgICAgIFRo
aXMgcGF0Y2ggaG9va3MgdGhlbSB1cC4KKyAgICAgICAgCisgICAgICAgIEl0J3MgbGFyZ2VseSBh
IHBsdW1iaW5nIHBhdGNoLCBkb2luZyB0aGUgZm9sbG93aW5nOgorICAgICAgICAtIE1ha2luZyBz
dXJlIGNhbGxzIHRvLWFuZC1mcm9tIE5vdGlmaWNhdGlvbkNsaWVudCBoYXBwZW4gb24gdGhlIGNv
cnJlY3QgdGhyZWFkcworICAgICAgICAtIE1ha2luZyBzdXJlIE5vdGlmaWNhdGlvbiByZWxhdGVk
IGNsYXNzZXMgbm93IHVuZGVyc3RhbmQgaG93IHRvIGNvcGUgd2l0aCBub3QgaGF2aW5nIGFuIGFz
c29jaWF0ZWQgV2ViUGFnZShQcm94eSkKKyAgICAgICAgLSBNYWtpbmcgc3VyZSBhbGwgb2YgdGhl
IHJlbGV2YW50IElQQyBtYWNoaW5lcnkgaXMgaW4gcGxhY2UgdG8gaGFuZGxlIHBhZ2VsZXNzIG5v
dGlmaWNhdGlvbnMKKyAgICAgICAgLSBBZGRzIHN1cGVyIHVzZWZ1bCBsb2dnaW5nCisgICAgICAg
IAorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbjo6ZGlzcGF0Y2hTaG93RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uOjpkaXNwYXRjaENsaWNrRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQpOgorCisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uRXZlbnQ6Ok5v
dGlmaWNhdGlvbkV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uRXZlbnQuaDoKKworICAgICAgICAqIGRvbS9FbXB0eVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorCisgICAgICAg
ICogcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmg6CisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRo
cmVhZC5oOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6On5T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlOjpwb3N0VGFza1RvRmlyZU5vdGlmaWNhdGlvbkV2ZW50KToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmg6CisKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE5vdGlmaWNh
dGlvbnMpOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5oOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFy
dCk6CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuaDoKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJlZ2lzdHJhdGlvblN0b3JlRGF0YWJh
c2VGYWlsZWRUb09wZW4pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmFkZFJlZ2lzdHJh
dGlvbkZyb21TdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6YWRkUmVnaXN0cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpwcm9jZXNzUHVzaE1lc3NhZ2UpOgor
CiAyMDIyLTAyLTExICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBg
Y29udGFpbjpjb250ZW50YCBicmVha3MgZnVsbHNjcmVlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCA2ODViMWU0
ZDFhM2EuLmM3MzBkOTU2Mzk5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTQwLDcgKzQwLDkgQEAKICNpbmNs
dWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVu
dC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRp
b25FdmVudC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIgor
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldpbmRvd0V2
ZW50TG9vcC5oIgogI2luY2x1ZGUgIldpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtNjYsNiArNjgsNyBAQCBOb3RpZmlj
YXRpb246Ok5vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIHRpdGxlLAogICAgICwgbV9ib2R5KG9wdGlvbnMuYm9keS5pc29sYXRlZENvcHko
KSkKICAgICAsIG1fdGFnKG9wdGlvbnMudGFnLmlzb2xhdGVkQ29weSgpKQogICAgICwgbV9zdGF0
ZShJZGxlKQorICAgICwgbV9jb250ZXh0SWRlbnRpZmllcihjb250ZXh0LmlkZW50aWZpZXIoKSkK
IHsKICAgICBpZiAoY29udGV4dC5pc0RvY3VtZW50KCkpCiAgICAgICAgIG1fbm90aWZpY2F0aW9u
U291cmNlID0gTm90aWZpY2F0aW9uU291cmNlOjpEb2N1bWVudDsKQEAgLTEwMiw5ICsxMDUsMTkg
QEAgdm9pZCBOb3RpZmljYXRpb246OnNob3coKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
Y2xpZW50LT5jaGVja1Blcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSAhPSBQZXJt
aXNzaW9uOjpHcmFudGVkKSB7Ci0gICAgICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOworICAgICAg
ICBzd2l0Y2ggKG1fbm90aWZpY2F0aW9uU291cmNlKSB7CisgICAgICAgIGNhc2UgTm90aWZpY2F0
aW9uU291cmNlOjpEb2N1bWVudDoKKyAgICAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uU291cmNlOjpTZXJ2
aWNlV29ya2VyOgorICAgICAgICAgICAgLy8gV2UgZGlkIGEgcGVybWlzc2lvbiBjaGVjayB3aGVu
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnNob3dOb3RpZmljYXRpb24oKSB3YXMgY2FsbGVk
LgorICAgICAgICAgICAgLy8gSWYgcGVybWlzc2lvbiBoYXMgc2luY2UgYmVlbiByZXZva2VkLCB0
aGVuIHNpbGVudGx5IGZhaWxpbmcgaGVyZSBpcyBleHBlY3RlZCBiZWhhdmlvci4KKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwogICAgIGlm
IChjbGllbnQtPnNob3coKnRoaXMpKQogICAgICAgICBtX3N0YXRlID0gU2hvd2luZzsKIH0KQEAg
LTE1OCwyMCArMTcxLDQ4IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpmaW5hbGl6ZSgpCiAKIHZvaWQg
Tm90aWZpY2F0aW9uOjpkaXNwYXRjaFNob3dFdmVudCgpCiB7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKworICAgIGlmIChtX25vdGlmaWNhdGlvblNvdXJjZSAhPSBOb3RpZmljYXRpb25T
b3VyY2U6OkRvY3VtZW50KQorICAgICAgICByZXR1cm47CisKICAgICBxdWV1ZVRhc2tUb0Rpc3Bh
dGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuc2hvd0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xpY2tF
dmVudCgpCiB7Ci0gICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291
cmNlOjpVc2VySW50ZXJhY3Rpb24sIFt0aGlzXSB7Ci0gICAgICAgIFdpbmRvd0ZvY3VzQWxsb3dl
ZEluZGljYXRvciB3aW5kb3dGb2N1c0FsbG93ZWQ7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7Ci0gICAgfSk7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKworICAgIHN3aXRjaCAobV9ub3RpZmljYXRpb25Tb3VyY2UpIHsKKyAgICBjYXNl
IE5vdGlmaWNhdGlvblNvdXJjZTo6RG9jdW1lbnQ6CisgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdP
YmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBbdGhpc10gewor
ICAgICAgICAgICAgV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yIHdpbmRvd0ZvY3VzQWxsb3dl
ZDsKKyAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y2xpY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KSk7CisgICAgICAgIH0pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vdGlmaWNhdGlvblNv
dXJjZTo6U2VydmljZVdvcmtlcjoKKyAgICAgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpl
bnN1cmVPbkNvbnRleHRUaHJlYWQobV9jb250ZXh0SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBkb3du
Y2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnBvc3RUYXNrVG9GaXJlTm90
aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGljaywgKnRoaXMsIHsgfSk7
CisgICAgICAgIH0pOworICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKIHZvaWQgTm90aWZpY2F0
aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQoKQogewotICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVu
dCgqdGhpcywgVGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5jbG9zZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc3dpdGNoICht
X25vdGlmaWNhdGlvblNvdXJjZSkgeworICAgIGNhc2UgTm90aWZpY2F0aW9uU291cmNlOjpEb2N1
bWVudDoKKyAgICAgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNl
OjpVc2VySW50ZXJhY3Rpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQs
IEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIE5vdGlmaWNhdGlvblNvdXJjZTo6U2VydmljZVdvcmtlcjoKKyAg
ICAgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjplbnN1cmVPbkNvbnRleHRUaHJlYWQobV9j
b250ZXh0SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShh
dXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpLnBvc3RUYXNrVG9GaXJlTm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0
aW9uRXZlbnRUeXBlOjpDbG9zZSwgKnRoaXMsIHsgfSk7CisgICAgICAgIH0pOworICAgICAgICBi
cmVhazsKKyAgICB9CisKICAgICBmaW5hbGl6ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXggZjRhOTNiZDYx
MDhjLi4xMWZhOWZlYzE5MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJF
dmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRpcmVjdGlvbi5oIgogI2luY2x1
ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldyaXRpbmdNb2RlLmgiCkBAIC0xMzEsNiArMTMyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgU2VydmljZVdvcmtlciwKICAgICB9OwogICAgIE5vdGlmaWNh
dGlvblNvdXJjZSBtX25vdGlmaWNhdGlvblNvdXJjZTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllciBtX2NvbnRleHRJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25FdmVudC5jcHAKaW5kZXggNTg3NGI3NjEwMmZmLi4wMjRiNGUwYTk0
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkV2ZW50LmNwcApAQCAtMzAsNiArMzAsMjggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTm90aWZpY2F0aW9uRXZl
bnQpOworCitSZWY8Tm90aWZpY2F0aW9uRXZlbnQ+IE5vdGlmaWNhdGlvbkV2ZW50OjpjcmVhdGUo
Y29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSW5pdCYmIGluaXQsIElzVHJ1c3RlZCBpc1RydXN0ZWQp
Cit7CisgICAgYXV0byogbm90aWZpY2F0aW9uID0gaW5pdC5ub3RpZmljYXRpb24uZ2V0KCk7Cisg
ICAgQVNTRVJUKG5vdGlmaWNhdGlvbik7CisgICAgYXV0byBhY3Rpb24gPSBpbml0LmFjdGlvbjsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOb3RpZmljYXRpb25FdmVudCh0eXBlLCBXVEZNb3Zl
KGluaXQpLCBub3RpZmljYXRpb24sIGFjdGlvbiwgaXNUcnVzdGVkKSk7Cit9CisKK1JlZjxOb3Rp
ZmljYXRpb25FdmVudD4gTm90aWZpY2F0aW9uRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5n
JiB0eXBlLCBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgY29uc3QgU3RyaW5nJiBhY3Rpb24s
IElzVHJ1c3RlZCBpc1RydXN0ZWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTm90aWZp
Y2F0aW9uRXZlbnQodHlwZSwgeyB9LCBub3RpZmljYXRpb24sIGFjdGlvbiwgaXNUcnVzdGVkKSk7
Cit9CisKK05vdGlmaWNhdGlvbkV2ZW50OjpOb3RpZmljYXRpb25FdmVudChjb25zdCBBdG9tU3Ry
aW5nJiB0eXBlLCBOb3RpZmljYXRpb25FdmVudEluaXQmJiBldmVudEluaXQsIE5vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uLCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgSXNUcnVzdGVkIGlzVHJ1c3Rl
ZCkKKyAgICA6IEV4dGVuZGFibGVFdmVudCh0eXBlLCBXVEZNb3ZlKGV2ZW50SW5pdCksIGlzVHJ1
c3RlZCkKKyAgICAsIG1fbm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbikKKyAgICAsIG1fYWN0aW9u
KGFjdGlvbikKK3sKK30KKwogTm90aWZpY2F0aW9uRXZlbnQ6On5Ob3RpZmljYXRpb25FdmVudCgp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25FdmVudC5oCmluZGV4IDkyN2ViNTAxYWQ5Yi4uYjIxYzJlZDg0YWM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uRXZlbnQuaApAQCAtMzMsMTQgKzMzLDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorZW51bSBjbGFzcyBOb3RpZmljYXRpb25FdmVudFR5cGUgOiBib29sIHsKKyAgICBDbGlj
aywKKyAgICBDbG9zZSwKK307CisKK3N0cnVjdCBOb3RpZmljYXRpb25FdmVudEluaXQgOiBFeHRl
bmRhYmxlRXZlbnRJbml0IHsKKyAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb247
CisgICAgU3RyaW5nIGFjdGlvbjsKK307CisKIGNsYXNzIE5vdGlmaWNhdGlvbkV2ZW50IGZpbmFs
IDogcHVibGljIEV4dGVuZGFibGVFdmVudCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChO
b3RpZmljYXRpb25FdmVudCk7CiBwdWJsaWM6CiAgICAgfk5vdGlmaWNhdGlvbkV2ZW50KCk7CiAK
LSAgICBzdHJ1Y3QgSW5pdCA6IEV4dGVuZGFibGVFdmVudEluaXQgewotICAgICAgICBSZWZQdHI8
Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb247Ci0gICAgICAgIFN0cmluZyBhY3Rpb247Ci0gICAg
fTsKKyAgICB1c2luZyBJbml0ID0gTm90aWZpY2F0aW9uRXZlbnRJbml0OworCisgICAgc3RhdGlj
IFJlZjxOb3RpZmljYXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmLCBJbml0JiYs
IElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOworICAgIHN0YXRpYyBSZWY8Tm90aWZpY2F0aW9u
RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiwgTm90aWZpY2F0aW9uKiwgY29uc3QgU3Ry
aW5nJiBhY3Rpb24sIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOwogCiAgICAgRXZlbnRJbnRl
cmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBOb3RpZmljYXRpb25F
dmVudEludGVyZmFjZVR5cGU7IH0KIApAQCAtNDgsNiArNTksOCBAQCBwdWJsaWM6CiAgICAgY29u
c3QgU3RyaW5nJiBhY3Rpb24oKSB7IHJldHVybiBtX2FjdGlvbjsgfQogCiBwcml2YXRlOgorICAg
IE5vdGlmaWNhdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBOb3RpZmljYXRpb25FdmVudElu
aXQmJiwgTm90aWZpY2F0aW9uKiwgY29uc3QgU3RyaW5nJiBhY3Rpb24sIElzVHJ1c3RlZCA9IElz
VHJ1c3RlZDo6Tm8pOworCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbV9ub3RpZmljYXRpb247
CiAgICAgU3RyaW5nIG1fYWN0aW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbXB0eVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbXB0
eVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAyMzFiM2JmMWNhOTguLjcxYzcyZWY5Yzk2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VtcHR5U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbXB0eVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaApAQCAtOTQsNiArOTQsMTAgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IFNldHRpbmdzOjpW
YWx1ZXMmIHNldHRpbmdzVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXR0aW5nc1Zh
bHVlczsgfQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgTm90aWZpY2F0aW9uQ2xp
ZW50KiBub3RpZmljYXRpb25DbGllbnQoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisjZW5k
aWYKKwogICAgIGNsYXNzIEVtcHR5RXZlbnRMb29wIGZpbmFsIDogcHVibGljIEV2ZW50TG9vcCB7
CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUmVmPEVtcHR5RXZlbnRMb29wPiBjcmVhdGUo
SlNDOjpWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAppbmRleCBkMDAwZDU5ZDVhMDUuLjA3MjdiMWYxNGEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC04MCw2ICs4MCwxMCBAQCBlbnVtIGNsYXNz
IExvYWRlZEZyb21PcGFxdWVTb3VyY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBSZWZlcnJlclBv
bGljeSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFRhc2tTb3VyY2UgOiB1aW50OF90OwogCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCitjbGFzcyBOb3RpZmljYXRpb25DbGllbnQ7CisjZW5kaWYK
KwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIGNsYXNzIFNlcnZpY2VXb3JrZXI7CiBjbGFz
cyBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaAppbmRleCBjYmYyNmNiMTViZDUuLjNmZTUxZmQxZTQzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTQwMyw3ICs0
MDMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VWRU5U
KQotICAgIGJvb2wgbV9ub3RpZmljYXRpb25FdmVudEVuYWJsZWQgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9ub3RpZmljYXRpb25FdmVudEVuYWJsZWQgeyB0cnVlIH07CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDFkOGUzYWQyYWNiOS4uYTBkMTZkNzQ3MDk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZS5oCkBAIC05NCw2ICs5NCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmRXZlbnRU
YXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmlu
YWwgeyBkZXJlZigpOyB9CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBOb3RpZmlj
YXRpb25DbGllbnQqIG5vdGlmaWNhdGlvbkNsaWVudCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxw
dHI7IH0KKyNlbmRpZgorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXI+IG1fc2NyaXB0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRNb2R1bGVM
b2FkZXI+IG1fbW9kdWxlTG9hZGVyOwogICAgIFdvcmtlck9yV29ya2xldFRocmVhZCogbV90aHJl
YWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCBiNGY3Njk0YzZiMWUu
LmRjOTc3NGU5MmU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5oIgogI2luY2x1ZGUg
IkZldGNoUmVxdWVzdENyZWRlbnRpYWxzLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlz
c2lvbi5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFRocmVhZC5oIgogI2luY2x1ZGUgIldv
cmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJUeXBlLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCmluZGV4IDkwNGQ0ZmM4OGNhYS4uOTE0ZTg0NTIzZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5o
IgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiU1dDb250ZXh0TWFu
YWdlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyQ2xpZW50LmgiCkBAIC02OSw3ICs3MCwxMiBAQCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6
OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjbwog
ewogfQogCi1TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6On5TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUoKSA9IGRlZmF1bHQ7CitTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6On5TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUoKQoreworICAgIC8vIE5vdGlmaWNhdGlvbkNsaWVudCBtaWdodCBoYXZlIHNv
bWUgaW50ZXJhY3Rpb25zIHBlbmRpbmcgd2l0aCB0aGUgbWFpbiB0aHJlYWQsCisgICAgLy8gc28g
aXQgc2hvdWxkIGFsc28gYmUgZGVzdHJveWVkIHRoZXJlLgorICAgIGNhbGxPbk1haW5UaHJlYWQo
W25vdGlmaWNhdGlvbkNsaWVudCA9IFdURk1vdmUobV9ub3RpZmljYXRpb25DbGllbnQpXSB7IH0p
OworfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6bm90aWZ5U2VydmljZVdvcmtl
clBhZ2VPZkNyZWF0aW9uSWZOZWNlc3NhcnkoKQogewpAQCAtMjA4LDYgKzIxNCwyOCBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2NyaXB0QnVm
ZmVyJiYgc2NyaXB0LCBIYXNoTQogICAgIH0KIH0KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05f
RVZFTlQpCit2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6cG9zdFRhc2tUb0ZpcmVOb3Rp
ZmljYXRpb25FdmVudChOb3RpZmljYXRpb25FdmVudFR5cGUgZXZlbnRUeXBlLCBOb3RpZmljYXRp
b24mIG5vdGlmaWNhdGlvbiwgY29uc3QgU3RyaW5nJiBhY3Rpb24pCit7CisgICAgdGhyZWFkKCku
cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbZXZlbnRUeXBlLCBwcm90ZWN0ZWROb3RpZmljYXRp
b24gPSBSZWYgeyBub3RpZmljYXRpb24gfSwgYWN0aW9uID0gYWN0aW9uLmlzb2xhdGVkQ29weSgp
XShhdXRvJiBzY29wZSkgeworICAgICAgICBzY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFz
a1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbJnNjb3BlLCBwcm90ZWN0ZWRTY29wZSA9IFJlZiB7
IHNjb3BlIH0sIGV2ZW50VHlwZSwgcHJvdGVjdGVkTm90aWZpY2F0aW9uLCBhY3Rpb25dIHsKKyAg
ICAgICAgICAgIEF0b21TdHJpbmcgZXZlbnROYW1lOworICAgICAgICAgICAgc3dpdGNoIChldmVu
dFR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGljazoK
KyAgICAgICAgICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkubm90aWZpY2F0aW9uY2xp
Y2tFdmVudDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTm90aWZp
Y2F0aW9uRXZlbnRUeXBlOjpDbG9zZToKKyAgICAgICAgICAgICAgICBldmVudE5hbWUgPSBldmVu
dE5hbWVzKCkubm90aWZpY2F0aW9uY2xvc2VFdmVudDsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byBldmVudCA9IE5vdGlmaWNhdGlvbkV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBwcm90ZWN0ZWROb3RpZmljYXRpb24ucHRyKCksIGFjdGlv
biwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CisgICAgICAgICAgICBkb3duY2Fz
dDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsK
KyAgICAgICAgfSk7CisgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Cit9Cisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDA3MDc5ZjE5NTM0My4uNTEwYzFiMDcy
Yjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zOSwxMSArMzksMTQgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRXh0ZW5kYWJsZUV2ZW50Owog
Y2xhc3MgUGFnZTsKLXN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsKIGNsYXNzIFNlcnZp
Y2VXb3JrZXJDbGllbnQ7CiBjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50czsKIGNsYXNzIFNlcnZp
Y2VXb3JrZXJUaHJlYWQ7CiAKK2VudW0gY2xhc3MgTm90aWZpY2F0aW9uRXZlbnRUeXBlIDogYm9v
bDsKKworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOworCiBjbGFzcyBTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUgZmluYWwgOiBwdWJsaWMgV29ya2VyR2xvYmFsU2NvcGUgewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKTsKIHB1YmxpYzoK
QEAgLTgwLDcgKzgzLDExIEBAIHB1YmxpYzoKICAgICBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9u
IGRlc3RpbmF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gRmV0Y2hPcHRpb25zOjpEZXN0aW5h
dGlvbjo6U2VydmljZXdvcmtlcjsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgUGFnZSogc2Vydmlj
ZVdvcmtlclBhZ2UoKTsKLSAgICAKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05fRVZFTlQpCisg
ICAgdm9pZCBwb3N0VGFza1RvRmlyZU5vdGlmaWNhdGlvbkV2ZW50KE5vdGlmaWNhdGlvbkV2ZW50
VHlwZSwgTm90aWZpY2F0aW9uJiwgY29uc3QgU3RyaW5nJiBhY3Rpb24pOworI2VuZGlmCisKIHBy
aXZhdGU6CiAgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVm
PFNlY3VyaXR5T3JpZ2luPiYmLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3Jp
Z2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQ
cm92aWRlciosIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+JiYsIFBBTDo6U2Vz
c2lvbklEKTsKICAgICB2b2lkIG5vdGlmeVNlcnZpY2VXb3JrZXJQYWdlT2ZDcmVhdGlvbklmTmVj
ZXNzYXJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggNTAxNzgxZjcwZDVmLi41Mzg5
MjU2NDY4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTMwLDEwICszMCwxMyBAQAog
I2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTmF2aWdhdGlvblByZWxvYWRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiTm90aWZp
Y2F0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbi5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCkBAIC0yNjQsMjAgKzI2NywzOCBA
QCBOYXZpZ2F0aW9uUHJlbG9hZE1hbmFnZXImIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246Om5h
dmlnYXRpb25QcmVsb2FkKCkKIH0KIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05fRVZFTlQpCi12
b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnNob3dOb3RpZmljYXRpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE5vdGlmaWNhdGlvbk9w
dGlvbnMmIG9wdGlvbnMsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit2b2lk
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnNob3dOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgTm90aWZpY2F0
aW9uT3B0aW9ucyYgb3B0aW9ucywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0odGl0bGUpOwotICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsK
KyAgICBpZiAoIW1fYWN0aXZlV29ya2VyKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciwgIlJlZ2lzdHJhdGlvbiBkb2VzIG5vdCBoYXZlIGFuIGFjdGl2ZSB3
b3JrZXIiX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBjbGllbnQg
PSBjb250ZXh0Lm5vdGlmaWNhdGlvbkNsaWVudCgpOworICAgIGlmICghY2xpZW50KSB7CisgICAg
ICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlJlZ2lzdHJhdGlvbiBu
b3QgYWN0aXZlIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgcHJvbWlzZS5y
ZWplY3QoKTsKKyAgICBpZiAoY2xpZW50LT5jaGVja1Blcm1pc3Npb24oJmNvbnRleHQpICE9IE5v
dGlmaWNhdGlvblBlcm1pc3Npb246OkdyYW50ZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3Qo
RXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiUmVnaXN0cmF0aW9uIGRvZXMgbm90IGhhdmUgcGVybWlz
c2lvbiB0byBzaG93IG5vdGlmaWNhdGlvbnMiX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICAvLyBUaGUgTm90aWZpY2F0aW9uIGlzIGtlcHQgYWxpdmUgYnkgdmlydHVlIG9mIGJl
aW5nIHNob3coKSduIHNvb24uCisgICAgLy8gRklYTUU6IFdoZW4gaW1wbGVtZW50aW5nIGdldE5v
dGlmaWNhdGlvbnMoKSwgc3RvcmUgdGhpcyBOb3RpZmljYXRpb24gaW4gdGhlIHJlZ2lzdHJhdGlv
bidzIG5vdGlmaWNhdGlvbiBsaXN0LgorICAgIGF1dG8gbm90aWZpY2F0aW9uID0gTm90aWZpY2F0
aW9uOjpjcmVhdGUoY29udGV4dCwgdGl0bGUsIG9wdGlvbnMpOworCisgICAgY29udGV4dC5ldmVu
dExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSldKCkgbXV0YWJsZSB7CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgp
OworICAgIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE5vdGlm
aWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEdldE5vdGlmaWNhdGlvbk9w
dGlvbnMmIGZpbHRlciwgRE9NUHJvbWlzZURlZmVycmVkPElETFNlcXVlbmNlPElETERPTVN0cmlu
Zz4+IHByb21pc2UpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGZpbHRlcik7CiAKLSAgICBwcm9taXNl
LnJlamVjdCgpOwotCisgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVk
RXJyb3IsICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmdldE5vdGlmaWNhdGlvbnMgbm90IHll
dCBpbXBsZW1lbnRlZCJfcyB9KTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OX0VW
RU5UKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggYzBlMDM2MzZiMTg5Li5mM2JlYTVmMThmMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlBhZ2VJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRR
dWVyeU9wdGlvbnMuaCIKQEAgLTcwLDYgKzcxLDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7
CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzVGhyb3R0bGVhYmxlKCkgY29uc3QgPSAwOworICAg
ICAgICB2aXJ0dWFsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyKCkgY29uc3QgPSAwOwog
CiAgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc2VkOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggOGM4MWM3YjEwN2VjLi5lMmU0MDhiMTA5
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0yNzksNiArMjc5LDEwIEBAIHZv
aWQgU2VydmljZVdvcmtlclRocmVhZDo6c3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
LCBib29sKT4mJiBjYWxsYmFjaykKICAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7CiAKICAgICBX
b3JrZXJUaHJlYWQ6OnN0YXJ0KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XShhdXRvJiBlcnJvck1lc3NhZ2UpIG11dGFibGUgeworI2lm
bmRlZiBOREVCVUcKKyAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciB0aHJlYWQgZmFpbGVkIHRv
IHN0YXJ0OiAlcyIsIGVycm9yTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgogICAgICAg
ICBib29sIGRvZXNIYW5kbGVGZXRjaCA9IHRydWU7CiAgICAgICAgIGlmICh3ZWFrVGhpcykgewog
ICAgICAgICAgICAgd2Vha1RoaXMtPmZpbmlzaGVkU3RhcnRpbmcoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmgKaW5kZXggMGE0YmM3ZmY0OTQyLi5lNWNiNWMxZGQxNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIENh
Y2hlU3RvcmFnZVByb3ZpZGVyOwogY2xhc3MgRmV0Y2hMb2FkZXI7CiBjbGFzcyBGZXRjaExvYWRl
ckNsaWVudDsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOworY2xhc3MgTm90aWZpY2F0aW9uQ2xp
ZW50OwogY2xhc3MgU2VydmljZVdvcmtlckluc3BlY3RvclByb3h5Owogc3RydWN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTsKIGVudW0gY2xhc3MgV29ya2VyVGhyZWFkTW9kZSA6IGJvb2w7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
CmluZGV4IDM5ZmUxYjc4N2RhNy4uNjU0ZjFhYzcwMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTYzLDYgKzE2Myw3
IEBAIHZvaWQgU1dTZXJ2ZXI6OndoZW5JbXBvcnRJc0NvbXBsZXRlZElmTmVlZGVkKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjCiAKIHZvaWQgU1dTZXJ2ZXI6OnJlZ2lzdHJhdGlv
blN0b3JlRGF0YWJhc2VGYWlsZWRUb09wZW4oKQogeworICAgIExPRyhTZXJ2aWNlV29ya2VyLCAi
RmFpbGVkIHRvIG9wZW4gU1cgcmVnaXN0cmF0aW9uIGRhdGFiYXNlIik7CiAgICAgQVNTRVJUKCFt
X2ltcG9ydENvbXBsZXRlZCk7CiAgICAgaWYgKCFtX2ltcG9ydENvbXBsZXRlZCkKICAgICAgICAg
cmVnaXN0cmF0aW9uU3RvcmVJbXBvcnRDb21wbGV0ZSgpOwpAQCAtMTczLDYgKzE3NCw4IEBAIHZv
aWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmJiBkYXRhKQogICAgIC8vIFBhZ2VzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFibGUgdG8g
bWFrZSBhIG5ldyByZWdpc3RyYXRpb24gdG8gdGhpcyBrZXkgd2hpbGUgdGhlIGltcG9ydCB3YXMg
c3RpbGwgdGFraW5nIHBsYWNlLgogICAgIEFTU0VSVCghbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFw
LmNvbnRhaW5zKGRhdGEucmVnaXN0cmF0aW9uLmtleSkpOwogCisgICAgTE9HKFNlcnZpY2VXb3Jr
ZXIsICJBZGRpbmcgcmVnaXN0cmF0aW9uIGZyb20gc3RvcmUgZm9yICVzIiwgZGF0YS5yZWdpc3Ry
YXRpb24ua2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIGF1dG8gcmVn
aXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbihkYXRhLnNjcmlwdFVS
TCk7CiAgICAgdmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4ocmVnaXN0cmFibGVEb21haW4sIFNl
cnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlciwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSAoYm9vbCBpc1ZhbGlkKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTE5OCw2ICsyMDEsOCBAQCB2b2lkIFNXU2VydmVy
OjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySQogCiB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVf
cHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJhdGlvbikKIHsKKyAgICBMT0coU2Vy
dmljZVdvcmtlciwgIkFkZGluZyByZWdpc3RyYXRpb24gbGl2ZSBmb3IgJXMiLCByZWdpc3RyYXRp
b24tPmtleSgpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIGlmICghbV9z
Y29wZVRvUmVnaXN0cmF0aW9uTWFwLmNvbnRhaW5zKHJlZ2lzdHJhdGlvbi0+a2V5KCkpICYmICFT
ZWN1cml0eU9yaWdpbjo6aXNMb2NhbEhvc3RPckxvb3BiYWNrSVBBZGRyZXNzKHJlZ2lzdHJhdGlv
bi0+a2V5KCkudG9wT3JpZ2luKCkuaG9zdCkpCiAgICAgICAgIG1fdW5pcXVlUmVnaXN0cmF0aW9u
Q291bnQrKzsKIApAQCAtMTIyNCwyMCArMTIyOSwyNCBAQCB2b2lkIFNXU2VydmVyOjpzb2Z0VXBk
YXRlKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCiB2b2lkIFNXU2VydmVyOjpw
cm9jZXNzUHVzaE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYgZGF0YSwg
VVJMJiYgcmVnaXN0cmF0aW9uVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNh
bGxiYWNrKQogewogICAgIHdoZW5JbXBvcnRJc0NvbXBsZXRlZElmTmVlZGVkKFt0aGlzLCB3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgcmVnaXN0cmF0
aW9uVVJMID0gV1RGTW92ZShyZWdpc3RyYXRpb25VUkwpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBMT0coUHVzaCwgIlNlcnZpY2VXb3JrZXIgaW1w
b3J0IGlzIGNvbXBsZXRlLCBjYW4gaGFuZGxlIHB1c2ggbWVzc2FnZSBub3ciKTsKICAgICAgICAg
aWYgKCF3ZWFrVGhpcykgewogICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CisKICAgICAgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21VUkwocmVnaXN0cmF0aW9uVVJMKTsKICAgICAgICAgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXkgeyBXVEZNb3ZlKG9yaWdpbiksIFdURk1v
dmUocmVnaXN0cmF0aW9uVVJMKSB9OwogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IG1fc2Nv
cGVUb1JlZ2lzdHJhdGlvbk1hcC5nZXQocmVnaXN0cmF0aW9uS2V5KTsKICAgICAgICAgaWYgKCFy
ZWdpc3RyYXRpb24pIHsKKyAgICAgICAgICAgIExPRyhQdXNoLCAiQ2Fubm90IHByb2Nlc3MgcHVz
aCBtZXNzYXNnZTogRmFpbGVkIHRvIGZpbmQgU1cgcmVnaXN0cmF0aW9uIGZvciByZWdpc3RyYXRp
b24ga2V5ICVzIiwgcmVnaXN0cmF0aW9uS2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgICAgIGNhbGxiYWNrKHRydWUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgYXV0byogd29ya2VyID0gcmVnaXN0cmF0aW9uLT5hY3RpdmVXb3Jr
ZXIoKTsKICAgICAgICAgaWYgKCF3b3JrZXIpIHsKKyAgICAgICAgICAgIExPRyhQdXNoLCAiQ2Fu
bm90IHByb2Nlc3MgcHVzaCBtZXNzYXNnZTogTm8gYWN0aXZlIHdvcmtlciBmb3IgcmVnaXN0cmF0
aW9uIGtleSAlcyIsIHJlZ2lzdHJhdGlvbktleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBhNmJmODJlYTRmYjIuLjkxNjliMDBmZDViMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMzAgQEAKKzIwMjItMDItMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLnNo
b3dOb3RpZmljYXRpb24oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI3MjIKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdlKToKKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Z2V0UGVuZGlu
Z1B1c2hNZXNzYWdlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5h
Z2VyOjpzaG93Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmg6CisKKyAgICAgICAgKiBQbGF0Zm9y
bS9Mb2dnaW5nLmg6CisKKyAgICAgICAgKiBTaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvTm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW46CisKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTm90aWZpY2F0
aW9uUHJvdmlkZXIuaDoKKyAgICAgICAgKEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI6OnNob3cp
OgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90
aWZpY2F0aW9uTWFuYWdlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0
aW9uTWFuYWdlci5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmUubW06CisgICAgICAgICgrW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2hhcmVkU2Vydmlj
ZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFnZXJdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIF9nZXRQZW5kaW5nUHVzaE1lc3NhZ2VzOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3Byb2Nlc3NQdXNoTWVzc2FnZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHA6
CisgICAgICAgIChXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcjo6c2hvdyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmg6CisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFu
ZGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyTm90aWZpY2F0
aW9uSGFuZGxlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbkhhbmRsZXI6OlNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OnJlcXVlc3RT
eXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdv
cmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OmRhdGFTdG9yZUZvck5vdGlmaWNhdGlvbklEKToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OnNob3dOb3Rp
ZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFu
ZGxlcjo6Y2FuY2VsTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtl
ck5vdGlmaWNhdGlvbkhhbmRsZXI6OmNsZWFyTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOjpkaWREZXN0cm95Tm90aWZpY2F0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNlV29ya2VyTm90
aWZpY2F0aW9uSGFuZGxlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oLgorCisg
ICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJOb3RpZmljYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk5v
dGlmaWNhdGlvbjo6c291cmNlQ29ubmVjdGlvbiBjb25zdCk6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6
OnNob3dOb3RpZmljYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oOgorCisgICAgICAgICogVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29y
a2VyTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OmlkZW50aWZpZXJGb3JQYWdlUG9pbnRlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90
aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
OjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OmRpc3BhdGNoRGlkQ2xpY2tOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlk
Q2xvc2VOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeSk6CisgICAgICAg
IChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRSZW1vdmVO
b3RpZmljYXRpb25Qb2xpY2llcyk6CisgICAgICAgIChXZWJLaXQ6OnBhZ2VJRHNNYXRjaCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OnBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaCk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlv
blByb3ZpZGVyOjpzaG93KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25Qcm92aWRlci5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd05vdGlmaWNhdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvQWxsUmVtb3RlV29ya2VyUHJvY2Vzc2VzKToKKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmRpc2FibGVSZW1vdGVXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjplbmFibGVSZW1vdGVXb3JrZXJzKToKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6c2hvd1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYW5jZWxTZXJ2aWNlV29ya2VyTm90aWZpY2F0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y2xlYXJTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGlk
RGVzdHJveVNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6c2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0
aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZFNob3dOb3RpZmljYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbGlja05vdGlmaWNhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsb3NlTm90aWZpY2F0aW9u
cyk6CisgICAgICAgIChXZWJLaXQ6OnNlbmROb3RpZmljYXRpb25NZXNzYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5v
dGlmaWNhdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbkNs
aWVudDo6V2ViTm90aWZpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZp
Y2F0aW9uQ2xpZW50Ojp+V2ViTm90aWZpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTm90aWZpY2F0aW9uQ2xpZW50OjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZp
Y2F0aW9uQ2xpZW50OjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25D
bGllbnQ6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNoZWNrUGVybWlzc2lv
bik6CisKIDIwMjItMDItMTEgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbXBsZW1lbnQgUmV2ZWFsIG1ldGhvZHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMTc1YmQzODE2NDc0Li4z
ZjY2ZTNlYjM0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC0yMjU0LDE3ICsyMjU0LDIyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0
aW9uCiB7CiAjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCiAgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIExPRyhOb3Rp
ZmljYXRpb25zLCAiTmV0d29ya1Byb2Nlc3MgZ2V0dGluZyBwZW5kaW5nIHB1c2ggbWVzc2FnZXMg
Zm9yIHNlc3Npb24gSUQgJSIgUFJJdTY0LCBzZXNzaW9uSUQudG9VSW50NjQoKSk7CiAgICAgICAg
IHNlc3Npb24tPm5vdGlmaWNhdGlvbk1hbmFnZXIoKS5nZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFdU
Rk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICB9IGVsc2UKKyAg
ICAgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJOZXR3b3JrUHJvY2VzcyBjb3VsZCBub3QgZmluZCBz
ZXNzaW9uIGZvciBJRCAlbGx1IHRvIGdldCBwZW5kaW5nIHB1c2ggbWVzc2FnZXMiLCBzZXNzaW9u
SUQudG9VSW50NjQoKSk7CiAjZW5kaWYKICAgICBjYWxsYmFjayh7IH0pOwogfQogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXZWJQdXNoTWVzc2FnZSYmIHB1c2hNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNhbGxiYWNrKQogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKKyAgICAgICAgTE9HKFB1c2gsICJOZXR3b3JraW5nIHByb2Nlc3MgaGFuZGxp
bmcgYSBwdXNoIG1lc3NhZ2UgZnJvbSBVSSBwcm9jZXNzIGluIHNlc3Npb24gJWxsdSIsIHNlc3Np
b25JRC50b1VJbnQ2NCgpKTsKICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5wcm9j
ZXNzUHVzaE1lc3NhZ2UoV1RGTW92ZShwdXNoTWVzc2FnZS5wdXNoRGF0YSksIFdURk1vdmUocHVz
aE1lc3NhZ2UucmVnaXN0cmF0aW9uVVJMKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0gZWxz
ZQorICAgICAgICBMT0coUHVzaCwgIk5ldHdvcmtpbmcgcHJvY2VzcyBhc2tlZCB0byBoYW5kbGUg
YSBwdXNoIG1lc3NhZ2UgZnJvbSBVSSBwcm9jZXNzIGluIHNlc3Npb24gJWxsdSwgYnV0IHRoYXQg
c2Vzc2lvbiBkb2Vzbid0IGV4aXN0Iiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwogfQogI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90
aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggMTdjZWY5MTRhYjg2Li40ODZjYjViM2RmNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtOTMs
MTMgKzkzLDE0IEBAIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmdldE9yaWdpbnNX
aXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKENvCiB2b2lkIE5ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyOjpnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgVmVjdG9yPFdlYlB1c2hNZXNzYWdlPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlB1c2hNZXNzYWdlPiYmKT4g
cmVwbHlIYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildIChWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+JiYgbWVzc2FnZXMpIG11dGFibGUgeworICAg
ICAgICBMT0coUHVzaCwgIkRvbmUgZ2V0dGluZyBwdXNoIG1lc3NhZ2VzIik7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUobWVzc2FnZXMpKTsKICAgICB9OwogCiAgICAgc2VuZE1l
c3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpHZXRQZW5kaW5nUHVzaE1lc3Nh
Z2VzPihXVEZNb3ZlKHJlcGx5SGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyOjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRh
dGEmKQordm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvd05vdGlmaWNhdGlvbihJ
UEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikKIHsKICAg
ICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0
d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCBhOTJiZDJmNWJkMTcuLjUyYTYzODRiYWIx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTY2
LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcihOZXR3
b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgd2ViUHVzaE1hY2hTZXJ2aWNlTmFtZSk7CiAKICAg
ICB2b2lkIHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYg
b3JpZ2luU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKLSAg
ICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYp
IGZpbmFsOworICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxOb3Rp
ZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwogICAgIHZvaWQgY2xl
YXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKSBmaW5h
bDsKICAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0
aW9uSUQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5n
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCBkZTMyZjgxNzE3MTUu
LjczNmNmNmNlZmE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5n
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTgwLDYgKzgwLDcg
QEAgZXh0ZXJuICJDIiB7CiAgICAgTShOZXR3b3JrQ2FjaGVTdG9yYWdlKSBcCiAgICAgTShOZXR3
b3JrU2NoZWR1bGluZykgXAogICAgIE0oTmV0d29ya1Nlc3Npb24pIFwKKyAgICBNKE5vdGlmaWNh
dGlvbnMpIFwKICAgICBNKFBlcmZvcm1hbmNlTG9nZ2luZykgXAogICAgIE0oUGx1Z2lucykgXAog
ICAgIE0oUHJpbnRpbmcpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ci5oCmluZGV4IGE3ZTM2Y2RjYTE4MS4uOWY5OTZhYTEzNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcigpID0gZGVmYXVsdDsK
IAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihj
b25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd05vdGlmaWNh
dGlvbihJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90
aWZpY2F0aW9uSUQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNv
bnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2Fn
ZXMuaW4KaW5kZXggNDg5YjBiNmFkMGY3Li4zN2NjZGRmMWZiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VI
YW5kbGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluCkBAIC0yMiw3
ICsyMiw3IEBACiAKIG1lc3NhZ2VzIC0+IE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ciBOb3RSZWZDb3VudGVkIHsKICAgICBSZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lv
bihTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikgLT4gKGJvb2wgYWxsb3dlZCkgQXN5bmMKLSAgICBT
aG93Tm90aWZpY2F0aW9uKHN0cnVjdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhIG5vdGlmaWNh
dGlvbkRhdGEpCisgICAgU2hvd05vdGlmaWNhdGlvbihzdHJ1Y3QgV2ViQ29yZTo6Tm90aWZpY2F0
aW9uRGF0YSBub3RpZmljYXRpb25EYXRhKSBXYW50c0Nvbm5lY3Rpb24KICAgICBDYW5jZWxOb3Rp
ZmljYXRpb24oVVVJRCBub3RpZmljYXRpb25JRCkKICAgICBDbGVhck5vdGlmaWNhdGlvbnMoVmVj
dG9yPFVVSUQ+IG5vdGlmaWNhdGlvbklEcykKICAgICBEaWREZXN0cm95Tm90aWZpY2F0aW9uKFVV
SUQgbm90aWZpY2F0aW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAwNjc3MGQwZGZjN2QuLmYzOGIzZWQ3
MDE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CkBAIC01ODUsNiArNTg1LDcgQEAgVUlQcm9jZXNzL01lZGlhL0F1
ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkuY3BwCiBVSVByb2Nlc3MvTWVkaWEvTWVk
aWFVc2FnZU1hbmFnZXIuY3BwCiBVSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eS5jcHAKIAorVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvU2VydmljZVdvcmtl
ck5vdGlmaWNhdGlvbkhhbmRsZXIuY3BwCiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb24uY3BwCiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIuY3BwCiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOb3RpZmljYXRpb25Qcm92aWRlci5oCmluZGV4IGM0ODEzYWE1MTY1MC4uZjczYzU4
OGY2NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTm90aWZp
Y2F0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTm90
aWZpY2F0aW9uUHJvdmlkZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBOb3RpZmljYXRpb25Q
cm92aWRlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Tm90aWZpY2F0aW9uUHJvdmlkZXIoKSA9
IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2hvdyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IFdlYktpdDo6V2ViTm90aWZpY2F0aW9uJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNob3coV2Vi
S2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbiYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWwoV2ViS2l0OjpXZWJOb3RpZmljYXRpb24mKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbiYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYgLypub3RpZmljYXRpb25JRHMqLykgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA4MmJi
OTUxZTVjMWUuLmQ1MzhkYjU0MDc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC03OCwzICs3OCw4IEBA
IHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Q
b2xpY2llcyhXS05vdGlmaWNhdGlvbk1hCiB7CiAgICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5wcm92
aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKHRvSW1wbChvcmlnaW5zKSk7CiB9CisK
K1dLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRT
ZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpCit7CisgICAgcmV0dXJuIHRvQVBJKCZX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmlj
YXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNh
dGlvbk1hbmFnZXIuaAppbmRleCA3OWVkYmY1OGNlNDMuLjM0YmI1ZWMwYjE2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2Vy
LmgKQEAgLTQzLDYgKzQzLDggQEAgV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoV0tOb3RpZmljYXRpb24KIFdLX0VYUE9SVCB2
b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9s
aWN5KFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2lu
UmVmIG9yaWdpbiwgYm9vbCBhbGxvd2VkKTsKIFdLX0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9u
TWFuYWdlclByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoV0tOb3RpZmljYXRp
b25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLQXJyYXlSZWYgb3JpZ2lucyk7CiAKK1dLX0VYUE9S
VCBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVk
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFnZXIoKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVz
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IGY5MTM0ODNkZWRhMC4uZWFhMmFkNjIxNDQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIldLU2VjdXJpdHlP
cmlnaW5JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlB1
c2hNZXNzYWdlLmgiCiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIK
QEAgLTY1OSw2ICs2NjAsMTIgQEAgc3RhdGljIFZlY3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVj
b3JkPiB0b1dlYnNpdGVEYXRhUmVjb3JkcyhOU0FycmF5ICpkYXRhUmVjb3IKICAgICByZXR1cm4g
d3JhcHBlcihfd2Vic2l0ZURhdGFTdG9yZS0+Y29uZmlndXJhdGlvbigpLmNvcHkoKSk7CiB9CiAK
KysgKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZilfc2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNh
dGlvbk1hbmFnZXIKK3sKKyAgICBMT0coUHVzaCwgIkFjY2Vzc2luZyBfc2hhcmVkU2VydmljZVdv
cmtlck5vdGlmaWNhdGlvbk1hbmFnZXIiKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5h
Z2VyKCkpOworfQorCiAtICh2b2lkKV9hbGxvd1RMU0NlcnRpZmljYXRlQ2hhaW46KE5TQXJyYXkg
KiljZXJ0aWZpY2F0ZUNoYWluIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdAogewogICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT5hbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoV2ViQ29y
ZTo6Q2VydGlmaWNhdGVJbmZvKChfX2JyaWRnZSBDRkFycmF5UmVmKWNlcnRpZmljYXRlQ2hhaW4p
LCBob3N0KTsKQEAgLTc3MSwxMiArNzc4LDE1IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJz
aXRlRGF0YVJlY29yZD4gdG9XZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAK
IC0odm9pZClfZ2V0UGVuZGluZ1B1c2hNZXNzYWdlczoodm9pZCheKShOU0FycmF5PE5TRGljdGlv
bmFyeSAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIExPRyhQdXNoLCAiR2V0dGluZyBw
ZW5kaW5nIHB1c2ggbWVzc2FnZXMiKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBfd2Vic2l0ZURhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5nZXRQZW5kaW5nUHVzaE1lc3Nh
Z2VzKF93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJLaXQ6Oldl
YlB1c2hNZXNzYWdlPiYgbWVzc2FnZXMpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bWVzc2FnZXMuc2l6ZSgp
XSk7CiAgICAgICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1lc3NhZ2VzKQogICAgICAgICAgICAg
W3Jlc3VsdCBhZGRPYmplY3Q6bWVzc2FnZS50b0RpY3Rpb25hcnkoKV07CiAKKyAgICAgICAgTE9H
KFB1c2gsICJHaXZpbmcgYXBwbGljYXRpb24gJXUgcGVuZGluZyBwdXNoIG1lc3NhZ2VzIiwgbWVz
c2FnZXMuc2l6ZSgpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0LmdldCgpKTsK
ICAgICB9KTsKICNlbmRpZgpAQCAtNzg3LDExICs3OTcsMTQgQEAgc3RhdGljIFZlY3RvcjxXZWJL
aXQ6OldlYnNpdGVEYXRhUmVjb3JkPiB0b1dlYnNpdGVEYXRhUmVjb3JkcyhOU0FycmF5ICpkYXRh
UmVjb3IKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgYXV0byBwdXNoTWVzc2FnZSA9
IFdlYktpdDo6V2ViUHVzaE1lc3NhZ2U6OmZyb21EaWN0aW9uYXJ5KHB1c2hNZXNzYWdlRGljdGlv
bmFyeSk7CiAgICAgaWYgKCFwdXNoTWVzc2FnZSkgeworICAgICAgICBMT0coUHVzaCwgIkFza2Vk
IHRvIGhhbmRsZSBhbiBpbnZhbGlkIHB1c2ggbWVzc2FnZSIpOwogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBMT0coUHVzaCwg
IlNlbmRpbmcgcHVzaCBtZXNzYWdlIHRvIG5ldHdvcmsgcHJvY2VzcyB0byBoYW5kbGUiKTsKICAg
ICBfd2Vic2l0ZURhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5wcm9jZXNzUHVzaE1lc3NhZ2Uo
X3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCAqcHVzaE1lc3NhZ2UsIFtjb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIHdhc1Byb2Nl
c3NlZCkgeworICAgICAgICBMT0coUHVzaCwgIlB1c2ggbWVzc2FnZSBwcm9jZXNzaW5nIGNvbXBs
ZXRlLiBDYWxsYmFjayByZXN1bHQ6ICVpIiwgd2FzUHJvY2Vzc2VkKTsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIod2FzUHJvY2Vzc2VkKTsKICAgICB9KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmVQcml2YXRlLmgKaW5kZXggMzFhODU0MDc0MTRkLi5jMzZlMTEzMWYwOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZVByaXZhdGUuaApAQCAtOTYsNiArOTYsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNV
SW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogQHByb3BlcnR5IChu
dWxsYWJsZSwgbm9uYXRvbWljLCB3ZWFrKSBpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRl
PiBfZGVsZWdhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIF9XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uICpfY29uZmlndXJhdGlvbjsKIAorKyAoV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UmVmKV9zaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlciBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAtICh2b2lkKV90ZXJt
aW5hdGVOZXR3b3JrUHJvY2VzcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUu
MCkpOwogLSAodm9pZClfc2VuZE5ldHdvcmtQcm9jZXNzUHJlcGFyZVRvU3VzcGVuZDoodm9pZChe
KSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBp
b3MoMTUuMCkpOwogLSAodm9pZClfc2VuZE5ldHdvcmtQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVu
dGx5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92
aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmlj
YXRpb25Qcm92aWRlci5jcHAKaW5kZXggNTUxNjM2NDQ3NzU1Li44NGM2YWI4NTY5NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlv
blByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJOb3Rp
ZmljYXRpb24mIG5vdGlmaWNhdGlvbikgb3ZlcnJpZGUKKyAgICB2b2lkIHNob3coV2ViUGFnZVBy
b3h5KiBwYWdlLCBXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIG1fcHJvdmlkZXIuc2hvdyhwYWdlLCBub3RpZmljYXRpb24pOwogICAgIH0KQEAg
LTExNSwxMCArMTE1LDE2IEBAIHZvaWQgV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OndpdGhk
cmF3QW55UHJldmlvdXNOb3RpZmljYXRpb25NYXRjaGluZ1RhZyhjb25zCiAjZW5kaWYKIH0KIAot
dm9pZCBXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcjo6c2hvdyhXZWJQYWdlUHJveHkmIHBhZ2Us
IGNvbnN0IFdlYk5vdGlmaWNhdGlvbiYgd2ViTm90aWZpY2F0aW9uKQordm9pZCBXZWJLaXROb3Rp
ZmljYXRpb25Qcm92aWRlcjo6c2hvdyhXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYk5vdGlm
aWNhdGlvbiYgd2ViTm90aWZpY2F0aW9uKQogeworICAgIGlmICghcGFnZSkgeworICAgICAgICAv
LyBGSVhNRTogZ2xpYiBuZWVkcyB0byBmaW5kIHRoZWlyIG93biBzb2x1dGlvbiB0byBoYW5kbGlu
ZyBwYWdlbGVzcyBub3RpZmljYXRpb25zLgorICAgICAgICAvLyBJIHdvbid0IG1ha2Ugc29tZXRo
aW5nIHVwIGZvciB0aGVtLgorICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIEdSZWZQ
dHI8V2ViS2l0Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0
KHdlYk5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25JRCgpKTsKLSAgICBhdXRvKiB3ZWJWaWV3ID0g
d2Via2l0V2ViQ29udGV4dEdldFdlYlZpZXdGb3JQYWdlKG1fd2ViQ29udGV4dCwgJnBhZ2UpOwor
ICAgIGF1dG8qIHdlYlZpZXcgPSB3ZWJraXRXZWJDb250ZXh0R2V0V2ViVmlld0ZvclBhZ2UobV93
ZWJDb250ZXh0LCBwYWdlKTsKICAgICBBU1NFUlQod2ViVmlldyk7CiAKICAgICBpZiAoIW5vdGlm
aWNhdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKaW5kZXggMzZiNzgzNDM4ODBkLi5i
ZTUyMjBkNTBlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaApAQCAtMzcsNyArMzcsNyBA
QCBwdWJsaWM6CiAgICAgV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5KiwgV2ViS2l0V2ViQ29udGV4dCopOwogICAgIH5XZWJLaXROb3RpZmljYXRp
b25Qcm92aWRlcigpOwogCi0gICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYk5v
dGlmaWNhdGlvbiYpOworICAgIHZvaWQgc2hvdyhXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJOb3Rp
ZmljYXRpb24mKTsKICAgICB2b2lkIGNhbmNlbChjb25zdCBXZWJOb3RpZmljYXRpb24mKTsKICAg
ICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+Jik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvU2VydmljZVdv
cmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9TZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NDc0YTc5M2YwOTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb25IYW5kbGVyLmNwcApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25I
YW5kbGVyLmgiCisKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RpZmljYXRpb25EYXRhLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTZXJ2aWNl
V29ya2VyTm90aWZpY2F0aW9uSGFuZGxlciYgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRs
ZXI6OnNpbmdsZXRvbigpCit7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CisgICAgc3Rh
dGljIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyJiBoYW5kbGVyID0gKm5ldyBTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjsKKyAgICByZXR1cm4gaGFuZGxlcjsKK30KKwor
dm9pZCBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6cmVxdWVzdFN5c3RlbU5vdGlm
aWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitXZWJz
aXRlRGF0YVN0b3JlKiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6ZGF0YVN0b3Jl
Rm9yTm90aWZpY2F0aW9uSUQoY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit7CisgICAgYXV0
byBpdGVyYXRvciA9IG1fbm90aWZpY2F0aW9uVG9TZXNzaW9uTWFwLmZpbmQobm90aWZpY2F0aW9u
SUQpOworICAgIGlmIChpdGVyYXRvciA9PSBtX25vdGlmaWNhdGlvblRvU2Vzc2lvbk1hcC5lbmQo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gV2Vic2l0ZURhdGFTdG9y
ZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoaXRlcmF0b3ItPnZhbHVlKTsKK30KKwor
dm9pZCBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6c2hvd05vdGlmaWNhdGlvbihJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRh
dGEmIGRhdGEpCit7CisgICAgYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhp
c3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoZGF0YS5zb3VyY2VTZXNzaW9uKTsKKyAgICBpZiAo
IWRhdGFTdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ub3RpZmljYXRpb25Ub1Nlc3Np
b25NYXAuYWRkKGRhdGEubm90aWZpY2F0aW9uSUQsIGRhdGEuc291cmNlU2Vzc2lvbik7CisgICAg
ZGF0YVN0b3JlLT5zaG93U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihjb25uZWN0aW9uLCBkYXRh
KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6Y2FuY2VsTm90
aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQoreworICAgIGlmIChhdXRvKiBk
YXRhU3RvcmUgPSBkYXRhU3RvcmVGb3JOb3RpZmljYXRpb25JRChub3RpZmljYXRpb25JRCkpCisg
ICAgICAgIGRhdGFTdG9yZS0+Y2FuY2VsU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihub3RpZmlj
YXRpb25JRCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OmNs
ZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykKK3sK
KyAgICBmb3IgKGF1dG8mIG5vdGlmaWNhdGlvbklEIDogbm90aWZpY2F0aW9uSURzKSB7CisgICAg
ICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBkYXRhU3RvcmVGb3JOb3RpZmljYXRpb25JRChub3Rp
ZmljYXRpb25JRCkpCisgICAgICAgICAgICBkYXRhU3RvcmUtPmNsZWFyU2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbihub3RpZmljYXRpb25JRCk7CisgICAgfQorfQorCit2b2lkIFNlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb25IYW5kbGVyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQm
IG5vdGlmaWNhdGlvbklEKQoreworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBkYXRhU3RvcmVG
b3JOb3RpZmljYXRpb25JRChub3RpZmljYXRpb25JRCkpCisgICAgICAgIGRhdGFTdG9yZS0+ZGlk
RGVzdHJveVNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvU2VydmljZVdvcmtlck5vdGlmaWNhdGlv
bkhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA5MGEx
MzFmZDNkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaApAQCAtMCwwICsxLDUz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
SGFuZGxlciBmaW5hbCA6IHB1YmxpYyBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIg
eworcHVibGljOgorICAgIHN0YXRpYyBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlciYg
c2luZ2xldG9uKCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgU2VydmljZVdvcmtlck5vdGlm
aWNhdGlvbkhhbmRsZXIoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHJlcXVlc3RTeXN0ZW1Ob3Rp
ZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rp
b24mLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikgZmluYWw7CisgICAgdm9pZCBj
YW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOworICAg
IHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9u
SURzKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgVVVJRCYg
bm90aWZpY2F0aW9uSUQpIGZpbmFsOworCisgICAgV2Vic2l0ZURhdGFTdG9yZSogZGF0YVN0b3Jl
Rm9yTm90aWZpY2F0aW9uSUQoY29uc3QgVVVJRCYpOworCisgICAgSGFzaE1hcDxVVUlELCBQQUw6
OlNlc3Npb25JRD4gbV9ub3RpZmljYXRpb25Ub1Nlc3Npb25NYXA7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcAppbmRleCBiOGRhNzFiYjBmZDYuLmI5MDE4NDIx
MTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotV2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oY29uc3QgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRl
bnRpZmllcikKK1dlYk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50
aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgc291cmNlQ29ubmVjdGlvbikKICAgICA6IG1fdGl0bGUo
ZGF0YS50aXRsZSkKICAgICAsIG1fYm9keShkYXRhLmJvZHkpCiAgICAgLCBtX2ljb25VUkwoZGF0
YS5pY29uVVJMKQpAQCAtNDAsNiArNDAsNyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNh
dGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdlUAogICAg
ICwgbV9vcmlnaW4oQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhkYXRhLm9y
aWdpblN0cmluZykpCiAgICAgLCBtX2NvcmVOb3RpZmljYXRpb25JRChkYXRhLm5vdGlmaWNhdGlv
bklEKQogICAgICwgbV9wYWdlSWRlbnRpZmllcihwYWdlSWRlbnRpZmllcikKKyAgICAsIG1fc291
cmNlQ29ubmVjdGlvbihzb3VyY2VDb25uZWN0aW9uKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaAppbmRl
eCBiYzc4MmZiZWZmZjMuLmU4OTQyNjMzZDQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElTZWN1cml0eU9y
aWdpbi5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CkBAIC00MSw5ICs0Miw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBX
ZWJOb3RpZmljYXRpb24gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpOb3RpZmljYXRpb24+LCBwdWJsaWMgSWRlbnRpZmllZDxXZWJOb3RpZmljYXRpb24+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYk5vdGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlk
ZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxXZWJOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBh
Z2VJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIHNvdXJjZUNvbm5lY3Rpb24pCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJOb3RpZmljYXRpb24oZGF0YSwgcGFnZUlk
ZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTm90aWZpY2F0aW9u
KGRhdGEsIHBhZ2VJZGVudGlmaWVyLCBzb3VyY2VDb25uZWN0aW9uKSk7CiAgICAgfQogCiAgICAg
Y29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KQEAgLTU4LDkg
KzU5LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBVVUlEJiBjb3JlTm90aWZpY2F0aW9uSUQoKSBj
b25zdCB7IHJldHVybiBtX2NvcmVOb3RpZmljYXRpb25JRDsgfQogCiAgICAgV2ViUGFnZVByb3h5
SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlkZW50aWZp
ZXI7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24qIHNvdXJjZUNvbm5lY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZUNvbm5lY3Rpb24uZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJOb3Rp
ZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIpOworICAgIFdlYk5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRp
b25EYXRhJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJik7CiAKICAg
ICBTdHJpbmcgbV90aXRsZTsKICAgICBTdHJpbmcgbV9ib2R5OwpAQCAtNzIsNiArNzQsNyBAQCBw
cml2YXRlOgogICAgIFVVSUQgbV9jb3JlTm90aWZpY2F0aW9uSUQ7CiAKICAgICBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CisgICAgV2Vha1B0cjxJUEM6OkNvbm5lY3Rp
b24+IG1fc291cmNlQ29ubmVjdGlvbjsKIH07CiAKIGlubGluZSBib29sIGlzTm90aWZpY2F0aW9u
SURWYWxpZCh1aW50NjRfdCBpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyLmNwcAppbmRleCBkMDY3Y2VmMDk2NGEuLjRjNjg0ZDljOWQzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVy
LmNwcApAQCAtNDAsOSArNDAsOSBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlcjo6cmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oYwogICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VIYW5kbGVyOjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkRhdGEmIGRhdGEpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
cjo6c2hvd05vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEpCiB7Ci0gICAgbV93ZWJQYWdlUHJveHkuc2hv
d05vdGlmaWNhdGlvbihkYXRhKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5zaG93Tm90aWZpY2F0aW9u
KGNvbm5lY3Rpb24sIGRhdGEpOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlcjo6Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklE
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgK
aW5kZXggYTZkYjAzMzdiN2U1Li41MjUwNWU5ZDI1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VI
YW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzcsNyArMzcsNyBAQCBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcihX
ZWJQYWdlUHJveHkmKTsKIAogICAgIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1p
c3Npb24oY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmlu
YWw7Ci0gICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkRhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9u
JiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgY2Fu
Y2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKICAgICB2
b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklE
cykgZmluYWw7CiAgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5v
dGlmaWNhdGlvbklEKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmNwcAppbmRleCBkMTNhNTg4MzhlYzYuLjAwNWZiYTVhMjNhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtNDksNiArNDksMTMgQEAgUmVmPFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eT4gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUo
V2ViUHJvY2Vzc1AKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkocHJvY2Vzc1Bvb2wpKTsKIH0KIAorV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
JiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2Vy
KCkKK3sKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBzdGF0aWMgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5KiBzaGFyZWRNYW5hZ2VyID0gbmV3IFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eShudWxscHRyKTsKKyAgICByZXR1cm4gKnNoYXJlZE1hbmFnZXI7Cit9CisKIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KFdl
YlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKICAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHBy
b2Nlc3NQb29sKQogICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9u
UHJvdmlkZXI+KCkpCkBAIC04OCwyMSArOTUsMjggQEAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogICAg
IHJldHVybiBtX3Byb3ZpZGVyLT5ub3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwogfQogCi12b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyhXZWJQYWdlUHJveHkqIHdlYlBhZ2Us
IGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIG5vdGlmaWNhdGlvbkRhdGEpCitzdGF0
aWMgV2ViUGFnZVByb3h5SWRlbnRpZmllciBpZGVudGlmaWVyRm9yUGFnZVBvaW50ZXIoV2ViUGFn
ZVByb3h5KiB3ZWJQYWdlKQogewotICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0
aW9uOjpjcmVhdGUobm90aWZpY2F0aW9uRGF0YSwgd2ViUGFnZS0+aWRlbnRpZmllcigpKTsKKyAg
ICByZXR1cm4gd2ViUGFnZSA/IHdlYlBhZ2UtPmlkZW50aWZpZXIoKSA6IFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIoKTsKK30KKwordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNob3co
V2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIG5vdGlmaWNhdGlvbkRhdGEpCit7CisgICAgTE9H
KE5vdGlmaWNhdGlvbnMsICJXZWJQYWdlUHJveHkgKCVwKSBhc2tpbmcgdG8gc2hvdyBub3RpZmlj
YXRpb24gKCVzKSIsIHdlYlBhZ2UsIG5vdGlmaWNhdGlvbkRhdGEubm90aWZpY2F0aW9uSUQudG9T
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90
aWZpY2F0aW9uOjpjcmVhdGUobm90aWZpY2F0aW9uRGF0YSwgaWRlbnRpZmllckZvclBhZ2VQb2lu
dGVyKHdlYlBhZ2UpLCBjb25uZWN0aW9uKTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5z
ZXQobm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25JRCgpLCBub3RpZmljYXRpb24tPmNvcmVOb3Rp
ZmljYXRpb25JRCgpKTsKICAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbi0+Y29y
ZU5vdGlmaWNhdGlvbklEKCksIG5vdGlmaWNhdGlvbik7Ci0gICAgbV9wcm92aWRlci0+c2hvdygq
d2ViUGFnZSwgbm90aWZpY2F0aW9uLmdldCgpKTsKKyAgICBtX3Byb3ZpZGVyLT5zaG93KHdlYlBh
Z2UsIG5vdGlmaWNhdGlvbi5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5OjpjYW5jZWwoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBVVUlEJiBwYWdlTm90
aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKFdl
YlBhZ2VQcm94eSosIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKICAgICBpZiAo
YXV0byB3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KHBhZ2VOb3RpZmljYXRp
b25JRCkpCiAgICAgICAgIG1fcHJvdmlkZXItPmNhbmNlbCgqd2ViTm90aWZpY2F0aW9uKTsKIH0K
ICAgICAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZp
Y2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlv
bklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmlj
YXRpb24oV2ViUGFnZVByb3h5KiwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklEKQogewog
ICAgIGlmIChhdXRvIHdlYk5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy50YWtlKHBhZ2VO
b3RpZmljYXRpb25JRCkpIHsKICAgICAgICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAucmVtb3Zl
KHdlYk5vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uSUQoKSk7CkBAIC0xMTAsMzcgKzEyNCwyNiBA
QCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlv
bihXZWJQYWdlUHJveHkqIHdlYlBhZ2UsCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwYWdlSURz
TWF0Y2goV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFVVSUQmLCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3RvcjxVVUlEPiYpCi17Ci0g
ICAgcmV0dXJuIHBhZ2VJRCA9PSBkZXNpcmVkUGFnZUlEOwotfQotCi1zdGF0aWMgYm9vbCBwYWdl
QW5kTm90aWZpY2F0aW9uSURzTWF0Y2goV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNv
bnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNp
cmVkUGFnZUlELCBjb25zdCBWZWN0b3I8VVVJRD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURz
KQotewotICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5v
dGlmaWNhdGlvbklEcy5jb250YWlucyhwYWdlTm90aWZpY2F0aW9uSUQpOwotfQotCiB2b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94
eSogd2ViUGFnZSkKIHsKLSAgICBjbGVhck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgVmVjdG9yPFVV
SUQ+KCksIHBhZ2VJRHNNYXRjaCk7CisgICAgQVNTRVJUKHdlYlBhZ2UpOworICAgIGNsZWFyTm90
aWZpY2F0aW9ucyh3ZWJQYWdlLCB7IH0pOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3Qg
VmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZpY2F0aW9uSURzKQogewotICAgIGNsZWFyTm90aWZpY2F0
aW9ucyh3ZWJQYWdlLCBwYWdlTm90aWZpY2F0aW9uSURzLCBwYWdlQW5kTm90aWZpY2F0aW9uSURz
TWF0Y2gpOwotfQotCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3Rp
ZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdl
Tm90aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbiBmaWx0ZXJGdW5jdGlv
bikKLXsKLSAgICBhdXRvIHRhcmdldFBhZ2VQcm94eUlEID0gd2ViUGFnZS0+aWRlbnRpZmllcigp
OwotCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBnbG9iYWxOb3RpZmljYXRpb25JRHM7Ci0gICAgZ2xv
YmFsTm90aWZpY2F0aW9uSURzLnJlc2VydmVDYXBhY2l0eShtX2dsb2JhbE5vdGlmaWNhdGlvbk1h
cC5zaXplKCkpOworICAgIGdsb2JhbE5vdGlmaWNhdGlvbklEcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNpemUoKSk7CisKKyAgICAvLyBXZSBhbHdheXMg
Y2hlY2sgcGFnZSBpZGVudGl0eS4KKyAgICAvLyBJZiB0aGUgc2V0IG9mIG5vdGlmaWNhdGlvbiBJ
RHMgaXMgbm9uLWVtcHR5LCB3ZSBhbHNvIGNoZWNrIHRoYXQuCisgICAgYXV0byB0YXJnZXRQYWdl
SWRlbnRpZmllciA9IGlkZW50aWZpZXJGb3JQYWdlUG9pbnRlcih3ZWJQYWdlKTsKKyAgICBib29s
IGNoZWNrTm90aWZpY2F0aW9uSURzID0gIXBhZ2VOb3RpZmljYXRpb25JRHMuaXNFbXB0eSgpOwog
CiAgICAgZm9yIChhdXRvIG5vdGlmaWNhdGlvbiA6IG1fbm90aWZpY2F0aW9ucy52YWx1ZXMoKSkg
ewotICAgICAgICBhdXRvIHBhZ2VQcm94eUlEID0gbm90aWZpY2F0aW9uLT5wYWdlSWRlbnRpZmll
cigpOwotICAgICAgICBhdXRvIGNvcmVOb3RpZmljYXRpb25JRCA9IG5vdGlmaWNhdGlvbi0+Y29y
ZU5vdGlmaWNhdGlvbklEKCk7Ci0gICAgICAgIGlmICghZmlsdGVyRnVuY3Rpb24ocGFnZVByb3h5
SUQsIGNvcmVOb3RpZmljYXRpb25JRCwgdGFyZ2V0UGFnZVByb3h5SUQsIHBhZ2VOb3RpZmljYXRp
b25JRHMpKQorICAgICAgICBpZiAoY2hlY2tOb3RpZmljYXRpb25JRHMgJiYgIXBhZ2VOb3RpZmlj
YXRpb25JRHMuY29udGFpbnMobm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9uSUQoKSkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHRhcmdldFBhZ2VJZGVudGlmaWVyICE9
IG5vdGlmaWNhdGlvbi0+cGFnZUlkZW50aWZpZXIoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEID0gbm90aWZpY2F0aW9uLT5u
b3RpZmljYXRpb25JRCgpOwpAQCAtMTY3LDQ4ICsxNzAsNDYgQEAgdm9pZCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9i
YWxOb3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQ
cm9jZXNzUHJveHk6OndlYlBhZ2Uobm90aWZpY2F0aW9uLT5wYWdlSWRlbnRpZmllcigpKTsKLSAg
ICBpZiAoIXdlYlBhZ2UpCisgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJQcm92aWRlciBkaWQgc2hv
dyBub3RpZmljYXRpb24gKCVzKSIsIG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCku
dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBub3Rp
ZmljYXRpb24tPnNvdXJjZUNvbm5lY3Rpb24oKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHdlYlBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJO
b3RpZmljYXRpb25NYW5hZ2VyOjpEaWRTaG93Tm90aWZpY2F0aW9uKGl0LT52YWx1ZSksIDApOwor
ICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRp
ZFNob3dOb3RpZmljYXRpb24oaXQtPnZhbHVlKSwgMCk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IGds
b2JhbE5vdGlmaWNhdGlvbklEKQorc3RhdGljIHZvaWQgZGlzcGF0Y2hEaWRDbGlja05vdGlmaWNh
dGlvbihXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBhdXRvIGl0ID0gbV9n
bG9iYWxOb3RpZmljYXRpb25NYXAuZmluZChnbG9iYWxOb3RpZmljYXRpb25JRCk7Ci0gICAgaWYg
KGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQotICAgICAgICByZXR1cm47Cisg
ICAgTE9HKE5vdGlmaWNhdGlvbnMsICJQcm92aWRlciBkaWQgY2xpY2sgbm90aWZpY2F0aW9uICgl
cykiLCBub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpLnRvU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAKLSAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy5nZXQo
aXQtPnZhbHVlKTsKLSAgICBpZiAoIW5vdGlmaWNhdGlvbikgewotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBpZiAoIW5vdGlmaWNhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAg
IH0KIAotICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uobm90aWZp
Y2F0aW9uLT5wYWdlSWRlbnRpZmllcigpKTsKLSAgICBpZiAoIXdlYlBhZ2UpCisgICAgYXV0byog
Y29ubmVjdGlvbiA9IG5vdGlmaWNhdGlvbi0+c291cmNlQ29ubmVjdGlvbigpOworICAgIGlmICgh
Y29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsaWNrTm90aWZpY2F0aW9u
KGl0LT52YWx1ZSksIDApOworICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYk5vdGlm
aWNhdGlvbk1hbmFnZXI6OkRpZENsaWNrTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi0+Y29yZU5v
dGlmaWNhdGlvbklEKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgY29yZU5vdGlmaWNh
dGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xp
Y2tOb3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQpCiB7Ci0gICAgYXV0
byBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KGNvcmVOb3RpZmljYXRpb25JRCk7
Ci0gICAgaWYgKCFub3RpZmljYXRpb24pCisgICAgYXV0byBpdCA9IG1fZ2xvYmFsTm90aWZpY2F0
aW9uTWFwLmZpbmQoZ2xvYmFsTm90aWZpY2F0aW9uSUQpOworICAgIGlmIChpdCA9PSBtX2dsb2Jh
bE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogd2Vi
UGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3RpZmljYXRpb24tPnBhZ2VJZGVudGlm
aWVyKCkpOwotICAgIGlmICghd2ViUGFnZSkKLSAgICAgICAgcmV0dXJuOworICAgIGRpc3BhdGNo
RGlkQ2xpY2tOb3RpZmljYXRpb24obV9ub3RpZmljYXRpb25zLmdldChpdC0+dmFsdWUpKTsKK30K
IAotICAgIHdlYlBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpEaWRDbGlja05vdGlmaWNhdGlvbihjb3JlTm90aWZpY2F0aW9uSUQpLCAwKTsKK3Zv
aWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNrTm90aWZpY2F0
aW9uKGNvbnN0IFVVSUQmIGNvcmVOb3RpZmljYXRpb25JRCkKK3sKKyAgICBkaXNwYXRjaERpZENs
aWNrTm90aWZpY2F0aW9uKG1fbm90aWZpY2F0aW9ucy5nZXQoY29yZU5vdGlmaWNhdGlvbklEKSk7
CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsb3Nl
Tm90aWZpY2F0aW9ucyhBUEk6OkFycmF5KiBnbG9iYWxOb3RpZmljYXRpb25JRHMpCiB7Ci0gICAg
SGFzaE1hcDxXZWJQYWdlUHJveHkqLCBWZWN0b3I8VVVJRD4+IHBhZ2VOb3RpZmljYXRpb25JRHM7
CisgICAgVmVjdG9yPFJlZlB0cjxXZWJOb3RpZmljYXRpb24+PiBjbG9zZWROb3RpZmljYXRpb25z
OwogCiAgICAgc2l6ZV90IHNpemUgPSBnbG9iYWxOb3RpZmljYXRpb25JRHMtPnNpemUoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewpAQCAtMjQxLDI2ICsyNDIsMjUg
QEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xvc2VOb3Rp
ZmljYXRpb25zKEFQSTo6QXJyYXkqIGdsb2IKICAgICAgICAgaWYgKCFub3RpZmljYXRpb24pCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoV2ViUGFnZVByb3h5KiB3ZWJQYWdl
ID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKG5vdGlmaWNhdGlvbi0+cGFnZUlkZW50aWZpZXIo
KSkpIHsKLSAgICAgICAgICAgIGF1dG8gcGFnZUl0ID0gcGFnZU5vdGlmaWNhdGlvbklEcy5maW5k
KHdlYlBhZ2UpOwotICAgICAgICAgICAgaWYgKHBhZ2VJdCA9PSBwYWdlTm90aWZpY2F0aW9uSURz
LmVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPFVVSUQ+IG5ld1ZlY3RvcjsKLSAgICAg
ICAgICAgICAgICBuZXdWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKLSAgICAg
ICAgICAgICAgICBwYWdlSXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmFkZCh3ZWJQYWdlLCBXVEZN
b3ZlKG5ld1ZlY3RvcikpLml0ZXJhdG9yOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBw
YWdlSXQtPnZhbHVlLmFwcGVuZChub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpKTsK
LSAgICAgICAgfQotCiAgICAgICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZShub3Rp
ZmljYXRpb24tPm5vdGlmaWNhdGlvbklEKCkpOworICAgICAgICBjbG9zZWROb3RpZmljYXRpb25z
LmFwcGVuZChXVEZNb3ZlKG5vdGlmaWNhdGlvbikpOwogICAgIH0KIAotICAgIGZvciAoYXV0byBp
dCA9IHBhZ2VOb3RpZmljYXRpb25JRHMuYmVnaW4oKSwgZW5kID0gcGFnZU5vdGlmaWNhdGlvbklE
cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBpdC0+a2V5LT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xvc2VOb3RpZmljYXRpb25z
KGl0LT52YWx1ZSksIDApOworICAgIGZvciAoYXV0byYgbm90aWZpY2F0aW9uIDogY2xvc2VkTm90
aWZpY2F0aW9ucykgeworICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG5vdGlmaWNhdGlv
bi0+c291cmNlQ29ubmVjdGlvbigpKSB7CisgICAgICAgICAgICBMT0coTm90aWZpY2F0aW9ucywg
IlByb3ZpZGVyIGRpZCBjbG9zZSBub3RpZmljYXRpb24gKCVzKSIsIG5vdGlmaWNhdGlvbi0+Y29y
ZU5vdGlmaWNhdGlvbklEKCkudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAg
IFZlY3RvcjxVVUlEPiBub3RpZmljYXRpb25JRHMgPSB7IG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlm
aWNhdGlvbklEKCkgfTsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsb3NlTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25J
RHMpLCAwKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OnByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9saWN5KGNvbnN0IEFQSTo6
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgYm9vbCBhbGxvd2VkKQogeworICAgIExPRyhOb3RpZmlj
YXRpb25zLCAiUHJvdmlkZXIgZGlkIHVwZGF0ZSBub3RpZmljYXRpb24gcG9saWN5IGZvciBvcmln
aW4gJXMgdG8gJWkiLCBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCBhbGxvd2VkKTsKKworICAgIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9BbGxSZW1vdGVX
b3JrZXJQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFVwZGF0
ZU5vdGlmaWNhdGlvbkRlY2lzaW9uKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygp
LCBhbGxvd2VkKSk7CisKICAgICBpZiAoIXByb2Nlc3NQb29sKCkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMjgxLDcgKzI4MSwxMSBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyhBUEk6OkFycgogICAgIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBvcmlnaW5TdHJpbmdz
LmFwcGVuZChvcmlnaW5zLT5hdDxBUEk6OlNlY3VyaXR5T3JpZ2luPihpKS0+c2VjdXJpdHlPcmln
aW4oKS50b1N0cmluZygpKTsKLSAgICAKKworICAgIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9BbGxS
ZW1vdGVXb3JrZXJQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRp
ZFJlbW92ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhvcmlnaW5TdHJpbmdzKSk7CisKKyAgICBpZiAo
IXByb2Nlc3NQb29sKCkpCisgICAgICAgIHJldHVybjsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFJlbW92
ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhvcmlnaW5TdHJpbmdzKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCmluZGV4IGM2ZDM1ZDg2MjJiOC4uZTg3ZGIxMGY1MWFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKQEAgLTU3LDEwICs1Nywx
MiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CiAKKyAgICBzdGF0aWMgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5JiBzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpOworCiAgICAgdm9pZCBz
ZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4mJik7
CiAgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAK
LSAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGF0YSYpOworICAgIHZvaWQgc2hvdyhXZWJQYWdlUHJveHkqLCBJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJik7CiAgICAgdm9pZCBjYW5jZWwoV2ViUGFn
ZVByb3h5KiwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklEKTsKICAgICB2b2lkIGNsZWFy
Tm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqKTsKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9u
cyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8VVVJRD4mIHBhZ2VOb3RpZmljYXRpb25JRHMp
OwpAQCAtNzksOSArODEsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCopOwogCi0gICAgdHlwZWRlZiBi
b29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlELCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPFVVSUQ+JiBkZXNpcmVkUGFnZU5vdGlm
aWNhdGlvbklEcyk7Ci0gICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5Kiwg
Y29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0
ZXJGdW5jdGlvbik7Ci0KICAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudAogICAgIHZvaWQgcHJv
Y2Vzc1Bvb2xEZXN0cm95ZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlZldlYkNvbnRleHRTdXBw
bGVtZW50KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4
IDI2NWMxNTlkOWQ3OS4uODU4ZDc2NDYyZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyLmNwcApAQCAtNDIsMTIgKzQyLDEyIEBAIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpXZWJO
b3RpZmljYXRpb25Qcm92aWRlcihjb25zdCBXS05vdGlmaWNhdGlvblByb3ZpZGVyQmFzCiAgICAg
aW5pdGlhbGl6ZShwcm92aWRlcik7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6
OnNob3coV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikK
K3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNob3coV2ViUGFnZVByb3h5KiBwYWdlLCBX
ZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKIHsKICAgICBpZiAoIW1fY2xpZW50LnNob3cp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LnNob3codG9BUEkoJnBhZ2UpLCB0b0FQ
SSgmbm90aWZpY2F0aW9uKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVu
dC5zaG93KHRvQVBJKHBhZ2UpLCB0b0FQSSgmbm90aWZpY2F0aW9uKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6Y2FuY2VsKFdl
Yk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5o
CmluZGV4IDdiMmU5Y2UxYzVhNi4uYzFiMGE5ZDRlYWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Q
cm92aWRlci5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
IDogcHVibGljIEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXIsIHB1YmxpYyBBUEk6OkNsCiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIoY29uc3QgV0tOb3RpZmlj
YXRpb25Qcm92aWRlckJhc2UqKTsKIAotICAgIHZvaWQgc2hvdyhXZWJQYWdlUHJveHkmLCBXZWJO
b3RpZmljYXRpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5KiwgV2Vi
Tm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWwoV2ViTm90aWZpY2F0aW9u
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYk5vdGlmaWNh
dGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5ZTZlNTJhZmEwNDYuLjg2MGE0NTA2MjQzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04ODc0LDkgKzg4
NzQsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24o
Y29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbQogICAgIG1fdWlDbGllbnQtPmRlY2lkZVBv
bGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KCp0aGlzLCBvcmlnaW4uZ2V0KCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNo
b3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgbm90aWZpY2F0
aW9uRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzaG93Tm90aWZpY2F0aW9uKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgbm90aWZp
Y2F0aW9uRGF0YSkKIHsKLSAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPnNob3codGhpcywgbm90aWZpY2F0aW9uRGF0
YSk7CisgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5PigpLT5zaG93KHRoaXMsIGNvbm5lY3Rpb24sIG5vdGlmaWNhdGlvbkRh
dGEpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVV
SUQmIG5vdGlmaWNhdGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCA1YmNhODI2NWI2NzIuLjQwMGY5NDA0OWRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTIwNTQsNyArMjA1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
UXVhcmFudGluZWRBbmROb3RVc2VyQXBwcm92ZWQoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAot
ICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRh
Jik7CisgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKTsKICAgICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihj
b25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CiAgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMo
Y29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpOwogICAgIHZvaWQgZGlkRGVzdHJv
eU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNmQ4ODI4ZjJlNGQxLi5mNjBkM2Vj
ZDJjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTU4OCw3ICs1ODgsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZwogCiAgICAgcmVtb3RlV29y
a2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsKIAotICAgIHNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KHBy
b2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fcmVt
b3RlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdl
R3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1
dG8gcHJlZmVyZW5jZXNTdG9yZSA9IHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclByZWZlcmVu
Y2VzID8gcHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHBy
b2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKTsKKyAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4
dChwcmVmZXJlbmNlc1N0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgaWYgKCFwcm9jZXNz
UG9vbC0+bV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkpCiAgICAgICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHktPnNldFJlbW90ZVdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+
bV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKaW5kZXggZTI1M2E1ZTczYTQ4Li4zYWEyZGE4MmQ2ZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjAzLDYgKzIwMyw4IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRUb0FsbFByb2Nlc3Nlcyhjb25z
dCBUJiBtZXNzYWdlKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRUb0FsbFBy
b2Nlc3Nlc0ZvclNlc3Npb24oY29uc3QgVCYgbWVzc2FnZSwgUEFMOjpTZXNzaW9uSUQpOwogCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgc2VuZFRvQWxsUmVtb3RlV29ya2Vy
UHJvY2Vzc2VzKGNvbnN0IFQmIG1lc3NhZ2UpOworCiAgICAgdm9pZCBwcm9jZXNzRGlkRmluaXNo
TGF1bmNoaW5nKFdlYlByb2Nlc3NQcm94eSYpOwogCiAgICAgV2ViUHJvY2Vzc0NhY2hlJiB3ZWJQ
cm9jZXNzQ2FjaGUoKSB7IHJldHVybiBtX3dlYlByb2Nlc3NDYWNoZS5nZXQoKTsgfQpAQCAtODMy
LDQgKzgzNCwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9BbGxQcm9jZXNzZXNGb3JT
ZXNzaW9uKGNvbnN0IFQmIG1lc3NhZ2UsIFBBTDo6U2Vzc2lvbgogICAgIH0KIH0KIAordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFJlbW90ZVdvcmtl
clByb2Nlc3Nlcyhjb25zdCBUJiBtZXNzYWdlKQoreworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6
IHJlbW90ZVdvcmtlclByb2Nlc3NlcygpKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmNhblNlbmRN
ZXNzYWdlKCkpCisgICAgICAgICAgICBwcm9jZXNzLnNlbmQoVChtZXNzYWdlKSwgMCk7CisgICAg
fQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDJjMGE4MDMwMDMxNC4uZTFiZGQ1Y2E1N2E3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb25IYW5kbGVyLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZU1hbmFnZXIuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaCIKQEAgLTIwMDMsNiArMjAwNCw3
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlUmVtb3RlV29ya2VycyhPcHRpb25TZXQ8
UmVtb3RlV29ya2VyVHlwZT4gd29ya2VyVHlwCiAKICAgICBib29sIGRpZENoYW5nZSA9IGZhbHNl
OwogICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VX
b3JrZXIpICYmIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKSB7CisgICAgICAgIHJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVy
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5yZW1v
dGVXb3JrZXJQYWdlSUQpOwogICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsg
fTsKICAgICAgICAgZGlkQ2hhbmdlID0gdHJ1ZTsKICAgICB9CkBAIC0yMDY0LDYgKzIwNjYsMTAg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2Vy
VHlwZSB3b3JrZXJUeXBlLCBjb25zdCBVc2UKICAgICAgICAgbnVsbHB0ciwKICAgICAgICAgeyB9
CiAgICAgfTsKKworICAgIGlmICh3b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZp
Y2VXb3JrZXIpCisgICAgICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Tm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uLT5yZW1vdGVXb3JrZXJQYWdlSUQsIFNlcnZpY2VXb3JrZXJOb3Rp
ZmljYXRpb25IYW5kbGVyOjpzaW5nbGV0b24oKSk7CisKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVz
cG9uc2l2ZW5lc3NUaW1lcigpOwogCiAgICAgdXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbih3b3JrZXJUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMTMyOTA1NTcyZjRiLi44YTJl
YWRhOTc5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAi
V2ViQmFja0ZvcndhcmRDYWNoZS5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5o
IgogI2luY2x1ZGUgIldlYktpdDJJbml0aWFsaXplLmgiCisjaW5jbHVkZSAiV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc0NhY2hlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCkBAIC0y
MDU0LDQgKzIwNTUsMjUgQEAgYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpzaG91bGRNYWtlTmV4dE5l
dHdvcmtQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcoKQogICAgIHJldHVybiBzdGQ6OmV4Y2hh
bmdlKG5leHROZXR3b3JrUHJvY2Vzc0xhdW5jaFNob3VsZEZhaWxGb3JUZXN0aW5nLCBmYWxzZSk7
CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2hvd1NlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRp
b25EYXRhJiBub3RpZmljYXRpb25EYXRhKQoreworICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6c2hhcmVkU2VydmljZVdvcmtlck1hbmFnZXIoKS5zaG93KG51bGxwdHIsIGNvbm5lY3Rp
b24sIG5vdGlmaWNhdGlvbkRhdGEpOworfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmNhbmNl
bFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit7
CisgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFu
YWdlcigpLmNhbmNlbChudWxscHRyLCBub3RpZmljYXRpb25JRCk7Cit9CisKK3ZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6Y2xlYXJTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5v
dGlmaWNhdGlvbklEKQoreworICAgIFZlY3RvcjxVVUlEPiBub3RpZmljYXRpb25zID0geyBub3Rp
ZmljYXRpb25JRCB9OworICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hhcmVkU2Vy
dmljZVdvcmtlck1hbmFnZXIoKS5jbGVhck5vdGlmaWNhdGlvbnMobnVsbHB0ciwgbm90aWZpY2F0
aW9ucyk7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGlkRGVzdHJveVNlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit7CisgICAgV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpLmRpZERl
c3Ryb3lOb3RpZmljYXRpb24obnVsbHB0ciwgbm90aWZpY2F0aW9uSUQpOworfQorCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgKaW5kZXggODVlZTMxZTEzODNkLi40NmFmMGVmNTllYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAg
LTc4LDYgKzc4LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBMb2NhbFdlYkxvY2tS
ZWdpc3RyeTsKIAogc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247Citz
dHJ1Y3QgTm90aWZpY2F0aW9uRGF0YTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zNzAs
NiArMzcxLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY291bnROb25EZWZhdWx0U2Vzc2lvblNl
dHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3QpPiYmKTsKIAorICAgIHZvaWQgc2hvd1Nl
cnZpY2VXb3JrZXJOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6
Tm90aWZpY2F0aW9uRGF0YSYpOworICAgIHZvaWQgY2FuY2VsU2VydmljZVdvcmtlck5vdGlmaWNh
dGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBjbGVhclNlcnZpY2VX
b3JrZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQg
ZGlkRGVzdHJveVNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0
aW9uSUQpOworCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRm9yY2VSZWluaXRpYWxpemF0aW9u
IDogYm9vbCB7IE5vLCBZZXMgfTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmN2Jl
ZTU0M2NlMGYuLmMxNWUxYjFkZGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05OTYsNiArOTk2LDcgQEAKIAkJNTE1QkUxQjUxRDU5
MTdGRjAwREQ3QzY4IC8qIFVJR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxQUQxRDU1NUM1MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5o
ICovOyB9OwogCQk1MTYzMTk5NDE2Mjg5QTYwMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nlc3NNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFBQ0M5MzQxNjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKIAkJNTE2MzE5OTUxNjI4OUE2MzAwRTIyRjAwIC8qIE5ldHdvcmtQ
cm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUNDOTM1MTYyODA2NDgwMDM0MjU1MCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2Vz
LmggKi87IH07CisJCTUxNjQ2NTgwMjdBOUM3NzQwMEUxRjJCQSAvKiBTZXJ2aWNlV29ya2VyTm90
aWZpY2F0aW9uSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE2NDY1N0YyN0E5Qzc2NzAwRTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb25IYW5kbGVyLmggKi87IH07CiAJCTUxNkE0QTVEMTIwQTJDQ0QwMEMwNUI3RiAvKiBBUElF
cnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2
QTRBNUIxMjBBMkNDRDAwQzA1QjdGIC8qIEFQSUVycm9yLmggKi87IH07CiAJCTUxNzk1NTZBMTYy
ODc2RjMwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQ0M3RTAxNjEzOEUyOTAwRDAzRUQzIC8qIE5ldHdv
cmtQcm9jZXNzLmggKi87IH07CiAJCTUxNzk1NTZFMTYyODc3QjMwMEZBNDNCNiAvKiBOZXR3b3Jr
UHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTBDQzdFQjE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5oICov
OyB9OwpAQCAtNDQ4MSw2ICs0NDgyLDggQEAKIAkJNTE2MEU5NTgyNzRDMEQ4ODAwNTY3Mzg4IC8q
IFB1c2hBcHBCdW5kbGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBQdXNoQXBwQnVuZGxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTYwRTk1
QzI3NEMyQTAzMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTYwRTk1RjI3NEMyQTNGMDA1NjczODggLyogTW9ja0FwcEJ1
bmRsZVJlZ2lzdHJ5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MTY0NjU3RTI3QTlDNzY1MDBFMUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTY0NjU3RjI3QTlDNzY3MDBF
MUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE2NEMwOTQxQjA1Qjc1NzAwNEYxMDJBIC8qIEF1eGlsaWFyeVByb2Nlc3Mu
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXV4aWxpYXJ5UHJvY2Vzcy5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2QTRBNUIxMjBBMkNDRDAw
QzA1QjdGIC8qIEFQSUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQ
SUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0EzM0IzMTMwQjMwOEMw
MEY4MENCNSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODY3NSw2ICs4Njc4LDggQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMzFBMkVDNTMxNDg5OTgyNTAwODEwRDcxIC8q
IE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi8sCisJCQkJNTE2NDY1N0UyN0E5Qzc2
NTAwRTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmNwcCAqLywKKwkJ
CQk1MTY0NjU3RjI3QTlDNzY3MDBFMUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhh
bmRsZXIuaCAqLywKIAkJCQkzMUEyRUM0MTE0ODk5N0JFMDA4MTBENzEgLyogV2ViTm90aWZpY2F0
aW9uLmNwcCAqLywKIAkJCQkzMUEyRUM0MjE0ODk5N0JFMDA4MTBENzEgLyogV2ViTm90aWZpY2F0
aW9uLmggKi8sCiAJCQkJNTE0NTI3MDYyNzFGQkVDMTAwMDQ2N0I2IC8qIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8sCkBAIC0xMzkxOSw2ICsxMzkyNCw3IEBACiAJ
CQkJQkM0QTYyOTcxNDczMTNBMDAwNkM2ODFBIC8qIFdLQ29ubmVjdGlvblJlZi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTU5NkRENkEyNTFFNzFENDAwQzI3NUE3IC8qIFdLQ29udGFjdFBpY2tlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg2NTQxRTcyMzVCMTAwOTRGREM4IC8qIFdLQ29udGVu
dFJ1bGVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTY0NjU4MDI3QTlDNzc0MDBFMUYyQkEg
LyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDRDI4NjU1MUU3MjM1QjgwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdEludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1QzUxMzlEQjI1OTI3RDgwMDA5QzNFMzAgLyogV0tDb250ZW50
UnVsZUxpc3RQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODY1MTFFNzIzNTk5MDA5
NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3RTdG9yZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDljMWMxMmQ4ODU1NC4uZTk1YjdjYWU4NmJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMzQsNiArMzQsNyBAQAog
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlck1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCIKICNp
bmNsdWRlICJXZWJOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgpAQCAtNDIs
NiArNDMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGF0YS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1dDb250ZXh0TWFuYWdlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CkBAIC0xMjEsMjUg
KzEyMyw0MiBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnJlbW92ZUFsbFBlcm1pc3Np
b25zRm9yVGVzdGluZygpCiB9CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLXRlbXBsYXRl
PHR5cGVuYW1lIFU+IGJvb2wgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UoV2ViUHJvY2VzcyYgcHJv
Y2VzcywgVSYmIG1lc3NhZ2UsIFdlYlBhZ2UmIHBhZ2UpCit0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBi
b29sIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnNlbmROb3RpZmljYXRpb25NZXNzYWdlKFUmJiBt
ZXNzYWdlLCBOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKIHsKKyAg
ICBpZiAoIXBhZ2UgJiYgIW5vdGlmaWNhdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKwogI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05T
KQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmJ1aWx0
SW5Ob3RpZmljYXRpb25zRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gcHJvY2Vzcy5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3Nh
Z2UpLCBwYWdlLnNlc3Npb25JRCgpLnRvVUludDY0KCkpOworICAgICAgICByZXR1cm4gbV9wcm9j
ZXNzLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKFdU
Rk1vdmUobWVzc2FnZSksIG5vdGlmaWNhdGlvbi5kYXRhKCkuc291cmNlU2Vzc2lvbi50b1VJbnQ2
NCgpKTsKICNlbmRpZgotICAgIHJldHVybiBwcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgcGFnZS5pZGVudGlmaWVyKCkpOworCisgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlkZW50aWZpZXI7CisgICAg
aWYgKHBhZ2UpCisgICAgICAgIHBhZ2VJZGVudGlmaWVyID0gcGFnZS0+aWRlbnRpZmllcigpOwor
ICAgIGVsc2UgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5jb25uZWN0aW9uKCkpIHsKKyAgICAgICAgLy8gUGFnZWxlc3Mgbm90aWZpY2F0aW9uIG1l
c3NhZ2VzIGFyZSwgYnkgZGVmYXVsdCwgb24gYmVoYWxmIG9mIGEgc2VydmljZSB3b3JrZXIuCisg
ICAgICAgIC8vIFNvIHVzZSB0aGUgc2VydmljZSB3b3JrZXIgY29ubmVjdGlvbidzIHBhZ2UgaWRl
bnRpZmllci4KKyAgICAgICAgcGFnZUlkZW50aWZpZXIgPSBjb25uZWN0aW9uLT5wYWdlSWRlbnRp
ZmllcigpOworICAgIH0KKworICAgIEFTU0VSVChwYWdlSWRlbnRpZmllcik7CisKKyAgICByZXR1
cm4gbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoV1RGTW92ZShtZXNz
YWdlKSwgKnBhZ2VJZGVudGlmaWVyKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKIAogYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlvbiYgbm90
aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogeworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkp
OwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIGlmICghcGFnZS0+Y29yZVBhZ2UoKS0+
c2V0dGluZ3MoKS5ub3RpZmljYXRpb25zRW5hYmxlZCgpKQorICAgIGlmIChwYWdlICYmICFwYWdl
LT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLm5vdGlmaWNhdGlvbnNFbmFibGVkKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIG1fbm90aWZpY2F0aW9uSURNYXAuc2V0KG5vdGlmaWNhdGlv
bi5pZGVudGlmaWVyKCksICZub3RpZmljYXRpb24pOworICAgIGlmICghc2VuZE5vdGlmaWNhdGlv
bk1lc3NhZ2UoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6U2hv
d05vdGlmaWNhdGlvbihub3RpZmljYXRpb24uZGF0YSgpKSwgbm90aWZpY2F0aW9uLCBwYWdlKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UobV9w
cm9jZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpTaG93
Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5kYXRhKCkpLCAqcGFnZSk7CisgICAgbV9ub3RpZmlj
YXRpb25JRE1hcC5hZGQobm90aWZpY2F0aW9uLmlkZW50aWZpZXIoKSwgJm5vdGlmaWNhdGlvbik7
CiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24p
OwpAQCAtMTUwLDE2ICsxNjksMTYgQEAgYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93
KE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogCiB2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2Vi
UGFnZSogcGFnZSkKIHsKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBpZiAoIXBhZ2Ut
PmNvcmVQYWdlKCktPnNldHRpbmdzKCkubm90aWZpY2F0aW9uc0VuYWJsZWQoKSkKLSAgICAgICAg
cmV0dXJuOworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogCisjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCiAgICAgYXV0byBtYXBwZWROb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklE
TWFwLmdldChub3RpZmljYXRpb24uaWRlbnRpZmllcigpKTsKICAgICBpZiAoIW1hcHBlZE5vdGlm
aWNhdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChtYXBwZWROb3RpZmljYXRpb24g
PT0gJm5vdGlmaWNhdGlvbik7CiAKLSAgICBzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShtX3Byb2Nl
c3MsIE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OkNhbmNlbE5v
dGlmaWNhdGlvbihub3RpZmljYXRpb24uaWRlbnRpZmllcigpKSwgKnBhZ2UpOworICAgIGlmICgh
c2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlcjo6Q2FuY2VsTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkp
LCBub3RpZmljYXRpb24sIHBhZ2UpKQorICAgICAgICByZXR1cm47CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShub3RpZmljYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKQEAgLTE2OCw2
ICsxODcsOCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbChOb3RpZmljYXRp
b24mIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKIAogdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9u
LCBXZWJQYWdlKiBwYWdlKQogeworICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOworCiAjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgUmVmIHByb3RlY3RlZE5vdGlmaWNhdGlvbiB7IG5v
dGlmaWNhdGlvbiB9OwogCkBAIC0xNzYsNyArMTk3LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9u
LAogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKHRha2VuTm90aWZpY2F0aW9uID09ICZub3Rp
ZmljYXRpb24pOwogCi0gICAgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UobV9wcm9jZXNzLCBNZXNz
YWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpEaWREZXN0cm95Tm90aWZp
Y2F0aW9uKG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpLCAqcGFnZSk7CisgICAgc2VuZE5vdGlm
aWNhdGlvbk1lc3NhZ2UoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
cjo6RGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24uaWRlbnRpZmllcigpKSwgbm90
aWZpY2F0aW9uLCBwYWdlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7
CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwpAQCAtMTg1LDYgKzIwNiw4IEBAIHZvaWQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24mIG5v
dGlmaWNhdGlvbiwKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZp
Y2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQogeworICAgIEFTU0VSVChpc01haW5S
dW5Mb29wKCkpOworCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgUmVmUHRyPE5vdGlm
aWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0
aW9uSUQpOwogICAgIGlmICghbm90aWZpY2F0aW9uKQpAQCAtMTk4LDYgKzIyMSw4IEBAIHZvaWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBu
b3RpZmljYXRpb25JRCkKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbGlja05v
dGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKIHsKKyAgICBBU1NFUlQoaXNN
YWluUnVuTG9vcCgpKTsKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIFJlZlB0cjxO
b3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAuZ2V0KG5vdGlm
aWNhdGlvbklEKTsKICAgICBpZiAoIW5vdGlmaWNhdGlvbikKQEAgLTIxMyw2ICsyMzgsOCBAQCB2
b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFVV
SUQmIG5vdGlmaWNhdGlvbklEKQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENs
b3NlTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykKIHsK
KyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQogICAgIHNpemVfdCBjb3VudCA9IG5vdGlmaWNhdGlvbklEcy5zaXplKCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
LmgKaW5kZXggZTYzNTFmZGY5NjE2Li40OWVhNzE4NDU1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyLmgKQEAgLTgxLDYgKzgxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENsb3Nl
Tm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcyk7CiAgICAg
dm9pZCBkaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IG9yaWdpblN0cmluZ3MpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kTm90
aWZpY2F0aW9uTWVzc2FnZShVJiYgbWVzc2FnZSwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uJiwgV2Vi
UGFnZSopOworCiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwogCiAjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBjMWVkZDlmMGEy
ZWMuLjFlMzE0MGY2ODJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC02
Niw2ICs2Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKKyAgICBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGFnZUlEOyB9
CisKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcAppbmRl
eCBjMjRlZDM3ZDc2ZWYuLjY3MTExYTg0YTY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5jcHAKQEAgLTQwLDM0ICs0MCw1MyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdl
Yk5vdGlmaWNhdGlvbkNsaWVudDo6V2ViTm90aWZpY2F0aW9uQ2xpZW50KFdlYlBhZ2UqIHBhZ2Up
CiAgICAgOiBtX3BhZ2UocGFnZSkKIHsKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKIH0K
IAogV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojp+V2ViTm90aWZpY2F0aW9uQ2xpZW50KCkKIHsKKyAg
ICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKIH0KIAogYm9vbCBXZWJOb3RpZmljYXRpb25DbGll
bnQ6OnNob3coTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCiB7Ci0gICAgcmV0dXJuIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+
c2hvdyhub3RpZmljYXRpb24sIG1fcGFnZSk7CisgICAgYm9vbCByZXN1bHQ7CisgICAgY2FsbE9u
TWFpblJ1bkxvb3BBbmRXYWl0KFsmcmVzdWx0LCBwcm90ZWN0ZWROb3RpZmljYXRpb24gPSBSZWYg
eyBub3RpZmljYXRpb24gfSwgcGFnZSA9IG1fcGFnZV0oKSB7CisgICAgICAgIHJlc3VsdCA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4o
KS0+c2hvdyhwcm90ZWN0ZWROb3RpZmljYXRpb24uZ2V0KCksIHBhZ2UpOworICAgIH0pOworICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjYW5jZWwo
Tm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5jYW5jZWwobm90aWZpY2F0
aW9uLCBtX3BhZ2UpOworICAgIGNhbGxPbk1haW5SdW5Mb29wQW5kV2FpdChbcHJvdGVjdGVkTm90
aWZpY2F0aW9uID0gUmVmIHsgbm90aWZpY2F0aW9uIH0sIHBhZ2UgPSBtX3BhZ2VdKCkgeworICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXI+KCktPmNhbmNlbChwcm90ZWN0ZWROb3RpZmljYXRpb24uZ2V0KCksIHBhZ2UpOworICAg
IH0pOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uT2JqZWN0
RGVzdHJveWVkKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQogewotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+ZGlkRGVz
dHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIG1fcGFnZSk7CisgICAgLy8gTWFrZSBzdXJl
IHRoaXMgTm90aWZpY2F0aW9uIG9iamVjdCBpcyBkZWFsbG9jYXRlZCBvbiB0aGlzIHRocmVhZCBi
eSBob2xkaW5nIG9uZSBsYXN0IHJlZigpIHRvIGl0IGhlcmUKKyAgICBhdXRvIGxhc3ROb3RpZmlj
YXRpb25SZWYgPSBSZWYgeyBub3RpZmljYXRpb24gfTsKKworICAgIGNhbGxPbk1haW5SdW5Mb29w
QW5kV2FpdChbJm5vdGlmaWNhdGlvbiwgcGFnZSA9IG1fcGFnZV0oKSB7CisgICAgICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+
ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIHBhZ2UpOworICAgIH0pOwogfQog
CiB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ry
b3llZCgpCiB7Ci0gICAgZGVsZXRlIHRoaXM7CisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXNd
IHsKKyAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0
aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBQZXJtaXNzaW9uSGFuZGxlciYmIHBlcm1pc3Npb25IYW5kbGVyKQogeworICAgIC8vIE9u
bHkgV2luZG93IGNsaWVudHMgY2FuIHJlcXVlc3QgcGVybWlzc2lvbgorICAgIEFTU0VSVChpc01h
aW5SdW5Mb29wKCkpOworICAgIEFTU0VSVChtX3BhZ2UpOworCiAgICAgYXV0byogc2VjdXJpdHlP
cmlnaW4gPSBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgaWYgKCFzZWN1cml0eU9yaWdp
bikKICAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25IYW5kbGVyKE5vdGlmaWNhdGlvbkNsaWVudDo6
UGVybWlzc2lvbjo6RGVuaWVkKTsKQEAgLTc2LDkgKzk1LDIwIEBAIHZvaWQgV2ViTm90aWZpY2F0
aW9uQ2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBQCiAKIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBXZWJOb3RpZmljYXRpb25D
bGllbnQ6OmNoZWNrUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ewotICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+aXNEb2N1bWVudCgpIHx8ICFjb250ZXh0
LT5zZWN1cml0eU9yaWdpbigpKQorICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIE5v
dGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbjo6RGVuaWVkOworICAgIGlmICghY29udGV4dC0+
aXNEb2N1bWVudCgpICYmICFjb250ZXh0LT5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKQog
ICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uOjpEZW5pZWQ7Ci0g
ICAgcmV0dXJuIG1fcGFnZS0+bm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkt
PnBlcm1pc3Npb25MZXZlbChjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCkpOworCisg
ICAgYXV0byogb3JpZ2luID0gY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBpZiAoIW9y
aWdpbikKKyAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbjo6RGVu
aWVkOworCisgICAgTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIHJlc3VsdFBlcm1pc3Np
b247CisgICAgY2FsbE9uTWFpblJ1bkxvb3BBbmRXYWl0KFsmcmVzdWx0UGVybWlzc2lvbiwgb3Jp
Z2luID0gb3JpZ2luLT5kYXRhKCkudG9TdHJpbmcoKS5pc29sYXRlZENvcHkoKV0geworICAgICAg
ICByZXN1bHRQZXJtaXNzaW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5wb2xpY3lGb3JPcmlnaW4ob3JpZ2luKTsKKyAgICB9
KTsKKyAgICByZXR1cm4gcmVzdWx0UGVybWlzc2lvbjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKaW5kZXggZGNkMjA4OTQ2MmYxLi4xYmVk
OTE4NzA3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKQEAgLTUyLDcgKzUyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBQZXJtaXNzaW9uSGFuZGxlciYmKSBvdmVycmlkZTsKICAgICBXZWJD
b3JlOjpOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBvdmVycmlkZTsKICAgICAKLSAgICBXZWJQYWdl
KiBtX3BhZ2U7CisgICAgV2ViUGFnZSogbV9wYWdlIHsgbnVsbHB0ciB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggYTMyMTZhN2I3YjAwLi5mOGQzMGIwYTVlYTggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAyMi0w
Mi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uc2hvd05vdGlmaWNhdGlvbigpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMgorCisgICAgICAg
IFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIFRvIHJlbGlhYmx5IHN1cHBvcnQg
dGVzdGluZyBTZXJ2aWNlV29ya2VyIG5vdGlmaWNhdGlvbnMsIFRlc3RSdW5uZXIgbmVlZGVkIHRv
IGFjdHVhbGx5IGdyYW50L2RlbnkgcGVybWlzc2lvbnMgaW4gdGhlIFVJIHByb2Nlc3MKKyAgICAg
ICAgbGlrZSBhIHByb3BlciBOb3RpZmljYXRpb25Qcm92aWRlciB3b3VsZC4KKyAgICAgICAgCisg
ICAgICAgIEl0IGFsc28gaGFzIHRvIHVuZGVyc3RhbmQgc2hvd2luZyBhIG5vdGlmaWNhdGlvbiB3
aXRob3V0IGFuIGFzc29jaWF0ZWQgV0tQYWdlLgorICAgICAgICAKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAg
ICAKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnBvc3RTaW11bGF0ZVdlYk5v
dGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAg
ICAgCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Z3JhbnRXZWJOb3RpZmljYXRpb25QZXJt
aXNzaW9uKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGVueVdlYk5vdGlmaWNhdGlvblBl
cm1pc3Npb24pOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzaW11bGF0ZVdlYk5vdGlmaWNh
dGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6Z3JhbnROb3RpZmljYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OmRlbnlOb3RpZmljYXRpb25QZXJtaXNzaW9uKToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JT
ZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oOgorICAgICAgICAKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2Vp
dmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAg
ICAgICAKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVy
LmNwcDoKKyAgICAgICAgKFdUUjo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OldlYk5vdGlmaWNh
dGlvblByb3ZpZGVyKToKKyAgICAgICAgKFdUUjo6bm90aWZpY2F0aW9uTWFuYWdlckZvclBhZ2Up
OgorICAgICAgICAoV1RSOjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2hvd1dlYk5vdGlmaWNh
dGlvbik6CisgICAgICAgIChXVFI6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjphZGROb3RpZmlj
YXRpb25NYW5hZ2VyKToKKyAgICAgICAgKFdUUjo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6Om5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFdUUjo6V2ViTm90aWZpY2F0aW9uUHJv
dmlkZXI6OnNldFBlcm1pc3Npb24pOgorICAgICAgICAoV1RSOjpXZWJOb3RpZmljYXRpb25Qcm92
aWRlcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb25zKToKKyAgICAgICAgKFdUUjo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlc2V0KToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmg6CisK
IDIwMjItMDItMDggIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAg
ICAgIGdpdC13ZWJraXQgc2V0dXAgc2hvdWxkIGFsbG93IGNoYW5naW5nIHRoZSBjcmVkZW50aWFs
cwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggOGRlNjgxYjIyMjQxLi5kZDM5NzYzYWM1
MTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMjA4LDYgKzIwOCw3IEBAIGludGVy
ZmFjZSBUZXN0UnVubmVyIHsKICAgICB1bmRlZmluZWQgZGVueVdlYk5vdGlmaWNhdGlvblBlcm1p
c3Npb24oRE9NU3RyaW5nIG9yaWdpbik7CiAgICAgdW5kZWZpbmVkIHJlbW92ZUFsbFdlYk5vdGlm
aWNhdGlvblBlcm1pc3Npb25zKCk7CiAgICAgdW5kZWZpbmVkIHNpbXVsYXRlV2ViTm90aWZpY2F0
aW9uQ2xpY2sob2JqZWN0IG5vdGlmaWNhdGlvbik7CisgICAgdW5kZWZpbmVkIHNpbXVsYXRlV2Vi
Tm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpOwogCiAgICAg
Ly8gR2VvbG9jYXRpb24KICAgICB1bmRlZmluZWQgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJv
b2xlYW4gdmFsdWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAzM2U3MGFmMzJhNmQuLjBkMGQxZmZi
NjAwMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTY2OCw2ICs2NjgsMTEgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6cG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tEYXRhUmVmIG5vdGlm
aWNhdGlvbklEKQogICAgIHBvc3RQYWdlTWVzc2FnZSgiU2ltdWxhdGVXZWJOb3RpZmljYXRpb25D
bGljayIsIG5vdGlmaWNhdGlvbklEKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNp
bXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygp
Cit7CisgICAgcG9zdFBhZ2VNZXNzYWdlKCJTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9y
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMiKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZTo6
cG9zdFNldEFkZHNWaXNpdGVkTGlua3MoYm9vbCBhZGRzVmlzaXRlZExpbmtzKQogewogICAgIHBv
c3RQYWdlTWVzc2FnZSgiU2V0QWRkc1Zpc2l0ZWRMaW5rcyIsIGFkb3B0V0soV0tCb29sZWFuQ3Jl
YXRlKGFkZHNWaXNpdGVkTGlua3MpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggYmMxNDc1Y2FmN2ZhLi4w
YTg1OTk1ODBmYWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTk1LDYgKzk1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcG9zdFNldFdpbmRvd0lzS2V5KGJvb2wpOwogICAgIHZvaWQgcG9zdFNldFZpZXdTaXpl
KGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCk7CiAgICAgdm9pZCBwb3N0U2ltdWxhdGVXZWJO
b3RpZmljYXRpb25DbGljayhXS0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgcG9z
dFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
cygpOwogICAgIHZvaWQgcG9zdFNldEFkZHNWaXNpdGVkTGlua3MoYm9vbCk7CiAKICAgICAvLyBH
ZW9sb2NhdGlvbi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDc4MWI4MTY5MWFmYy4uMjRhOWE4NWQwN2JhIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHAKQEAgLTg2NywxMSArODY3LDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogdm9pZCBUZXN0UnVubmVyOjpn
cmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYgb3JpZ2luKQogewogICAg
IFdLQnVuZGxlU2V0V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihJbmplY3RlZEJ1bmRsZTo6c2lu
Z2xldG9uKCkuYnVuZGxlKCksIHBhZ2UoKSwgdG9XSyhvcmlnaW4pLmdldCgpLCB0cnVlKTsKKyAg
ICBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZVJldHVybmluZ0Jvb2xlYW4oIkdyYW50Tm90aWZp
Y2F0aW9uUGVybWlzc2lvbiIsIG9yaWdpbik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6ZGVueVdl
Yk5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYgb3JpZ2luKQogewogICAgIFdLQnVu
ZGxlU2V0V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9u
KCkuYnVuZGxlKCksIHBhZ2UoKSwgdG9XSyhvcmlnaW4pLmdldCgpLCBmYWxzZSk7CisgICAgcG9z
dFN5bmNocm9ub3VzUGFnZU1lc3NhZ2VSZXR1cm5pbmdCb29sZWFuKCJEZW55Tm90aWZpY2F0aW9u
UGVybWlzc2lvbiIsIG9yaWdpbik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsV2Vi
Tm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQpAQCAtODg3LDYgKzg4OSwxMSBAQCB2b2lkIFRlc3RS
dW5uZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soSlNWYWx1ZVJlZiBub3RpZmljYXRp
b24pCiAgICAgaW5qZWN0ZWRCdW5kbGUucG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2so
bm90aWZpY2F0aW9uSUQuZ2V0KCkpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNpbXVsYXRlV2Vi
Tm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpCit7CisgICAg
SW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNs
aWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKK30KKwogdm9pZCBUZXN0UnVubmVy
OjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBlbmFibGVkKQogewogICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSBkb25lIGJ5IGZyYW1lLgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAyYjc4YzFkYTk2YjEuLjkw
ZjVlZTQ4MWY0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmgKQEAgLTI5NCw2ICsyOTQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgZGVueVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYgb3JpZ2luKTsK
ICAgICBzdGF0aWMgdm9pZCByZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwog
ICAgIHN0YXRpYyB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soSlNWYWx1ZVJlZiBu
b3RpZmljYXRpb24pOworICAgIHN0YXRpYyB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xp
Y2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpOwogCiAgICAgLy8gR2VvbG9jYXRpb24u
CiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDRkNmU5MDlhYmQyYS4uNTAwYzcxZDVh
NGExIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNjk2
LDYgKzY5Niw3IEBAIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250
cm9sbGVyOjpnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvCiAgICAgV0tOb3RpZmljYXRpb25N
YW5hZ2VyUmVmIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBXS0NvbnRleHRHZXROb3RpZmljYXRpb25N
YW5hZ2VyKG1fY29udGV4dC5nZXQoKSk7CiAgICAgV0tOb3RpZmljYXRpb25Qcm92aWRlclYwIG5v
dGlmaWNhdGlvbktpdCA9IG1fd2ViTm90aWZpY2F0aW9uUHJvdmlkZXIucHJvdmlkZXIoKTsKICAg
ICBXS05vdGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihub3RpZmljYXRpb25NYW5hZ2VyLCAm
bm90aWZpY2F0aW9uS2l0LmJhc2UpOworICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3Zp
ZGVyKFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b25NYW5hZ2VyKCksICZub3RpZmljYXRpb25LaXQuYmFzZSk7CiAKICAgICBpZiAodGVzdFBsdWdp
bkRpcmVjdG9yeSgpKQogICAgICAgICBXS0NvbnRleHRTZXRBZGRpdGlvbmFsUGx1Z2luc0RpcmVj
dG9yeShtX2NvbnRleHQuZ2V0KCksIHRlc3RQbHVnaW5EaXJlY3RvcnkoKSk7CkBAIC03MTcsNiAr
NzE4LDI0IEBAIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9s
bGVyOjpnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvCiAgICAgcmV0dXJuIHBhZ2VDb25maWd1
cmF0aW9uOwogfQogCitib29sIFRlc3RDb250cm9sbGVyOjpncmFudE5vdGlmaWNhdGlvblBlcm1p
c3Npb24oV0tTdHJpbmdSZWYgb3JpZ2luU3RyaW5nKQoreworICAgIG1fd2ViTm90aWZpY2F0aW9u
UHJvdmlkZXIuc2V0UGVybWlzc2lvbih0b1dURlN0cmluZyhvcmlnaW5TdHJpbmcpLCB0cnVlKTsK
KworICAgIGF1dG8gb3JpZ2luID0gYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbVN0
cmluZyhvcmlnaW5TdHJpbmcpKTsKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRp
ZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRT
ZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpLCBvcmlnaW4uZ2V0KCksIHRydWUpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFRlc3RDb250cm9sbGVyOjpkZW55Tm90aWZpY2F0
aW9uUGVybWlzc2lvbihXS1N0cmluZ1JlZiBvcmlnaW5TdHJpbmcpCit7CisgICAgbV93ZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5zZXRQZXJtaXNzaW9uKHRvV1RGU3RyaW5nKG9yaWdpblN0cmluZyks
IGZhbHNlKTsKKworICAgIGF1dG8gb3JpZ2luID0gYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ3Jl
YXRlRnJvbVN0cmluZyhvcmlnaW5TdHJpbmcpKTsKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQ
cm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFnZXJH
ZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpLCBvcmlnaW4uZ2V0KCks
IGZhbHNlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3Jl
YXRlV2ViVmlld1dpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAg
IGF1dG8gYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gb3B0aW9ucy5hcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIoKTsKQEAgLTIzNTksNiArMjM3OCwxMSBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLRGF0YVJlZiBub3RpZmljYXRpb25J
RCkKICAgICBtX3dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9u
Q2xpY2sobWFpbldlYlZpZXcoKS0+cGFnZSgpLCBub3RpZmljYXRpb25JRCk7CiB9CiAKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9ucygpCit7CisgICAgbV93ZWJOb3RpZmljYXRpb25Qcm92aWRlci5zaW11
bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsK
K30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wg
ZW5hYmxlZCkKIHsKICAgICBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0ID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBiNTJhZjY2NTU1MmIuLmUy
NGFjMzIwMzRhZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAt
MTI3LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJlZm9yZVVubG9hZFJldHVyblZh
bHVlKGJvb2wgdmFsdWUpIHsgbV9iZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZSA9IHZhbHVlOyB9CiAK
ICAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tEYXRhUmVmIG5vdGlmaWNh
dGlvbklEKTsKKyAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNl
V29ya2VyTm90aWZpY2F0aW9ucygpOwogCiAgICAgLy8gR2VvbG9jYXRpb24uCiAgICAgdm9pZCBz
ZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCk7CkBAIC0zNzMsNiArMzc0LDkgQEAgcHVibGlj
OgogCiAgICAgV0tQcmVmZXJlbmNlc1JlZiBwbGF0Zm9ybVByZWZlcmVuY2VzKCk7CiAKKyAgICBi
b29sIGdyYW50Tm90aWZpY2F0aW9uUGVybWlzc2lvbihXS1N0cmluZ1JlZiBvcmlnaW4pOworICAg
IGJvb2wgZGVueU5vdGlmaWNhdGlvblBlcm1pc3Npb24oV0tTdHJpbmdSZWYgb3JpZ2luKTsKKwog
cHJpdmF0ZToKICAgICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0
ZVBhZ2VDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJik7CiAgICAgV0tSZXRhaW5QdHI8
V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbihj
b25zdCBUZXN0T3B0aW9ucyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAppbmRleCAyY2E0MmMzZWU1YzMuLjk0YTA0NmIyMDJlMiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTM5Niw2ICszOTYsMTEgQEAgdm9p
ZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tT
dHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2ltdWxhdGVXZWJOb3Rp
ZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25zIikpIHsKKyAgICAgICAg
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tG
b3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpOworICAgICAgICByZXR1cm47CisgICAgfQor
CiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRB
ZGRzVmlzaXRlZExpbmtzIikpIHsKICAgICAgICAgV0tQYWdlU2V0QWRkc1Zpc2l0ZWRMaW5rcyhU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBib29sZWFu
VmFsdWUobWVzc2FnZUJvZHkpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTAyNSw2ICsxMDMwLDEy
IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBhZG9wdFdLKFdLVUlu
dDY0Q3JlYXRlKGNvdW50KSk7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcobWVzc2FnZU5hbWUsICJHcmFudE5vdGlmaWNhdGlvblBlcm1pc3Npb24iKSkKKyAg
ICAgICAgcmV0dXJuIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKFRlc3RDb250cm9sbGVyOjpzaW5n
bGV0b24oKS5ncmFudE5vdGlmaWNhdGlvblBlcm1pc3Npb24oc3RyaW5nVmFsdWUobWVzc2FnZUJv
ZHkpKSkpOworCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJEZW55Tm90aWZpY2F0aW9uUGVybWlzc2lvbiIpKQorICAgICAgICByZXR1cm4gYWRvcHRX
SyhXS0Jvb2xlYW5DcmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmRlbnlOb3RpZmlj
YXRpb25QZXJtaXNzaW9uKHN0cmluZ1ZhbHVlKG1lc3NhZ2VCb2R5KSkpKTsKKwogICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiSXNEb2luZ01lZGlhQ2Fw
dHVyZSIpKQogICAgICAgICByZXR1cm4gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLmlzRG9pbmdNZWRpYUNhcHR1cmUoKSkpOwogICAgIApkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAppbmRl
eCBjODhmMmU5ZjhkYjIuLmFmMDIxMTBjMDhmYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgc3Rh
dGljIFdLRGljdGlvbmFyeVJlZiBub3RpZmljYXRpb25QZXJtaXNzaW9ucyhjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQogCiBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6V2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIoKQogeworICAgIG1fcGVybWlzc2lvbnMgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25h
cnlDcmVhdGUoKSk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjp+V2ViTm90aWZpY2F0
aW9uUHJvdmlkZXIoKQpAQCAtODcsMTAgKzg4LDE3IEBAIFdLTm90aWZpY2F0aW9uUHJvdmlkZXJW
MCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cHJvdmlkZXIoKQogICAgIHJldHVybiBub3RpZmlj
YXRpb25Qcm92aWRlcjsKIH0KIAorc3RhdGljIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBub3Rp
ZmljYXRpb25NYW5hZ2VyRm9yUGFnZShXS1BhZ2VSZWYgcGFnZSkKK3sKKyAgICBpZiAocGFnZSkK
KyAgICAgICAgcmV0dXJuIFdLQ29udGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIoV0tQYWdlR2V0
Q29udGV4dChwYWdlKSk7CisKKyAgICByZXR1cm4gV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hh
cmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFnZXIoKTsKK30KKwogdm9pZCBXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlcjo6c2hvd1dlYk5vdGlmaWNhdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tO
b3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKQogewotICAgIGF1dG8gY29udGV4dCA9IFdLUGFn
ZUdldENvbnRleHQocGFnZSk7Ci0gICAgYXV0byBub3RpZmljYXRpb25NYW5hZ2VyID0gV0tDb250
ZXh0R2V0Tm90aWZpY2F0aW9uTWFuYWdlcihjb250ZXh0KTsKKyAgICBhdXRvIG5vdGlmaWNhdGlv
bk1hbmFnZXIgPSBub3RpZmljYXRpb25NYW5hZ2VyRm9yUGFnZShwYWdlKTsKICAgICBBU1NFUlQo
bV9rbm93bk1hbmFnZXJzLmNvbnRhaW5zKG5vdGlmaWNhdGlvbk1hbmFnZXIpKTsKIAogICAgIHVp
bnQ2NF90IGlkZW50aWZpZXIgPSBXS05vdGlmaWNhdGlvbkdldElEKG5vdGlmaWNhdGlvbik7CkBA
IC0xMTgsNyArMTI2LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6Y2xvc2VXZWJO
b3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW8KIAogdm9pZCBXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlcjo6YWRkTm90aWZpY2F0aW9uTWFuYWdlcihXS05vdGlmaWNhdGlvbk1h
bmFnZXJSZWYgbWFuYWdlcikKIHsKLSAgICBBU1NFUlQoIW1fa25vd25NYW5hZ2Vycy5jb250YWlu
cyhtYW5hZ2VyKSk7CisgICAgQVNTRVJUKCFtX2tub3duTWFuYWdlcnMuY29udGFpbnMobWFuYWdl
cikgfHwgbWFuYWdlciA9PSBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9uTWFuYWdlcigpKTsKICAgICBtX2tub3duTWFuYWdlcnMuYWRkKG1hbmFn
ZXIpOwogfQogCkBAIC0xNDUsOCArMTUzLDE0IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlk
ZXI6OnJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmCiAK
IFdLRGljdGlvbmFyeVJlZiBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6bm90aWZpY2F0aW9uUGVy
bWlzc2lvbnMoKQogewotICAgIC8vIEluaXRpYWwgcGVybWlzc2lvbnMgYXJlIGFsd2F5cyBlbXB0
eS4KLSAgICByZXR1cm4gV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpOworICAgIFdLUmV0YWlu
KG1fcGVybWlzc2lvbnMuZ2V0KCkpOworICAgIHJldHVybiBtX3Blcm1pc3Npb25zLmdldCgpOwor
fQorCit2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzZXRQZXJtaXNzaW9uKGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBib29sIGFsbG93ZWQpCit7CisgICAgYXV0byB3a0FsbG93ZWQgPSBhZG9w
dFdLKFdLQm9vbGVhbkNyZWF0ZShhbGxvd2VkKSk7CisgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbSht
X3Blcm1pc3Npb25zLmdldCgpLCB0b1dLKG9yaWdpbikuZ2V0KCksIHdrQWxsb3dlZC5nZXQoKSk7
CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0
aW9uQ2xpY2soV0tQYWdlUmVmLCBXS0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpCkBAIC0xNTcsNiAr
MTcxLDE2IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNpbXVsYXRlV2ViTm90aWZp
Y2F0aW9uQ2xpY2soV0tQYWdlUmVmLCBXS0RhdGFSZWYKICAgICBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uX2IobV9vd25pbmdNYW5hZ2VyLmdldChpZGVu
dGlmaWVyKSwgbm90aWZpY2F0aW9uSUQpOwogfQogCit2b2lkIFdlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNh
dGlvbnMoKQoreworICAgIGF1dG8gc2hhcmVkTWFuYWdlciA9IFdLTm90aWZpY2F0aW9uTWFuYWdl
ckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyKCk7CisgICAgZm9yIChh
dXRvJiBpdGVyYXRvciA6IG1fb3duaW5nTWFuYWdlcikgeworICAgICAgICBpZiAoaXRlcmF0b3Iu
dmFsdWUgIT0gc2hhcmVkTWFuYWdlcikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBX
S05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uX2Ioc2hhcmVk
TWFuYWdlciwgdXVpZFRvRGF0YShpdGVyYXRvci5rZXkpLmdldCgpKTsKKyAgICB9Cit9CisKIHZv
aWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlc2V0KCkKIHsKICAgICBmb3IgKGF1dG8gaXRl
cmF0b3IgOiBtX293bmluZ01hbmFnZXIpIHsKQEAgLTE2Niw2ICsxOTAsNyBAQCB2b2lkIFdlYk5v
dGlmaWNhdGlvblByb3ZpZGVyOjpyZXNldCgpCiAgICAgfQogCiAgICAgbV9vd25pbmdNYW5hZ2Vy
LmNsZWFyKCk7CisgICAgbV9wZXJtaXNzaW9ucyA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFy
eUNyZWF0ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmggYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgKaW5kZXggMGMzODdhNmU2YjU1Li41
N2I2Y2ZhYTUxMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNh
dGlvblByb3ZpZGVyLmgKQEAgLTQ5LDExICs0OSwxNiBAQCBwdWJsaWM6CiAgICAgV0tEaWN0aW9u
YXJ5UmVmIG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAKICAgICB2b2lkIHNpbXVsYXRlV2Vi
Tm90aWZpY2F0aW9uQ2xpY2soV0tQYWdlUmVmLCBXS0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpOwor
ICAgIHZvaWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3Rp
ZmljYXRpb25zKCk7CisKICAgICB2b2lkIHJlc2V0KCk7CiAKKyAgICB2b2lkIHNldFBlcm1pc3Np
b24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGJvb2wgYWxsb3dlZCk7CisKIHByaXZhdGU6CiAgICAg
SGFzaFNldDxXS1JldGFpblB0cjxXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWY+PiBtX2tub3duTWFu
YWdlcnM7CiAgICAgSGFzaE1hcDxVVUlELCBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWY+IG1fb3du
aW5nTWFuYWdlcjsKKyAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBtX3Bl
cm1pc3Npb25zOwogfTsKIAogfQo=
</data>
<flag name="commit-queue"
          id="478656"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451842</attachid>
            <date>2022-02-13 14:11:26 -0800</date>
            <delta_ts>2022-02-13 17:13:17 -0800</delta_ts>
            <desc>Patch for landing v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>130762</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NmJjMDg3ZmI4OTguLjdkNTRjZjU5OGUxOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBA
CisyMDIyLTAyLTEyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbXBsZW1lbnQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzIyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgVGVzdCBhIFNlcnZp
Y2VXb3JrZXIgc2hvd2luZyBhIG5vdGlmaWNhdGlvbiBib3RoIHdoZW4gaXQncyBhbGxvd2VkIGFu
ZCB3aGVuIGl0J3MgZGVuaWVkLgorCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvcmVzb3VyY2VzL3Nob3dub3RpZmljYXRpb24td29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAg
KGFzeW5jIGNvbnN0KToKKyAgICAgICAgKGxldC5tZXNzYWdlQ2xpZW50cyk6CisgICAgICAgIChh
c3luYyBldmVudCk6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25v
dGlmaWNhdGlvbi1hbGxvd2VkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1hbGxvd2VkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24t
ZGVuaWVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5pZWQuaHRtbDogQWRkZWQuCisKIDIwMjItMDIt
MTEgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIGBjb250YWluOmNv
bnRlbnRgIGJyZWFrcyBmdWxsc2NyZWVuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi13b3JrZXIuanMg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25v
dGlmaWNhdGlvbi13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi4xMTY3MzA5MjQ4YmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi13b3JrZXIuanMK
QEAgLTAsMCArMSwzMCBAQAorCitsZXQgbWVzc2FnZUNsaWVudHMgPSBhc3luYyBmdW5jdGlvbiht
c2cpIHsgCisgICAgY29uc3QgYWxsQ2xpZW50cyA9IGF3YWl0IGNsaWVudHMubWF0Y2hBbGwoewor
ICAgICAgICBpbmNsdWRlVW5jb250cm9sbGVkOiB0cnVlCisgICAgfSk7CisKKyAgICBmb3IgKGNv
bnN0IGNsaWVudCBvZiBhbGxDbGllbnRzKQorICAgICAgICBjbGllbnQucG9zdE1lc3NhZ2UobXNn
KTsKK30KKworc2VsZi5hZGRFdmVudExpc3RlbmVyKCdub3RpZmljYXRpb25jbGljaycsIGFzeW5j
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoImNsaWNrZWQiKTsK
KyAgICBldmVudC5ub3RpZmljYXRpb24uY2xvc2UoKTsKK30pOworCitzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ25vdGlmaWNhdGlvbmNsb3NlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBh
d2FpdCBtZXNzYWdlQ2xpZW50cygiY2xvc2VkIik7Cit9KTsKKworc2VsZi5hZGRFdmVudExpc3Rl
bmVyKCdtZXNzYWdlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAvLyBSZXBseSBpZiB0
aGUgc2hvdyBzdWNjZWVkZWQgb3IgZmFpbGVkLgorICAgIHRyeSB7CisgICAgICAgIGF3YWl0IHJl
Z2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKCJUaGlzIGlzIGEgbm90aWZpY2F0aW9uIik7Cisg
ICAgfSBjYXRjaChlcnJvcikgeworICAgICAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygic2hvd0Zh
aWxlZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGF3YWl0IG1lc3NhZ2VD
bGllbnRzKCJzaG93biIpOworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1h
bGxvd2VkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmJhZDU0YjAyNGQxMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tYWxsb3dlZC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uIHNob3duIGJ5
IGEgc2VydmljZSB3b3JrZXIgY2FuIGJlIGNsaWNrZWQgYW5kIGNsb3NlZCwgd2l0aCB0aG9zZSBh
Y3Rpb25zIGJlaW5nIG9ic2VydmFibGUgYnkgdGhlIHNlcnZpY2Ugd29ya2VyCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIE5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIGlzICJn
cmFudGVkIgorUEFTUyBnb3RDbGlja2VkIGlzIGZhbHNlCitQQVNTIGdvdENsb3NlZCBpcyBmYWxz
ZQorUEFTUyBnb3RDbGlja2VkIGlzIHRydWUKK1BBU1MgZ290Q2xvc2VkIGlzIGZhbHNlCitQQVNT
IENsb3NlIGhhcyBiZWVuIG9ic2VydmVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tYWxsb3dlZC5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1hbGxv
d2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hZDRhMDAx
NTY3OTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMv
c2VydmljZS9zaG93bm90aWZpY2F0aW9uLWFsbG93ZWQuaHRtbApAQCAtMCwwICsxLDc2IEBACis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL25vdGlmaWNhdGlvbnMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gZmFpbFRoZVRlc3QobXNnKQoreworICAgIHRlc3RG
YWlsZWQobXNnKTsKKyAgICBpZiAodGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZ3JhbnRXZWJOb3RpZmljYXRpb25QZXJt
aXNzaW9uKHRlc3RVUkwpOworICAgIHNldFRpbWVvdXQoImZhaWxUaGVUZXN0KCd0aW1lZCBvdXQn
KSIsIDE1MDAwKTsKK30KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBhIG5vdGlmaWNh
dGlvbiBzaG93biBieSBhIHNlcnZpY2Ugd29ya2VyIGNhbiBiZSBjbGlja2VkIGFuZCBjbG9zZWQs
IHdpdGggdGhvc2UgYWN0aW9ucyBiZWluZyBvYnNlcnZhYmxlIGJ5IHRoZSBzZXJ2aWNlIHdvcmtl
ciIpOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIiwg
ImdyYW50ZWQiKTsKKworYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkgewor
ICAgIHZhciByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdp
c3RlcigncmVzb3VyY2VzL3Nob3dub3RpZmljYXRpb24td29ya2VyLmpzJyk7CisgICAgCisgICAg
aWYgKCFyZWdpc3RyYXRpb24pCisgICAgICAgIHJldHVybiB0ZXN0RmFpbGVkKCJObyByZWdpc3Ry
YXRpb24iKTsKKyAgICAKKyAgICBpZiAocmVnaXN0cmF0aW9uLmFjdGl2ZSkgeworICAgICAgICBy
ZWdpc3RyYXRpb24uYWN0aXZlLnBvc3RNZXNzYWdlKCJTdGFydCIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgdmFyIGluc3RhbGxpbmdXb3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFs
bGluZzsKKyAgICBpZiAoIWluc3RhbGxpbmdXb3JrZXIpCisgICAgICAgIGZhaWxUaGVUZXN0KCJO
byBhY3RpdmUgKm9yKiBpbnN0YWxsaW5nIHdvcmtlciIpOworCisgICAgaW5zdGFsbGluZ1dvcmtl
ci5hZGRFdmVudExpc3RlbmVyKCJzdGF0ZWNoYW5nZSIsICgpID0+IHsKKyAgICAgICAgaWYgKGlu
c3RhbGxpbmdXb3JrZXIuc3RhdGUgPT09ICJhY3RpdmF0ZWQiKSB7CisgICAgICAgICAgICBpbnN0
YWxsaW5nV29ya2VyLnBvc3RNZXNzYWdlKCJ0cnlzaG93Iik7CisgICAgICAgIH0KKyAgICB9KTsK
K30KKwordmFyIGdvdENsaWNrZWQgPSBmYWxzZTsKK3ZhciBnb3RDbG9zZWQgPSBmYWxzZTsKKwor
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGV2ZW50
ID0+IHsKKyAgICBpZiAoZXZlbnQuZGF0YSA9PSAic2hvd0ZhaWxlZCIpIHsKKyAgICAgICAgZmFp
bFRoZVRlc3QoIlVuZXhwZWN0ZWRseSByZWNlaXZlZCB0aGUgZmFpbGVkLXRvLXNob3cgbWVzc2Fn
ZSIpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAic2hvd24iKSB7CisgICAgICAgIGlm
ICh0ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zaW11bGF0ZVdlYk5vdGlmaWNh
dGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKKyAgICB9IGVsc2UgaWYg
KGV2ZW50LmRhdGEgPT0gImNsaWNrZWQiKSB7CisgICAgICAgIHNob3VsZEJlRmFsc2UoImdvdENs
aWNrZWQiKTsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZ290Q2xvc2VkIik7CisgICAgICAgIGdv
dENsaWNrZWQgPSB0cnVlOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xvc2VkIikg
eworICAgICAgICBzaG91bGRCZVRydWUoImdvdENsaWNrZWQiKQorICAgICAgICBzaG91bGRCZUZh
bHNlKCJnb3RDbG9zZWQiKQorICAgICAgICBnb3RDbG9zZWQgPSB0cnVlOworICAgIH0gZWxzZSB7
CisgICAgICAgIHRlc3RGYWlsZWQoIk1lc3NhZ2UgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsK
KyAgICB9CisgICAgCisgICAgaWYgKGdvdENsb3NlZCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJD
bG9zZSBoYXMgYmVlbiBvYnNlcnZlZCIpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9KTsKKworPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJlZ2lzdGVyU2VydmljZVdvcmtlcigpIj4K
KzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Nob3dub3RpZmljYXRpb24tZGVuaWVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tZGVuaWVkLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjIwMThhNDNlNWRk
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Nob3dub3RpZmljYXRpb24tZGVuaWVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAK
K1RoaXMgdGVzdHMgdGhhdCBhIG5vdGlmaWNhdGlvbiBzaG93biBieSBhIHNlcnZpY2Ugd29ya2Vy
IGNhbiBiZSBjbGlja2VkIGFuZCBjbG9zZWQsIHdpdGggdGhvc2UgYWN0aW9ucyBiZWluZyBvYnNl
cnZhYmxlIGJ5IHRoZSBzZXJ2aWNlIHdvcmtlcgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBOb3RpZmljYXRpb24ucGVybWlzc2lvbiBpcyAiZGVuaWVkIgorUEFTUyBOb3Rp
ZmljYXRpb24gZmFpbGVkIHRvIHNob3cKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2hvd25vdGlmaWNhdGlvbi1kZW5pZWQuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tZGVuaWVk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43NzQ2ZjdjNjZl
NDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vy
dmljZS9zaG93bm90aWZpY2F0aW9uLWRlbmllZC5odG1sCkBAIC0wLDAgKzEsNjAgQEAKKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvbm90aWZpY2F0aW9ucy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorCitmdW5jdGlvbiBmYWlsVGhlVGVzdChtc2cpCit7CisgICAgdGVzdEZhaWxl
ZChtc2cpOworICAgIGlmICh0ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kZW55V2ViTm90aWZpY2F0aW9uUGVybWlzc2lv
bih0ZXN0VVJMKTsKKyAgICBzZXRUaW1lb3V0KCJmYWlsVGhlVGVzdCgndGltZWQgb3V0JykiLCAx
NTAwMCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgYSBub3RpZmljYXRpb24g
c2hvd24gYnkgYSBzZXJ2aWNlIHdvcmtlciBjYW4gYmUgY2xpY2tlZCBhbmQgY2xvc2VkLCB3aXRo
IHRob3NlIGFjdGlvbnMgYmVpbmcgb2JzZXJ2YWJsZSBieSB0aGUgc2VydmljZSB3b3JrZXIiKTsK
Kworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJOb3RpZmljYXRpb24ucGVybWlzc2lvbiIsICJkZW5p
ZWQiKTsKKworYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkgeworICAgIHZh
ciByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcign
cmVzb3VyY2VzL3Nob3dub3RpZmljYXRpb24td29ya2VyLmpzJyk7CisgICAgCisgICAgaWYgKCFy
ZWdpc3RyYXRpb24pCisgICAgICAgIHJldHVybiB0ZXN0RmFpbGVkKCJObyByZWdpc3RyYXRpb24i
KTsKKyAgICAKKyAgICBpZiAocmVnaXN0cmF0aW9uLmFjdGl2ZSkgeworICAgICAgICByZWdpc3Ry
YXRpb24uYWN0aXZlLnBvc3RNZXNzYWdlKCJTdGFydCIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgdmFyIGluc3RhbGxpbmdXb3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsK
KyAgICBpZiAoIWluc3RhbGxpbmdXb3JrZXIpCisgICAgICAgIGZhaWxUaGVUZXN0KCJObyBhY3Rp
dmUgKm9yKiBpbnN0YWxsaW5nIHdvcmtlciIpOworCisgICAgaW5zdGFsbGluZ1dvcmtlci5hZGRF
dmVudExpc3RlbmVyKCJzdGF0ZWNoYW5nZSIsICgpID0+IHsKKyAgICAgICAgaWYgKGluc3RhbGxp
bmdXb3JrZXIuc3RhdGUgPT09ICJhY3RpdmF0ZWQiKSB7CisgICAgICAgICAgICBpbnN0YWxsaW5n
V29ya2VyLnBvc3RNZXNzYWdlKCJ0cnlzaG93Iik7CisgICAgICAgIH0KKyAgICB9KTsKK30KKwor
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGV2ZW50
ID0+IHsKKyAgICBpZiAoZXZlbnQuZGF0YSA9PSAic2hvd0ZhaWxlZCIpIHsKKyAgICAgICAgdGVz
dFBhc3NlZCgiTm90aWZpY2F0aW9uIGZhaWxlZCB0byBzaG93Iik7CisgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAg
IH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAic2hvd24iKSB7CisgICAgICAgIHRlc3RGYWlsZWQo
Ik5vdGlmaWNhdGlvbiBzaG93biwgYnV0IHNob3VsZG4ndCBoYXZlIGJlZW4iKTsKKyAgICB9IGVs
c2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJNZXNzYWdlIHJlY2VpdmVkOiAiICsgZXZlbnQuZGF0
YSk7CisgICAgfQorfSk7CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJyZWdp
c3RlclNlcnZpY2VXb3JrZXIoKSI+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwppbmRleCA3MzhhZGExY2VhZDEuLmVlMzM3MmI4YmM0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMTIgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uLnNob3dOb3RpZmljYXRpb24oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MjIKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1l
ei4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9ub3RpZmljYXRpb25zL2lkbGhhcm5l
c3MuaHR0cHMuYW55LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
bm90aWZpY2F0aW9ucy9pZGxoYXJuZXNzLmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVk
LnR4dDoKKwogMjAyMi0wMi0xMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODk0OTguCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL25vdGlmaWNhdGlv
bnMvaWRsaGFybmVzcy5odHRwcy5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ub3RpZmljYXRpb25zL2lkbGhhcm5lc3MuaHR0cHMu
YW55LWV4cGVjdGVkLnR4dAppbmRleCAzNTg5OTVkNmVmNWUuLjMzZDQ1NjA1NTM0OCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ub3RpZmlj
YXRpb25zL2lkbGhhcm5lc3MuaHR0cHMuYW55LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL25vdGlmaWNhdGlvbnMvaWRsaGFybmVz
cy5odHRwcy5hbnktZXhwZWN0ZWQudHh0CkBAIC02Miw2ICs2Miw2IEBAIEZBSUwgTm90aWZpY2F0
aW9uIGludGVyZmFjZTogbm90aWZpY2F0aW9uIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiZGF0YSIg
d2l0aCB0aGUKIEZBSUwgTm90aWZpY2F0aW9uIGludGVyZmFjZTogbm90aWZpY2F0aW9uIG11c3Qg
aW5oZXJpdCBwcm9wZXJ0eSAiYWN0aW9ucyIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgYXNzZXJ0X2lu
aGVyaXRzOiBwcm9wZXJ0eSAiYWN0aW9ucyIgbm90IGZvdW5kIGluIHByb3RvdHlwZSBjaGFpbgog
UEFTUyBOb3RpZmljYXRpb24gaW50ZXJmYWNlOiBub3RpZmljYXRpb24gbXVzdCBpbmhlcml0IHBy
b3BlcnR5ICJjbG9zZSgpIiB3aXRoIHRoZSBwcm9wZXIgdHlwZQogUEFTUyBOb3RpZmljYXRpb25F
dmVudCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2Jq
ZWN0Ci1GQUlMIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gaW50ZXJmYWNlOiBvcGVyYXRpb24g
c2hvd05vdGlmaWNhdGlvbihET01TdHJpbmcsIG9wdGlvbmFsIE5vdGlmaWNhdGlvbk9wdGlvbnMp
IGFzc2VydF9vd25fcHJvcGVydHk6IGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IG1pc3Npbmcg
bm9uLXN0YXRpYyBvcGVyYXRpb24gZXhwZWN0ZWQgcHJvcGVydHkgInNob3dOb3RpZmljYXRpb24i
IG1pc3NpbmcKLUZBSUwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IG9wZXJh
dGlvbiBnZXROb3RpZmljYXRpb25zKG9wdGlvbmFsIEdldE5vdGlmaWNhdGlvbk9wdGlvbnMpIGFz
c2VydF9vd25fcHJvcGVydHk6IGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IG1pc3Npbmcgbm9u
LXN0YXRpYyBvcGVyYXRpb24gZXhwZWN0ZWQgcHJvcGVydHkgImdldE5vdGlmaWNhdGlvbnMiIG1p
c3NpbmcKK1BBU1MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IG9wZXJhdGlv
biBzaG93Tm90aWZpY2F0aW9uKERPTVN0cmluZywgb3B0aW9uYWwgTm90aWZpY2F0aW9uT3B0aW9u
cykKK1BBU1MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IG9wZXJhdGlvbiBn
ZXROb3RpZmljYXRpb25zKG9wdGlvbmFsIEdldE5vdGlmaWNhdGlvbk9wdGlvbnMpCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbm90aWZp
Y2F0aW9ucy9pZGxoYXJuZXNzLmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbm90aWZpY2F0aW9u
cy9pZGxoYXJuZXNzLmh0dHBzLmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCA0
MjQ2ZmU1NjYyZWQuLjMxNmMxMzdjM2IzNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9ub3RpZmljYXRpb25zL2lkbGhhcm5lc3MuaHR0cHMu
YW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbm90aWZpY2F0aW9ucy9pZGxoYXJuZXNzLmh0dHBzLmFu
eS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dApAQCAtMzUsMTggKzM1LDE4IEBAIEZBSUwgTm90
aWZpY2F0aW9uIGludGVyZmFjZTogYXR0cmlidXRlIHJlcXVpcmVJbnRlcmFjdGlvbiBhc3NlcnRf
b3duX3Byb3BlcnR5OiBzCiBGQUlMIE5vdGlmaWNhdGlvbiBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBk
YXRhIGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkg
Ik5vdGlmaWNhdGlvbiIgZXhwZWN0ZWQgcHJvcGVydHkgIk5vdGlmaWNhdGlvbiIgbWlzc2luZwog
RkFJTCBOb3RpZmljYXRpb24gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgYWN0aW9ucyBhc3NlcnRfb3du
X3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJOb3RpZmljYXRpb24i
IGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb24iIG1pc3NpbmcKIEZBSUwgTm90aWZpY2F0
aW9uIGludGVyZmFjZTogb3BlcmF0aW9uIGNsb3NlKCkgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2Vs
ZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uIiBleHBlY3RlZCBwcm9w
ZXJ0eSAiTm90aWZpY2F0aW9uIiBtaXNzaW5nCi1GQUlMIE5vdGlmaWNhdGlvbkV2ZW50IGludGVy
ZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QgYXNzZXJ0
X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiTm90aWZpY2F0
aW9uRXZlbnQiIGV4cGVjdGVkIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIgbWlzc2luZwot
RkFJTCBOb3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aCBhc3NlcnRfb3du
X3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJOb3RpZmljYXRpb25F
dmVudCIgZXhwZWN0ZWQgcHJvcGVydHkgIk5vdGlmaWNhdGlvbkV2ZW50IiBtaXNzaW5nCi1GQUlM
IE5vdGlmaWNhdGlvbkV2ZW50IGludGVyZmFjZSBvYmplY3QgbmFtZSBhc3NlcnRfb3duX3Byb3Bl
cnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJOb3RpZmljYXRpb25FdmVudCIg
ZXhwZWN0ZWQgcHJvcGVydHkgIk5vdGlmaWNhdGlvbkV2ZW50IiBtaXNzaW5nCi1GQUlMIE5vdGlm
aWNhdGlvbkV2ZW50IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVy
ZmFjZSBwcm90b3R5cGUgb2JqZWN0IGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3Qg
aGF2ZSBvd24gcHJvcGVydHkgIk5vdGlmaWNhdGlvbkV2ZW50IiBleHBlY3RlZCBwcm9wZXJ0eSAi
Tm90aWZpY2F0aW9uRXZlbnQiIG1pc3NpbmcKLUZBSUwgTm90aWZpY2F0aW9uRXZlbnQgaW50ZXJm
YWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmpl
Y3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5IGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9l
cyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIk5vdGlmaWNhdGlvbkV2ZW50IiBleHBlY3RlZCBwcm9w
ZXJ0eSAiTm90aWZpY2F0aW9uRXZlbnQiIG1pc3NpbmcKLUZBSUwgTm90aWZpY2F0aW9uRXZlbnQg
aW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlw
ZSBvYmplY3QncyBAQHVuc2NvcGFibGVzIHByb3BlcnR5IGFzc2VydF9vd25fcHJvcGVydHk6IHNl
bGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIk5vdGlmaWNhdGlvbkV2ZW50IiBleHBlY3Rl
ZCBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uRXZlbnQiIG1pc3NpbmcKLUZBSUwgTm90aWZpY2F0aW9u
RXZlbnQgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgbm90aWZpY2F0aW9uIGFzc2VydF9vd25fcHJvcGVy
dHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIk5vdGlmaWNhdGlvbkV2ZW50IiBl
eHBlY3RlZCBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uRXZlbnQiIG1pc3NpbmcKLUZBSUwgTm90aWZp
Y2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgYWN0aW9uIGFzc2VydF9vd25fcHJvcGVy
dHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIk5vdGlmaWNhdGlvbkV2ZW50IiBl
eHBlY3RlZCBwcm9wZXJ0eSAiTm90aWZpY2F0aW9uRXZlbnQiIG1pc3NpbmcKLUZBSUwgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbiBpbnRlcmZhY2U6IG9wZXJhdGlvbiBzaG93Tm90aWZpY2F0aW9u
KERPTVN0cmluZywgb3B0aW9uYWwgTm90aWZpY2F0aW9uT3B0aW9ucykgYXNzZXJ0X293bl9wcm9w
ZXJ0eTogaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJh
dGlvbiBleHBlY3RlZCBwcm9wZXJ0eSAic2hvd05vdGlmaWNhdGlvbiIgbWlzc2luZwotRkFJTCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGludGVyZmFjZTogb3BlcmF0aW9uIGdldE5vdGlmaWNh
dGlvbnMob3B0aW9uYWwgR2V0Tm90aWZpY2F0aW9uT3B0aW9ucykgYXNzZXJ0X293bl9wcm9wZXJ0
eTogaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJhdGlv
biBleHBlY3RlZCBwcm9wZXJ0eSAiZ2V0Tm90aWZpY2F0aW9ucyIgbWlzc2luZwotRkFJTCBTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgb25ub3RpZmljYXRpb25j
bGljayBhc3NlcnRfb3duX3Byb3BlcnR5OiBUaGUgZ2xvYmFsIG9iamVjdCBtdXN0IGhhdmUgYSBw
cm9wZXJ0eSAib25ub3RpZmljYXRpb25jbGljayIgZXhwZWN0ZWQgcHJvcGVydHkgIm9ubm90aWZp
Y2F0aW9uY2xpY2siIG1pc3NpbmcKLUZBSUwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVy
ZmFjZTogYXR0cmlidXRlIG9ubm90aWZpY2F0aW9uY2xvc2UgYXNzZXJ0X293bl9wcm9wZXJ0eTog
VGhlIGdsb2JhbCBvYmplY3QgbXVzdCBoYXZlIGEgcHJvcGVydHkgIm9ubm90aWZpY2F0aW9uY2xv
c2UiIGV4cGVjdGVkIHByb3BlcnR5ICJvbm5vdGlmaWNhdGlvbmNsb3NlIiBtaXNzaW5nCi1GQUlM
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBpbnRlcmZhY2U6IHNlbGYgbXVzdCBpbmhlcml0IHBy
b3BlcnR5ICJvbm5vdGlmaWNhdGlvbmNsaWNrIiB3aXRoIHRoZSBwcm9wZXIgdHlwZSBhc3NlcnRf
b3duX3Byb3BlcnR5OiBleHBlY3RlZCBwcm9wZXJ0eSAib25ub3RpZmljYXRpb25jbGljayIgbWlz
c2luZwotRkFJTCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgaW50ZXJmYWNlOiBzZWxmIG11c3Qg
aW5oZXJpdCBwcm9wZXJ0eSAib25ub3RpZmljYXRpb25jbG9zZSIgd2l0aCB0aGUgcHJvcGVyIHR5
cGUgYXNzZXJ0X293bl9wcm9wZXJ0eTogZXhwZWN0ZWQgcHJvcGVydHkgIm9ubm90aWZpY2F0aW9u
Y2xvc2UiIG1pc3NpbmcKK1BBU1MgTm90aWZpY2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBleGlzdGVu
Y2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdAorUEFTUyBOb3RpZmljYXRpb25F
dmVudCBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aAorUEFTUyBOb3RpZmljYXRpb25FdmVudCBpbnRl
cmZhY2Ugb2JqZWN0IG5hbWUKK1BBU1MgTm90aWZpY2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBleGlz
dGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QKK1BBU1Mg
Tm90aWZpY2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2Yg
aW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5CitQQVNT
IE5vdGlmaWNhdGlvbkV2ZW50IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9m
IGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgQEB1bnNjb3BhYmxlcyBwcm9wZXJ0eQorUEFT
UyBOb3RpZmljYXRpb25FdmVudCBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBub3RpZmljYXRpb24KK1BB
U1MgTm90aWZpY2F0aW9uRXZlbnQgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgYWN0aW9uCitQQVNTIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gaW50ZXJmYWNlOiBvcGVyYXRpb24gc2hvd05vdGlmaWNh
dGlvbihET01TdHJpbmcsIG9wdGlvbmFsIE5vdGlmaWNhdGlvbk9wdGlvbnMpCitQQVNTIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24gaW50ZXJmYWNlOiBvcGVyYXRpb24gZ2V0Tm90aWZpY2F0aW9u
cyhvcHRpb25hbCBHZXROb3RpZmljYXRpb25PcHRpb25zKQorUEFTUyBTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgb25ub3RpZmljYXRpb25jbGljaworUEFTUyBT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgb25ub3RpZmljYXRp
b25jbG9zZQorUEFTUyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgaW50ZXJmYWNlOiBzZWxmIG11
c3QgaW5oZXJpdCBwcm9wZXJ0eSAib25ub3RpZmljYXRpb25jbGljayIgd2l0aCB0aGUgcHJvcGVy
IHR5cGUKK1BBU1MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGludGVyZmFjZTogc2VsZiBtdXN0
IGluaGVyaXQgcHJvcGVydHkgIm9ubm90aWZpY2F0aW9uY2xvc2UiIHdpdGggdGhlIHByb3BlciB0
eXBlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggNTA2OGQyMWU3ZDkyLi5hMjc4N2MzY2IyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMjItMDItMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLnNob3dOb3RpZmljYXRpb24o
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MjIK
KworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIFNjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sOgorCiAyMDIyLTAyLTExICBO
aWtvbGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgogCiAgICAgICAgIFR1
cm4gb3ZlcnNjcm9sbC1iZWhhdmlvciBvbiBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIGIvU291
cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbApp
bmRleCA4ZDNlZWQxMzk1NGYuLjAxYjJmNWU2YjgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9T
Y3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAorKysgYi9Tb3Vy
Y2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCkBA
IC02NDQsOCArNjQ0LDEwIEBAIE5vdGlmaWNhdGlvbkV2ZW50RW5hYmxlZDoKICAgY29uZGl0aW9u
OiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VWRU5UKQogICBkZWZhdWx0VmFsdWU6CiAgICAgV2ViQ29y
ZToKKyAgICAgICJFTkFCTEUoTk9USUZJQ0FUSU9OX0VWRU5UKSI6IHRydWUKICAgICAgIGRlZmF1
bHQ6IGZhbHNlCiAgICAgV2ViS2l0OgorICAgICAgIkVOQUJMRShOT1RJRklDQVRJT05fRVZFTlQp
IjogdHJ1ZQogICAgICAgZGVmYXVsdDogZmFsc2UKIAogT2Zmc2NyZWVuQ2FudmFzRW5hYmxlZDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1Mzg1OTdhODJiZmIuLmJhNzc3OGMyMWFiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY0IEBACisyMDIyLTAyLTEyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5zaG93Tm90
aWZpY2F0aW9uKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAg
VGVzdHM6IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nob3dub3RpZmljYXRpb24tYWxsb3dl
ZC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zaG93bm90
aWZpY2F0aW9uLWRlbmllZC5odG1sCisKKyAgICAgICAgUHJldmlvdXNseSBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uLnNob3dOb3RpZmljYXRpb24oKSwgTm90aWZpY2F0aW9uRXZlbnQsIGFuZCBv
bm5vdGlmaWNhdGlvbmNsaWNrZWQvY2xvc2VkIHdlcmUgc3R1YmJlZCBvdXQuCisgICAgICAgIFRo
aXMgcGF0Y2ggaG9va3MgdGhlbSB1cC4KKyAgICAgICAgCisgICAgICAgIEl0J3MgbGFyZ2VseSBh
IHBsdW1iaW5nIHBhdGNoLCBkb2luZyB0aGUgZm9sbG93aW5nOgorICAgICAgICAtIE1ha2luZyBz
dXJlIGNhbGxzIHRvLWFuZC1mcm9tIE5vdGlmaWNhdGlvbkNsaWVudCBoYXBwZW4gb24gdGhlIGNv
cnJlY3QgdGhyZWFkcworICAgICAgICAtIE1ha2luZyBzdXJlIE5vdGlmaWNhdGlvbiByZWxhdGVk
IGNsYXNzZXMgbm93IHVuZGVyc3RhbmQgaG93IHRvIGNvcGUgd2l0aCBub3QgaGF2aW5nIGFuIGFz
c29jaWF0ZWQgV2ViUGFnZShQcm94eSkKKyAgICAgICAgLSBNYWtpbmcgc3VyZSBhbGwgb2YgdGhl
IHJlbGV2YW50IElQQyBtYWNoaW5lcnkgaXMgaW4gcGxhY2UgdG8gaGFuZGxlIHBhZ2VsZXNzIG5v
dGlmaWNhdGlvbnMKKyAgICAgICAgLSBBZGRzIHN1cGVyIHVzZWZ1bCBsb2dnaW5nCisgICAgICAg
IAorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbjo6ZGlzcGF0Y2hTaG93RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uOjpkaXNwYXRjaENsaWNrRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQpOgorCisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uRXZlbnQ6Ok5v
dGlmaWNhdGlvbkV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uRXZlbnQuaDoKKworICAgICAgICAqIGRvbS9FbXB0eVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorCisgICAgICAg
ICogcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmg6CisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRo
cmVhZC5oOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6On5T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlOjpwb3N0VGFza1RvRmlyZU5vdGlmaWNhdGlvbkV2ZW50KToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmg6CisKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE5vdGlmaWNh
dGlvbnMpOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5oOgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFy
dCk6CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuaDoKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJlZ2lzdHJhdGlvblN0b3JlRGF0YWJh
c2VGYWlsZWRUb09wZW4pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmFkZFJlZ2lzdHJh
dGlvbkZyb21TdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6YWRkUmVnaXN0cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpwcm9jZXNzUHVzaE1lc3NhZ2UpOgor
CiAyMDIyLTAyLTExICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBg
Y29udGFpbjpjb250ZW50YCBicmVha3MgZnVsbHNjcmVlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCA2ODViMWU0
ZDFhM2EuLmM3MzBkOTU2Mzk5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTQwLDcgKzQwLDkgQEAKICNpbmNs
dWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVu
dC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRp
b25FdmVudC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIgor
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldpbmRvd0V2
ZW50TG9vcC5oIgogI2luY2x1ZGUgIldpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtNjYsNiArNjgsNyBAQCBOb3RpZmlj
YXRpb246Ok5vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIHRpdGxlLAogICAgICwgbV9ib2R5KG9wdGlvbnMuYm9keS5pc29sYXRlZENvcHko
KSkKICAgICAsIG1fdGFnKG9wdGlvbnMudGFnLmlzb2xhdGVkQ29weSgpKQogICAgICwgbV9zdGF0
ZShJZGxlKQorICAgICwgbV9jb250ZXh0SWRlbnRpZmllcihjb250ZXh0LmlkZW50aWZpZXIoKSkK
IHsKICAgICBpZiAoY29udGV4dC5pc0RvY3VtZW50KCkpCiAgICAgICAgIG1fbm90aWZpY2F0aW9u
U291cmNlID0gTm90aWZpY2F0aW9uU291cmNlOjpEb2N1bWVudDsKQEAgLTEwMiw5ICsxMDUsMTkg
QEAgdm9pZCBOb3RpZmljYXRpb246OnNob3coKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
Y2xpZW50LT5jaGVja1Blcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSAhPSBQZXJt
aXNzaW9uOjpHcmFudGVkKSB7Ci0gICAgICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOworICAgICAg
ICBzd2l0Y2ggKG1fbm90aWZpY2F0aW9uU291cmNlKSB7CisgICAgICAgIGNhc2UgTm90aWZpY2F0
aW9uU291cmNlOjpEb2N1bWVudDoKKyAgICAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uU291cmNlOjpTZXJ2
aWNlV29ya2VyOgorICAgICAgICAgICAgLy8gV2UgZGlkIGEgcGVybWlzc2lvbiBjaGVjayB3aGVu
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnNob3dOb3RpZmljYXRpb24oKSB3YXMgY2FsbGVk
LgorICAgICAgICAgICAgLy8gSWYgcGVybWlzc2lvbiBoYXMgc2luY2UgYmVlbiByZXZva2VkLCB0
aGVuIHNpbGVudGx5IGZhaWxpbmcgaGVyZSBpcyBleHBlY3RlZCBiZWhhdmlvci4KKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwogICAgIGlm
IChjbGllbnQtPnNob3coKnRoaXMpKQogICAgICAgICBtX3N0YXRlID0gU2hvd2luZzsKIH0KQEAg
LTE1OCwyMCArMTcxLDQ4IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpmaW5hbGl6ZSgpCiAKIHZvaWQg
Tm90aWZpY2F0aW9uOjpkaXNwYXRjaFNob3dFdmVudCgpCiB7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKworICAgIGlmIChtX25vdGlmaWNhdGlvblNvdXJjZSAhPSBOb3RpZmljYXRpb25T
b3VyY2U6OkRvY3VtZW50KQorICAgICAgICByZXR1cm47CisKICAgICBxdWV1ZVRhc2tUb0Rpc3Bh
dGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuc2hvd0V2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoQ2xpY2tF
dmVudCgpCiB7Ci0gICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291
cmNlOjpVc2VySW50ZXJhY3Rpb24sIFt0aGlzXSB7Ci0gICAgICAgIFdpbmRvd0ZvY3VzQWxsb3dl
ZEluZGljYXRvciB3aW5kb3dGb2N1c0FsbG93ZWQ7Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7Ci0gICAgfSk7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKworICAgIHN3aXRjaCAobV9ub3RpZmljYXRpb25Tb3VyY2UpIHsKKyAgICBjYXNl
IE5vdGlmaWNhdGlvblNvdXJjZTo6RG9jdW1lbnQ6CisgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdP
YmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBbdGhpc10gewor
ICAgICAgICAgICAgV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yIHdpbmRvd0ZvY3VzQWxsb3dl
ZDsKKyAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y2xpY2tFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KSk7CisgICAgICAgIH0pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vdGlmaWNhdGlvblNv
dXJjZTo6U2VydmljZVdvcmtlcjoKKyAgICAgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpl
bnN1cmVPbkNvbnRleHRUaHJlYWQobV9jb250ZXh0SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBkb3du
Y2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnBvc3RUYXNrVG9GaXJlTm90
aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGljaywgKnRoaXMsIHsgfSk7
CisgICAgICAgIH0pOworICAgICAgICBicmVhazsKKyAgICB9CiB9CiAKIHZvaWQgTm90aWZpY2F0
aW9uOjpkaXNwYXRjaENsb3NlRXZlbnQoKQogewotICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVu
dCgqdGhpcywgVGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5jbG9zZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc3dpdGNoICht
X25vdGlmaWNhdGlvblNvdXJjZSkgeworICAgIGNhc2UgTm90aWZpY2F0aW9uU291cmNlOjpEb2N1
bWVudDoKKyAgICAgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNl
OjpVc2VySW50ZXJhY3Rpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQs
IEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIE5vdGlmaWNhdGlvblNvdXJjZTo6U2VydmljZVdvcmtlcjoKKyAg
ICAgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjplbnN1cmVPbkNvbnRleHRUaHJlYWQobV9j
b250ZXh0SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShh
dXRvJiBjb250ZXh0KSB7CisgICAgICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpLnBvc3RUYXNrVG9GaXJlTm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0
aW9uRXZlbnRUeXBlOjpDbG9zZSwgKnRoaXMsIHsgfSk7CisgICAgICAgIH0pOworICAgICAgICBi
cmVhazsKKyAgICB9CisKICAgICBmaW5hbGl6ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXggZjRhOTNiZDYx
MDhjLi4xMWZhOWZlYzE5MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJF
dmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRpcmVjdGlvbi5oIgogI2luY2x1
ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldyaXRpbmdNb2RlLmgiCkBAIC0xMzEsNiArMTMyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgU2VydmljZVdvcmtlciwKICAgICB9OwogICAgIE5vdGlmaWNh
dGlvblNvdXJjZSBtX25vdGlmaWNhdGlvblNvdXJjZTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllciBtX2NvbnRleHRJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25FdmVudC5jcHAKaW5kZXggNTg3NGI3NjEwMmZmLi4wMjRiNGUwYTk0
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25FdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkV2ZW50LmNwcApAQCAtMzAsNiArMzAsMjggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTm90aWZpY2F0aW9uRXZl
bnQpOworCitSZWY8Tm90aWZpY2F0aW9uRXZlbnQ+IE5vdGlmaWNhdGlvbkV2ZW50OjpjcmVhdGUo
Y29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSW5pdCYmIGluaXQsIElzVHJ1c3RlZCBpc1RydXN0ZWQp
Cit7CisgICAgYXV0byogbm90aWZpY2F0aW9uID0gaW5pdC5ub3RpZmljYXRpb24uZ2V0KCk7Cisg
ICAgQVNTRVJUKG5vdGlmaWNhdGlvbik7CisgICAgYXV0byBhY3Rpb24gPSBpbml0LmFjdGlvbjsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOb3RpZmljYXRpb25FdmVudCh0eXBlLCBXVEZNb3Zl
KGluaXQpLCBub3RpZmljYXRpb24sIGFjdGlvbiwgaXNUcnVzdGVkKSk7Cit9CisKK1JlZjxOb3Rp
ZmljYXRpb25FdmVudD4gTm90aWZpY2F0aW9uRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5n
JiB0eXBlLCBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgY29uc3QgU3RyaW5nJiBhY3Rpb24s
IElzVHJ1c3RlZCBpc1RydXN0ZWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTm90aWZp
Y2F0aW9uRXZlbnQodHlwZSwgeyB9LCBub3RpZmljYXRpb24sIGFjdGlvbiwgaXNUcnVzdGVkKSk7
Cit9CisKK05vdGlmaWNhdGlvbkV2ZW50OjpOb3RpZmljYXRpb25FdmVudChjb25zdCBBdG9tU3Ry
aW5nJiB0eXBlLCBOb3RpZmljYXRpb25FdmVudEluaXQmJiBldmVudEluaXQsIE5vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uLCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgSXNUcnVzdGVkIGlzVHJ1c3Rl
ZCkKKyAgICA6IEV4dGVuZGFibGVFdmVudCh0eXBlLCBXVEZNb3ZlKGV2ZW50SW5pdCksIGlzVHJ1
c3RlZCkKKyAgICAsIG1fbm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbikKKyAgICAsIG1fYWN0aW9u
KGFjdGlvbikKK3sKK30KKwogTm90aWZpY2F0aW9uRXZlbnQ6On5Ob3RpZmljYXRpb25FdmVudCgp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25FdmVudC5oCmluZGV4IDkyN2ViNTAxYWQ5Yi4uYjIxYzJlZDg0YWM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uRXZlbnQuaApAQCAtMzMsMTQgKzMzLDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorZW51bSBjbGFzcyBOb3RpZmljYXRpb25FdmVudFR5cGUgOiBib29sIHsKKyAgICBDbGlj
aywKKyAgICBDbG9zZSwKK307CisKK3N0cnVjdCBOb3RpZmljYXRpb25FdmVudEluaXQgOiBFeHRl
bmRhYmxlRXZlbnRJbml0IHsKKyAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb247
CisgICAgU3RyaW5nIGFjdGlvbjsKK307CisKIGNsYXNzIE5vdGlmaWNhdGlvbkV2ZW50IGZpbmFs
IDogcHVibGljIEV4dGVuZGFibGVFdmVudCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChO
b3RpZmljYXRpb25FdmVudCk7CiBwdWJsaWM6CiAgICAgfk5vdGlmaWNhdGlvbkV2ZW50KCk7CiAK
LSAgICBzdHJ1Y3QgSW5pdCA6IEV4dGVuZGFibGVFdmVudEluaXQgewotICAgICAgICBSZWZQdHI8
Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb247Ci0gICAgICAgIFN0cmluZyBhY3Rpb247Ci0gICAg
fTsKKyAgICB1c2luZyBJbml0ID0gTm90aWZpY2F0aW9uRXZlbnRJbml0OworCisgICAgc3RhdGlj
IFJlZjxOb3RpZmljYXRpb25FdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmLCBJbml0JiYs
IElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOworICAgIHN0YXRpYyBSZWY8Tm90aWZpY2F0aW9u
RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiwgTm90aWZpY2F0aW9uKiwgY29uc3QgU3Ry
aW5nJiBhY3Rpb24sIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOwogCiAgICAgRXZlbnRJbnRl
cmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBOb3RpZmljYXRpb25F
dmVudEludGVyZmFjZVR5cGU7IH0KIApAQCAtNDgsNiArNTksOCBAQCBwdWJsaWM6CiAgICAgY29u
c3QgU3RyaW5nJiBhY3Rpb24oKSB7IHJldHVybiBtX2FjdGlvbjsgfQogCiBwcml2YXRlOgorICAg
IE5vdGlmaWNhdGlvbkV2ZW50KGNvbnN0IEF0b21TdHJpbmcmLCBOb3RpZmljYXRpb25FdmVudElu
aXQmJiwgTm90aWZpY2F0aW9uKiwgY29uc3QgU3RyaW5nJiBhY3Rpb24sIElzVHJ1c3RlZCA9IElz
VHJ1c3RlZDo6Tm8pOworCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbV9ub3RpZmljYXRpb247
CiAgICAgU3RyaW5nIG1fYWN0aW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbXB0eVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbXB0
eVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAyMzFiM2JmMWNhOTguLjcxYzcyZWY5Yzk2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VtcHR5U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbXB0eVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaApAQCAtOTQsNiArOTQsMTAgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IFNldHRpbmdzOjpW
YWx1ZXMmIHNldHRpbmdzVmFsdWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXR0aW5nc1Zh
bHVlczsgfQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgTm90aWZpY2F0aW9uQ2xp
ZW50KiBub3RpZmljYXRpb25DbGllbnQoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisjZW5k
aWYKKwogICAgIGNsYXNzIEVtcHR5RXZlbnRMb29wIGZpbmFsIDogcHVibGljIEV2ZW50TG9vcCB7
CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUmVmPEVtcHR5RXZlbnRMb29wPiBjcmVhdGUo
SlNDOjpWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAppbmRleCBkMDAwZDU5ZDVhMDUuLjA3MjdiMWYxNGEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC04MCw2ICs4MCwxMCBAQCBlbnVtIGNsYXNz
IExvYWRlZEZyb21PcGFxdWVTb3VyY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBSZWZlcnJlclBv
bGljeSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFRhc2tTb3VyY2UgOiB1aW50OF90OwogCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCitjbGFzcyBOb3RpZmljYXRpb25DbGllbnQ7CisjZW5kaWYK
KwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIGNsYXNzIFNlcnZpY2VXb3JrZXI7CiBjbGFz
cyBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaAppbmRleCBjYmYyNmNiMTViZDUuLjNmZTUxZmQxZTQzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTQwMyw3ICs0
MDMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OX0VWRU5U
KQotICAgIGJvb2wgbV9ub3RpZmljYXRpb25FdmVudEVuYWJsZWQgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9ub3RpZmljYXRpb25FdmVudEVuYWJsZWQgeyB0cnVlIH07CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDFkOGUzYWQyYWNiOS4uYTBkMTZkNzQ3MDk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZS5oCkBAIC05NCw2ICs5NCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmRXZlbnRU
YXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmlu
YWwgeyBkZXJlZigpOyB9CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBOb3RpZmlj
YXRpb25DbGllbnQqIG5vdGlmaWNhdGlvbkNsaWVudCgpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxw
dHI7IH0KKyNlbmRpZgorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXI+IG1fc2NyaXB0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRNb2R1bGVM
b2FkZXI+IG1fbW9kdWxlTG9hZGVyOwogICAgIFdvcmtlck9yV29ya2xldFRocmVhZCogbV90aHJl
YWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCBiNGY3Njk0YzZiMWUu
LmRjOTc3NGU5MmU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC0y
OCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5oIgogI2luY2x1ZGUg
IkZldGNoUmVxdWVzdENyZWRlbnRpYWxzLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlz
c2lvbi5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFRocmVhZC5oIgogI2luY2x1ZGUgIldv
cmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJUeXBlLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCmluZGV4IDkwNGQ0ZmM4OGNhYS4uOTE0ZTg0NTIzZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5o
IgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiU1dDb250ZXh0TWFu
YWdlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyQ2xpZW50LmgiCkBAIC02OSw3ICs3MCwxMiBAQCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6
OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjbwog
ewogfQogCi1TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6On5TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUoKSA9IGRlZmF1bHQ7CitTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6On5TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUoKQoreworICAgIC8vIE5vdGlmaWNhdGlvbkNsaWVudCBtaWdodCBoYXZlIHNv
bWUgaW50ZXJhY3Rpb25zIHBlbmRpbmcgd2l0aCB0aGUgbWFpbiB0aHJlYWQsCisgICAgLy8gc28g
aXQgc2hvdWxkIGFsc28gYmUgZGVzdHJveWVkIHRoZXJlLgorICAgIGNhbGxPbk1haW5UaHJlYWQo
W25vdGlmaWNhdGlvbkNsaWVudCA9IFdURk1vdmUobV9ub3RpZmljYXRpb25DbGllbnQpXSB7IH0p
OworfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6bm90aWZ5U2VydmljZVdvcmtl
clBhZ2VPZkNyZWF0aW9uSWZOZWNlc3NhcnkoKQogewpAQCAtMjA4LDYgKzIxNCwyOCBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2NyaXB0QnVm
ZmVyJiYgc2NyaXB0LCBIYXNoTQogICAgIH0KIH0KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05f
RVZFTlQpCit2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6cG9zdFRhc2tUb0ZpcmVOb3Rp
ZmljYXRpb25FdmVudChOb3RpZmljYXRpb25FdmVudFR5cGUgZXZlbnRUeXBlLCBOb3RpZmljYXRp
b24mIG5vdGlmaWNhdGlvbiwgY29uc3QgU3RyaW5nJiBhY3Rpb24pCit7CisgICAgdGhyZWFkKCku
cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbZXZlbnRUeXBlLCBwcm90ZWN0ZWROb3RpZmljYXRp
b24gPSBSZWYgeyBub3RpZmljYXRpb24gfSwgYWN0aW9uID0gYWN0aW9uLmlzb2xhdGVkQ29weSgp
XShhdXRvJiBzY29wZSkgeworICAgICAgICBzY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFz
a1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbJnNjb3BlLCBwcm90ZWN0ZWRTY29wZSA9IFJlZiB7
IHNjb3BlIH0sIGV2ZW50VHlwZSwgcHJvdGVjdGVkTm90aWZpY2F0aW9uLCBhY3Rpb25dIHsKKyAg
ICAgICAgICAgIEF0b21TdHJpbmcgZXZlbnROYW1lOworICAgICAgICAgICAgc3dpdGNoIChldmVu
dFR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlOjpDbGljazoK
KyAgICAgICAgICAgICAgICBldmVudE5hbWUgPSBldmVudE5hbWVzKCkubm90aWZpY2F0aW9uY2xp
Y2tFdmVudDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTm90aWZp
Y2F0aW9uRXZlbnRUeXBlOjpDbG9zZToKKyAgICAgICAgICAgICAgICBldmVudE5hbWUgPSBldmVu
dE5hbWVzKCkubm90aWZpY2F0aW9uY2xvc2VFdmVudDsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byBldmVudCA9IE5vdGlmaWNhdGlvbkV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBwcm90ZWN0ZWROb3RpZmljYXRpb24ucHRyKCksIGFjdGlv
biwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CisgICAgICAgICAgICBkb3duY2Fz
dDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsK
KyAgICAgICAgfSk7CisgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7Cit9Cisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDA3MDc5ZjE5NTM0My4uNTEwYzFiMDcy
Yjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zOSwxMSArMzksMTQgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRXh0ZW5kYWJsZUV2ZW50Owog
Y2xhc3MgUGFnZTsKLXN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsKIGNsYXNzIFNlcnZp
Y2VXb3JrZXJDbGllbnQ7CiBjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50czsKIGNsYXNzIFNlcnZp
Y2VXb3JrZXJUaHJlYWQ7CiAKK2VudW0gY2xhc3MgTm90aWZpY2F0aW9uRXZlbnRUeXBlIDogYm9v
bDsKKworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOworCiBjbGFzcyBTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUgZmluYWwgOiBwdWJsaWMgV29ya2VyR2xvYmFsU2NvcGUgewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKTsKIHB1YmxpYzoK
QEAgLTgwLDcgKzgzLDExIEBAIHB1YmxpYzoKICAgICBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9u
IGRlc3RpbmF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gRmV0Y2hPcHRpb25zOjpEZXN0aW5h
dGlvbjo6U2VydmljZXdvcmtlcjsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgUGFnZSogc2Vydmlj
ZVdvcmtlclBhZ2UoKTsKLSAgICAKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05fRVZFTlQpCisg
ICAgdm9pZCBwb3N0VGFza1RvRmlyZU5vdGlmaWNhdGlvbkV2ZW50KE5vdGlmaWNhdGlvbkV2ZW50
VHlwZSwgTm90aWZpY2F0aW9uJiwgY29uc3QgU3RyaW5nJiBhY3Rpb24pOworI2VuZGlmCisKIHBy
aXZhdGU6CiAgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVm
PFNlY3VyaXR5T3JpZ2luPiYmLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3Jp
Z2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQ
cm92aWRlciosIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+JiYsIFBBTDo6U2Vz
c2lvbklEKTsKICAgICB2b2lkIG5vdGlmeVNlcnZpY2VXb3JrZXJQYWdlT2ZDcmVhdGlvbklmTmVj
ZXNzYXJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggNTAxNzgxZjcwZDVmLi41Mzg5
MjU2NDY4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTMwLDEwICszMCwxMyBAQAog
I2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTmF2aWdhdGlvblByZWxvYWRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiTm90aWZp
Y2F0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbi5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCkBAIC0yNjQsMjAgKzI2NywzOCBA
QCBOYXZpZ2F0aW9uUHJlbG9hZE1hbmFnZXImIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246Om5h
dmlnYXRpb25QcmVsb2FkKCkKIH0KIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05fRVZFTlQpCi12
b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnNob3dOb3RpZmljYXRpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE5vdGlmaWNhdGlvbk9w
dGlvbnMmIG9wdGlvbnMsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit2b2lk
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnNob3dOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgTm90aWZpY2F0
aW9uT3B0aW9ucyYgb3B0aW9ucywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0odGl0bGUpOwotICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsK
KyAgICBpZiAoIW1fYWN0aXZlV29ya2VyKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciwgIlJlZ2lzdHJhdGlvbiBkb2VzIG5vdCBoYXZlIGFuIGFjdGl2ZSB3
b3JrZXIiX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBjbGllbnQg
PSBjb250ZXh0Lm5vdGlmaWNhdGlvbkNsaWVudCgpOworICAgIGlmICghY2xpZW50KSB7CisgICAg
ICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlJlZ2lzdHJhdGlvbiBu
b3QgYWN0aXZlIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgcHJvbWlzZS5y
ZWplY3QoKTsKKyAgICBpZiAoY2xpZW50LT5jaGVja1Blcm1pc3Npb24oJmNvbnRleHQpICE9IE5v
dGlmaWNhdGlvblBlcm1pc3Npb246OkdyYW50ZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3Qo
RXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiUmVnaXN0cmF0aW9uIGRvZXMgbm90IGhhdmUgcGVybWlz
c2lvbiB0byBzaG93IG5vdGlmaWNhdGlvbnMiX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICAvLyBUaGUgTm90aWZpY2F0aW9uIGlzIGtlcHQgYWxpdmUgYnkgdmlydHVlIG9mIGJl
aW5nIHNob3coKSduIHNvb24uCisgICAgLy8gRklYTUU6IFdoZW4gaW1wbGVtZW50aW5nIGdldE5v
dGlmaWNhdGlvbnMoKSwgc3RvcmUgdGhpcyBOb3RpZmljYXRpb24gaW4gdGhlIHJlZ2lzdHJhdGlv
bidzIG5vdGlmaWNhdGlvbiBsaXN0LgorICAgIGF1dG8gbm90aWZpY2F0aW9uID0gTm90aWZpY2F0
aW9uOjpjcmVhdGUoY29udGV4dCwgdGl0bGUsIG9wdGlvbnMpOworCisgICAgY29udGV4dC5ldmVu
dExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSldKCkgbXV0YWJsZSB7CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgp
OworICAgIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE5vdGlm
aWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEdldE5vdGlmaWNhdGlvbk9w
dGlvbnMmIGZpbHRlciwgRE9NUHJvbWlzZURlZmVycmVkPElETFNlcXVlbmNlPElETERPTVN0cmlu
Zz4+IHByb21pc2UpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGZpbHRlcik7CiAKLSAgICBwcm9taXNl
LnJlamVjdCgpOwotCisgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVk
RXJyb3IsICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmdldE5vdGlmaWNhdGlvbnMgbm90IHll
dCBpbXBsZW1lbnRlZCJfcyB9KTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OX0VW
RU5UKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggYzBlMDM2MzZiMTg5Li5mM2JlYTVmMThmMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlBhZ2VJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRR
dWVyeU9wdGlvbnMuaCIKQEAgLTcwLDYgKzcxLDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7
CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzVGhyb3R0bGVhYmxlKCkgY29uc3QgPSAwOworICAg
ICAgICB2aXJ0dWFsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyKCkgY29uc3QgPSAwOwog
CiAgICAgICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc2VkOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggOGM4MWM3YjEwN2VjLi5lMmU0MDhiMTA5
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0yNzksNiArMjc5LDEwIEBAIHZv
aWQgU2VydmljZVdvcmtlclRocmVhZDo6c3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
LCBib29sKT4mJiBjYWxsYmFjaykKICAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7CiAKICAgICBX
b3JrZXJUaHJlYWQ6OnN0YXJ0KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XShhdXRvJiBlcnJvck1lc3NhZ2UpIG11dGFibGUgeworI2lm
bmRlZiBOREVCVUcKKyAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciB0aHJlYWQgZmFpbGVkIHRv
IHN0YXJ0OiAlcyIsIGVycm9yTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgogICAgICAg
ICBib29sIGRvZXNIYW5kbGVGZXRjaCA9IHRydWU7CiAgICAgICAgIGlmICh3ZWFrVGhpcykgewog
ICAgICAgICAgICAgd2Vha1RoaXMtPmZpbmlzaGVkU3RhcnRpbmcoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmgKaW5kZXggMGE0YmM3ZmY0OTQyLi5lNWNiNWMxZGQxNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIENh
Y2hlU3RvcmFnZVByb3ZpZGVyOwogY2xhc3MgRmV0Y2hMb2FkZXI7CiBjbGFzcyBGZXRjaExvYWRl
ckNsaWVudDsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOworY2xhc3MgTm90aWZpY2F0aW9uQ2xp
ZW50OwogY2xhc3MgU2VydmljZVdvcmtlckluc3BlY3RvclByb3h5Owogc3RydWN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTsKIGVudW0gY2xhc3MgV29ya2VyVGhyZWFkTW9kZSA6IGJvb2w7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
CmluZGV4IDM5ZmUxYjc4N2RhNy4uNjU0ZjFhYzcwMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTYzLDYgKzE2Myw3
IEBAIHZvaWQgU1dTZXJ2ZXI6OndoZW5JbXBvcnRJc0NvbXBsZXRlZElmTmVlZGVkKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjCiAKIHZvaWQgU1dTZXJ2ZXI6OnJlZ2lzdHJhdGlv
blN0b3JlRGF0YWJhc2VGYWlsZWRUb09wZW4oKQogeworICAgIExPRyhTZXJ2aWNlV29ya2VyLCAi
RmFpbGVkIHRvIG9wZW4gU1cgcmVnaXN0cmF0aW9uIGRhdGFiYXNlIik7CiAgICAgQVNTRVJUKCFt
X2ltcG9ydENvbXBsZXRlZCk7CiAgICAgaWYgKCFtX2ltcG9ydENvbXBsZXRlZCkKICAgICAgICAg
cmVnaXN0cmF0aW9uU3RvcmVJbXBvcnRDb21wbGV0ZSgpOwpAQCAtMTczLDYgKzE3NCw4IEBAIHZv
aWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmJiBkYXRhKQogICAgIC8vIFBhZ2VzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFibGUgdG8g
bWFrZSBhIG5ldyByZWdpc3RyYXRpb24gdG8gdGhpcyBrZXkgd2hpbGUgdGhlIGltcG9ydCB3YXMg
c3RpbGwgdGFraW5nIHBsYWNlLgogICAgIEFTU0VSVCghbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFw
LmNvbnRhaW5zKGRhdGEucmVnaXN0cmF0aW9uLmtleSkpOwogCisgICAgTE9HKFNlcnZpY2VXb3Jr
ZXIsICJBZGRpbmcgcmVnaXN0cmF0aW9uIGZyb20gc3RvcmUgZm9yICVzIiwgZGF0YS5yZWdpc3Ry
YXRpb24ua2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIGF1dG8gcmVn
aXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbihkYXRhLnNjcmlwdFVS
TCk7CiAgICAgdmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4ocmVnaXN0cmFibGVEb21haW4sIFNl
cnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlciwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSAoYm9vbCBpc1ZhbGlkKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTE5OCw2ICsyMDEsOCBAQCB2b2lkIFNXU2VydmVy
OjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySQogCiB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVf
cHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJhdGlvbikKIHsKKyAgICBMT0coU2Vy
dmljZVdvcmtlciwgIkFkZGluZyByZWdpc3RyYXRpb24gbGl2ZSBmb3IgJXMiLCByZWdpc3RyYXRp
b24tPmtleSgpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIGlmICghbV9z
Y29wZVRvUmVnaXN0cmF0aW9uTWFwLmNvbnRhaW5zKHJlZ2lzdHJhdGlvbi0+a2V5KCkpICYmICFT
ZWN1cml0eU9yaWdpbjo6aXNMb2NhbEhvc3RPckxvb3BiYWNrSVBBZGRyZXNzKHJlZ2lzdHJhdGlv
bi0+a2V5KCkudG9wT3JpZ2luKCkuaG9zdCkpCiAgICAgICAgIG1fdW5pcXVlUmVnaXN0cmF0aW9u
Q291bnQrKzsKIApAQCAtMTIyNCwyMCArMTIyOSwyNCBAQCB2b2lkIFNXU2VydmVyOjpzb2Z0VXBk
YXRlKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCiB2b2lkIFNXU2VydmVyOjpw
cm9jZXNzUHVzaE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYgZGF0YSwg
VVJMJiYgcmVnaXN0cmF0aW9uVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNh
bGxiYWNrKQogewogICAgIHdoZW5JbXBvcnRJc0NvbXBsZXRlZElmTmVlZGVkKFt0aGlzLCB3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgcmVnaXN0cmF0
aW9uVVJMID0gV1RGTW92ZShyZWdpc3RyYXRpb25VUkwpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBMT0coUHVzaCwgIlNlcnZpY2VXb3JrZXIgaW1w
b3J0IGlzIGNvbXBsZXRlLCBjYW4gaGFuZGxlIHB1c2ggbWVzc2FnZSBub3ciKTsKICAgICAgICAg
aWYgKCF3ZWFrVGhpcykgewogICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CisKICAgICAgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21VUkwocmVnaXN0cmF0aW9uVVJMKTsKICAgICAgICAgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXkgeyBXVEZNb3ZlKG9yaWdpbiksIFdURk1v
dmUocmVnaXN0cmF0aW9uVVJMKSB9OwogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IG1fc2Nv
cGVUb1JlZ2lzdHJhdGlvbk1hcC5nZXQocmVnaXN0cmF0aW9uS2V5KTsKICAgICAgICAgaWYgKCFy
ZWdpc3RyYXRpb24pIHsKKyAgICAgICAgICAgIExPRyhQdXNoLCAiQ2Fubm90IHByb2Nlc3MgcHVz
aCBtZXNzYXNnZTogRmFpbGVkIHRvIGZpbmQgU1cgcmVnaXN0cmF0aW9uIGZvciByZWdpc3RyYXRp
b24ga2V5ICVzIiwgcmVnaXN0cmF0aW9uS2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgICAgIGNhbGxiYWNrKHRydWUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgYXV0byogd29ya2VyID0gcmVnaXN0cmF0aW9uLT5hY3RpdmVXb3Jr
ZXIoKTsKICAgICAgICAgaWYgKCF3b3JrZXIpIHsKKyAgICAgICAgICAgIExPRyhQdXNoLCAiQ2Fu
bm90IHByb2Nlc3MgcHVzaCBtZXNzYXNnZTogTm8gYWN0aXZlIHdvcmtlciBmb3IgcmVnaXN0cmF0
aW9uIGtleSAlcyIsIHJlZ2lzdHJhdGlvbktleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBhNmJmODJlYTRmYjIuLjkxNjliMDBmZDViMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMzAgQEAKKzIwMjItMDItMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLnNo
b3dOb3RpZmljYXRpb24oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI3MjIKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdlKToKKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Z2V0UGVuZGlu
Z1B1c2hNZXNzYWdlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5h
Z2VyOjpzaG93Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmg6CisKKyAgICAgICAgKiBQbGF0Zm9y
bS9Mb2dnaW5nLmg6CisKKyAgICAgICAgKiBTaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvTm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW46CisKKyAgICAg
ICAgKiBTb3VyY2VzLnR4dDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTm90aWZpY2F0
aW9uUHJvdmlkZXIuaDoKKyAgICAgICAgKEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI6OnNob3cp
OgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90
aWZpY2F0aW9uTWFuYWdlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0
aW9uTWFuYWdlci5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmUubW06CisgICAgICAgICgrW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2hhcmVkU2Vydmlj
ZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFnZXJdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIF9nZXRQZW5kaW5nUHVzaE1lc3NhZ2VzOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3Byb2Nlc3NQdXNoTWVzc2FnZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHA6
CisgICAgICAgIChXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcjo6c2hvdyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmg6CisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFu
ZGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyTm90aWZpY2F0
aW9uSGFuZGxlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbkhhbmRsZXI6OlNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OnJlcXVlc3RT
eXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdv
cmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OmRhdGFTdG9yZUZvck5vdGlmaWNhdGlvbklEKToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OnNob3dOb3Rp
ZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFu
ZGxlcjo6Y2FuY2VsTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtl
ck5vdGlmaWNhdGlvbkhhbmRsZXI6OmNsZWFyTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOjpkaWREZXN0cm95Tm90aWZpY2F0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNlV29ya2VyTm90
aWZpY2F0aW9uSGFuZGxlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oLgorCisg
ICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJOb3RpZmljYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk5v
dGlmaWNhdGlvbjo6c291cmNlQ29ubmVjdGlvbiBjb25zdCk6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6
OnNob3dOb3RpZmljYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oOgorCisgICAgICAgICogVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29y
a2VyTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OmlkZW50aWZpZXJGb3JQYWdlUG9pbnRlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90
aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
OjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OmRpc3BhdGNoRGlkQ2xpY2tOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlk
Q2xvc2VOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeSk6CisgICAgICAg
IChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRSZW1vdmVO
b3RpZmljYXRpb25Qb2xpY2llcyk6CisgICAgICAgIChXZWJLaXQ6OnBhZ2VJRHNNYXRjaCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OnBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaCk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlv
blByb3ZpZGVyOjpzaG93KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25Qcm92aWRlci5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd05vdGlmaWNhdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFRvQWxsUmVtb3RlV29ya2VyUHJvY2Vzc2VzKToKKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmRpc2FibGVSZW1vdGVXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjplbmFibGVSZW1vdGVXb3JrZXJzKToKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6c2hvd1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYW5jZWxTZXJ2aWNlV29ya2VyTm90aWZpY2F0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y2xlYXJTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGlk
RGVzdHJveVNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6c2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0
aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZFNob3dOb3RpZmljYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbGlja05vdGlmaWNhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsb3NlTm90aWZpY2F0aW9u
cyk6CisgICAgICAgIChXZWJLaXQ6OnNlbmROb3RpZmljYXRpb25NZXNzYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5v
dGlmaWNhdGlvbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbkNs
aWVudDo6V2ViTm90aWZpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZp
Y2F0aW9uQ2xpZW50Ojp+V2ViTm90aWZpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTm90aWZpY2F0aW9uQ2xpZW50OjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZp
Y2F0aW9uQ2xpZW50OjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25D
bGllbnQ6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNoZWNrUGVybWlzc2lv
bik6CisKIDIwMjItMDItMTEgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbXBsZW1lbnQgUmV2ZWFsIG1ldGhvZHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMTc1YmQzODE2NDc0Li4z
ZjY2ZTNlYjM0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC0yMjU0LDE3ICsyMjU0LDIyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0
aW9uCiB7CiAjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCiAgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIExPRyhOb3Rp
ZmljYXRpb25zLCAiTmV0d29ya1Byb2Nlc3MgZ2V0dGluZyBwZW5kaW5nIHB1c2ggbWVzc2FnZXMg
Zm9yIHNlc3Npb24gSUQgJSIgUFJJdTY0LCBzZXNzaW9uSUQudG9VSW50NjQoKSk7CiAgICAgICAg
IHNlc3Npb24tPm5vdGlmaWNhdGlvbk1hbmFnZXIoKS5nZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFdU
Rk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICB9IGVsc2UKKyAg
ICAgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJOZXR3b3JrUHJvY2VzcyBjb3VsZCBub3QgZmluZCBz
ZXNzaW9uIGZvciBJRCAlbGx1IHRvIGdldCBwZW5kaW5nIHB1c2ggbWVzc2FnZXMiLCBzZXNzaW9u
SUQudG9VSW50NjQoKSk7CiAjZW5kaWYKICAgICBjYWxsYmFjayh7IH0pOwogfQogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXZWJQdXNoTWVzc2FnZSYmIHB1c2hNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNhbGxiYWNrKQogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKKyAgICAgICAgTE9HKFB1c2gsICJOZXR3b3JraW5nIHByb2Nlc3MgaGFuZGxp
bmcgYSBwdXNoIG1lc3NhZ2UgZnJvbSBVSSBwcm9jZXNzIGluIHNlc3Npb24gJWxsdSIsIHNlc3Np
b25JRC50b1VJbnQ2NCgpKTsKICAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5wcm9j
ZXNzUHVzaE1lc3NhZ2UoV1RGTW92ZShwdXNoTWVzc2FnZS5wdXNoRGF0YSksIFdURk1vdmUocHVz
aE1lc3NhZ2UucmVnaXN0cmF0aW9uVVJMKSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIH0gZWxz
ZQorICAgICAgICBMT0coUHVzaCwgIk5ldHdvcmtpbmcgcHJvY2VzcyBhc2tlZCB0byBoYW5kbGUg
YSBwdXNoIG1lc3NhZ2UgZnJvbSBVSSBwcm9jZXNzIGluIHNlc3Npb24gJWxsdSwgYnV0IHRoYXQg
c2Vzc2lvbiBkb2Vzbid0IGV4aXN0Iiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwogfQogI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90
aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggMTdjZWY5MTRhYjg2Li40ODZjYjViM2RmNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtOTMs
MTMgKzkzLDE0IEBAIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmdldE9yaWdpbnNX
aXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKENvCiB2b2lkIE5ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyOjpnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgVmVjdG9yPFdlYlB1c2hNZXNzYWdlPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlB1c2hNZXNzYWdlPiYmKT4g
cmVwbHlIYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildIChWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+JiYgbWVzc2FnZXMpIG11dGFibGUgeworICAg
ICAgICBMT0coUHVzaCwgIkRvbmUgZ2V0dGluZyBwdXNoIG1lc3NhZ2VzIik7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUobWVzc2FnZXMpKTsKICAgICB9OwogCiAgICAgc2VuZE1l
c3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpHZXRQZW5kaW5nUHVzaE1lc3Nh
Z2VzPihXVEZNb3ZlKHJlcGx5SGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyOjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRh
dGEmKQordm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvd05vdGlmaWNhdGlvbihJ
UEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikKIHsKICAg
ICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0
d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCBhOTJiZDJmNWJkMTcuLjUyYTYzODRiYWIx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTY2
LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcihOZXR3
b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgd2ViUHVzaE1hY2hTZXJ2aWNlTmFtZSk7CiAKICAg
ICB2b2lkIHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYg
b3JpZ2luU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKLSAg
ICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYp
IGZpbmFsOworICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxOb3Rp
ZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwogICAgIHZvaWQgY2xl
YXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKSBmaW5h
bDsKICAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0
aW9uSUQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5n
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCBkZTMyZjgxNzE3MTUu
LjczNmNmNmNlZmE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5n
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTgwLDYgKzgwLDcg
QEAgZXh0ZXJuICJDIiB7CiAgICAgTShOZXR3b3JrQ2FjaGVTdG9yYWdlKSBcCiAgICAgTShOZXR3
b3JrU2NoZWR1bGluZykgXAogICAgIE0oTmV0d29ya1Nlc3Npb24pIFwKKyAgICBNKE5vdGlmaWNh
dGlvbnMpIFwKICAgICBNKFBlcmZvcm1hbmNlTG9nZ2luZykgXAogICAgIE0oUGx1Z2lucykgXAog
ICAgIE0oUHJpbnRpbmcpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ci5oCmluZGV4IGE3ZTM2Y2RjYTE4MS4uOWY5OTZhYTEzNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcigpID0gZGVmYXVsdDsK
IAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihj
b25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd05vdGlmaWNh
dGlvbihJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90
aWZpY2F0aW9uSUQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNv
bnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2Fn
ZXMuaW4KaW5kZXggNDg5YjBiNmFkMGY3Li4zN2NjZGRmMWZiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VI
YW5kbGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluCkBAIC0yMiw3
ICsyMiw3IEBACiAKIG1lc3NhZ2VzIC0+IE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ciBOb3RSZWZDb3VudGVkIHsKICAgICBSZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lv
bihTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikgLT4gKGJvb2wgYWxsb3dlZCkgQXN5bmMKLSAgICBT
aG93Tm90aWZpY2F0aW9uKHN0cnVjdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhIG5vdGlmaWNh
dGlvbkRhdGEpCisgICAgU2hvd05vdGlmaWNhdGlvbihzdHJ1Y3QgV2ViQ29yZTo6Tm90aWZpY2F0
aW9uRGF0YSBub3RpZmljYXRpb25EYXRhKSBXYW50c0Nvbm5lY3Rpb24KICAgICBDYW5jZWxOb3Rp
ZmljYXRpb24oVVVJRCBub3RpZmljYXRpb25JRCkKICAgICBDbGVhck5vdGlmaWNhdGlvbnMoVmVj
dG9yPFVVSUQ+IG5vdGlmaWNhdGlvbklEcykKICAgICBEaWREZXN0cm95Tm90aWZpY2F0aW9uKFVV
SUQgbm90aWZpY2F0aW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAwNjc3MGQwZGZjN2QuLmYzOGIzZWQ3
MDE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CkBAIC01ODUsNiArNTg1LDcgQEAgVUlQcm9jZXNzL01lZGlhL0F1
ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkuY3BwCiBVSVByb2Nlc3MvTWVkaWEvTWVk
aWFVc2FnZU1hbmFnZXIuY3BwCiBVSVByb2Nlc3MvTWVkaWEvUmVtb3RlTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3JQcm94eS5jcHAKIAorVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvU2VydmljZVdvcmtl
ck5vdGlmaWNhdGlvbkhhbmRsZXIuY3BwCiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb24uY3BwCiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIuY3BwCiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOb3RpZmljYXRpb25Qcm92aWRlci5oCmluZGV4IGM0ODEzYWE1MTY1MC4uZjczYzU4
OGY2NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTm90aWZp
Y2F0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTm90
aWZpY2F0aW9uUHJvdmlkZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBOb3RpZmljYXRpb25Q
cm92aWRlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Tm90aWZpY2F0aW9uUHJvdmlkZXIoKSA9
IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2hvdyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IFdlYktpdDo6V2ViTm90aWZpY2F0aW9uJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNob3coV2Vi
S2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbiYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWwoV2ViS2l0OjpXZWJOb3RpZmljYXRpb24mKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbiYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYgLypub3RpZmljYXRpb25JRHMqLykgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA4MmJi
OTUxZTVjMWUuLmQ1MzhkYjU0MDc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC03OCwzICs3OCw4IEBA
IHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Q
b2xpY2llcyhXS05vdGlmaWNhdGlvbk1hCiB7CiAgICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5wcm92
aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKHRvSW1wbChvcmlnaW5zKSk7CiB9CisK
K1dLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRT
ZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpCit7CisgICAgcmV0dXJuIHRvQVBJKCZX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmlj
YXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNh
dGlvbk1hbmFnZXIuaAppbmRleCA3OWVkYmY1OGNlNDMuLjM0YmI1ZWMwYjE2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2Vy
LmgKQEAgLTQzLDYgKzQzLDggQEAgV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoV0tOb3RpZmljYXRpb24KIFdLX0VYUE9SVCB2
b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9s
aWN5KFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2lu
UmVmIG9yaWdpbiwgYm9vbCBhbGxvd2VkKTsKIFdLX0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9u
TWFuYWdlclByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoV0tOb3RpZmljYXRp
b25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLQXJyYXlSZWYgb3JpZ2lucyk7CiAKK1dLX0VYUE9S
VCBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVk
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFnZXIoKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVz
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IGY5MTM0ODNkZWRhMC4uZWFhMmFkNjIxNDQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIldLU2VjdXJpdHlP
cmlnaW5JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlB1
c2hNZXNzYWdlLmgiCiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIK
QEAgLTY1OSw2ICs2NjAsMTIgQEAgc3RhdGljIFZlY3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVj
b3JkPiB0b1dlYnNpdGVEYXRhUmVjb3JkcyhOU0FycmF5ICpkYXRhUmVjb3IKICAgICByZXR1cm4g
d3JhcHBlcihfd2Vic2l0ZURhdGFTdG9yZS0+Y29uZmlndXJhdGlvbigpLmNvcHkoKSk7CiB9CiAK
KysgKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZilfc2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNh
dGlvbk1hbmFnZXIKK3sKKyAgICBMT0coUHVzaCwgIkFjY2Vzc2luZyBfc2hhcmVkU2VydmljZVdv
cmtlck5vdGlmaWNhdGlvbk1hbmFnZXIiKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5h
Z2VyKCkpOworfQorCiAtICh2b2lkKV9hbGxvd1RMU0NlcnRpZmljYXRlQ2hhaW46KE5TQXJyYXkg
KiljZXJ0aWZpY2F0ZUNoYWluIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdAogewogICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT5hbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoV2ViQ29y
ZTo6Q2VydGlmaWNhdGVJbmZvKChfX2JyaWRnZSBDRkFycmF5UmVmKWNlcnRpZmljYXRlQ2hhaW4p
LCBob3N0KTsKQEAgLTc3MSwxMiArNzc4LDE1IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJz
aXRlRGF0YVJlY29yZD4gdG9XZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAK
IC0odm9pZClfZ2V0UGVuZGluZ1B1c2hNZXNzYWdlczoodm9pZCheKShOU0FycmF5PE5TRGljdGlv
bmFyeSAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgogeworICAgIExPRyhQdXNoLCAiR2V0dGluZyBw
ZW5kaW5nIHB1c2ggbWVzc2FnZXMiKTsKKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBfd2Vic2l0ZURhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5nZXRQZW5kaW5nUHVzaE1lc3Nh
Z2VzKF93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJLaXQ6Oldl
YlB1c2hNZXNzYWdlPiYgbWVzc2FnZXMpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bWVzc2FnZXMuc2l6ZSgp
XSk7CiAgICAgICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1lc3NhZ2VzKQogICAgICAgICAgICAg
W3Jlc3VsdCBhZGRPYmplY3Q6bWVzc2FnZS50b0RpY3Rpb25hcnkoKV07CiAKKyAgICAgICAgTE9H
KFB1c2gsICJHaXZpbmcgYXBwbGljYXRpb24gJXUgcGVuZGluZyBwdXNoIG1lc3NhZ2VzIiwgbWVz
c2FnZXMuc2l6ZSgpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0LmdldCgpKTsK
ICAgICB9KTsKICNlbmRpZgpAQCAtNzg3LDExICs3OTcsMTQgQEAgc3RhdGljIFZlY3RvcjxXZWJL
aXQ6OldlYnNpdGVEYXRhUmVjb3JkPiB0b1dlYnNpdGVEYXRhUmVjb3JkcyhOU0FycmF5ICpkYXRh
UmVjb3IKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgYXV0byBwdXNoTWVzc2FnZSA9
IFdlYktpdDo6V2ViUHVzaE1lc3NhZ2U6OmZyb21EaWN0aW9uYXJ5KHB1c2hNZXNzYWdlRGljdGlv
bmFyeSk7CiAgICAgaWYgKCFwdXNoTWVzc2FnZSkgeworICAgICAgICBMT0coUHVzaCwgIkFza2Vk
IHRvIGhhbmRsZSBhbiBpbnZhbGlkIHB1c2ggbWVzc2FnZSIpOwogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBMT0coUHVzaCwg
IlNlbmRpbmcgcHVzaCBtZXNzYWdlIHRvIG5ldHdvcmsgcHJvY2VzcyB0byBoYW5kbGUiKTsKICAg
ICBfd2Vic2l0ZURhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5wcm9jZXNzUHVzaE1lc3NhZ2Uo
X3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCAqcHVzaE1lc3NhZ2UsIFtjb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIHdhc1Byb2Nl
c3NlZCkgeworICAgICAgICBMT0coUHVzaCwgIlB1c2ggbWVzc2FnZSBwcm9jZXNzaW5nIGNvbXBs
ZXRlLiBDYWxsYmFjayByZXN1bHQ6ICVpIiwgd2FzUHJvY2Vzc2VkKTsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIod2FzUHJvY2Vzc2VkKTsKICAgICB9KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmVQcml2YXRlLmgKaW5kZXggMzFhODU0MDc0MTRkLi5jMzZlMTEzMWYwOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZVByaXZhdGUuaApAQCAtOTYsNiArOTYsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNV
SW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogQHByb3BlcnR5IChu
dWxsYWJsZSwgbm9uYXRvbWljLCB3ZWFrKSBpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRl
PiBfZGVsZWdhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIF9XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uICpfY29uZmlndXJhdGlvbjsKIAorKyAoV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UmVmKV9zaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlciBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAtICh2b2lkKV90ZXJt
aW5hdGVOZXR3b3JrUHJvY2VzcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUu
MCkpOwogLSAodm9pZClfc2VuZE5ldHdvcmtQcm9jZXNzUHJlcGFyZVRvU3VzcGVuZDoodm9pZChe
KSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBp
b3MoMTUuMCkpOwogLSAodm9pZClfc2VuZE5ldHdvcmtQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVu
dGx5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92
aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmlj
YXRpb25Qcm92aWRlci5jcHAKaW5kZXggNTUxNjM2NDQ3NzU1Li44NGM2YWI4NTY5NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlv
blByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJOb3Rp
ZmljYXRpb24mIG5vdGlmaWNhdGlvbikgb3ZlcnJpZGUKKyAgICB2b2lkIHNob3coV2ViUGFnZVBy
b3h5KiBwYWdlLCBXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIG1fcHJvdmlkZXIuc2hvdyhwYWdlLCBub3RpZmljYXRpb24pOwogICAgIH0KQEAg
LTExNSwxMCArMTE1LDE2IEBAIHZvaWQgV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OndpdGhk
cmF3QW55UHJldmlvdXNOb3RpZmljYXRpb25NYXRjaGluZ1RhZyhjb25zCiAjZW5kaWYKIH0KIAot
dm9pZCBXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcjo6c2hvdyhXZWJQYWdlUHJveHkmIHBhZ2Us
IGNvbnN0IFdlYk5vdGlmaWNhdGlvbiYgd2ViTm90aWZpY2F0aW9uKQordm9pZCBXZWJLaXROb3Rp
ZmljYXRpb25Qcm92aWRlcjo6c2hvdyhXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYk5vdGlm
aWNhdGlvbiYgd2ViTm90aWZpY2F0aW9uKQogeworICAgIGlmICghcGFnZSkgeworICAgICAgICAv
LyBGSVhNRTogZ2xpYiBuZWVkcyB0byBmaW5kIHRoZWlyIG93biBzb2x1dGlvbiB0byBoYW5kbGlu
ZyBwYWdlbGVzcyBub3RpZmljYXRpb25zLgorICAgICAgICAvLyBJIHdvbid0IG1ha2Ugc29tZXRo
aW5nIHVwIGZvciB0aGVtLgorICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIEdSZWZQ
dHI8V2ViS2l0Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0
KHdlYk5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25JRCgpKTsKLSAgICBhdXRvKiB3ZWJWaWV3ID0g
d2Via2l0V2ViQ29udGV4dEdldFdlYlZpZXdGb3JQYWdlKG1fd2ViQ29udGV4dCwgJnBhZ2UpOwor
ICAgIGF1dG8qIHdlYlZpZXcgPSB3ZWJraXRXZWJDb250ZXh0R2V0V2ViVmlld0ZvclBhZ2UobV93
ZWJDb250ZXh0LCBwYWdlKTsKICAgICBBU1NFUlQod2ViVmlldyk7CiAKICAgICBpZiAoIW5vdGlm
aWNhdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKaW5kZXggMzZiNzgzNDM4ODBkLi5i
ZTUyMjBkNTBlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaApAQCAtMzcsNyArMzcsNyBA
QCBwdWJsaWM6CiAgICAgV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5KiwgV2ViS2l0V2ViQ29udGV4dCopOwogICAgIH5XZWJLaXROb3RpZmljYXRp
b25Qcm92aWRlcigpOwogCi0gICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYk5v
dGlmaWNhdGlvbiYpOworICAgIHZvaWQgc2hvdyhXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJOb3Rp
ZmljYXRpb24mKTsKICAgICB2b2lkIGNhbmNlbChjb25zdCBXZWJOb3RpZmljYXRpb24mKTsKICAg
ICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+Jik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvU2VydmljZVdv
cmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9TZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NDc0YTc5M2YwOTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb25IYW5kbGVyLmNwcApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25I
YW5kbGVyLmgiCisKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RpZmljYXRpb25EYXRhLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTZXJ2aWNl
V29ya2VyTm90aWZpY2F0aW9uSGFuZGxlciYgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRs
ZXI6OnNpbmdsZXRvbigpCit7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CisgICAgc3Rh
dGljIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyJiBoYW5kbGVyID0gKm5ldyBTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjsKKyAgICByZXR1cm4gaGFuZGxlcjsKK30KKwor
dm9pZCBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6cmVxdWVzdFN5c3RlbU5vdGlm
aWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJikKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitXZWJz
aXRlRGF0YVN0b3JlKiBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6ZGF0YVN0b3Jl
Rm9yTm90aWZpY2F0aW9uSUQoY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit7CisgICAgYXV0
byBpdGVyYXRvciA9IG1fbm90aWZpY2F0aW9uVG9TZXNzaW9uTWFwLmZpbmQobm90aWZpY2F0aW9u
SUQpOworICAgIGlmIChpdGVyYXRvciA9PSBtX25vdGlmaWNhdGlvblRvU2Vzc2lvbk1hcC5lbmQo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gV2Vic2l0ZURhdGFTdG9y
ZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoaXRlcmF0b3ItPnZhbHVlKTsKK30KKwor
dm9pZCBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6c2hvd05vdGlmaWNhdGlvbihJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRh
dGEmIGRhdGEpCit7CisgICAgYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhp
c3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoZGF0YS5zb3VyY2VTZXNzaW9uKTsKKyAgICBpZiAo
IWRhdGFTdG9yZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ub3RpZmljYXRpb25Ub1Nlc3Np
b25NYXAuYWRkKGRhdGEubm90aWZpY2F0aW9uSUQsIGRhdGEuc291cmNlU2Vzc2lvbik7CisgICAg
ZGF0YVN0b3JlLT5zaG93U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihjb25uZWN0aW9uLCBkYXRh
KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlcjo6Y2FuY2VsTm90
aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQoreworICAgIGlmIChhdXRvKiBk
YXRhU3RvcmUgPSBkYXRhU3RvcmVGb3JOb3RpZmljYXRpb25JRChub3RpZmljYXRpb25JRCkpCisg
ICAgICAgIGRhdGFTdG9yZS0+Y2FuY2VsU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihub3RpZmlj
YXRpb25JRCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OmNs
ZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykKK3sK
KyAgICBmb3IgKGF1dG8mIG5vdGlmaWNhdGlvbklEIDogbm90aWZpY2F0aW9uSURzKSB7CisgICAg
ICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBkYXRhU3RvcmVGb3JOb3RpZmljYXRpb25JRChub3Rp
ZmljYXRpb25JRCkpCisgICAgICAgICAgICBkYXRhU3RvcmUtPmNsZWFyU2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbihub3RpZmljYXRpb25JRCk7CisgICAgfQorfQorCit2b2lkIFNlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb25IYW5kbGVyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQm
IG5vdGlmaWNhdGlvbklEKQoreworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBkYXRhU3RvcmVG
b3JOb3RpZmljYXRpb25JRChub3RpZmljYXRpb25JRCkpCisgICAgICAgIGRhdGFTdG9yZS0+ZGlk
RGVzdHJveVNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvU2VydmljZVdvcmtlck5vdGlmaWNhdGlv
bkhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA5MGEx
MzFmZDNkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaApAQCAtMCwwICsxLDUz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJOb3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
SGFuZGxlciBmaW5hbCA6IHB1YmxpYyBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIg
eworcHVibGljOgorICAgIHN0YXRpYyBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlciYg
c2luZ2xldG9uKCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgU2VydmljZVdvcmtlck5vdGlm
aWNhdGlvbkhhbmRsZXIoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHJlcXVlc3RTeXN0ZW1Ob3Rp
ZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rp
b24mLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikgZmluYWw7CisgICAgdm9pZCBj
YW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOworICAg
IHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9u
SURzKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgVVVJRCYg
bm90aWZpY2F0aW9uSUQpIGZpbmFsOworCisgICAgV2Vic2l0ZURhdGFTdG9yZSogZGF0YVN0b3Jl
Rm9yTm90aWZpY2F0aW9uSUQoY29uc3QgVVVJRCYpOworCisgICAgSGFzaE1hcDxVVUlELCBQQUw6
OlNlc3Npb25JRD4gbV9ub3RpZmljYXRpb25Ub1Nlc3Npb25NYXA7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcAppbmRleCBiOGRhNzFiYjBmZDYuLmI5MDE4NDIx
MTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotV2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oY29uc3QgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRl
bnRpZmllcikKK1dlYk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50
aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgc291cmNlQ29ubmVjdGlvbikKICAgICA6IG1fdGl0bGUo
ZGF0YS50aXRsZSkKICAgICAsIG1fYm9keShkYXRhLmJvZHkpCiAgICAgLCBtX2ljb25VUkwoZGF0
YS5pY29uVVJMKQpAQCAtNDAsNiArNDAsNyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNh
dGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdlUAogICAg
ICwgbV9vcmlnaW4oQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhkYXRhLm9y
aWdpblN0cmluZykpCiAgICAgLCBtX2NvcmVOb3RpZmljYXRpb25JRChkYXRhLm5vdGlmaWNhdGlv
bklEKQogICAgICwgbV9wYWdlSWRlbnRpZmllcihwYWdlSWRlbnRpZmllcikKKyAgICAsIG1fc291
cmNlQ29ubmVjdGlvbihzb3VyY2VDb25uZWN0aW9uKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaAppbmRl
eCBiYzc4MmZiZWZmZjMuLmU4OTQyNjMzZDQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElTZWN1cml0eU9y
aWdpbi5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CkBAIC00MSw5ICs0Miw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBX
ZWJOb3RpZmljYXRpb24gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpOb3RpZmljYXRpb24+LCBwdWJsaWMgSWRlbnRpZmllZDxXZWJOb3RpZmljYXRpb24+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYk5vdGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlk
ZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxXZWJOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBh
Z2VJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIHNvdXJjZUNvbm5lY3Rpb24pCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJOb3RpZmljYXRpb24oZGF0YSwgcGFnZUlk
ZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTm90aWZpY2F0aW9u
KGRhdGEsIHBhZ2VJZGVudGlmaWVyLCBzb3VyY2VDb25uZWN0aW9uKSk7CiAgICAgfQogCiAgICAg
Y29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KQEAgLTU4LDkg
KzU5LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBVVUlEJiBjb3JlTm90aWZpY2F0aW9uSUQoKSBj
b25zdCB7IHJldHVybiBtX2NvcmVOb3RpZmljYXRpb25JRDsgfQogCiAgICAgV2ViUGFnZVByb3h5
SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlkZW50aWZp
ZXI7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24qIHNvdXJjZUNvbm5lY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZUNvbm5lY3Rpb24uZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJOb3Rp
ZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIpOworICAgIFdlYk5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRp
b25EYXRhJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJik7CiAKICAg
ICBTdHJpbmcgbV90aXRsZTsKICAgICBTdHJpbmcgbV9ib2R5OwpAQCAtNzIsNiArNzQsNyBAQCBw
cml2YXRlOgogICAgIFVVSUQgbV9jb3JlTm90aWZpY2F0aW9uSUQ7CiAKICAgICBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CisgICAgV2Vha1B0cjxJUEM6OkNvbm5lY3Rp
b24+IG1fc291cmNlQ29ubmVjdGlvbjsKIH07CiAKIGlubGluZSBib29sIGlzTm90aWZpY2F0aW9u
SURWYWxpZCh1aW50NjRfdCBpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyLmNwcAppbmRleCBkMDY3Y2VmMDk2NGEuLjRjNjg0ZDljOWQzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVy
LmNwcApAQCAtNDAsOSArNDAsOSBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlcjo6cmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oYwogICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VIYW5kbGVyOjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkRhdGEmIGRhdGEpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
cjo6c2hvd05vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEpCiB7Ci0gICAgbV93ZWJQYWdlUHJveHkuc2hv
d05vdGlmaWNhdGlvbihkYXRhKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5zaG93Tm90aWZpY2F0aW9u
KGNvbm5lY3Rpb24sIGRhdGEpOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlcjo6Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklE
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgK
aW5kZXggYTZkYjAzMzdiN2U1Li41MjUwNWU5ZDI1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VI
YW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzcsNyArMzcsNyBAQCBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcihX
ZWJQYWdlUHJveHkmKTsKIAogICAgIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1p
c3Npb24oY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmlu
YWw7Ci0gICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkRhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9u
JiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgY2Fu
Y2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKICAgICB2
b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklE
cykgZmluYWw7CiAgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5v
dGlmaWNhdGlvbklEKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmNwcAppbmRleCBkMTNhNTg4MzhlYzYuLjAwNWZiYTVhMjNhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtNDksNiArNDksMTMgQEAgUmVmPFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eT4gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUo
V2ViUHJvY2Vzc1AKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkocHJvY2Vzc1Bvb2wpKTsKIH0KIAorV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
JiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2Vy
KCkKK3sKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBzdGF0aWMgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5KiBzaGFyZWRNYW5hZ2VyID0gbmV3IFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eShudWxscHRyKTsKKyAgICByZXR1cm4gKnNoYXJlZE1hbmFnZXI7Cit9CisKIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KFdl
YlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKICAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHBy
b2Nlc3NQb29sKQogICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9u
UHJvdmlkZXI+KCkpCkBAIC04OCwyMSArOTUsMjggQEAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogICAg
IHJldHVybiBtX3Byb3ZpZGVyLT5ub3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwogfQogCi12b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyhXZWJQYWdlUHJveHkqIHdlYlBhZ2Us
IGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIG5vdGlmaWNhdGlvbkRhdGEpCitzdGF0
aWMgV2ViUGFnZVByb3h5SWRlbnRpZmllciBpZGVudGlmaWVyRm9yUGFnZVBvaW50ZXIoV2ViUGFn
ZVByb3h5KiB3ZWJQYWdlKQogewotICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0
aW9uOjpjcmVhdGUobm90aWZpY2F0aW9uRGF0YSwgd2ViUGFnZS0+aWRlbnRpZmllcigpKTsKKyAg
ICByZXR1cm4gd2ViUGFnZSA/IHdlYlBhZ2UtPmlkZW50aWZpZXIoKSA6IFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIoKTsKK30KKwordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNob3co
V2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIG5vdGlmaWNhdGlvbkRhdGEpCit7CisgICAgTE9H
KE5vdGlmaWNhdGlvbnMsICJXZWJQYWdlUHJveHkgKCVwKSBhc2tpbmcgdG8gc2hvdyBub3RpZmlj
YXRpb24gKCVzKSIsIHdlYlBhZ2UsIG5vdGlmaWNhdGlvbkRhdGEubm90aWZpY2F0aW9uSUQudG9T
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90
aWZpY2F0aW9uOjpjcmVhdGUobm90aWZpY2F0aW9uRGF0YSwgaWRlbnRpZmllckZvclBhZ2VQb2lu
dGVyKHdlYlBhZ2UpLCBjb25uZWN0aW9uKTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5z
ZXQobm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25JRCgpLCBub3RpZmljYXRpb24tPmNvcmVOb3Rp
ZmljYXRpb25JRCgpKTsKICAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbi0+Y29y
ZU5vdGlmaWNhdGlvbklEKCksIG5vdGlmaWNhdGlvbik7Ci0gICAgbV9wcm92aWRlci0+c2hvdygq
d2ViUGFnZSwgbm90aWZpY2F0aW9uLmdldCgpKTsKKyAgICBtX3Byb3ZpZGVyLT5zaG93KHdlYlBh
Z2UsIG5vdGlmaWNhdGlvbi5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5OjpjYW5jZWwoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBVVUlEJiBwYWdlTm90
aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2FuY2VsKFdl
YlBhZ2VQcm94eSosIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKICAgICBpZiAo
YXV0byB3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KHBhZ2VOb3RpZmljYXRp
b25JRCkpCiAgICAgICAgIG1fcHJvdmlkZXItPmNhbmNlbCgqd2ViTm90aWZpY2F0aW9uKTsKIH0K
ICAgICAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZp
Y2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlv
bklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmlj
YXRpb24oV2ViUGFnZVByb3h5KiwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklEKQogewog
ICAgIGlmIChhdXRvIHdlYk5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy50YWtlKHBhZ2VO
b3RpZmljYXRpb25JRCkpIHsKICAgICAgICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAucmVtb3Zl
KHdlYk5vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uSUQoKSk7CkBAIC0xMTAsMzcgKzEyNCwyNiBA
QCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlv
bihXZWJQYWdlUHJveHkqIHdlYlBhZ2UsCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwYWdlSURz
TWF0Y2goV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFVVSUQmLCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3RvcjxVVUlEPiYpCi17Ci0g
ICAgcmV0dXJuIHBhZ2VJRCA9PSBkZXNpcmVkUGFnZUlEOwotfQotCi1zdGF0aWMgYm9vbCBwYWdl
QW5kTm90aWZpY2F0aW9uSURzTWF0Y2goV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNv
bnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNp
cmVkUGFnZUlELCBjb25zdCBWZWN0b3I8VVVJRD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURz
KQotewotICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5v
dGlmaWNhdGlvbklEcy5jb250YWlucyhwYWdlTm90aWZpY2F0aW9uSUQpOwotfQotCiB2b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94
eSogd2ViUGFnZSkKIHsKLSAgICBjbGVhck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgVmVjdG9yPFVV
SUQ+KCksIHBhZ2VJRHNNYXRjaCk7CisgICAgQVNTRVJUKHdlYlBhZ2UpOworICAgIGNsZWFyTm90
aWZpY2F0aW9ucyh3ZWJQYWdlLCB7IH0pOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3Qg
VmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZpY2F0aW9uSURzKQogewotICAgIGNsZWFyTm90aWZpY2F0
aW9ucyh3ZWJQYWdlLCBwYWdlTm90aWZpY2F0aW9uSURzLCBwYWdlQW5kTm90aWZpY2F0aW9uSURz
TWF0Y2gpOwotfQotCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3Rp
ZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdl
Tm90aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbiBmaWx0ZXJGdW5jdGlv
bikKLXsKLSAgICBhdXRvIHRhcmdldFBhZ2VQcm94eUlEID0gd2ViUGFnZS0+aWRlbnRpZmllcigp
OwotCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBnbG9iYWxOb3RpZmljYXRpb25JRHM7Ci0gICAgZ2xv
YmFsTm90aWZpY2F0aW9uSURzLnJlc2VydmVDYXBhY2l0eShtX2dsb2JhbE5vdGlmaWNhdGlvbk1h
cC5zaXplKCkpOworICAgIGdsb2JhbE5vdGlmaWNhdGlvbklEcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNpemUoKSk7CisKKyAgICAvLyBXZSBhbHdheXMg
Y2hlY2sgcGFnZSBpZGVudGl0eS4KKyAgICAvLyBJZiB0aGUgc2V0IG9mIG5vdGlmaWNhdGlvbiBJ
RHMgaXMgbm9uLWVtcHR5LCB3ZSBhbHNvIGNoZWNrIHRoYXQuCisgICAgYXV0byB0YXJnZXRQYWdl
SWRlbnRpZmllciA9IGlkZW50aWZpZXJGb3JQYWdlUG9pbnRlcih3ZWJQYWdlKTsKKyAgICBib29s
IGNoZWNrTm90aWZpY2F0aW9uSURzID0gIXBhZ2VOb3RpZmljYXRpb25JRHMuaXNFbXB0eSgpOwog
CiAgICAgZm9yIChhdXRvIG5vdGlmaWNhdGlvbiA6IG1fbm90aWZpY2F0aW9ucy52YWx1ZXMoKSkg
ewotICAgICAgICBhdXRvIHBhZ2VQcm94eUlEID0gbm90aWZpY2F0aW9uLT5wYWdlSWRlbnRpZmll
cigpOwotICAgICAgICBhdXRvIGNvcmVOb3RpZmljYXRpb25JRCA9IG5vdGlmaWNhdGlvbi0+Y29y
ZU5vdGlmaWNhdGlvbklEKCk7Ci0gICAgICAgIGlmICghZmlsdGVyRnVuY3Rpb24ocGFnZVByb3h5
SUQsIGNvcmVOb3RpZmljYXRpb25JRCwgdGFyZ2V0UGFnZVByb3h5SUQsIHBhZ2VOb3RpZmljYXRp
b25JRHMpKQorICAgICAgICBpZiAoY2hlY2tOb3RpZmljYXRpb25JRHMgJiYgIXBhZ2VOb3RpZmlj
YXRpb25JRHMuY29udGFpbnMobm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9uSUQoKSkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHRhcmdldFBhZ2VJZGVudGlmaWVyICE9
IG5vdGlmaWNhdGlvbi0+cGFnZUlkZW50aWZpZXIoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEID0gbm90aWZpY2F0aW9uLT5u
b3RpZmljYXRpb25JRCgpOwpAQCAtMTY3LDQ4ICsxNzAsNDYgQEAgdm9pZCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9i
YWxOb3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQ
cm9jZXNzUHJveHk6OndlYlBhZ2Uobm90aWZpY2F0aW9uLT5wYWdlSWRlbnRpZmllcigpKTsKLSAg
ICBpZiAoIXdlYlBhZ2UpCisgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJQcm92aWRlciBkaWQgc2hv
dyBub3RpZmljYXRpb24gKCVzKSIsIG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCku
dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBub3Rp
ZmljYXRpb24tPnNvdXJjZUNvbm5lY3Rpb24oKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHdlYlBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJO
b3RpZmljYXRpb25NYW5hZ2VyOjpEaWRTaG93Tm90aWZpY2F0aW9uKGl0LT52YWx1ZSksIDApOwor
ICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRp
ZFNob3dOb3RpZmljYXRpb24oaXQtPnZhbHVlKSwgMCk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IGds
b2JhbE5vdGlmaWNhdGlvbklEKQorc3RhdGljIHZvaWQgZGlzcGF0Y2hEaWRDbGlja05vdGlmaWNh
dGlvbihXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBhdXRvIGl0ID0gbV9n
bG9iYWxOb3RpZmljYXRpb25NYXAuZmluZChnbG9iYWxOb3RpZmljYXRpb25JRCk7Ci0gICAgaWYg
KGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQotICAgICAgICByZXR1cm47Cisg
ICAgTE9HKE5vdGlmaWNhdGlvbnMsICJQcm92aWRlciBkaWQgY2xpY2sgbm90aWZpY2F0aW9uICgl
cykiLCBub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpLnRvU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAKLSAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy5nZXQo
aXQtPnZhbHVlKTsKLSAgICBpZiAoIW5vdGlmaWNhdGlvbikgewotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBpZiAoIW5vdGlmaWNhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAg
IH0KIAotICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uobm90aWZp
Y2F0aW9uLT5wYWdlSWRlbnRpZmllcigpKTsKLSAgICBpZiAoIXdlYlBhZ2UpCisgICAgYXV0byog
Y29ubmVjdGlvbiA9IG5vdGlmaWNhdGlvbi0+c291cmNlQ29ubmVjdGlvbigpOworICAgIGlmICgh
Y29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsaWNrTm90aWZpY2F0aW9u
KGl0LT52YWx1ZSksIDApOworICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYk5vdGlm
aWNhdGlvbk1hbmFnZXI6OkRpZENsaWNrTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi0+Y29yZU5v
dGlmaWNhdGlvbklEKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgY29yZU5vdGlmaWNh
dGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xp
Y2tOb3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQpCiB7Ci0gICAgYXV0
byBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KGNvcmVOb3RpZmljYXRpb25JRCk7
Ci0gICAgaWYgKCFub3RpZmljYXRpb24pCisgICAgYXV0byBpdCA9IG1fZ2xvYmFsTm90aWZpY2F0
aW9uTWFwLmZpbmQoZ2xvYmFsTm90aWZpY2F0aW9uSUQpOworICAgIGlmIChpdCA9PSBtX2dsb2Jh
bE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogd2Vi
UGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3RpZmljYXRpb24tPnBhZ2VJZGVudGlm
aWVyKCkpOwotICAgIGlmICghd2ViUGFnZSkKLSAgICAgICAgcmV0dXJuOworICAgIGRpc3BhdGNo
RGlkQ2xpY2tOb3RpZmljYXRpb24obV9ub3RpZmljYXRpb25zLmdldChpdC0+dmFsdWUpKTsKK30K
IAotICAgIHdlYlBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpEaWRDbGlja05vdGlmaWNhdGlvbihjb3JlTm90aWZpY2F0aW9uSUQpLCAwKTsKK3Zv
aWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNrTm90aWZpY2F0
aW9uKGNvbnN0IFVVSUQmIGNvcmVOb3RpZmljYXRpb25JRCkKK3sKKyAgICBkaXNwYXRjaERpZENs
aWNrTm90aWZpY2F0aW9uKG1fbm90aWZpY2F0aW9ucy5nZXQoY29yZU5vdGlmaWNhdGlvbklEKSk7
CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsb3Nl
Tm90aWZpY2F0aW9ucyhBUEk6OkFycmF5KiBnbG9iYWxOb3RpZmljYXRpb25JRHMpCiB7Ci0gICAg
SGFzaE1hcDxXZWJQYWdlUHJveHkqLCBWZWN0b3I8VVVJRD4+IHBhZ2VOb3RpZmljYXRpb25JRHM7
CisgICAgVmVjdG9yPFJlZlB0cjxXZWJOb3RpZmljYXRpb24+PiBjbG9zZWROb3RpZmljYXRpb25z
OwogCiAgICAgc2l6ZV90IHNpemUgPSBnbG9iYWxOb3RpZmljYXRpb25JRHMtPnNpemUoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewpAQCAtMjQxLDI2ICsyNDIsMjUg
QEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xvc2VOb3Rp
ZmljYXRpb25zKEFQSTo6QXJyYXkqIGdsb2IKICAgICAgICAgaWYgKCFub3RpZmljYXRpb24pCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoV2ViUGFnZVByb3h5KiB3ZWJQYWdl
ID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKG5vdGlmaWNhdGlvbi0+cGFnZUlkZW50aWZpZXIo
KSkpIHsKLSAgICAgICAgICAgIGF1dG8gcGFnZUl0ID0gcGFnZU5vdGlmaWNhdGlvbklEcy5maW5k
KHdlYlBhZ2UpOwotICAgICAgICAgICAgaWYgKHBhZ2VJdCA9PSBwYWdlTm90aWZpY2F0aW9uSURz
LmVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPFVVSUQ+IG5ld1ZlY3RvcjsKLSAgICAg
ICAgICAgICAgICBuZXdWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKLSAgICAg
ICAgICAgICAgICBwYWdlSXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmFkZCh3ZWJQYWdlLCBXVEZN
b3ZlKG5ld1ZlY3RvcikpLml0ZXJhdG9yOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBw
YWdlSXQtPnZhbHVlLmFwcGVuZChub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgpKTsK
LSAgICAgICAgfQotCiAgICAgICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZShub3Rp
ZmljYXRpb24tPm5vdGlmaWNhdGlvbklEKCkpOworICAgICAgICBjbG9zZWROb3RpZmljYXRpb25z
LmFwcGVuZChXVEZNb3ZlKG5vdGlmaWNhdGlvbikpOwogICAgIH0KIAotICAgIGZvciAoYXV0byBp
dCA9IHBhZ2VOb3RpZmljYXRpb25JRHMuYmVnaW4oKSwgZW5kID0gcGFnZU5vdGlmaWNhdGlvbklE
cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBpdC0+a2V5LT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xvc2VOb3RpZmljYXRpb25z
KGl0LT52YWx1ZSksIDApOworICAgIGZvciAoYXV0byYgbm90aWZpY2F0aW9uIDogY2xvc2VkTm90
aWZpY2F0aW9ucykgeworICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG5vdGlmaWNhdGlv
bi0+c291cmNlQ29ubmVjdGlvbigpKSB7CisgICAgICAgICAgICBMT0coTm90aWZpY2F0aW9ucywg
IlByb3ZpZGVyIGRpZCBjbG9zZSBub3RpZmljYXRpb24gKCVzKSIsIG5vdGlmaWNhdGlvbi0+Y29y
ZU5vdGlmaWNhdGlvbklEKCkudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAg
IFZlY3RvcjxVVUlEPiBub3RpZmljYXRpb25JRHMgPSB7IG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlm
aWNhdGlvbklEKCkgfTsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsb3NlTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25J
RHMpLCAwKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OnByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9saWN5KGNvbnN0IEFQSTo6
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgYm9vbCBhbGxvd2VkKQogeworICAgIExPRyhOb3RpZmlj
YXRpb25zLCAiUHJvdmlkZXIgZGlkIHVwZGF0ZSBub3RpZmljYXRpb24gcG9saWN5IGZvciBvcmln
aW4gJXMgdG8gJWkiLCBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCBhbGxvd2VkKTsKKworICAgIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9BbGxSZW1vdGVX
b3JrZXJQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFVwZGF0
ZU5vdGlmaWNhdGlvbkRlY2lzaW9uKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygp
LCBhbGxvd2VkKSk7CisKICAgICBpZiAoIXByb2Nlc3NQb29sKCkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMjgxLDcgKzI4MSwxMSBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyhBUEk6OkFycgogICAgIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBvcmlnaW5TdHJpbmdz
LmFwcGVuZChvcmlnaW5zLT5hdDxBUEk6OlNlY3VyaXR5T3JpZ2luPihpKS0+c2VjdXJpdHlPcmln
aW4oKS50b1N0cmluZygpKTsKLSAgICAKKworICAgIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9BbGxS
ZW1vdGVXb3JrZXJQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRp
ZFJlbW92ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhvcmlnaW5TdHJpbmdzKSk7CisKKyAgICBpZiAo
IXByb2Nlc3NQb29sKCkpCisgICAgICAgIHJldHVybjsKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFJlbW92
ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhvcmlnaW5TdHJpbmdzKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCmluZGV4IGM2ZDM1ZDg2MjJiOC4uZTg3ZGIxMGY1MWFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKQEAgLTU3LDEwICs1Nywx
MiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CiAKKyAgICBzdGF0aWMgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5JiBzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpOworCiAgICAgdm9pZCBz
ZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4mJik7
CiAgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAK
LSAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGF0YSYpOworICAgIHZvaWQgc2hvdyhXZWJQYWdlUHJveHkqLCBJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJik7CiAgICAgdm9pZCBjYW5jZWwoV2ViUGFn
ZVByb3h5KiwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklEKTsKICAgICB2b2lkIGNsZWFy
Tm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqKTsKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9u
cyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8VVVJRD4mIHBhZ2VOb3RpZmljYXRpb25JRHMp
OwpAQCAtNzksOSArODEsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCopOwogCi0gICAgdHlwZWRlZiBi
b29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlELCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPFVVSUQ+JiBkZXNpcmVkUGFnZU5vdGlm
aWNhdGlvbklEcyk7Ci0gICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5Kiwg
Y29uc3QgVmVjdG9yPFVVSUQ+JiBwYWdlTm90aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0
ZXJGdW5jdGlvbik7Ci0KICAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudAogICAgIHZvaWQgcHJv
Y2Vzc1Bvb2xEZXN0cm95ZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlZldlYkNvbnRleHRTdXBw
bGVtZW50KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4
IDI2NWMxNTlkOWQ3OS4uODU4ZDc2NDYyZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyLmNwcApAQCAtNDIsMTIgKzQyLDEyIEBAIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpXZWJO
b3RpZmljYXRpb25Qcm92aWRlcihjb25zdCBXS05vdGlmaWNhdGlvblByb3ZpZGVyQmFzCiAgICAg
aW5pdGlhbGl6ZShwcm92aWRlcik7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6
OnNob3coV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikK
K3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNob3coV2ViUGFnZVByb3h5KiBwYWdlLCBX
ZWJOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKIHsKICAgICBpZiAoIW1fY2xpZW50LnNob3cp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LnNob3codG9BUEkoJnBhZ2UpLCB0b0FQ
SSgmbm90aWZpY2F0aW9uKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVu
dC5zaG93KHRvQVBJKHBhZ2UpLCB0b0FQSSgmbm90aWZpY2F0aW9uKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6Y2FuY2VsKFdl
Yk5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5o
CmluZGV4IDdiMmU5Y2UxYzVhNi4uYzFiMGE5ZDRlYWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Q
cm92aWRlci5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
IDogcHVibGljIEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXIsIHB1YmxpYyBBUEk6OkNsCiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIoY29uc3QgV0tOb3RpZmlj
YXRpb25Qcm92aWRlckJhc2UqKTsKIAotICAgIHZvaWQgc2hvdyhXZWJQYWdlUHJveHkmLCBXZWJO
b3RpZmljYXRpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIHNob3coV2ViUGFnZVByb3h5KiwgV2Vi
Tm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWwoV2ViTm90aWZpY2F0aW9u
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYk5vdGlmaWNh
dGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5ZTZlNTJhZmEwNDYuLjg2MGE0NTA2MjQzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04ODc0LDkgKzg4
NzQsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24o
Y29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbQogICAgIG1fdWlDbGllbnQtPmRlY2lkZVBv
bGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KCp0aGlzLCBvcmlnaW4uZ2V0KCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNo
b3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgbm90aWZpY2F0
aW9uRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzaG93Tm90aWZpY2F0aW9uKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgbm90aWZp
Y2F0aW9uRGF0YSkKIHsKLSAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPnNob3codGhpcywgbm90aWZpY2F0aW9uRGF0
YSk7CisgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5PigpLT5zaG93KHRoaXMsIGNvbm5lY3Rpb24sIG5vdGlmaWNhdGlvbkRh
dGEpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVV
SUQmIG5vdGlmaWNhdGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCA1YmNhODI2NWI2NzIuLjQwMGY5NDA0OWRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTIwNTQsNyArMjA1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
UXVhcmFudGluZWRBbmROb3RVc2VyQXBwcm92ZWQoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAot
ICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRh
Jik7CisgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKTsKICAgICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihj
b25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CiAgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMo
Y29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpOwogICAgIHZvaWQgZGlkRGVzdHJv
eU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNmQ4ODI4ZjJlNGQxLi5mNjBkM2Vj
ZDJjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTU4OCw3ICs1ODgsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZwogCiAgICAgcmVtb3RlV29y
a2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsKIAotICAgIHNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KHBy
b2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fcmVt
b3RlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdl
R3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1
dG8gcHJlZmVyZW5jZXNTdG9yZSA9IHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclByZWZlcmVu
Y2VzID8gcHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHBy
b2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKTsKKyAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4
dChwcmVmZXJlbmNlc1N0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgaWYgKCFwcm9jZXNz
UG9vbC0+bV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkpCiAgICAgICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHktPnNldFJlbW90ZVdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+
bV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKaW5kZXggZTI1M2E1ZTczYTQ4Li4zYWEyZGE4MmQ2ZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjAzLDYgKzIwMyw4IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRUb0FsbFByb2Nlc3Nlcyhjb25z
dCBUJiBtZXNzYWdlKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRUb0FsbFBy
b2Nlc3Nlc0ZvclNlc3Npb24oY29uc3QgVCYgbWVzc2FnZSwgUEFMOjpTZXNzaW9uSUQpOwogCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgc2VuZFRvQWxsUmVtb3RlV29ya2Vy
UHJvY2Vzc2VzKGNvbnN0IFQmIG1lc3NhZ2UpOworCiAgICAgdm9pZCBwcm9jZXNzRGlkRmluaXNo
TGF1bmNoaW5nKFdlYlByb2Nlc3NQcm94eSYpOwogCiAgICAgV2ViUHJvY2Vzc0NhY2hlJiB3ZWJQ
cm9jZXNzQ2FjaGUoKSB7IHJldHVybiBtX3dlYlByb2Nlc3NDYWNoZS5nZXQoKTsgfQpAQCAtODMy
LDQgKzgzNCwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5kVG9BbGxQcm9jZXNzZXNGb3JT
ZXNzaW9uKGNvbnN0IFQmIG1lc3NhZ2UsIFBBTDo6U2Vzc2lvbgogICAgIH0KIH0KIAordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNlbmRUb0FsbFJlbW90ZVdvcmtl
clByb2Nlc3Nlcyhjb25zdCBUJiBtZXNzYWdlKQoreworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6
IHJlbW90ZVdvcmtlclByb2Nlc3NlcygpKSB7CisgICAgICAgIGlmIChwcm9jZXNzLmNhblNlbmRN
ZXNzYWdlKCkpCisgICAgICAgICAgICBwcm9jZXNzLnNlbmQoVChtZXNzYWdlKSwgMCk7CisgICAg
fQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDJjMGE4MDMwMDMxNC4uZTFiZGQ1Y2E1N2E3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb25IYW5kbGVyLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZU1hbmFnZXIuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyTWVzc2FnZXMuaCIKQEAgLTIwMDMsNiArMjAwNCw3
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlUmVtb3RlV29ya2VycyhPcHRpb25TZXQ8
UmVtb3RlV29ya2VyVHlwZT4gd29ya2VyVHlwCiAKICAgICBib29sIGRpZENoYW5nZSA9IGZhbHNl
OwogICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VX
b3JrZXIpICYmIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKSB7CisgICAgICAgIHJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVy
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5yZW1v
dGVXb3JrZXJQYWdlSUQpOwogICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsg
fTsKICAgICAgICAgZGlkQ2hhbmdlID0gdHJ1ZTsKICAgICB9CkBAIC0yMDY0LDYgKzIwNjYsMTAg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2Vy
VHlwZSB3b3JrZXJUeXBlLCBjb25zdCBVc2UKICAgICAgICAgbnVsbHB0ciwKICAgICAgICAgeyB9
CiAgICAgfTsKKworICAgIGlmICh3b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZp
Y2VXb3JrZXIpCisgICAgICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Tm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uLT5yZW1vdGVXb3JrZXJQYWdlSUQsIFNlcnZpY2VXb3JrZXJOb3Rp
ZmljYXRpb25IYW5kbGVyOjpzaW5nbGV0b24oKSk7CisKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVz
cG9uc2l2ZW5lc3NUaW1lcigpOwogCiAgICAgdXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbih3b3JrZXJUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMTMyOTA1NTcyZjRiLi44YTJl
YWRhOTc5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAi
V2ViQmFja0ZvcndhcmRDYWNoZS5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5o
IgogI2luY2x1ZGUgIldlYktpdDJJbml0aWFsaXplLmgiCisjaW5jbHVkZSAiV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc0NhY2hlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCkBAIC0y
MDU0LDQgKzIwNTUsMjUgQEAgYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpzaG91bGRNYWtlTmV4dE5l
dHdvcmtQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcoKQogICAgIHJldHVybiBzdGQ6OmV4Y2hh
bmdlKG5leHROZXR3b3JrUHJvY2Vzc0xhdW5jaFNob3VsZEZhaWxGb3JUZXN0aW5nLCBmYWxzZSk7
CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2hvd1NlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRp
b25EYXRhJiBub3RpZmljYXRpb25EYXRhKQoreworICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6c2hhcmVkU2VydmljZVdvcmtlck1hbmFnZXIoKS5zaG93KG51bGxwdHIsIGNvbm5lY3Rp
b24sIG5vdGlmaWNhdGlvbkRhdGEpOworfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmNhbmNl
bFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit7
CisgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFu
YWdlcigpLmNhbmNlbChudWxscHRyLCBub3RpZmljYXRpb25JRCk7Cit9CisKK3ZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6Y2xlYXJTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5v
dGlmaWNhdGlvbklEKQoreworICAgIFZlY3RvcjxVVUlEPiBub3RpZmljYXRpb25zID0geyBub3Rp
ZmljYXRpb25JRCB9OworICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hhcmVkU2Vy
dmljZVdvcmtlck1hbmFnZXIoKS5jbGVhck5vdGlmaWNhdGlvbnMobnVsbHB0ciwgbm90aWZpY2F0
aW9ucyk7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGlkRGVzdHJveVNlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit7CisgICAgV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpLmRpZERl
c3Ryb3lOb3RpZmljYXRpb24obnVsbHB0ciwgbm90aWZpY2F0aW9uSUQpOworfQorCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgKaW5kZXggODVlZTMxZTEzODNkLi40NmFmMGVmNTllYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAg
LTc4LDYgKzc4LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBMb2NhbFdlYkxvY2tS
ZWdpc3RyeTsKIAogc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb247Citz
dHJ1Y3QgTm90aWZpY2F0aW9uRGF0YTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zNzAs
NiArMzcxLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY291bnROb25EZWZhdWx0U2Vzc2lvblNl
dHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3QpPiYmKTsKIAorICAgIHZvaWQgc2hvd1Nl
cnZpY2VXb3JrZXJOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6
Tm90aWZpY2F0aW9uRGF0YSYpOworICAgIHZvaWQgY2FuY2VsU2VydmljZVdvcmtlck5vdGlmaWNh
dGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBjbGVhclNlcnZpY2VX
b3JrZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQg
ZGlkRGVzdHJveVNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0
aW9uSUQpOworCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRm9yY2VSZWluaXRpYWxpemF0aW9u
IDogYm9vbCB7IE5vLCBZZXMgfTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmN2Jl
ZTU0M2NlMGYuLmMxNWUxYjFkZGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05OTYsNiArOTk2LDcgQEAKIAkJNTE1QkUxQjUxRDU5
MTdGRjAwREQ3QzY4IC8qIFVJR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE1QkUxQUQxRDU1NUM1MTAwREQ3QzY4IC8qIFVJR2FtZXBhZC5o
ICovOyB9OwogCQk1MTYzMTk5NDE2Mjg5QTYwMDBFMjJGMDAgLyogTmV0d29ya1Byb2Nlc3NNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFBQ0M5MzQxNjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9jZXNzTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKIAkJNTE2MzE5OTUxNjI4OUE2MzAwRTIyRjAwIC8qIE5ldHdvcmtQ
cm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQUNDOTM1MTYyODA2NDgwMDM0MjU1MCAvKiBOZXR3b3JrUHJvY2Vzc01lc3NhZ2Vz
LmggKi87IH07CisJCTUxNjQ2NTgwMjdBOUM3NzQwMEUxRjJCQSAvKiBTZXJ2aWNlV29ya2VyTm90
aWZpY2F0aW9uSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE2NDY1N0YyN0E5Qzc2NzAwRTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb25IYW5kbGVyLmggKi87IH07CiAJCTUxNkE0QTVEMTIwQTJDQ0QwMEMwNUI3RiAvKiBBUElF
cnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2
QTRBNUIxMjBBMkNDRDAwQzA1QjdGIC8qIEFQSUVycm9yLmggKi87IH07CiAJCTUxNzk1NTZBMTYy
ODc2RjMwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQ0M3RTAxNjEzOEUyOTAwRDAzRUQzIC8qIE5ldHdv
cmtQcm9jZXNzLmggKi87IH07CiAJCTUxNzk1NTZFMTYyODc3QjMwMEZBNDNCNiAvKiBOZXR3b3Jr
UHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTBDQzdFQjE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5oICov
OyB9OwpAQCAtNDQ4MSw2ICs0NDgyLDggQEAKIAkJNTE2MEU5NTgyNzRDMEQ4ODAwNTY3Mzg4IC8q
IFB1c2hBcHBCdW5kbGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBQdXNoQXBwQnVuZGxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTYwRTk1
QzI3NEMyQTAzMDA1NjczODggLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTYwRTk1RjI3NEMyQTNGMDA1NjczODggLyogTW9ja0FwcEJ1
bmRsZVJlZ2lzdHJ5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MTY0NjU3RTI3QTlDNzY1MDBFMUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTY0NjU3RjI3QTlDNzY3MDBF
MUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE2NEMwOTQxQjA1Qjc1NzAwNEYxMDJBIC8qIEF1eGlsaWFyeVByb2Nlc3Mu
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXV4aWxpYXJ5UHJvY2Vzcy5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2QTRBNUIxMjBBMkNDRDAw
QzA1QjdGIC8qIEFQSUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQ
SUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0EzM0IzMTMwQjMwOEMw
MEY4MENCNSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODY3NSw2ICs4Njc4LDggQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMzFBMkVDNTMxNDg5OTgyNTAwODEwRDcxIC8q
IE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi8sCisJCQkJNTE2NDY1N0UyN0E5Qzc2
NTAwRTFGMkJBIC8qIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmNwcCAqLywKKwkJ
CQk1MTY0NjU3RjI3QTlDNzY3MDBFMUYyQkEgLyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhh
bmRsZXIuaCAqLywKIAkJCQkzMUEyRUM0MTE0ODk5N0JFMDA4MTBENzEgLyogV2ViTm90aWZpY2F0
aW9uLmNwcCAqLywKIAkJCQkzMUEyRUM0MjE0ODk5N0JFMDA4MTBENzEgLyogV2ViTm90aWZpY2F0
aW9uLmggKi8sCiAJCQkJNTE0NTI3MDYyNzFGQkVDMTAwMDQ2N0I2IC8qIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8sCkBAIC0xMzkxOSw2ICsxMzkyNCw3IEBACiAJ
CQkJQkM0QTYyOTcxNDczMTNBMDAwNkM2ODFBIC8qIFdLQ29ubmVjdGlvblJlZi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTU5NkRENkEyNTFFNzFENDAwQzI3NUE3IC8qIFdLQ29udGFjdFBpY2tlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNEMjg2NTQxRTcyMzVCMTAwOTRGREM4IC8qIFdLQ29udGVu
dFJ1bGVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTY0NjU4MDI3QTlDNzc0MDBFMUYyQkEg
LyogU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDRDI4NjU1MUU3MjM1QjgwMDk0RkRDOCAvKiBXS0NvbnRlbnRSdWxlTGlzdEludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1QzUxMzlEQjI1OTI3RDgwMDA5QzNFMzAgLyogV0tDb250ZW50
UnVsZUxpc3RQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0QyODY1MTFFNzIzNTk5MDA5
NEZEQzggLyogV0tDb250ZW50UnVsZUxpc3RTdG9yZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDg0ZTU0YmIzOTExOC4uNDlmNWIzMjU5MGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNzc2LDExICs3NzYsMTUgQEAgdm9pZCBXS0J1
bmRsZVBhZ2VQb3N0TWVzc2FnZUlnbm9yaW5nRnVsbHlTeW5jaHJvbm91c01vZGUoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2VSZWYKIAogdm9pZCBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdl
Rm9yVGVzdGluZyhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5h
bWVSZWYsIFdLVHlwZVJlZiBtZXNzYWdlQm9keVJlZiwgV0tUeXBlUmVmKiByZXR1cm5SZXRhaW5l
ZERhdGFSZWYpCiB7Ci0gICAgV2ViS2l0OjpXZWJQYWdlKiBwYWdlID0gV2ViS2l0Ojp0b0ltcGwo
cGFnZVJlZik7Ci0gICAgcGFnZS0+bGF5b3V0SWZOZWVkZWQoKTsKKyAgICBXZWJLaXQ6OnRvSW1w
bChwYWdlUmVmKS0+bGF5b3V0SWZOZWVkZWQoKTsKIAorICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5j
aHJvbm91c01lc3NhZ2VGb3JUZXN0aW5nV2l0aG91dExheW91dChwYWdlUmVmLCBtZXNzYWdlTmFt
ZVJlZiwgbWVzc2FnZUJvZHlSZWYsIHJldHVyblJldGFpbmVkRGF0YVJlZik7Cit9CisKK3ZvaWQg
V0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmdXaXRob3V0TGF5b3V0
KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZVJlZiwgV0tU
eXBlUmVmIG1lc3NhZ2VCb2R5UmVmLCBXS1R5cGVSZWYqIHJldHVyblJldGFpbmVkRGF0YVJlZikK
K3sKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHJldHVybkRhdGE7Ci0gICAgcGFnZS0+cG9zdFN5
bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoV2ViS2l0Ojp0b1dURlN0cmluZyhtZXNzYWdlTmFt
ZVJlZiksIFdlYktpdDo6dG9JbXBsKG1lc3NhZ2VCb2R5UmVmKSwgcmV0dXJuRGF0YSk7CisgICAg
V2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnBvc3RTeW5jaHJvbm91c01lc3NhZ2VGb3JUZXN0aW5n
KFdlYktpdDo6dG9XVEZTdHJpbmcobWVzc2FnZU5hbWVSZWYpLCBXZWJLaXQ6OnRvSW1wbChtZXNz
YWdlQm9keVJlZiksIHJldHVybkRhdGEpOwogICAgIGlmIChyZXR1cm5SZXRhaW5lZERhdGFSZWYp
CiAgICAgICAgICpyZXR1cm5SZXRhaW5lZERhdGFSZWYgPSBXZWJLaXQ6OnRvQVBJKHJldHVybkRh
dGEubGVha1JlZigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAppbmRleCBjNWYxY2UzMWE0
NTEuLjFmMmZmMjc0NGNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaApAQCAtMTI5LDYgKzEy
OSw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVBvc3RNZXNzYWdlKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlCiAKIC8vIFN3aXRjaGVzIGEgY29ubmVjdGlv
biBpbnRvIGEgZnVsbHkgc3luY2hyb25vdXMgbW9kZSwgc28gYWxsIG1lc3NhZ2VzIGJlY29tZSBz
eW5jaHJvbm91cyB1bnRpbCB3ZSBnZXQgYSByZXNwb25zZS4KIFdLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2VGb3JUZXN0aW5nKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS1R5
cGVSZWYqIHJldHVyblJldGFpbmVkRGF0YSk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VQ
b3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZ1dpdGhvdXRMYXlvdXQoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHks
IFdLVHlwZVJlZiogcmV0dXJuUmV0YWluZWREYXRhKTsKIC8vIFNhbWUgYXMgV0tCdW5kbGVQYWdl
UG9zdE1lc3NhZ2UoKSBidXQgdGhlIG1lc3NhZ2UgY2Fubm90IGJlY29tZSBzeW5jaHJvbm91cywg
ZXZlbiBpZiB0aGUgY29ubmVjdGlvbiBpcyBpbiBmdWxseSBzeW5jaHJvbm91cyBtb2RlLgogV0tf
RVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2VJZ25vcmluZ0Z1bGx5U3luY2hyb25v
dXNNb2RlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tU
eXBlUmVmIG1lc3NhZ2VCb2R5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApp
bmRleCA5YzFjMTJkODg1NTQuLmU5NWI3Y2FlODZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOb3RpZmlj
YXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uLmgi
CiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAgLTQyLDYgKzQzLDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL05vdGlmaWNhdGlvbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NXQ29udGV4dE1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXR0aW5ncy5oPgpAQCAtMTIxLDI1ICsxMjMsNDIgQEAgdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyOjpyZW1vdmVBbGxQZXJtaXNzaW9uc0ZvclRlc3RpbmcoKQogfQogCiAjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCi10ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmROb3Rp
ZmljYXRpb25NZXNzYWdlKFdlYlByb2Nlc3MmIHByb2Nlc3MsIFUmJiBtZXNzYWdlLCBXZWJQYWdl
JiBwYWdlKQordGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShVJiYgbWVzc2FnZSwgTm90aWZpY2F0aW9uJiBub3Rp
ZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiB7CisgICAgaWYgKCFwYWdlICYmICFub3RpZmljYXRp
b24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICNp
ZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKICAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5idWlsdEluTm90aWZpY2F0aW9uc0VuYWJsZWQoKSkK
LSAgICAgICAgcmV0dXJuIHByb2Nlc3MuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgcGFnZS5zZXNzaW9uSUQoKS50b1VJ
bnQ2NCgpKTsKKyAgICAgICAgcmV0dXJuIG1fcHJvY2Vzcy5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBub3RpZmljYXRp
b24uZGF0YSgpLnNvdXJjZVNlc3Npb24udG9VSW50NjQoKSk7CiAjZW5kaWYKLSAgICByZXR1cm4g
cHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKFdURk1vdmUobWVzc2FnZSks
IHBhZ2UuaWRlbnRpZmllcigpKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJZGVudGlmaWVyOworICAgIGlmIChwYWdlKQorICAgICAgICBwYWdlSWRl
bnRpZmllciA9IHBhZ2UtPmlkZW50aWZpZXIoKTsKKyAgICBlbHNlIGlmIChhdXRvKiBjb25uZWN0
aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKSB7CisgICAg
ICAgIC8vIFBhZ2VsZXNzIG5vdGlmaWNhdGlvbiBtZXNzYWdlcyBhcmUsIGJ5IGRlZmF1bHQsIG9u
IGJlaGFsZiBvZiBhIHNlcnZpY2Ugd29ya2VyLgorICAgICAgICAvLyBTbyB1c2UgdGhlIHNlcnZp
Y2Ugd29ya2VyIGNvbm5lY3Rpb24ncyBwYWdlIGlkZW50aWZpZXIuCisgICAgICAgIHBhZ2VJZGVu
dGlmaWVyID0gY29ubmVjdGlvbi0+cGFnZUlkZW50aWZpZXIoKTsKKyAgICB9CisKKyAgICBBU1NF
UlQocGFnZUlkZW50aWZpZXIpOworCisgICAgcmV0dXJuIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKFdURk1vdmUobWVzc2FnZSksICpwYWdlSWRlbnRpZmllcik7CiB9
CiAjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCiAKIGJvb2wgV2ViTm90aWZpY2F0aW9u
TWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkK
IHsKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKLSAgICBpZiAoIXBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkubm90aWZpY2F0aW9uc0Vu
YWJsZWQoKSkKKyAgICBpZiAocGFnZSAmJiAhcGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5u
b3RpZmljYXRpb25zRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX25v
dGlmaWNhdGlvbklETWFwLnNldChub3RpZmljYXRpb24uaWRlbnRpZmllcigpLCAmbm90aWZpY2F0
aW9uKTsKKyAgICBpZiAoIXNlbmROb3RpZmljYXRpb25NZXNzYWdlKE1lc3NhZ2VzOjpOb3RpZmlj
YXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OlNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9u
LmRhdGEoKSksIG5vdGlmaWNhdGlvbiwgcGFnZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKG1fcHJvY2VzcywgTWVzc2FnZXM6Ok5vdGlmaWNh
dGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6U2hvd05vdGlmaWNhdGlvbihub3RpZmljYXRpb24u
ZGF0YSgpKSwgKnBhZ2UpOworICAgIG1fbm90aWZpY2F0aW9uSURNYXAuYWRkKG5vdGlmaWNhdGlv
bi5pZGVudGlmaWVyKCksICZub3RpZmljYXRpb24pOwogICAgIHJldHVybiB0cnVlOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKQEAgLTE1MCwxNiArMTY5LDE2IEBAIGJv
b2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlv
biwgV2ViUGFnZSogcGFnZSkKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWwo
Tm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiB7Ci0jaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCi0gICAgaWYgKCFwYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLm5v
dGlmaWNhdGlvbnNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoaXNNYWlu
UnVuTG9vcCgpKTsKIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIGF1dG8gbWFwcGVk
Tm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uLmlkZW50
aWZpZXIoKSk7CiAgICAgaWYgKCFtYXBwZWROb3RpZmljYXRpb24pCiAgICAgICAgIHJldHVybjsK
ICAgICBBU1NFUlQobWFwcGVkTm90aWZpY2F0aW9uID09ICZub3RpZmljYXRpb24pOwogCi0gICAg
c2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UobV9wcm9jZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpDYW5jZWxOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmlk
ZW50aWZpZXIoKSksICpwYWdlKTsKKyAgICBpZiAoIXNlbmROb3RpZmljYXRpb25NZXNzYWdlKE1l
c3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OkNhbmNlbE5vdGlmaWNh
dGlvbihub3RpZmljYXRpb24uaWRlbnRpZmllcigpKSwgbm90aWZpY2F0aW9uLCBwYWdlKSkKKyAg
ICAgICAgcmV0dXJuOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKICAg
ICBVTlVTRURfUEFSQU0ocGFnZSk7CkBAIC0xNjgsNiArMTg3LDggQEAgdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyOjpjYW5jZWwoTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sIFdlYlBhZ2Uq
IHBhZ2UpCiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNh
dGlvbihOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKIHsKKyAgICBB
U1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAg
IFJlZiBwcm90ZWN0ZWROb3RpZmljYXRpb24geyBub3RpZmljYXRpb24gfTsKIApAQCAtMTc2LDcg
KzE5Nyw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNh
dGlvbihOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwKICAgICAgICAgcmV0dXJuOwogICAgIEFT
U0VSVCh0YWtlbk5vdGlmaWNhdGlvbiA9PSAmbm90aWZpY2F0aW9uKTsKIAotICAgIHNlbmROb3Rp
ZmljYXRpb25NZXNzYWdlKG1fcHJvY2VzcywgTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlcjo6RGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24uaWRlbnRp
ZmllcigpKSwgKnBhZ2UpOworICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKE1lc3NhZ2VzOjpO
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OkRpZERlc3Ryb3lOb3RpZmljYXRpb24o
bm90aWZpY2F0aW9uLmlkZW50aWZpZXIoKSksIG5vdGlmaWNhdGlvbiwgcGFnZSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsK
QEAgLTE4NSw2ICsyMDYsOCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ry
b3lOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sCiAKIHZvaWQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmlj
YXRpb25JRCkKIHsKKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKwogI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQogICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IG1f
bm90aWZpY2F0aW9uSURNYXAuZ2V0KG5vdGlmaWNhdGlvbklEKTsKICAgICBpZiAoIW5vdGlmaWNh
dGlvbikKQEAgLTE5OCw2ICsyMjEsOCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRp
ZFNob3dOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCiAKIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90
aWZpY2F0aW9uSUQpCiB7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CisKICNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24g
PSBtX25vdGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRpb25JRCk7CiAgICAgaWYgKCFub3Rp
ZmljYXRpb24pCkBAIC0yMTMsNiArMjM4LDggQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpkaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKIAogdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbG9zZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVj
dG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpCiB7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3Ao
KSk7CisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBzaXplX3QgY291bnQgPSBub3Rp
ZmljYXRpb25JRHMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IGU2MzUxZmRmOTYxNi4uNDll
YTcxODQ1NWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC04MSw2ICs4MSw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDbG9zZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9y
PFVVSUQ+JiBub3RpZmljYXRpb25JRHMpOwogICAgIHZvaWQgZGlkUmVtb3ZlTm90aWZpY2F0aW9u
RGVjaXNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcmlnaW5TdHJpbmdzKTsKIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UoVSYmIG1lc3Nh
Z2UsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiYsIFdlYlBhZ2UqKTsKKwogICAgIFdlYlByb2Nlc3Mm
IG1fcHJvY2VzczsKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmgKaW5kZXggYzFlZGQ5ZjBhMmVjLi4xZTMxNDBmNjgyZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtNjYsNiArNjYsOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOwogCisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3BhZ2VJRDsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgdXBk
YXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmlj
YXRpb25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAKaW5kZXggYzI0ZWQzN2Q3NmVmLi42NzExMWE4NGE2
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJOb3RpZmljYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuY3BwCkBAIC00MCwzNCArNDAsNTMg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJOb3RpZmljYXRpb25DbGllbnQ6OldlYk5v
dGlmaWNhdGlvbkNsaWVudChXZWJQYWdlKiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2UpCiB7Cisg
ICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6
fldlYk5vdGlmaWNhdGlvbkNsaWVudCgpCiB7CisgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7
CiB9CiAKIGJvb2wgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpzaG93KE5vdGlmaWNhdGlvbiYgbm90
aWZpY2F0aW9uKQogewotICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVt
ZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPnNob3cobm90aWZpY2F0aW9uLCBtX3BhZ2Up
OworICAgIGJvb2wgcmVzdWx0OworICAgIGNhbGxPbk1haW5SdW5Mb29wQW5kV2FpdChbJnJlc3Vs
dCwgcHJvdGVjdGVkTm90aWZpY2F0aW9uID0gUmVmIHsgbm90aWZpY2F0aW9uIH0sIHBhZ2UgPSBt
X3BhZ2VdKCkgeworICAgICAgICByZXN1bHQgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBw
bGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPnNob3cocHJvdGVjdGVkTm90aWZpY2F0
aW9uLmdldCgpLCBwYWdlKTsKKyAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lk
IFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2FuY2VsKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9u
KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0
aW9uTWFuYWdlcj4oKS0+Y2FuY2VsKG5vdGlmaWNhdGlvbiwgbV9wYWdlKTsKKyAgICBjYWxsT25N
YWluUnVuTG9vcEFuZFdhaXQoW3Byb3RlY3RlZE5vdGlmaWNhdGlvbiA9IFJlZiB7IG5vdGlmaWNh
dGlvbiB9LCBwYWdlID0gbV9wYWdlXSgpIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5jYW5jZWwocHJvdGVjdGVk
Tm90aWZpY2F0aW9uLmdldCgpLCBwYWdlKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJOb3RpZmlj
YXRpb25DbGllbnQ6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3RpZmljYXRpb24mIG5v
dGlmaWNhdGlvbikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0
aW9uLCBtX3BhZ2UpOworICAgIC8vIE1ha2Ugc3VyZSB0aGlzIE5vdGlmaWNhdGlvbiBvYmplY3Qg
aXMgZGVhbGxvY2F0ZWQgb24gdGhpcyB0aHJlYWQgYnkgaG9sZGluZyBvbmUgbGFzdCByZWYoKSB0
byBpdCBoZXJlCisgICAgYXV0byBsYXN0Tm90aWZpY2F0aW9uUmVmID0gUmVmIHsgbm90aWZpY2F0
aW9uIH07CisKKyAgICBjYWxsT25NYWluUnVuTG9vcEFuZFdhaXQoWyZub3RpZmljYXRpb24sIHBh
Z2UgPSBtX3BhZ2VdKCkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVt
ZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90
aWZpY2F0aW9uLCBwYWdlKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25DbGll
bnQ6Om5vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKQogewotICAgIGRlbGV0ZSB0aGlz
OworICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlzXSB7CisgICAgICAgIGRlbGV0ZSB0aGlzOwor
ICAgIH0pOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Np
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUGVybWlzc2lvbkhhbmRsZXImJiBw
ZXJtaXNzaW9uSGFuZGxlcikKIHsKKyAgICAvLyBPbmx5IFdpbmRvdyBjbGllbnRzIGNhbiByZXF1
ZXN0IHBlcm1pc3Npb24KKyAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKKyAgICBBU1NFUlQo
bV9wYWdlKTsKKwogICAgIGF1dG8qIHNlY3VyaXR5T3JpZ2luID0gY29udGV4dC5zZWN1cml0eU9y
aWdpbigpOwogICAgIGlmICghc2VjdXJpdHlPcmlnaW4pCiAgICAgICAgIHJldHVybiBwZXJtaXNz
aW9uSGFuZGxlcihOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb246OkRlbmllZCk7CkBAIC03
Niw5ICs5NSwyMCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Np
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUAogCiBOb3RpZmljYXRpb25DbGll
bnQ6OlBlcm1pc3Npb24gV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjaGVja1Blcm1pc3Npb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBpZiAoIWNvbnRleHQgfHwgIWNv
bnRleHQtPmlzRG9jdW1lbnQoKSB8fCAhY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSkKKyAgICBp
ZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Np
b246OkRlbmllZDsKKyAgICBpZiAoIWNvbnRleHQtPmlzRG9jdW1lbnQoKSAmJiAhY29udGV4dC0+
aXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkKICAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlv
bkNsaWVudDo6UGVybWlzc2lvbjo6RGVuaWVkOwotICAgIHJldHVybiBtX3BhZ2UtPm5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpLT5wZXJtaXNzaW9uTGV2ZWwoY29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpKTsKKworICAgIGF1dG8qIG9yaWdpbiA9IGNvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCk7CisgICAgaWYgKCFvcmlnaW4pCisgICAgICAgIHJldHVybiBOb3Rp
ZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb246OkRlbmllZDsKKworICAgIE5vdGlmaWNhdGlvbkNs
aWVudDo6UGVybWlzc2lvbiByZXN1bHRQZXJtaXNzaW9uOworICAgIGNhbGxPbk1haW5SdW5Mb29w
QW5kV2FpdChbJnJlc3VsdFBlcm1pc3Npb24sIG9yaWdpbiA9IG9yaWdpbi0+ZGF0YSgpLnRvU3Ry
aW5nKCkuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgcmVzdWx0UGVybWlzc2lvbiA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+
cG9saWN5Rm9yT3JpZ2luKG9yaWdpbik7CisgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdFBlcm1p
c3Npb247CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5oCmluZGV4IGRjZDIwODk0NjJmMS4uMWJlZDkxODcwN2I2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlm
aWNhdGlvbkNsaWVudC5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1
ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGVybWlzc2lv
bkhhbmRsZXImJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50OjpQ
ZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgCi0gICAgV2ViUGFnZSogbV9wYWdlOworICAgIFdlYlBhZ2UqIG1f
cGFnZSB7IG51bGxwdHIgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGEzMjE2YTdiN2IwMC4u
ZjhkMzBiMGE1ZWE4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjItMDItMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uLnNob3dOb3RpZmljYXRpb24oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI3MjIKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4K
KworICAgICAgICBUbyByZWxpYWJseSBzdXBwb3J0IHRlc3RpbmcgU2VydmljZVdvcmtlciBub3Rp
ZmljYXRpb25zLCBUZXN0UnVubmVyIG5lZWRlZCB0byBhY3R1YWxseSBncmFudC9kZW55IHBlcm1p
c3Npb25zIGluIHRoZSBVSSBwcm9jZXNzCisgICAgICAgIGxpa2UgYSBwcm9wZXIgTm90aWZpY2F0
aW9uUHJvdmlkZXIgd291bGQuCisgICAgICAgIAorICAgICAgICBJdCBhbHNvIGhhcyB0byB1bmRl
cnN0YW5kIHNob3dpbmcgYSBub3RpZmljYXRpb24gd2l0aG91dCBhbiBhc3NvY2lhdGVkIFdLUGFn
ZS4KKyAgICAgICAgCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlOjpwb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VX
b3JrZXJOb3RpZmljYXRpb25zKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmg6CisgICAgICAgIAorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RS
dW5uZXI6OmdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgIChXVFI6OlRl
c3RSdW5uZXI6OmRlbnlXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3JrZXJO
b3RpZmljYXRpb25zKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZVBh
Z2VDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmdyYW50Tm90
aWZpY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkZW55
Tm90aWZpY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpz
aW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAg
IChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChXVFI6OldlYk5v
dGlmaWNhdGlvblByb3ZpZGVyOjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcik6CisgICAgICAgIChX
VFI6Om5vdGlmaWNhdGlvbk1hbmFnZXJGb3JQYWdlKToKKyAgICAgICAgKFdUUjo6V2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXI6OnNob3dXZWJOb3RpZmljYXRpb24pOgorICAgICAgICAoV1RSOjpXZWJO
b3RpZmljYXRpb25Qcm92aWRlcjo6YWRkTm90aWZpY2F0aW9uTWFuYWdlcik6CisgICAgICAgIChX
VFI6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucyk6Cisg
ICAgICAgIChXVFI6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzZXRQZXJtaXNzaW9uKToKKyAg
ICAgICAgKFdUUjo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0
aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXVFI6Oldl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZXNldCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oOgorCiAyMDIyLTAyLTA4ICBKb25hdGhhbiBCZWRh
cmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBnaXQtd2Via2l0IHNldHVwIHNob3Vs
ZCBhbGxvdyBjaGFuZ2luZyB0aGUgY3JlZGVudGlhbHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
CmluZGV4IDhkZTY4MWIyMjI0MS4uZGQzOTc2M2FjNTEyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwKQEAgLTIwOCw2ICsyMDgsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdW5k
ZWZpbmVkIGRlbnlXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKERPTVN0cmluZyBvcmlnaW4pOwog
ICAgIHVuZGVmaW5lZCByZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwogICAg
IHVuZGVmaW5lZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKG9iamVjdCBub3RpZmljYXRp
b24pOworICAgIHVuZGVmaW5lZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2Vydmlj
ZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKIAogICAgIC8vIEdlb2xvY2F0aW9uCiAgICAgdW5kZWZp
bmVkIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sZWFuIHZhbHVlKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKaW5kZXggMzNlNzBhZjMyYTZkLi4wZDBkMWZmYjYwMDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBA
IC02NjgsNiArNjY4LDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RTaW11bGF0ZVdlYk5v
dGlmaWNhdGlvbkNsaWNrKFdLRGF0YVJlZiBub3RpZmljYXRpb25JRCkKICAgICBwb3N0UGFnZU1l
c3NhZ2UoIlNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2siLCBub3RpZmljYXRpb25JRCk7CiB9
CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNr
Rm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKQoreworICAgIHBvc3RQYWdlTWVzc2FnZSgi
U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25z
Iik7Cit9CisKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RTZXRBZGRzVmlzaXRlZExpbmtzKGJv
b2wgYWRkc1Zpc2l0ZWRMaW5rcykKIHsKICAgICBwb3N0UGFnZU1lc3NhZ2UoIlNldEFkZHNWaXNp
dGVkTGlua3MiLCBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShhZGRzVmlzaXRlZExpbmtzKSkpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5oCmluZGV4IGJjMTQ3NWNhZjdmYS4uMGE4NTk5NTgwZmFjIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5o
CkBAIC05NSw2ICs5NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RTZXRXaW5kb3dJc0tleShi
b29sKTsKICAgICB2b2lkIHBvc3RTZXRWaWV3U2l6ZShkb3VibGUgd2lkdGgsIGRvdWJsZSBoZWln
aHQpOwogICAgIHZvaWQgcG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tEYXRhUmVm
IG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIHBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNs
aWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKICAgICB2b2lkIHBvc3RTZXRBZGRz
VmlzaXRlZExpbmtzKGJvb2wpOwogCiAgICAgLy8gR2VvbG9jYXRpb24uCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA3
ODFiODE2OTFhZmMuLjE5ZmI5Mzg2OWRjZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xNDcsMTAgKzE0NywyMiBA
QCBzdGF0aWMgYm9vbCBwb3N0U3luY2hyb25vdXNNZXNzYWdlUmV0dXJuaW5nQm9vbGVhbihjb25z
dCBjaGFyKiBuYW1lKQogICAgIHJldHVybiBwb3N0U3luY2hyb25vdXNNZXNzYWdlUmV0dXJuaW5n
Qm9vbGVhbihuYW1lLCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IHsgfSk7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0YXRpYyBXS1JldGFpblB0cjxXS1R5cGVSZWY+IHBvc3RTeW5jaHJvbm91
c1BhZ2VNZXNzYWdlV2l0aFJldHVyblZhbHVlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFdLUmV0
YWluUHRyPFQ+JiB2YWx1ZSkKK2VudW0gY2xhc3MgV2l0aExheW91dCA6IGJvb2wgeworICAgIE5v
LAorICAgIFllcworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFdLUmV0YWluUHRy
PFdLVHlwZVJlZj4gcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2VXaXRoUmV0dXJuVmFsdWUoY29u
c3QgY2hhciogbmFtZSwgY29uc3QgV0tSZXRhaW5QdHI8VD4mIHZhbHVlLCBXaXRoTGF5b3V0IHdp
dGhMYXlvdXQgPSBXaXRoTGF5b3V0OjpZZXMpCiB7CiAgICAgV0tUeXBlUmVmIHJhd1JldHVyblZh
bHVlID0gbnVsbHB0cjsKLSAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9y
VGVzdGluZyhwYWdlKCksIHRvV0sobmFtZSkuZ2V0KCksIHZhbHVlLmdldCgpLCAmcmF3UmV0dXJu
VmFsdWUpOworICAgIHN3aXRjaCAod2l0aExheW91dCkgeworICAgIGNhc2UgV2l0aExheW91dDo6
Tm86CisgICAgICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2VGb3JUZXN0aW5n
V2l0aG91dExheW91dChwYWdlKCksIHRvV0sobmFtZSkuZ2V0KCksIHZhbHVlLmdldCgpLCAmcmF3
UmV0dXJuVmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdpdGhMYXlvdXQ6OlllczoK
KyAgICAgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcocGFn
ZSgpLCB0b1dLKG5hbWUpLmdldCgpLCB2YWx1ZS5nZXQoKSwgJnJhd1JldHVyblZhbHVlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQogICAgIHJldHVybiBhZG9wdFdLKHJhd1JldHVyblZhbHVlKTsK
IH0KIApAQCAtODY3LDExICs4NzksMTMgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB2b2lkIFRlc3RSdW5uZXI6Omdy
YW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihKU1N0cmluZ1JlZiBvcmlnaW4pCiB7CiAgICAg
V0tCdW5kbGVTZXRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKEluamVjdGVkQnVuZGxlOjpzaW5n
bGV0b24oKS5idW5kbGUoKSwgcGFnZSgpLCB0b1dLKG9yaWdpbikuZ2V0KCksIHRydWUpOworICAg
IHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlV2l0aFJldHVyblZhbHVlKCJHcmFudE5vdGlmaWNh
dGlvblBlcm1pc3Npb24iLCB0b1dLKG9yaWdpbiksIFdpdGhMYXlvdXQ6Ok5vKTsKIH0KIAogdm9p
ZCBUZXN0UnVubmVyOjpkZW55V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihKU1N0cmluZ1JlZiBv
cmlnaW4pCiB7CiAgICAgV0tCdW5kbGVTZXRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKEluamVj
dGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgcGFnZSgpLCB0b1dLKG9yaWdpbikuZ2V0
KCksIGZhbHNlKTsKKyAgICBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZVdpdGhSZXR1cm5WYWx1
ZSgiRGVueU5vdGlmaWNhdGlvblBlcm1pc3Npb24iLCB0b1dLKG9yaWdpbiksIFdpdGhMYXlvdXQ6
Ok5vKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJt
aXNzaW9ucygpCkBAIC04ODcsNiArOTAxLDExIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2ltdWxhdGVX
ZWJOb3RpZmljYXRpb25DbGljayhKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbikKICAgICBpbmplY3Rl
ZEJ1bmRsZS5wb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhub3RpZmljYXRpb25JRC5n
ZXQoKSk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlj
a0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25zKCkKK3sKKyAgICBJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkucG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9ucygpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OnNldEdlb2xvY2F0aW9u
UGVybWlzc2lvbihib29sIGVuYWJsZWQpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJl
IGRvbmUgYnkgZnJhbWUuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDJiNzhjMWRhOTZiMS4uOTBmNWVlNDgxZjQ1IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aApAQCAtMjk0LDYgKzI5NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkZW55V2ViTm90
aWZpY2F0aW9uUGVybWlzc2lvbihKU1N0cmluZ1JlZiBvcmlnaW4pOwogICAgIHN0YXRpYyB2b2lk
IHJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAgICAgc3RhdGljIHZvaWQg
c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbik7Cisg
ICAgc3RhdGljIHZvaWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb25zKCk7CiAKICAgICAvLyBHZW9sb2NhdGlvbi4KICAgICB2b2lkIHNldEdl
b2xvY2F0aW9uUGVybWlzc2lvbihib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKaW5kZXggNGQ2ZTkwOWFiZDJhLi41MDBjNzFkNWE0YTEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC02OTYsNiArNjk2LDcgQEAgV0tS
ZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gVGVzdENvbnRyb2xsZXI6OmdlbmVyYXRl
UGFnZUNvbmZpZ3VyYXRpb24oY28KICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbm90aWZp
Y2F0aW9uTWFuYWdlciA9IFdLQ29udGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIobV9jb250ZXh0
LmdldCgpKTsKICAgICBXS05vdGlmaWNhdGlvblByb3ZpZGVyVjAgbm90aWZpY2F0aW9uS2l0ID0g
bV93ZWJOb3RpZmljYXRpb25Qcm92aWRlci5wcm92aWRlcigpOwogICAgIFdLTm90aWZpY2F0aW9u
TWFuYWdlclNldFByb3ZpZGVyKG5vdGlmaWNhdGlvbk1hbmFnZXIsICZub3RpZmljYXRpb25LaXQu
YmFzZSk7CisgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tOb3RpZmljYXRp
b25NYW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFnZXIoKSwgJm5v
dGlmaWNhdGlvbktpdC5iYXNlKTsKIAogICAgIGlmICh0ZXN0UGx1Z2luRGlyZWN0b3J5KCkpCiAg
ICAgICAgIFdLQ29udGV4dFNldEFkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5KG1fY29udGV4dC5n
ZXQoKSwgdGVzdFBsdWdpbkRpcmVjdG9yeSgpKTsKQEAgLTcxNyw2ICs3MTgsMjQgQEAgV0tSZXRh
aW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gVGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFn
ZUNvbmZpZ3VyYXRpb24oY28KICAgICByZXR1cm4gcGFnZUNvbmZpZ3VyYXRpb247CiB9CiAKK2Jv
b2wgVGVzdENvbnRyb2xsZXI6OmdyYW50Tm90aWZpY2F0aW9uUGVybWlzc2lvbihXS1N0cmluZ1Jl
ZiBvcmlnaW5TdHJpbmcpCit7CisgICAgbV93ZWJOb3RpZmljYXRpb25Qcm92aWRlci5zZXRQZXJt
aXNzaW9uKHRvV1RGU3RyaW5nKG9yaWdpblN0cmluZyksIHRydWUpOworCisgICAgYXV0byBvcmln
aW4gPSBhZG9wdFdLKFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tU3RyaW5nKG9yaWdpblN0cmlu
ZykpOworICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0
aW9uUG9saWN5KFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3Rp
ZmljYXRpb25NYW5hZ2VyKCksIG9yaWdpbi5nZXQoKSwgdHJ1ZSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgVGVzdENvbnRyb2xsZXI6OmRlbnlOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdL
U3RyaW5nUmVmIG9yaWdpblN0cmluZykKK3sKKyAgICBtX3dlYk5vdGlmaWNhdGlvblByb3ZpZGVy
LnNldFBlcm1pc3Npb24odG9XVEZTdHJpbmcob3JpZ2luU3RyaW5nKSwgZmFsc2UpOworCisgICAg
YXV0byBvcmlnaW4gPSBhZG9wdFdLKFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tU3RyaW5nKG9y
aWdpblN0cmluZykpOworICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkVXBkYXRl
Tm90aWZpY2F0aW9uUG9saWN5KFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VX
b3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyKCksIG9yaWdpbi5nZXQoKSwgZmFsc2UpOworICAgIHJl
dHVybiB0cnVlOworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9w
dGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0byBhcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIgPSBvcHRpb25zLmFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigp
OwpAQCAtMjM1OSw2ICsyMzc4LDExIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNpbXVsYXRlV2Vi
Tm90aWZpY2F0aW9uQ2xpY2soV0tEYXRhUmVmIG5vdGlmaWNhdGlvbklEKQogICAgIG1fd2ViTm90
aWZpY2F0aW9uUHJvdmlkZXIuc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhtYWluV2ViVmll
dygpLT5wYWdlKCksIG5vdGlmaWNhdGlvbklEKTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6
c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25z
KCkKK3sKKyAgICBtX3dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLnNpbXVsYXRlV2ViTm90aWZpY2F0
aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpOworfQorCiB2b2lkIFRlc3RD
b250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBlbmFibGVkKQogewogICAg
IG1faXNHZW9sb2NhdGlvblBlcm1pc3Npb25TZXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGI1MmFmNjY1NTUyYi4uZTI0YWMzMjAzNGFkIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0xMjcsNiArMTI3LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0QmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUoYm9vbCB2YWx1ZSkg
eyBtX2JlZm9yZVVubG9hZFJldHVyblZhbHVlID0gdmFsdWU7IH0KIAogICAgIHZvaWQgc2ltdWxh
dGVXZWJOb3RpZmljYXRpb25DbGljayhXS0RhdGFSZWYgbm90aWZpY2F0aW9uSUQpOworICAgIHZv
aWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b25zKCk7CiAKICAgICAvLyBHZW9sb2NhdGlvbi4KICAgICB2b2lkIHNldEdlb2xvY2F0aW9uUGVy
bWlzc2lvbihib29sKTsKQEAgLTM3Myw2ICszNzQsOSBAQCBwdWJsaWM6CiAKICAgICBXS1ByZWZl
cmVuY2VzUmVmIHBsYXRmb3JtUHJlZmVyZW5jZXMoKTsKIAorICAgIGJvb2wgZ3JhbnROb3RpZmlj
YXRpb25QZXJtaXNzaW9uKFdLU3RyaW5nUmVmIG9yaWdpbik7CisgICAgYm9vbCBkZW55Tm90aWZp
Y2F0aW9uUGVybWlzc2lvbihXS1N0cmluZ1JlZiBvcmlnaW4pOworCiBwcml2YXRlOgogICAgIFdL
UmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRp
b24oY29uc3QgVGVzdE9wdGlvbnMmKTsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRDb25maWd1
cmF0aW9uUmVmPiBnZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25z
JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4
IDJjYTQyYzNlZTVjMy4uOTRhMDQ2YjIwMmUyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcApAQCAtMzk2LDYgKzM5NiwxMSBAQCB2b2lkIFRlc3RJbnZvY2F0aW9u
OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdl
TmFtZQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9y
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkuc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0ZvclNlcnZpY2VXb3JrZXJO
b3RpZmljYXRpb25zKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldEFkZHNWaXNpdGVkTGlua3Mi
KSkgewogICAgICAgICBXS1BhZ2VTZXRBZGRzVmlzaXRlZExpbmtzKFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIGJvb2xlYW5WYWx1ZShtZXNzYWdlQm9k
eSkpOwogICAgICAgICByZXR1cm47CkBAIC0xMDI1LDYgKzEwMzAsMTIgQEAgV0tSZXRhaW5QdHI8
V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZy
b21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIGFkb3B0V0soV0tVSW50NjRDcmVhdGUoY291bnQp
KTsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdl
TmFtZSwgIkdyYW50Tm90aWZpY2F0aW9uUGVybWlzc2lvbiIpKQorICAgICAgICByZXR1cm4gYWRv
cHRXSyhXS0Jvb2xlYW5DcmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmdyYW50Tm90
aWZpY2F0aW9uUGVybWlzc2lvbihzdHJpbmdWYWx1ZShtZXNzYWdlQm9keSkpKSk7CisKKyAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkRlbnlOb3RpZmlj
YXRpb25QZXJtaXNzaW9uIikpCisgICAgICAgIHJldHVybiBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0
ZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuZGVueU5vdGlmaWNhdGlvblBlcm1pc3Npb24o
c3RyaW5nVmFsdWUobWVzc2FnZUJvZHkpKSkpOworCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJJc0RvaW5nTWVkaWFDYXB0dXJlIikpCiAgICAgICAg
IHJldHVybiBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkuaXNEb2luZ01lZGlhQ2FwdHVyZSgpKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4IGM4OGYyZTlmOGRiMi4u
YWYwMjExMGMwOGZiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlm
aWNhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlm
aWNhdGlvblByb3ZpZGVyLmNwcApAQCAtNjQsNiArNjQsNyBAQCBzdGF0aWMgV0tEaWN0aW9uYXJ5
UmVmIG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiAKIFdl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyOjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcigpCiB7CisgICAg
bV9wZXJtaXNzaW9ucyA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKIH0K
IAogV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6On5XZWJOb3RpZmljYXRpb25Qcm92aWRlcigpCkBA
IC04NywxMCArODgsMTcgQEAgV0tOb3RpZmljYXRpb25Qcm92aWRlclYwIFdlYk5vdGlmaWNhdGlv
blByb3ZpZGVyOjpwcm92aWRlcigpCiAgICAgcmV0dXJuIG5vdGlmaWNhdGlvblByb3ZpZGVyOwog
fQogCitzdGF0aWMgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG5vdGlmaWNhdGlvbk1hbmFnZXJG
b3JQYWdlKFdLUGFnZVJlZiBwYWdlKQoreworICAgIGlmIChwYWdlKQorICAgICAgICByZXR1cm4g
V0tDb250ZXh0R2V0Tm90aWZpY2F0aW9uTWFuYWdlcihXS1BhZ2VHZXRDb250ZXh0KHBhZ2UpKTsK
KworICAgIHJldHVybiBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9uTWFuYWdlcigpOworfQorCiB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
OjpzaG93V2ViTm90aWZpY2F0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS05vdGlmaWNhdGlvblJlZiBu
b3RpZmljYXRpb24pCiB7Ci0gICAgYXV0byBjb250ZXh0ID0gV0tQYWdlR2V0Q29udGV4dChwYWdl
KTsKLSAgICBhdXRvIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBXS0NvbnRleHRHZXROb3RpZmljYXRp
b25NYW5hZ2VyKGNvbnRleHQpOworICAgIGF1dG8gbm90aWZpY2F0aW9uTWFuYWdlciA9IG5vdGlm
aWNhdGlvbk1hbmFnZXJGb3JQYWdlKHBhZ2UpOwogICAgIEFTU0VSVChtX2tub3duTWFuYWdlcnMu
Y29udGFpbnMobm90aWZpY2F0aW9uTWFuYWdlcikpOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmll
ciA9IFdLTm90aWZpY2F0aW9uR2V0SUQobm90aWZpY2F0aW9uKTsKQEAgLTExOCw3ICsxMjYsNyBA
QCB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpjbG9zZVdlYk5vdGlmaWNhdGlvbihXS05v
dGlmaWNhdGlvblJlZiBub3RpZmljYXRpbwogCiB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
OjphZGROb3RpZmljYXRpb25NYW5hZ2VyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2Vy
KQogewotICAgIEFTU0VSVCghbV9rbm93bk1hbmFnZXJzLmNvbnRhaW5zKG1hbmFnZXIpKTsKKyAg
ICBBU1NFUlQoIW1fa25vd25NYW5hZ2Vycy5jb250YWlucyhtYW5hZ2VyKSB8fCBtYW5hZ2VyID09
IFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25N
YW5hZ2VyKCkpOwogICAgIG1fa25vd25NYW5hZ2Vycy5hZGQobWFuYWdlcik7CiB9CiAKQEAgLTE0
NSw4ICsxNTMsMTQgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cmVtb3ZlTm90aWZp
Y2F0aW9uTWFuYWdlcihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYKIAogV0tEaWN0aW9uYXJ5UmVm
IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucygpCiB7Ci0g
ICAgLy8gSW5pdGlhbCBwZXJtaXNzaW9ucyBhcmUgYWx3YXlzIGVtcHR5LgotICAgIHJldHVybiBX
S011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCk7CisgICAgV0tSZXRhaW4obV9wZXJtaXNzaW9ucy5n
ZXQoKSk7CisgICAgcmV0dXJuIG1fcGVybWlzc2lvbnMuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXI6OnNldFBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGJv
b2wgYWxsb3dlZCkKK3sKKyAgICBhdXRvIHdrQWxsb3dlZCA9IGFkb3B0V0soV0tCb29sZWFuQ3Jl
YXRlKGFsbG93ZWQpKTsKKyAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKG1fcGVybWlzc2lvbnMuZ2V0
KCksIHRvV0sob3JpZ2luKS5nZXQoKSwgd2tBbGxvd2VkLmdldCgpKTsKIH0KIAogdm9pZCBXZWJO
b3RpZmljYXRpb25Qcm92aWRlcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS1BhZ2VS
ZWYsIFdLRGF0YVJlZiBub3RpZmljYXRpb25JRCkKQEAgLTE1Nyw2ICsxNzEsMTYgQEAgdm9pZCBX
ZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS1Bh
Z2VSZWYsIFdLRGF0YVJlZgogICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xp
Y2tOb3RpZmljYXRpb25fYihtX293bmluZ01hbmFnZXIuZ2V0KGlkZW50aWZpZXIpLCBub3RpZmlj
YXRpb25JRCk7CiB9CiAKK3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNpbXVsYXRlV2Vi
Tm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpCit7CisgICAg
YXV0byBzaGFyZWRNYW5hZ2VyID0gV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2Vydmlj
ZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFnZXIoKTsKKyAgICBmb3IgKGF1dG8mIGl0ZXJhdG9yIDog
bV9vd25pbmdNYW5hZ2VyKSB7CisgICAgICAgIGlmIChpdGVyYXRvci52YWx1ZSAhPSBzaGFyZWRN
YW5hZ2VyKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFdLTm90aWZpY2F0aW9uTWFu
YWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25fYihzaGFyZWRNYW5hZ2VyLCB1dWlkVG9E
YXRhKGl0ZXJhdG9yLmtleSkuZ2V0KCkpOworICAgIH0KK30KKwogdm9pZCBXZWJOb3RpZmljYXRp
b25Qcm92aWRlcjo6cmVzZXQoKQogewogICAgIGZvciAoYXV0byBpdGVyYXRvciA6IG1fb3duaW5n
TWFuYWdlcikgewpAQCAtMTY2LDYgKzE5MCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlk
ZXI6OnJlc2V0KCkKICAgICB9CiAKICAgICBtX293bmluZ01hbmFnZXIuY2xlYXIoKTsKKyAgICBt
X3Blcm1pc3Npb25zID0gYWRvcHRXSyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXIuaAppbmRleCAwYzM4N2E2ZTZiNTUuLjU3YjZjZmFhNTEyZSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaApA
QCAtNDksMTEgKzQ5LDE2IEBAIHB1YmxpYzoKICAgICBXS0RpY3Rpb25hcnlSZWYgbm90aWZpY2F0
aW9uUGVybWlzc2lvbnMoKTsKIAogICAgIHZvaWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlj
ayhXS1BhZ2VSZWYsIFdLRGF0YVJlZiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBzaW11bGF0
ZVdlYk5vdGlmaWNhdGlvbkNsaWNrRm9yU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbnMoKTsKKwog
ICAgIHZvaWQgcmVzZXQoKTsKIAorICAgIHZvaWQgc2V0UGVybWlzc2lvbihjb25zdCBTdHJpbmcm
IG9yaWdpbiwgYm9vbCBhbGxvd2VkKTsKKwogcHJpdmF0ZToKICAgICBIYXNoU2V0PFdLUmV0YWlu
UHRyPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4+IG1fa25vd25NYW5hZ2VyczsKICAgICBIYXNo
TWFwPFVVSUQsIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4gbV9vd25pbmdNYW5hZ2VyOworICAg
IFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1fcGVybWlzc2lvbnM7CiB9Owog
CiB9Cg==
</data>
<flag name="commit-queue"
          id="478713"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>