<?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>218476</bug_id>
          
          <creation_ts>2020-11-02 19:42:33 -0800</creation_ts>
          <short_desc>Implement basic permission check for SpeechRecognition</short_desc>
          <delta_ts>2020-11-13 18:17:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1703800</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-02 19:42:33 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703827</commentid>
    <comment_count>1</comment_count>
      <attachid>413007</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-02 23:40:13 -0800</bug_when>
    <thetext>Created attachment 413007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704684</commentid>
    <comment_count>2</comment_count>
      <attachid>413230</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-04 17:21:50 -0800</bug_when>
    <thetext>Created attachment 413230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704733</commentid>
    <comment_count>3</comment_count>
      <attachid>413251</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-04 22:30:53 -0800</bug_when>
    <thetext>Created attachment 413251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704738</commentid>
    <comment_count>4</comment_count>
      <attachid>413254</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-04 23:22:17 -0800</bug_when>
    <thetext>Created attachment 413254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704748</commentid>
    <comment_count>5</comment_count>
      <attachid>413260</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-04 23:42:42 -0800</bug_when>
    <thetext>Created attachment 413260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704750</commentid>
    <comment_count>6</comment_count>
      <attachid>413261</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-04 23:44:32 -0800</bug_when>
    <thetext>Created attachment 413261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705165</commentid>
    <comment_count>7</comment_count>
      <attachid>413414</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-06 01:12:51 -0800</bug_when>
    <thetext>Created attachment 413414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705247</commentid>
    <comment_count>8</comment_count>
      <attachid>413434</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-06 08:11:35 -0800</bug_when>
    <thetext>Created attachment 413434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705259</commentid>
    <comment_count>9</comment_count>
      <attachid>413434</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-06 08:52:31 -0800</bug_when>
    <thetext>Comment on attachment 413434
Patch

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

&gt; Source/WebCore/Modules/speech/SpeechRecognitionRequest.h:33
&gt; +class SpeechRecognitionRequest : public RefCounted&lt;SpeechRecognitionRequest&gt;, public CanMakeWeakPtr&lt;SpeechRecognitionRequest&gt; {

I am not sure we need SpeechRecognitionRequest to be ref counted.
Either we could use directly SpeechRecognitionRequestInfo or a unique_ptr&lt;SpeechRecognitionRequest&gt;

&gt; Source/WebCore/Modules/speech/SpeechRecognitionUpdate.h:68
&gt; +    WEBCORE_EXPORT explicit SpeechRecognitionUpdate(SpeechRecognitionConnectionClientIdentifier, SpeechRecognitionUpdateType, Content);

No need for explicit

&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:89
&gt; +    checkMicrophoneAccess();

I wonder what the exact flow should be for TCC and Safari prompts.
It could be something like:
- We check for speech recognition service access. If denied, we fail.
- We check whether there are microphones, whether they can be accessed, but without triggering TCC prompt at this point. If denied, we fail.
- We ask application (or user via a prompt) whether user is fine to give access to speech recognition service. If denied, we fail.
- We start capturing microphone at which point we might want to trigger the TCC prompt.

&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:92
&gt; +void SpeechRecognitionPermissionManager::checkMicrophoneAccess()

We should try to share code with UserMediaPermissionRequestManagerProxy::requestSystemValidation and requestAVCaptureAccessForMediaType

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h:50
&gt; +    Deque&lt;Ref&lt;SpeechRecognitionPermissionRequest&gt;&gt; m_requests;

Why should we have more than one request?
It seems that currently with your design, the server is doing the queueing in which case we could simplify things, by trying to move the Ref&lt;SpeechRecognitionPermissionRequest&gt; as a parameter to most of these methods or capture in lambdas...

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h:53
&gt; +    Optional&lt;bool&gt; m_isSpeechRecognitionServiceAccessAuthorized;

We should probably do these checks only once but this is good for now

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h:54
&gt; +    HashMap&lt;ClientOrigin, bool&gt; m_originPermissionMap;

Given we might do a prompt, I think we will probably need something like a feature policy to allow delegation to third party iframes.
In which case we might only want top level origin in the map.
This is something we should probably do for getusermedia as well.

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionRequest.h:36
&gt; +    static Ref&lt;SpeechRecognitionPermissionRequest&gt; create(const WebCore::ClientOrigin&amp; origin, CompletionHandler&lt;void(bool)&gt;&amp;&amp; completionHandler)

ClientOrigin&amp;&amp;

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionRequest.h:41
&gt; +    enum class Decision { Deny, Allow };

It seems the completion handler should take a Decision in stead of a bool

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:119
&gt; +        weakRequest-&gt;setIsWaitingForPermissionCheck(false);

I am not sure we need this flag.

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1715
&gt; +    speechRecognitionServer.iterator-&gt;value = makeUnique&lt;SpeechRecognitionServer&gt;(makeRef(*connection()), identifier, [identifier, weakThis = makeWeakPtr(this)](const ClientOrigin&amp; origin, CompletionHandler&lt;void(bool)&gt;&amp;&amp; completionHandler) {

Speech recognition server is per process and seems to enqueue requests.
Is that correct?
What happens if two pages in the same process are asking a request at the same time, with one request being done by a backgrounded page to try to show a prompt, and the visible page to wait for eternity.
It seems the enqueuing for permission at least might best be done on a per page basis.

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebSpeechRecognitionConnection.cpp:65
&gt;      send(Messages::SpeechRecognitionServer::Start(info));

It is a bit sad to create a temporary SpeechRecognitionRequestInfo which will trigger some count churns.
Maybe we should instead pass all these parameters to Messages::SpeechRecognitionServer::Start.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705281</commentid>
    <comment_count>10</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-06 09:26:54 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #9)
&gt; Comment on attachment 413434 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=413434&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/speech/SpeechRecognitionRequest.h:33
&gt; &gt; +class SpeechRecognitionRequest : public RefCounted&lt;SpeechRecognitionRequest&gt;, public CanMakeWeakPtr&lt;SpeechRecognitionRequest&gt; {
&gt; 
&gt; I am not sure we need SpeechRecognitionRequest to be ref counted.
&gt; Either we could use directly SpeechRecognitionRequestInfo or a
&gt; unique_ptr&lt;SpeechRecognitionRequest&gt;

Okay, unique_ptr&lt;SpeechRecognitionRequest&gt; sounds good.

&gt; &gt; Source/WebCore/Modules/speech/SpeechRecognitionUpdate.h:68
&gt; &gt; +    WEBCORE_EXPORT explicit SpeechRecognitionUpdate(SpeechRecognitionConnectionClientIdentifier, SpeechRecognitionUpdateType, Content);
&gt; 
&gt; No need for explicit

Will remove.

&gt;
&gt; &gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:89
&gt; &gt; +    checkMicrophoneAccess();
&gt; 
&gt; I wonder what the exact flow should be for TCC and Safari prompts.
&gt; It could be something like:
&gt; - We check for speech recognition service access. If denied, we fail.
&gt; - We check whether there are microphones, whether they can be accessed, but
&gt; without triggering TCC prompt at this point. If denied, we fail.
&gt; - We ask application (or user via a prompt) whether user is fine to give
&gt; access to speech recognition service. If denied, we fail.
&gt; - We start capturing microphone at which point we might want to trigger the
&gt; TCC prompt.
 
I see, so you are suggesting checking all existing states before any prompt. Will adjust the ordering.
 
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:92
&gt; &gt; +void SpeechRecognitionPermissionManager::checkMicrophoneAccess()
&gt; 
&gt; We should try to share code with
&gt; UserMediaPermissionRequestManagerProxy::requestSystemValidation and
&gt; requestAVCaptureAccessForMediaType

Will try merging.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h:50
&gt; &gt; +    Deque&lt;Ref&lt;SpeechRecognitionPermissionRequest&gt;&gt; m_requests;
&gt; 
&gt; Why should we have more than one request?
&gt; It seems that currently with your design, the server is doing the queueing
&gt; in which case we could simplify things, by trying to move the
&gt; Ref&lt;SpeechRecognitionPermissionRequest&gt; as a parameter to most of these
&gt; methods or capture in lambdas...

In this design, server does not cancel ongoing permission requests. So if server starts handling a SpeechRecognitionRequest, cancels it and handles next request, there can be two SpeechRecognitionPermissionRequests (since decision is not made synchronously), and we want to handle SpeechRecognitionPermissionRequests one by one, not in parallel. Otherwise we will need to record what origins are in pending permission state so we don&apos;t ask for the same origin twice?

&gt; 
&gt; &gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h:53
&gt; &gt; +    Optional&lt;bool&gt; m_isSpeechRecognitionServiceAccessAuthorized;
&gt; 
&gt; We should probably do these checks only once but this is good for now
&gt; 
&gt; &gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h:54
&gt; &gt; +    HashMap&lt;ClientOrigin, bool&gt; m_originPermissionMap;
&gt; 
&gt; Given we might do a prompt, I think we will probably need something like a
&gt; feature policy to allow delegation to third party iframes.
&gt; In which case we might only want top level origin in the map.
&gt; This is something we should probably do for getusermedia as well.

You mean I should change delegate callback to only ask for the top-level origin now?

&gt; 
&gt; &gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionRequest.h:36
&gt; &gt; +    static Ref&lt;SpeechRecognitionPermissionRequest&gt; create(const WebCore::ClientOrigin&amp; origin, CompletionHandler&lt;void(bool)&gt;&amp;&amp; completionHandler)
&gt; 
&gt; ClientOrigin&amp;&amp;

Sure.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionRequest.h:41
&gt; &gt; +    enum class Decision { Deny, Allow };
&gt; 
&gt; It seems the completion handler should take a Decision in stead of a bool

Will change.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:119
&gt; &gt; +        weakRequest-&gt;setIsWaitingForPermissionCheck(false);
&gt; 
&gt; I am not sure we need this flag.

This flag is for checking SpeechRecognitionRequest state. If it is in permission check state, which means no capturing or speech recognition yet, then we can start next request immediately, without waiting for disconnection from audio/recognition service and final results are generated. Corresponding SpeechRecognitionPermissionRequest will be proceeded to last stage.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1715
&gt; &gt; +    speechRecognitionServer.iterator-&gt;value = makeUnique&lt;SpeechRecognitionServer&gt;(makeRef(*connection()), identifier, [identifier, weakThis = makeWeakPtr(this)](const ClientOrigin&amp; origin, CompletionHandler&lt;void(bool)&gt;&amp;&amp; completionHandler) {
&gt; 
&gt; Speech recognition server is per process and seems to enqueue requests.
&gt; Is that correct?
&gt; What happens if two pages in the same process are asking a request at the
&gt; same time, with one request being done by a backgrounded page to try to show
&gt; a prompt, and the visible page to wait for eternity.
&gt; It seems the enqueuing for permission at least might best be done on a per
&gt; page basis.

Nope, server is per page now (its identifier is page identifier), and permission manager is also per page. May be we should handle request from server of visible page.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebCoreSupport/WebSpeechRecognitionConnection.cpp:65
&gt; &gt;      send(Messages::SpeechRecognitionServer::Start(info));
&gt; 
&gt; It is a bit sad to create a temporary SpeechRecognitionRequestInfo which
&gt; will trigger some count churns.
&gt; Maybe we should instead pass all these parameters to
&gt; Messages::SpeechRecognitionServer::Start.

Sure, will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705502</commentid>
    <comment_count>11</comment_count>
      <attachid>413509</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-06 20:37:25 -0800</bug_when>
    <thetext>Created attachment 413509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705505</commentid>
    <comment_count>12</comment_count>
      <attachid>413512</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-06 20:48:35 -0800</bug_when>
    <thetext>Created attachment 413512
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705507</commentid>
    <comment_count>13</comment_count>
      <attachid>413513</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-06 20:53:14 -0800</bug_when>
    <thetext>Created attachment 413513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705639</commentid>
    <comment_count>14</comment_count>
      <attachid>413555</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-08 20:50:45 -0800</bug_when>
    <thetext>Created attachment 413555
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705779</commentid>
    <comment_count>15</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-09 11:22:51 -0800</bug_when>
    <thetext>&gt; &gt; I wonder what the exact flow should be for TCC and Safari prompts.
&gt; &gt; It could be something like:
&gt; &gt; - We check for speech recognition service access. If denied, we fail.
&gt; &gt; - We check whether there are microphones, whether they can be accessed, but
&gt; &gt; without triggering TCC prompt at this point. If denied, we fail.
&gt; &gt; - We ask application (or user via a prompt) whether user is fine to give
&gt; &gt; access to speech recognition service. If denied, we fail.
&gt; &gt; - We start capturing microphone at which point we might want to trigger the
&gt; &gt; TCC prompt.
&gt;  
&gt; I see, so you are suggesting checking all existing states before any prompt.
&gt; Will adjust the ordering.

Eric mentioned that TCC microphone prompt should probably be done before the application prompt.
I was fearing that user might say no to microphone while user might have 
I guess that is fine as Speech Service TCC prompt will happen first so if user is interested, user should grant speech service, then will grant microphone access.
If user is not interested, user will deny speech service TCC prompt and will not have to see the microphone prompt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705789</commentid>
    <comment_count>16</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-09 11:40:11 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #15)
&gt; &gt; &gt; I wonder what the exact flow should be for TCC and Safari prompts.
&gt; &gt; &gt; It could be something like:
&gt; &gt; &gt; - We check for speech recognition service access. If denied, we fail.
&gt; &gt; &gt; - We check whether there are microphones, whether they can be accessed, but
&gt; &gt; &gt; without triggering TCC prompt at this point. If denied, we fail.
&gt; &gt; &gt; - We ask application (or user via a prompt) whether user is fine to give
&gt; &gt; &gt; access to speech recognition service. If denied, we fail.
&gt; &gt; &gt; - We start capturing microphone at which point we might want to trigger the
&gt; &gt; &gt; TCC prompt.
&gt; &gt;  
&gt; &gt; I see, so you are suggesting checking all existing states before any prompt.
&gt; &gt; Will adjust the ordering.
&gt; 
&gt; Eric mentioned that TCC microphone prompt should probably be done before the
&gt; application prompt.
&gt; I was fearing that user might say no to microphone while user might have 
&gt; I guess that is fine as Speech Service TCC prompt will happen first so if
&gt; user is interested, user should grant speech service, then will grant
&gt; microphone access.
&gt; If user is not interested, user will deny speech service TCC prompt and will
&gt; not have to see the microphone prompt

Okay, will change the ordering to be:
1. speech recognition TCC
2. microphone TCC
3. user/client permission</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705793</commentid>
    <comment_count>17</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-09 11:46:35 -0800</bug_when>
    <thetext>&gt; Okay, will change the ordering to be:
&gt; 1. speech recognition TCC
&gt; 2. microphone TCC
&gt; 3. user/client permission

Right, something like:
1. Check speech TCC, check microphone TCC. Deny if any is denied
2. If speech or microphone is unknown, request with TCC prompt. Deny if any is denied.
3. user/client permission</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705806</commentid>
    <comment_count>18</comment_count>
      <attachid>413555</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-09 12:07:38 -0800</bug_when>
    <thetext>Comment on attachment 413555
Patch

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

&gt; Source/WebKit/UIProcess/API/C/WKPage.cpp:2114
&gt; +        void decidePolicyForSpeechRecognitionPermissionRequest(WebPageProxy&amp; page, API::SecurityOrigin&amp; requestingOrigin, API::SecurityOrigin&amp; topOrigin, CompletionHandler&lt;void(bool)&gt;&amp;&amp; completionHandler) final

Given we go with feature permission, we should do as if requestingOrigin == topOrigin, so no need to pass the requesting origin.

&gt; Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.h:37
&gt; +void requestAVCaptureAccessForMediaTypes(Vector&lt;AVMediaType&gt;&amp;&amp;, CompletionHandler&lt;void(bool authorized)&gt;&amp;&amp;);

I am not sure having a Vector is great given we only have two options.

&gt; Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.h:38
&gt; +Optional&lt;Vector&lt;AVMediaType&gt;&gt; checkAVCaptureAccessForMediaTypesAndFilter(const Vector&lt;AVMediaType&gt;&amp; types);

Ditto.
I am not sure a Vector is great here. It might be simpler to directly return an enun.

&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:48
&gt; +void SpeechRecognitionPermissionManager::request(WebCore::ClientOrigin&amp;&amp; origin, CompletionHandler&lt;void(SpeechRecognitionPermissionDecision)&gt;&amp;&amp; completiontHandler)

It seems some oft these methods could go in the cpp file.

&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:98
&gt; +        checkAndRequestUserPermissionForOrigin();

Should it be checkSpeechRecognitionServiceAccess()?

&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:124
&gt; +    checkSpeechRecognitionServiceAccess();

It seems a bit weird to have checkMicrophoneAccess() do checkSpeechRecognitionServiceAccess().
Maybe we should rename it or restructure a bit the code.

For instance, we could have something like:
void SpeechRecognitionPermissionManager::checkAccess(CompletionHandler&lt;&gt;&amp;&amp; callback)
// Do checks first.
auto speechServiceState = speechRecognitionServiceAccessState();
if (speechServiceState == Denied) {
   callback(Deny);
   return;
}
auto microphoneState = microphoneAccessState();
if (microphoneState == Denied) {
   callback(Deny);
   return;
}
// Request checks for undetermined case.
callback = microphoneState == Granted ? WTFMove(callback) : [callback = WTFMove(callback)](bool isGranted) {
    // request microphone TCC.
    if (!isGranted)
       return callback(Denied);
     requestMicrophone([callback = WTFMove(callback)](bool isGranted) { ... });
};

if (speechServiceState == Unknown) {
   requestSpeechService([callback = WTFMove(callback)](bool isGranted) { ... });
   return;
}
callback(granted);

&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:186
&gt; +    auto topOrigin =clientOrigin.topOrigin.securityOrigin();

s/=/= /

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h:60
&gt; +    HashMap&lt;WebCore::SecurityOriginData, SpeechRecognitionPermissionDecision&gt; m_originPermissionMap;

I am not sure we need this map at all.
For getUserMedia, we are deleting the permission manager whenever the top level document changes.
We should probably do so and not persist the permission from one page to another, even if they share the same origin.
We could for instance have a { Unknown, Denied, Granted } state and reset it each time the top level document is changing.
We could also reset it from Granted to Unknown based on a timer.

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:109
&gt; +    m_permissionChecker(request.clientOrigin(), [this, weakThis = makeWeakPtr(this), weakRequest = makeWeakPtr(request)](SpeechRecognitionPermissionDecision decision) {

The issue here is that a prompt in one page would remove the prompt in another page of the same origin.
We tend not to do that for getUserMedia: we do prompt in both pages. We do not prompt if the same page is doing several requests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705830</commentid>
    <comment_count>19</comment_count>
      <attachid>413555</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-11-09 12:36:06 -0800</bug_when>
    <thetext>Comment on attachment 413555
Patch

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

&gt; Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.mm:72
&gt; +Optional&lt;Vector&lt;AVMediaType&gt;&gt; checkAVCaptureAccessForMediaTypesAndFilter(const Vector&lt;AVMediaType&gt;&amp; types)
&gt; +{

I don&apos;t think it is ever correct for `types` to be empty, so I&apos;d ASSERT that the list isn&apos;t empty here.

&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:77
&gt; +#if PLATFORM(MAC)
&gt; +    if (currentProcessIsSandboxed() &amp;&amp; !!sandbox_check(getpid(), &quot;device-microphone&quot;, SANDBOX_FILTER_NONE))
&gt; +        return false;
&gt; +#endif

Don&apos;t you also need to check TCCAccessPreflight?

However, rather than doing this specifically for speech recognition, why not move UserMediaPermissionRequestManagerProxy::permittedToCaptureAudio (and UserMediaPermissionRequestManagerProxy::permittedToCaptureVideo while you&apos;re at it) into MediaPermissionUtilities.mm so the code can be shared?

&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:115
&gt; +        m_isMicrophoneAccessAuthorized = true;

I&apos;m not sure this is right. How can capture work if we&apos;re not using mock devices and don&apos;t have AVCapture?

&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:119
&gt; +    if (m_isMicrophoneAccessAuthorized.hasValue() &amp;&amp; !m_isMicrophoneAccessAuthorized.value()) {

Is it possible for m_isMicrophoneAccessAuthorized to not have a value at this point?

&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:142
&gt; +        m_isSpeechRecognitionServiceAccessAuthorized = true;

Ditto, how can speech recognition work if HAVE_SPEECHRECOGNIZER is false?

&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:146
&gt; +    if (m_isMicrophoneAccessAuthorized.hasValue() &amp;&amp; !m_isMicrophoneAccessAuthorized.value()) {

I think you mean m_isSpeechRecognitionServiceAccessAuthorized, not m_isMicrophoneAccessAuthorized? Is it possible for it to not have a value at this point?

&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:187
&gt; +    bool shouldRequestMicrophoneAccessIfNeeded = !m_page.preferences().mockCaptureDevicesEnabled();
&gt; +    auto decisionHandler = [this, weakThis = makeWeakPtr(*this), shouldRequestMicrophoneAccessIfNeeded](bool granted) {
&gt; +        if (!weakThis)
&gt; +            return;
&gt; +
&gt; +        m_originPermissionMap.set(m_requests.first()-&gt;origin().topOrigin, granted ? SpeechRecognitionPermissionDecision::Grant : SpeechRecognitionPermissionDecision::Deny);
&gt; +        if (!granted) {
&gt; +            completeCurrentRequest(SpeechRecognitionPermissionDecision::Deny);
&gt; +            return;
&gt; +        }
&gt; +
&gt; +        if (!shouldRequestMicrophoneAccessIfNeeded) {
&gt; +            completeCurrentRequest(SpeechRecognitionPermissionDecision::Grant);
&gt; +            return;
&gt; +        }
&gt; +
&gt; +        requestMicrophoneAccessIfNeeded();
&gt; +    };
&gt; +
&gt; +    auto requestingOrigin = clientOrigin.clientOrigin.securityOrigin();
&gt; +    auto topOrigin =clientOrigin.topOrigin.securityOrigin();
&gt; +    m_page.uiClient().decidePolicyForSpeechRecognitionPermissionRequest(m_page, API::SecurityOrigin::create(requestingOrigin.get()).get(), API::SecurityOrigin::create(topOrigin.get()).get(), WTFMove(decisionHandler));

I think the order of prompts here is wrong - I think it would be more logical to show theTCC prompts before the application prompt. Since this is ultimately about speech recognition, the microphone prompt only makes sense if the user allows the speech recognizer, so I suggest this order: speech recognizer TCC, microphone access TCC, application.

&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:235
&gt; +        auto decisionHandler = makeBlockPtr([mainThreadHandler = WTFMove(mainThreadHandler)](SFSpeechRecognizerAuthorizationStatus status) mutable {

Is it safe to not create and check a weak pointer to `this`?

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:118
&gt; +            auto error = SpeechRecognitionError { SpeechRecognitionErrorType::NotAllowed, &quot;permission check fails&quot;_s };

I would change &quot;permission check fails&quot; to &quot;Permission check failed&quot; or &quot;Failed permission check&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705869</commentid>
    <comment_count>20</comment_count>
      <attachid>413555</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-09 13:47:58 -0800</bug_when>
    <thetext>Comment on attachment 413555
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/C/WKPage.cpp:2114
&gt;&gt; +        void decidePolicyForSpeechRecognitionPermissionRequest(WebPageProxy&amp; page, API::SecurityOrigin&amp; requestingOrigin, API::SecurityOrigin&amp; topOrigin, CompletionHandler&lt;void(bool)&gt;&amp;&amp; completionHandler) final
&gt; 
&gt; Given we go with feature permission, we should do as if requestingOrigin == topOrigin, so no need to pass the requesting origin.

Sure, will remove requesting origin

&gt;&gt; Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.h:37
&gt;&gt; +void requestAVCaptureAccessForMediaTypes(Vector&lt;AVMediaType&gt;&amp;&amp;, CompletionHandler&lt;void(bool authorized)&gt;&amp;&amp;);
&gt; 
&gt; I am not sure having a Vector is great given we only have two options.

I saw AVMediaType has 8 values so chose to use vector. Consider we only use 2 values for now, maybe it&apos;s Okay to make separate functions.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.h:38
&gt;&gt; +Optional&lt;Vector&lt;AVMediaType&gt;&gt; checkAVCaptureAccessForMediaTypesAndFilter(const Vector&lt;AVMediaType&gt;&amp; types);
&gt; 
&gt; Ditto.
&gt; I am not sure a Vector is great here. It might be simpler to directly return an enun.

Okay, will change to enum.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.mm:72
&gt;&gt; +{
&gt; 
&gt; I don&apos;t think it is ever correct for `types` to be empty, so I&apos;d ASSERT that the list isn&apos;t empty here.

Will change the signature of this function to not using Vector based on Youenn&apos;s comment.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:48
&gt;&gt; +void SpeechRecognitionPermissionManager::request(WebCore::ClientOrigin&amp;&amp; origin, CompletionHandler&lt;void(SpeechRecognitionPermissionDecision)&gt;&amp;&amp; completiontHandler)
&gt; 
&gt; It seems some oft these methods could go in the cpp file.

True, will move.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:77
&gt;&gt; +#endif
&gt; 
&gt; Don&apos;t you also need to check TCCAccessPreflight?
&gt; 
&gt; However, rather than doing this specifically for speech recognition, why not move UserMediaPermissionRequestManagerProxy::permittedToCaptureAudio (and UserMediaPermissionRequestManagerProxy::permittedToCaptureVideo while you&apos;re at it) into MediaPermissionUtilities.mm so the code can be shared?

I am not sure what TCCAccessPreflight does?

But moving UserMediaPermissionRequestManagerProxy::permittedToCaptureVideo into MediaPermissionUtilities.mm sounds good.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:98
&gt;&gt; +        checkAndRequestUserPermissionForOrigin();
&gt; 
&gt; Should it be checkSpeechRecognitionServiceAccess()?

We skip checks for speech recognition or microphone if using mock capture device.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:115
&gt;&gt; +        m_isMicrophoneAccessAuthorized = true;
&gt; 
&gt; I&apos;m not sure this is right. How can capture work if we&apos;re not using mock devices and don&apos;t have AVCapture?

I made permission check pass by default on platforms without speech recognition backend implementation, so we can test the APIs on all platforms (e.g. firing End event correctly when stop() is called), otherwise the tests would fail on start().

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:119
&gt;&gt; +    if (m_isMicrophoneAccessAuthorized.hasValue() &amp;&amp; !m_isMicrophoneAccessAuthorized.value()) {
&gt; 
&gt; Is it possible for m_isMicrophoneAccessAuthorized to not have a value at this point?

microphoneAuthorizationStatus == AVAuthorizationStatusNotDetermined &amp;&amp; hasDescriptionString

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:124
&gt;&gt; +    checkSpeechRecognitionServiceAccess();
&gt; 
&gt; It seems a bit weird to have checkMicrophoneAccess() do checkSpeechRecognitionServiceAccess().
&gt; Maybe we should rename it or restructure a bit the code.
&gt; 
&gt; For instance, we could have something like:
&gt; void SpeechRecognitionPermissionManager::checkAccess(CompletionHandler&lt;&gt;&amp;&amp; callback)
&gt; // Do checks first.
&gt; auto speechServiceState = speechRecognitionServiceAccessState();
&gt; if (speechServiceState == Denied) {
&gt;    callback(Deny);
&gt;    return;
&gt; }
&gt; auto microphoneState = microphoneAccessState();
&gt; if (microphoneState == Denied) {
&gt;    callback(Deny);
&gt;    return;
&gt; }
&gt; // Request checks for undetermined case.
&gt; callback = microphoneState == Granted ? WTFMove(callback) : [callback = WTFMove(callback)](bool isGranted) {
&gt;     // request microphone TCC.
&gt;     if (!isGranted)
&gt;        return callback(Denied);
&gt;      requestMicrophone([callback = WTFMove(callback)](bool isGranted) { ... });
&gt; };
&gt; 
&gt; if (speechServiceState == Unknown) {
&gt;    requestSpeechService([callback = WTFMove(callback)](bool isGranted) { ... });
&gt;    return;
&gt; }
&gt; callback(granted);

Okay, will update.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:142
&gt;&gt; +        m_isSpeechRecognitionServiceAccessAuthorized = true;
&gt; 
&gt; Ditto, how can speech recognition work if HAVE_SPEECHRECOGNIZER is false?

To make Speech APIs testable on platforms without a backend implementation of recognition.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:146
&gt;&gt; +    if (m_isMicrophoneAccessAuthorized.hasValue() &amp;&amp; !m_isMicrophoneAccessAuthorized.value()) {
&gt; 
&gt; I think you mean m_isSpeechRecognitionServiceAccessAuthorized, not m_isMicrophoneAccessAuthorized? Is it possible for it to not have a value at this point?

Yes it should be m_isSpeechRecognitionServiceAccessAuthorized!

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:186
&gt;&gt; +    auto topOrigin =clientOrigin.topOrigin.securityOrigin();
&gt; 
&gt; s/=/= /

Will change.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:187
&gt;&gt; +    m_page.uiClient().decidePolicyForSpeechRecognitionPermissionRequest(m_page, API::SecurityOrigin::create(requestingOrigin.get()).get(), API::SecurityOrigin::create(topOrigin.get()).get(), WTFMove(decisionHandler));
&gt; 
&gt; I think the order of prompts here is wrong - I think it would be more logical to show theTCC prompts before the application prompt. Since this is ultimately about speech recognition, the microphone prompt only makes sense if the user allows the speech recognizer, so I suggest this order: speech recognizer TCC, microphone access TCC, application.

Youenn mentioned this too, will restructure this.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:235
&gt;&gt; +        auto decisionHandler = makeBlockPtr([mainThreadHandler = WTFMove(mainThreadHandler)](SFSpeechRecognizerAuthorizationStatus status) mutable {
&gt; 
&gt; Is it safe to not create and check a weak pointer to `this`?

why? I think mainThreadHandler already checks weakThis

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h:60
&gt;&gt; +    HashMap&lt;WebCore::SecurityOriginData, SpeechRecognitionPermissionDecision&gt; m_originPermissionMap;
&gt; 
&gt; I am not sure we need this map at all.
&gt; For getUserMedia, we are deleting the permission manager whenever the top level document changes.
&gt; We should probably do so and not persist the permission from one page to another, even if they share the same origin.
&gt; We could for instance have a { Unknown, Denied, Granted } state and reset it each time the top level document is changing.
&gt; We could also reset it from Granted to Unknown based on a timer.

I see, permission state should be cleaned when document of page changes.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:118
&gt;&gt; +            auto error = SpeechRecognitionError { SpeechRecognitionErrorType::NotAllowed, &quot;permission check fails&quot;_s };
&gt; 
&gt; I would change &quot;permission check fails&quot; to &quot;Permission check failed&quot; or &quot;Failed permission check&quot;

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705970</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-09 19:43:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/71222638&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705985</commentid>
    <comment_count>22</comment_count>
      <attachid>413662</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-09 22:04:34 -0800</bug_when>
    <thetext>Created attachment 413662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705988</commentid>
    <comment_count>23</comment_count>
      <attachid>413664</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-09 22:14:35 -0800</bug_when>
    <thetext>Created attachment 413664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706002</commentid>
    <comment_count>24</comment_count>
      <attachid>413672</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-09 23:43:27 -0800</bug_when>
    <thetext>Created attachment 413672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706068</commentid>
    <comment_count>25</comment_count>
      <attachid>413693</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-10 07:13:11 -0800</bug_when>
    <thetext>Created attachment 413693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706085</commentid>
    <comment_count>26</comment_count>
      <attachid>413699</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-10 08:40:37 -0800</bug_when>
    <thetext>Created attachment 413699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706165</commentid>
    <comment_count>27</comment_count>
      <attachid>413699</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-10 12:26:16 -0800</bug_when>
    <thetext>Comment on attachment 413699
Patch

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

&gt; Source/WebCore/Modules/speech/SpeechRecognitionRequest.h:43
&gt; +    ClientOrigin clientOrigin() const { return m_info.clientOrigin; }

could be const&amp;

&gt; Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.mm:93
&gt; +    if (type == MediaPermissionType::Audio) {

switch statement

&gt; Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.mm:106
&gt; +    if (type == MediaPermissionType::Audio) {

Should be a switch statement

&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:44
&gt; +void SpeechRecognitionPermissionManager::startProcessingRequest()

It seems most of SpeechRecognitionPermissionManagerCocoa.mm could go to a cpp file (either SpeechRecognitionPermissionManagerCocoa.mm or SpeechRecognitionPermissionManager.cpp).

&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:101
&gt; +void SpeechRecognitionPermissionManager::requestSpeechRecognitionServiceAccess()

I would tend to move checkSpeechRecognitionServiceAccess and requestSpeechRecognitionServiceAccess as free function into MediaPermissionUtilities.h/.mm

&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:154
&gt; +void SpeechRecognitionPermissionManager::requestUserPermission()

This function in particular would best be in the general cpp file.

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:39
&gt; +        request-&gt;complete(SpeechRecognitionPermissionDecision::Deny);

I would expect reset to do that and clear m_requests

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:84
&gt; +    ASSERT(!m_requests.isEmpty());

If there is a reset in between that clears requests, you might need to do a check here instead of an assert.

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:93
&gt; +    m_userPermissionCheck = CheckResult::Unknown;

If you reset, you might also need to reset all queued requests.

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h:60
&gt; +    CheckResult m_speechRecognitionServiceCheck { CheckResult::Unknown };

I wonder whether a user might be able to change the TCC setting from Granted to Denied or Denied to Granted during the lifetime of a page.
In such a case, we might need to do these two checks for every request like we do for getUserMedia.

&gt; LayoutTests/fast/speechrecognition/permission-error.html:10
&gt; +    testRunner.setIsSpeechRecognitionPermissionGranted(false);

We could add some tests for the persistency.
Say do a request with permission granted, change it to deny but still able to proceed.
Maybe a layout test or API test showing that on page reload, we ask again the delegate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706231</commentid>
    <comment_count>28</comment_count>
      <attachid>413699</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-10 14:44:20 -0800</bug_when>
    <thetext>Comment on attachment 413699
Patch

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

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognitionRequest.h:43
&gt;&gt; +    ClientOrigin clientOrigin() const { return m_info.clientOrigin; }
&gt; 
&gt; could be const&amp;

Okay.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.mm:93
&gt;&gt; +    if (type == MediaPermissionType::Audio) {
&gt; 
&gt; switch statement

Okay.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.mm:106
&gt;&gt; +    if (type == MediaPermissionType::Audio) {
&gt; 
&gt; Should be a switch statement

Sure.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:44
&gt;&gt; +void SpeechRecognitionPermissionManager::startProcessingRequest()
&gt; 
&gt; It seems most of SpeechRecognitionPermissionManagerCocoa.mm could go to a cpp file (either SpeechRecognitionPermissionManagerCocoa.mm or SpeechRecognitionPermissionManager.cpp).

Okay.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:101
&gt;&gt; +void SpeechRecognitionPermissionManager::requestSpeechRecognitionServiceAccess()
&gt; 
&gt; I would tend to move checkSpeechRecognitionServiceAccess and requestSpeechRecognitionServiceAccess as free function into MediaPermissionUtilities.h/.mm

Okay.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SpeechRecognitionPermissionManagerCocoa.mm:154
&gt;&gt; +void SpeechRecognitionPermissionManager::requestUserPermission()
&gt; 
&gt; This function in particular would best be in the general cpp file.

Okay.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:39
&gt;&gt; +        request-&gt;complete(SpeechRecognitionPermissionDecision::Deny);
&gt; 
&gt; I would expect reset to do that and clear m_requests

Will move to reset

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:84
&gt;&gt; +    ASSERT(!m_requests.isEmpty());
&gt; 
&gt; If there is a reset in between that clears requests, you might need to do a check here instead of an assert.

hmm, in this case it seems easier to recreate a new SpeechRecognitionPermissionManager than reset, because we might: append a request -&gt;  start the request -&gt; reset -&gt; append a new request(only request in queue) -&gt; receive decision started request; then a wrong request will be completed.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:93
&gt;&gt; +    m_userPermissionCheck = CheckResult::Unknown;
&gt; 
&gt; If you reset, you might also need to reset all queued requests.

will remove reset() and creating a new SpeechRecognitionPermissionManager for reseting.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h:60
&gt;&gt; +    CheckResult m_speechRecognitionServiceCheck { CheckResult::Unknown };
&gt; 
&gt; I wonder whether a user might be able to change the TCC setting from Granted to Denied or Denied to Granted during the lifetime of a page.
&gt; In such a case, we might need to do these two checks for every request like we do for getUserMedia.

Looks like it&apos;s possible. There is a tccutil command line tool for resetting.
Will remove these variables.

&gt;&gt; LayoutTests/fast/speechrecognition/permission-error.html:10
&gt;&gt; +    testRunner.setIsSpeechRecognitionPermissionGranted(false);
&gt; 
&gt; We could add some tests for the persistency.
&gt; Say do a request with permission granted, change it to deny but still able to proceed.
&gt; Maybe a layout test or API test showing that on page reload, we ask again the delegate.

Okay, will add.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706326</commentid>
    <comment_count>29</comment_count>
      <attachid>413766</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-10 20:36:07 -0800</bug_when>
    <thetext>Created attachment 413766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706332</commentid>
    <comment_count>30</comment_count>
      <attachid>413769</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-10 20:48:55 -0800</bug_when>
    <thetext>Created attachment 413769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706361</commentid>
    <comment_count>31</comment_count>
      <attachid>413782</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-10 22:26:41 -0800</bug_when>
    <thetext>Created attachment 413782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706410</commentid>
    <comment_count>32</comment_count>
      <attachid>413782</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-11 03:12:54 -0800</bug_when>
    <thetext>Comment on attachment 413782
Patch

Looks good to me.
Some questions below before r+ing it

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

&gt; Source/WebKit/UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm:77
&gt; +    if (audioStatus == MediaPermissionResult::Denied) {

videoStatus.

&gt; Source/WebKit/UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm:91
&gt; +            });

requestAVCaptureAccessForType(MediaPermissionType::Video, WTFMove(completionHandler))

&gt; Source/WebKit/UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm:99
&gt; +        });

requestAVCaptureAccessForType(MediaPermissionType::Video, WTFMove(callback))

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:84
&gt; +    if (!m_page.preferences().mockCaptureDevicesEnabled()) {

You could simplify this by setting m_microphoneCheck to Granted in case of m_page.preferences().mockCaptureDevicesEnabled()

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:121
&gt; +    if (m_microphoneCheck == CheckResult::Unknown) {

I would probably make this a free function that would return a CheckResult.
Then you could write in SpeechRecognitionPermissionManager::startNextRequest()
m_microphoneCheck = computeMicrophoneAccess()
Ditto for checkSpeechRecognitionServiceAccess

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h:42
&gt; +    void reset();

No longer defined

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h:62
&gt; +    bool m_isUsingMockedCaptureDevice { false };

m_isUsingMockedCaptureDevice no longer needed

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:109
&gt; +    m_permissionChecker(request.clientOrigin(), [this, weakThis = makeWeakPtr(this), weakRequest = makeWeakPtr(request)](SpeechRecognitionPermissionDecision decision) mutable {

AIUI, SpeechRecognitionServer is buffering all requests and processing them one at a time.
SpeechRecognitionPermissionManager is also doing the same.
One of the buffering might be unneeded if both objects have a one-to-one mapping.

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1726
&gt; +        }

It seems like we should not do this search for each permission request.
The lambda could take a weakPage for instance.
Also, it is a bit weird to compare a pageId and a SpeechRecognitionServerIdentifier.
Maybe the pageId should be also sent through IPC?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706411</commentid>
    <comment_count>33</comment_count>
      <attachid>413782</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-11 03:12:55 -0800</bug_when>
    <thetext>Comment on attachment 413782
Patch

Looks good to me.
Some questions below before r+ing it

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

&gt; Source/WebKit/UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm:77
&gt; +    if (audioStatus == MediaPermissionResult::Denied) {

videoStatus.

&gt; Source/WebKit/UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm:91
&gt; +            });

requestAVCaptureAccessForType(MediaPermissionType::Video, WTFMove(completionHandler))

&gt; Source/WebKit/UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm:99
&gt; +        });

requestAVCaptureAccessForType(MediaPermissionType::Video, WTFMove(callback))

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:84
&gt; +    if (!m_page.preferences().mockCaptureDevicesEnabled()) {

You could simplify this by setting m_microphoneCheck to Granted in case of m_page.preferences().mockCaptureDevicesEnabled()

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:121
&gt; +    if (m_microphoneCheck == CheckResult::Unknown) {

I would probably make this a free function that would return a CheckResult.
Then you could write in SpeechRecognitionPermissionManager::startNextRequest()
m_microphoneCheck = computeMicrophoneAccess()
Ditto for checkSpeechRecognitionServiceAccess

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h:42
&gt; +    void reset();

No longer defined

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h:62
&gt; +    bool m_isUsingMockedCaptureDevice { false };

m_isUsingMockedCaptureDevice no longer needed

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:109
&gt; +    m_permissionChecker(request.clientOrigin(), [this, weakThis = makeWeakPtr(this), weakRequest = makeWeakPtr(request)](SpeechRecognitionPermissionDecision decision) mutable {

AIUI, SpeechRecognitionServer is buffering all requests and processing them one at a time.
SpeechRecognitionPermissionManager is also doing the same.
One of the buffering might be unneeded if both objects have a one-to-one mapping.

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1726
&gt; +        }

It seems like we should not do this search for each permission request.
The lambda could take a weakPage for instance.
Also, it is a bit weird to compare a pageId and a SpeechRecognitionServerIdentifier.
Maybe the pageId should be also sent through IPC?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706484</commentid>
    <comment_count>34</comment_count>
      <attachid>413782</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-11 09:21:41 -0800</bug_when>
    <thetext>Comment on attachment 413782
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm:77
&gt;&gt;&gt; +    if (audioStatus == MediaPermissionResult::Denied) {
&gt;&gt; 
&gt;&gt; videoStatus.
&gt; 
&gt; videoStatus.

NIce catch!

&gt;&gt;&gt; Source/WebKit/UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm:91
&gt;&gt;&gt; +            });
&gt;&gt; 
&gt;&gt; requestAVCaptureAccessForType(MediaPermissionType::Video, WTFMove(completionHandler))
&gt; 
&gt; requestAVCaptureAccessForType(MediaPermissionType::Video, WTFMove(completionHandler))

Sure.

&gt;&gt;&gt; Source/WebKit/UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm:99
&gt;&gt;&gt; +        });
&gt;&gt; 
&gt;&gt; requestAVCaptureAccessForType(MediaPermissionType::Video, WTFMove(callback))
&gt; 
&gt; requestAVCaptureAccessForType(MediaPermissionType::Video, WTFMove(callback))

Sure.

&gt;&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:84
&gt;&gt;&gt; +    if (!m_page.preferences().mockCaptureDevicesEnabled()) {
&gt;&gt; 
&gt;&gt; You could simplify this by setting m_microphoneCheck to Granted in case of m_page.preferences().mockCaptureDevicesEnabled()
&gt; 
&gt; You could simplify this by setting m_microphoneCheck to Granted in case of m_page.preferences().mockCaptureDevicesEnabled()

Right, since we are resetting it every request now.

&gt;&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:121
&gt;&gt;&gt; +    if (m_microphoneCheck == CheckResult::Unknown) {
&gt;&gt; 
&gt;&gt; I would probably make this a free function that would return a CheckResult.
&gt;&gt; Then you could write in SpeechRecognitionPermissionManager::startNextRequest()
&gt;&gt; m_microphoneCheck = computeMicrophoneAccess()
&gt;&gt; Ditto for checkSpeechRecognitionServiceAccess
&gt; 
&gt; I would probably make this a free function that would return a CheckResult.
&gt; Then you could write in SpeechRecognitionPermissionManager::startNextRequest()
&gt; m_microphoneCheck = computeMicrophoneAccess()
&gt; Ditto for checkSpeechRecognitionServiceAccess

Okay.

&gt;&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h:42
&gt;&gt;&gt; +    void reset();
&gt;&gt; 
&gt;&gt; No longer defined
&gt; 
&gt; No longer defined

Will remove.

&gt;&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.h:62
&gt;&gt;&gt; +    bool m_isUsingMockedCaptureDevice { false };
&gt;&gt; 
&gt;&gt; m_isUsingMockedCaptureDevice no longer needed
&gt; 
&gt; m_isUsingMockedCaptureDevice no longer needed

will remove.

&gt;&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:109
&gt;&gt;&gt; +    m_permissionChecker(request.clientOrigin(), [this, weakThis = makeWeakPtr(this), weakRequest = makeWeakPtr(request)](SpeechRecognitionPermissionDecision decision) mutable {
&gt;&gt; 
&gt;&gt; AIUI, SpeechRecognitionServer is buffering all requests and processing them one at a time.
&gt;&gt; SpeechRecognitionPermissionManager is also doing the same.
&gt;&gt; One of the buffering might be unneeded if both objects have a one-to-one mapping.
&gt; 
&gt; AIUI, SpeechRecognitionServer is buffering all requests and processing them one at a time.
&gt; SpeechRecognitionPermissionManager is also doing the same.
&gt; One of the buffering might be unneeded if both objects have a one-to-one mapping.

That&apos;s true. In that case, we need to make sure either SpeechRecognitionServer only sends one request to SpeechRecognitionPermissionManager at a time so SpeechRecognitionPermissionManager does not need to record the check status for each request (using the queue in SpeechRecognitionPermissionManager), or SpeechRecognitionServer may run multiple requests at the same time after permission (using the queue in SpeechRecognitionPermissionManager).

&gt;&gt;&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1726
&gt;&gt;&gt; +        }
&gt;&gt; 
&gt;&gt; It seems like we should not do this search for each permission request.
&gt;&gt; The lambda could take a weakPage for instance.
&gt;&gt; Also, it is a bit weird to compare a pageId and a SpeechRecognitionServerIdentifier.
&gt;&gt; Maybe the pageId should be also sent through IPC?
&gt; 
&gt; It seems like we should not do this search for each permission request.
&gt; The lambda could take a weakPage for instance.
&gt; Also, it is a bit weird to compare a pageId and a SpeechRecognitionServerIdentifier.
&gt; Maybe the pageId should be also sent through IPC?

Sure, for simplicity SpeechRecognitionServerIdentifier is actually WebCore::PageIdentifier right now (using SpeechRecognitionServerIdentifier = WebCore::PageIdentifier).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706515</commentid>
    <comment_count>35</comment_count>
      <attachid>413839</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-11 10:40:38 -0800</bug_when>
    <thetext>Created attachment 413839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707138</commentid>
    <comment_count>36</comment_count>
      <attachid>413839</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-13 00:31:17 -0800</bug_when>
    <thetext>Comment on attachment 413839
Patch

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

&gt; Source/WebCore/Modules/speech/SpeechRecognition.cpp:73
&gt; +    auto&amp; document = downcast&lt;Document&gt;(*scriptExecutionContext());

Can we add a test trying to call start on an object created in an iframe that is gone.
scriptExecutionContext might be null and I am not sure m_state and m_connection checks cover this case.

&gt; Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.mm:94
&gt; +    }

Should we use std::call_once here as well?

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:92
&gt; +    m_speechRecognitionServiceCheck = computeSpeechRecognitionServiceAccess();

I would tend to move these in startProcessingRequest and inline checkMicrophoneAccess and checkSpeechRecognitionServiceAccess inside startProcessingRequest.

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:149
&gt; +        m_microphoneCheck = CheckResult::Granted;

checkMicrophoneAccess is changing m_microphoneCheck while its name looks as if it should be const.
I would inline this code in startNextRequest

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:164
&gt; +    ASSERT(isMainThread());

No longer needed?

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:185
&gt; +    ASSERT(isMainThread());

No longer needed?

&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:212
&gt; +    if (!requestingOrigin-&gt;isSameOriginAs(topOrigin)) {

We should probably do that same origin check before the TCC prompts.

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:45
&gt; +    ASSERT(pendingRequest.isNewEntry);

In theory, we cannot really trust WebProcess and this clientIdentifier comes straight from IPC.
Maybe we should add a message check instead.

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:46
&gt; +    pendingRequest.iterator-&gt;value = makeUnique&lt;WebCore::SpeechRecognitionRequest&gt;(SpeechRecognitionRequestInfo { clientIdentifier, WTFMove(lang), continuous, interimResults, maxAlternatives, WTFMove(origin) });

I tend to prefer:
ASSERT(!m_pendingRequests.contains(clientIdentifier));
auto&amp; pendingRequest = m_pendingRequests.add(clientIdentifier, makeUnique&lt;&gt;...).iterator-&gt;value;

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:68
&gt; +        m_ongoingRequests.add(identifier, WTFMove(takenRequest));

Are we sure m_ongoingRequests does not have identifier?
It seems maybe we should ensure in start that m_pendingRequests and m_ongoingIdentifiers do not contain identifier.
Or we could have just one map and have a status in the request object.

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:75
&gt; +    if (m_pendingRequests.contains(clientIdentifier)) {

I would write it as if (m_pendingRequests.remove(clientIdentifier)) to improve efficiency.
Ditto below.

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:81
&gt; +    ASSERT(m_ongoingRequests.contains(clientIdentifier));

This also comes straight from IPC.

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:93
&gt; +    ASSERT(m_ongoingRequests.contains(clientIdentifier));

Ditto.

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:102
&gt; +    auto request = m_ongoingRequests.take(clientIdentifier);

There is no guarantee request is not null.

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:127
&gt; +        update = WebCore::SpeechRecognitionUpdate::createResult(clientIdentifier, *result);

We allocate a vector here for a very quick moment.
It might be better to just send all members in IPC directly and reconstruct the object in WebProcess to remove count churn and Vector allocations.

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1723
&gt; +    }

If there is no page, there is no need to change the map. We should exit early.
There is no guarantee that m_speechRecognitionServerMap does not already contain the identifier as well.

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1725
&gt; +    speechRecognitionServer.iterator-&gt;value = makeUnique&lt;SpeechRecognitionServer&gt;(makeRef(*connection()), identifier, [weakThis = makeWeakPtr(this), weakPage = makeWeakPtr(targetPage)](const ClientOrigin&amp; origin, CompletionHandler&lt;void(SpeechRecognitionPermissionDecision)&gt;&amp;&amp; completionHandler) mutable {

(auto&amp; origin, auto&amp;&amp; completionHandler)

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1727
&gt; +            return;

No need for weakThis, let&apos;s not capture it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707335</commentid>
    <comment_count>37</comment_count>
      <attachid>413839</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-13 11:48:13 -0800</bug_when>
    <thetext>Comment on attachment 413839
Patch

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

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognition.cpp:73
&gt;&gt; +    auto&amp; document = downcast&lt;Document&gt;(*scriptExecutionContext());
&gt; 
&gt; Can we add a test trying to call start on an object created in an iframe that is gone.
&gt; scriptExecutionContext might be null and I am not sure m_state and m_connection checks cover this case.

Sure, will add.

&gt;&gt; Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.mm:94
&gt;&gt; +    }
&gt; 
&gt; Should we use std::call_once here as well?

Sure, this value seems unlikely to change during the use of an app. Will change.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:92
&gt;&gt; +    m_speechRecognitionServiceCheck = computeSpeechRecognitionServiceAccess();
&gt; 
&gt; I would tend to move these in startProcessingRequest and inline checkMicrophoneAccess and checkSpeechRecognitionServiceAccess inside startProcessingRequest.

Sure.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:149
&gt;&gt; +        m_microphoneCheck = CheckResult::Granted;
&gt; 
&gt; checkMicrophoneAccess is changing m_microphoneCheck while its name looks as if it should be const.
&gt; I would inline this code in startNextRequest

Sure.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:164
&gt;&gt; +    ASSERT(isMainThread());
&gt; 
&gt; No longer needed?

Will remove.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:185
&gt;&gt; +    ASSERT(isMainThread());
&gt; 
&gt; No longer needed?

Will remove.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionPermissionManager.cpp:212
&gt;&gt; +    if (!requestingOrigin-&gt;isSameOriginAs(topOrigin)) {
&gt; 
&gt; We should probably do that same origin check before the TCC prompts.

Okay, will add.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:45
&gt;&gt; +    ASSERT(pendingRequest.isNewEntry);
&gt; 
&gt; In theory, we cannot really trust WebProcess and this clientIdentifier comes straight from IPC.
&gt; Maybe we should add a message check instead.

Will add.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:46
&gt;&gt; +    pendingRequest.iterator-&gt;value = makeUnique&lt;WebCore::SpeechRecognitionRequest&gt;(SpeechRecognitionRequestInfo { clientIdentifier, WTFMove(lang), continuous, interimResults, maxAlternatives, WTFMove(origin) });
&gt; 
&gt; I tend to prefer:
&gt; ASSERT(!m_pendingRequests.contains(clientIdentifier));
&gt; auto&amp; pendingRequest = m_pendingRequests.add(clientIdentifier, makeUnique&lt;&gt;...).iterator-&gt;value;

Sure.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:68
&gt;&gt; +        m_ongoingRequests.add(identifier, WTFMove(takenRequest));
&gt; 
&gt; Are we sure m_ongoingRequests does not have identifier?
&gt; It seems maybe we should ensure in start that m_pendingRequests and m_ongoingIdentifiers do not contain identifier.
&gt; Or we could have just one map and have a status in the request object.

Yes, a client can only have one request at a time.  Will add an assert for m_ongoingIdentifiers in start().

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:75
&gt;&gt; +    if (m_pendingRequests.contains(clientIdentifier)) {
&gt; 
&gt; I would write it as if (m_pendingRequests.remove(clientIdentifier)) to improve efficiency.
&gt; Ditto below.

Sure.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:81
&gt;&gt; +    ASSERT(m_ongoingRequests.contains(clientIdentifier));
&gt; 
&gt; This also comes straight from IPC.

Will add message check.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:93
&gt;&gt; +    ASSERT(m_ongoingRequests.contains(clientIdentifier));
&gt; 
&gt; Ditto.

Will add message check.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:102
&gt;&gt; +    auto request = m_ongoingRequests.take(clientIdentifier);
&gt; 
&gt; There is no guarantee request is not null.

True, will add a check.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:127
&gt;&gt; +        update = WebCore::SpeechRecognitionUpdate::createResult(clientIdentifier, *result);
&gt; 
&gt; We allocate a vector here for a very quick moment.
&gt; It might be better to just send all members in IPC directly and reconstruct the object in WebProcess to remove count churn and Vector allocations.

Sounds good, since that will change the IPC message format and this patch is big enough, we can do it in a follow-up patch.

&gt;&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1723
&gt;&gt; +    }
&gt; 
&gt; If there is no page, there is no need to change the map. We should exit early.
&gt; There is no guarantee that m_speechRecognitionServerMap does not already contain the identifier as well.

That&apos;s true, we don&apos;t need to change the map when page is gone.
I think we should receive createSpeechRecognitionServer and destroySpeechRecognitionServer in pair, unless WebProcessProxy is destroyed/connection is broken before destroySpeechRecognitionServer message is received, where we should have received one more create message.
Therefore, adding to m_speechRecognitionServerMapon create message and removing from m_speechRecognitionServerMap on destroy message would do the bookkeeping work.
If we receive two create messages for the same ID before a destroy message (i.e. m_speechRecognitionServerMap already has an identifier), that seems a bug because we will need to ensure server is destroyed after we receive the last destroy message.

&gt;&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1725
&gt;&gt; +    speechRecognitionServer.iterator-&gt;value = makeUnique&lt;SpeechRecognitionServer&gt;(makeRef(*connection()), identifier, [weakThis = makeWeakPtr(this), weakPage = makeWeakPtr(targetPage)](const ClientOrigin&amp; origin, CompletionHandler&lt;void(SpeechRecognitionPermissionDecision)&gt;&amp;&amp; completionHandler) mutable {
&gt; 
&gt; (auto&amp; origin, auto&amp;&amp; completionHandler)

Okay.

&gt;&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1727
&gt;&gt; +            return;
&gt; 
&gt; No need for weakThis, let&apos;s not capture it.

Okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707385</commentid>
    <comment_count>38</comment_count>
      <attachid>414091</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-13 14:26:54 -0800</bug_when>
    <thetext>Created attachment 414091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707430</commentid>
    <comment_count>39</comment_count>
      <attachid>414104</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-11-13 16:28:15 -0800</bug_when>
    <thetext>Created attachment 414104
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707450</commentid>
    <comment_count>40</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-13 18:17:14 -0800</bug_when>
    <thetext>Committed r269810: &lt;https://trac.webkit.org/changeset/269810&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 414104.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413007</attachid>
            <date>2020-11-02 23:40:13 -0800</date>
            <delta_ts>2020-11-04 17:21:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201102234012.patch</filename>
            <type>text/plain</type>
            <size>28088</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5Mjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAyZjhlNjJmNWM3MjczYzZj
ZTUwNjExYWYyYTY3NDVmMTcwODk1MGMuLjVjODA2NjE5ZDMwYzViMjYwMzc2MDY3N2NkZjAwZTY0
ZDVmYjA5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMTEtMDIgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1p
c3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3QgcmVhZHkgZm9yIHJldmlldy4KKworICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5t
bTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnBlcmZvcm1TYW5kYm94Q2hlY2spOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3Rh
cnRDdXJyZW50UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVudFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0
OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1NhbmRib3hSZXF1aXJl
bWVudCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI6OmNoZWNrTWljcm9waG9uZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNj
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cjo6Y2hlY2tVc2VyUGVybWlzc2lvbkZvck9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnRDdXJyZW50UmVx
dWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI6OmNvbXBsZXRlQ3VycmVudFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1NhbmRib3hSZXF1aXJlbWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrTWlj
cm9waG9uZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI6OmNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tVc2Vy
UGVybWlzc2lvbkZvck9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNvbXBsZXRlKToKKyAg
ICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6b3JpZ2lu
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorCiAyMDIwLTExLTAyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJlbW92ZSBzb21lIHVzZWxlc3MgY29tbWVudHMgZnJvbSAubWVzc2FnZXMuaW4gZmls
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CmluZGV4IGUwYWI3NDM2YmFkYzM0NjM3NDk0NjYzMzQ3MTliNDVlZGZkMmIz
MDYuLjc5YWQ4OTAzYjhhMDFmNDhjYzhhMzkxODQ0OGEzZmFkNGUzNmUwMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dApAQCAtMjg4LDYgKzI4OCw3IEBAIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAK
IFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcAogVUlQcm9jZXNzL1N1c3BlbmRlZFBh
Z2VQcm94eS5jcHAKIFVJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5jcHAKK1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAogVUlQcm9jZXNzL1Rl
eHRDaGVja2VyLmNwcAogVUlQcm9jZXNzL1RleHRDaGVja2VyQ29tcGxldGlvbi5jcHAKIFVJUHJv
Y2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAppbmRleCA5OWJlYTFmYjU5ZTk2ZDZhMDBlZjFiYmEwOGE3MjRiMWYyODg3MDA0Li5mZDBkN2Q3
YzdkMGExNTYyNjVkMmIyZTE4N2QyMzFmZWEzNjI0MTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CkBAIC0zNzksNiArMzc5LDcgQEAgVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eS5tbQogVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCiBVSVBy
b2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2Ev
U2Vzc2lvblN0YXRlQ29kaW5nLm1tCitVSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0Nv
bnRyb2xsZXJDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXIu
bW0KIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdhMGYwN2M4NTc0YmI5MmYzZGY4
MDRjMDdiYmViY2Q3YmU1YmUxZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbQpA
QCAtMCwwICsxLDE5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIgorCisjaW1wb3J0ICJTYW5k
Ym94VXRpbGl0aWVzLmgiCisjaW1wb3J0IDxTcGVlY2gvU3BlZWNoLmg+CisjaW1wb3J0IDx3dGYv
c3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9u
U29mdExpbmsuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhTcGVlY2gpCitTT0ZUX0xJTktfQ0xB
U1MoU3BlZWNoLCBTRlNwZWVjaFJlY29nbml6ZXIpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitz
dGF0aWMgYm9vbCBwZXJmb3JtU2FuZGJveENoZWNrKCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgaWYgKGN1cnJlbnRQcm9jZXNzSXNTYW5kYm94ZWQoKSAmJiAhIXNhbmRib3hfY2hlY2soZ2V0
cGlkKCksICJkZXZpY2UtbWljcm9waG9uZSIsIFNBTkRCT1hfRklMVEVSX05PTkUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QoV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b250SGFuZGxlcikKK3sKKyAgICBtX3JlcXVlc3RzLmFwcGVuZChTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRp
b250SGFuZGxlcikpKTsKKyAgICBpZiAobV9yZXF1ZXN0cy5zaXplKCkgPT0gMSkKKyAgICAgICAg
c3RhcnRDdXJyZW50UmVxdWVzdCgpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI6OnN0YXJ0Q3VycmVudFJlcXVlc3QoKQoreworICAgIGNoZWNrU2FuZGJveFJl
cXVpcmVtZW50KCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cjo6Y29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0OjpEZWNpc2lvbiBkZWNpc2lvbikKK3sKKyAgICBBU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0
eSgpKTsKKyAgICBhdXRvIGN1cnJlbnRSZXF1ZXN0ID0gbV9yZXF1ZXN0cy50YWtlRmlyc3QoKTsK
KyAgICBjdXJyZW50UmVxdWVzdC0+Y29tcGxldGUoZGVjaXNpb24pOworCisgICAgc3RhcnRDdXJy
ZW50UmVxdWVzdCgpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI6OmNoZWNrU2FuZGJveFJlcXVpcmVtZW50KCkKK3sKKyAgICAvLyBFaXRoZXIgc2FuZGJveCBp
cyBub3QgdXNlZCBvciBzYW5kYm94IHBlcm1pc3Npb24gaXMgZ3JhbnRlZC4KKyAgICBpZiAoIW1f
aXNTYW5kYm94Q2hlY2tQYXNzZWQuaGFzVmFsdWUoKSkKKyAgICAgICAgbV9pc1NhbmRib3hDaGVj
a1Bhc3NlZCA9IHBlcmZvcm1TYW5kYm94Q2hlY2soKTsKKworICAgIGlmICghbV9pc1NhbmRib3hD
aGVja1Bhc3NlZCkgeworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGNoZWNrTWljcm9waG9uZUFjY2VzcygpOworfQorCit2b2lkIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrTWljcm9waG9uZUFjY2VzcygpCit7
CisgICAgaWYgKG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZCAmJiAqbV9pc01pY3JvcGhv
bmVBY2Nlc3NBdXRob3JpemVkKSB7CisgICAgICAgIGNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2
aWNlQWNjZXNzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9pc01pY3Jv
cGhvbmVBY2Nlc3NBdXRob3JpemVkICYmICFtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQp
IHsKKyAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBhdXRvIG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID0gW1BBTDo6Z2V0QVZDYXB0
dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOkFWTWVkaWFU
eXBlQXVkaW9dOworICAgIGlmIChtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1
dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkKSB7CisgICAgICAgIG1faXNNaWNyb3Bob25lQWNj
ZXNzQXV0aG9yaXplZCA9IHRydWU7CisgICAgICAgIGNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2
aWNlQWNjZXNzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKG1pY3Jv
cGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCB8
fCBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNS
ZXN0cmljdGVkKSB7CisgICAgICAgIG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZCA9IGZh
bHNlOworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEFTU0VSVChtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6
YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkKTsKKyAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKEJPT0wgaXNBdXRob3Jp
emVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAoIWlzQXV0aG9yaXplZCkgeworICAgICAgICAgICAgd2Vha1RoaXMt
Pm1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZCA9IGZhbHNlOworICAgICAgICAgICAgd2Vh
a1RoaXMtPmNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIHdlYWtUaGlzLT5tX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQgPSB0cnVl
OworICAgICAgICB3ZWFrVGhpcy0+Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3Mo
KTsKKyAgICB9KTsKKyAgICBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIHJlcXVlc3RB
Y2Nlc3NGb3JNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBjb21wbGV0aW9uSGFuZGxlcjpkZWNp
c2lvbkhhbmRsZXIuZ2V0KCldOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OmNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCkKK3sKKyAgICBp
ZiAobV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQgJiYgKm1faXNT
cGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkKSB7CisgICAgICAgIGNoZWNr
VXNlclBlcm1pc3Npb25Gb3JPcmlnaW4oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCAmJiAhbV9p
c1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQpIHsKKyAgICAgICAgY29t
cGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpE
ZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHNwZWVj
aFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzID0gW2dldFNGU3BlZWNoUmVjb2duaXplckNs
YXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c107CisgICAgaWYgKHNwZWVjaFJlY29nbml6ZXJBdXRo
b3JpemF0aW9uU3RhdHVzID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNB
dXRob3JpemVkKSB7CisgICAgICAgIG1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NB
dXRob3JpemVkID0gdHJ1ZTsKKyAgICAgICAgY2hlY2tVc2VyUGVybWlzc2lvbkZvck9yaWdpbigp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHNwZWVjaFJlY29nbml6ZXJBdXRo
b3JpemF0aW9uU3RhdHVzID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNS
ZXN0cmljdGVkIHx8IHNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzID09IFNGU3Bl
ZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQpIHsKKyAgICAgICAgbV9pc1Nw
ZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQgPSBmYWxzZTsKKyAgICAgICAg
Y29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
OjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQo
c3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVy
QXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQpOworICAgIGF1dG8gZGVjaXNpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oU0ZTcGVl
Y2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMpIG11dGFibGUgeworICAgICAg
ICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChzdGF0
dXMgIT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQpIHsK
KyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNz
QXV0aG9yaXplZCA9IGZhbHNlOworICAgICAgICAgICAgd2Vha1RoaXMtPmNvbXBsZXRlQ3VycmVu
dFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRl
bnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgd2Vha1RoaXMt
Pm1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkID0gdHJ1ZTsKKyAg
ICAgICAgd2Vha1RoaXMtPmNoZWNrVXNlclBlcm1pc3Npb25Gb3JPcmlnaW4oKTsKKyAgICB9KTsK
KyAgICBbZ2V0U0ZTcGVlY2hSZWNvZ25pemVyQ2xhc3MoKSByZXF1ZXN0QXV0aG9yaXphdGlvbjpk
ZWNpc2lvbkhhbmRsZXIuZ2V0KCldOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI6OmNoZWNrVXNlclBlcm1pc3Npb25Gb3JPcmlnaW4oKQoreworICAgIEFTU0VS
VCghbV9yZXF1ZXN0cy5pc0VtcHR5KCkpOworICAgIGF1dG8mIGN1cnJlbnRSZXF1ZXN0ID0gbV9y
ZXF1ZXN0cy5maXJzdCgpOworCisgICAgaWYgKGF1dG8gcGVybWl0dGVkID0gbV9vcmlnaW5QZXJt
aXNzaW9uTWFwLmdldChjdXJyZW50UmVxdWVzdC0+b3JpZ2luKCkpKSB7CisgICAgICAgIGNvbXBs
ZXRlQ3VycmVudFJlcXVlc3QocGVybWl0dGVkID8gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdDo6RGVjaXNpb246OkFsbG93IDogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdDo6RGVjaXNpb246OkRlbnkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0
byBkZWNpc2lvbkhhbmRsZXIgPSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKGJvb2wg
aXNQZXJtaXR0ZWQpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBhdXRvIGN1cnJlbnRSZXF1ZXN0ID0gd2Vha1RoaXMtPm1fcmVxdWVzdHMu
dGFrZUZpcnN0KCk7CisgICAgICAgIHdlYWtUaGlzLT5tX29yaWdpblBlcm1pc3Npb25NYXAuc2V0
KGN1cnJlbnRSZXF1ZXN0LT5vcmlnaW4oKSwgaXNQZXJtaXR0ZWQpOworICAgICAgICB3ZWFrVGhp
cy0+Y29tcGxldGVDdXJyZW50UmVxdWVzdChpc1Blcm1pdHRlZCA/IFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpBbGxvdyA6IFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICB9OworCisgICAgLy8gVE9ETzog
aW1wbGVtZW50IFVJRGVsZWdhdGUgbWV0aG9kLgorICAgIC8vIG1fcGFnZS51aUNsaWVudCgpLmRl
Y2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QobV9wYWdlLCBX
VEZNb3ZlKHVzZXJNZWRpYU9yaWdpbiksIFdURk1vdmUodG9wTGV2ZWxPcmlnaW4pLCBkZWNpc2lv
bkhhbmRsZXIpOworICAgIGRlY2lzaW9uSGFuZGxlcih0cnVlKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzU5MjE3
NTcxNmJhMmU5Yjg2OTczZGI5M2U0YTYxZjYzZjE3NWEyNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIu
Y3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworI2lmICFQTEFURk9STShDT0NPQSkKKwordm9pZCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXI6OnN0YXJ0Q3VycmVudFJlcXVlc3QoKQoreworfQorCit2b2lkIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb24pCit7Cit9CisKK3ZvaWQg
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTYW5kYm94UmVxdWlyZW1l
bnQoKQoreworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNo
ZWNrTWljcm9waG9uZUFjY2VzcygpCit7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKQorewor
fQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrVXNlclBl
cm1pc3Npb25Gb3JPcmlnaW4oKQoreworfQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODU4Nzg0NTNjNDFhYTNi
MWY1YWE0NTYzNGI3Y2QzZTQwMzg0OTkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCkBAIC0wLDAg
KzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcihXZWJQYWdlUHJveHkmKTsK
KyAgICB2b2lkIHJlcXVlc3QoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworCitwcml2YXRlOgorICAgIHZvaWQgc3RhcnRDdXJyZW50UmVx
dWVzdCgpOworICAgIHZvaWQgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbik7CisgICAgdm9pZCBjaGVja1NhbmRib3hSZXF1
aXJlbWVudCgpOworICAgIHZvaWQgY2hlY2tNaWNyb3Bob25lQWNjZXNzKCk7CisgICAgdm9pZCBj
aGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpOworICAgIHZvaWQgY2hlY2tVc2Vy
UGVybWlzc2lvbkZvck9yaWdpbigpOworCisgICAgRGVxdWU8UmVmPFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3Q+PiBtX3JlcXVlc3RzOworICAgIE9wdGlvbmFsPGJvb2w+IG1faXNT
YW5kYm94Q2hlY2tQYXNzZWQ7CisgICAgT3B0aW9uYWw8Ym9vbD4gbV9pc01pY3JvcGhvbmVBY2Nl
c3NBdXRob3JpemVkOworICAgIE9wdGlvbmFsPGJvb2w+IG1faXNTcGVlY2hSZWNvZ25pdGlvblNl
cnZpY2VBY2Nlc3NBdXRob3JpemVkOworICAgIEhhc2hNYXA8Q2xpZW50T3JpZ2luLCBib29sPiBt
X29yaWdpblBlcm1pc3Npb25NYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDY1NjE4OGYzNmI0MzRlN2FiYmMzOWJhMmE0
MjY5NTVlZTI2MjczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2lu
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdD4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0PiBjcmVhdGUoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2lu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdChXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7
CisgICAgfQorCisgICAgZW51bSBjbGFzcyBEZWNpc2lvbiB7IERlbnksIEFsbG93IH07CisgICAg
dm9pZCBjb21wbGV0ZShEZWNpc2lvbiBkZWNpc2lvbikKKyAgICB7CisgICAgICAgIGJvb2wgaXNB
bGxvd2VkID0gZGVjaXNpb24gPT0gRGVjaXNpb246OkFsbG93OworICAgICAgICBhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpc0FsbG93ZWQpOworICAgIH0KKworICAgIGNvbnN0
IENsaWVudE9yaWdpbiYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KKworcHJp
dmF0ZToKKyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKKyAgICAgICAgOiBtX29yaWdpbihXVEZNb3ZlKG9yaWdpbikpCisgICAg
ICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAg
ICB7IH0KKworICAgIENsaWVudE9yaWdpbiBtX29yaWdpbjsKKyAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0MzAw
ZTFmNTIyZmY1MjI3NDhmMmIxZGY5MTM3ZGY3YTRkMjZjNWE0Li5jMmMzMzEyM2Y0ODhiNTFjYTRh
ZWFmNDExNTE5YTc3MTdmNWM4ZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTg2LDYgKzg2LDcgQEAKICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94
eS5oIgogI2luY2x1ZGUgIlNhZmVCcm93c2luZ1dhcm5pbmcuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZS5oIgog
I2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgpA
QCAtMTAxNzEsNiArMTAxNzIsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZp
dHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoKQogICAgIH0pOwogfQogCitTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyJiBXZWJQYWdlUHJveHk6OnNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXIoKQoreworICAgIGlmICghbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyKQorICAgICAgICBzcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2UgPSBtYWtl
VW5pcXVlPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI+KCp0aGlzKTsKKworICAg
IHJldHVybiAqbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2NlZmJmYzY5NDVlZGZlNDNhZTU2
YzJkNTY0YzBlODFlOTViYjRhNi4uNjM3ODliOTY5ZDllMDFhMzJmOGEzNTA5NWJkYTgwMTdjNWY1
ZDQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTMwNSw2ICsz
MDUsNyBAQCBjbGFzcyBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE7CiBj
bGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHk7CiBjbGFzcyBTZWNLZXlQcm94eVN0b3JlOworY2xhc3MgU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjsKIGNsYXNzIFVzZXJEYXRhOwogY2xhc3MgVmlld1Nu
YXBzaG90OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKQEAgLTE4MTksNiArMTgyMCw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5KFNlY29uZHMgY2Fw
dHVyZVJlcG9ydGluZ0RlbGF5KSB7IG1fbWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkgPSBjYXB0
dXJlUmVwb3J0aW5nRGVsYXk7IH0KICAgICBzaXplX3Qgc3VzcGVuZE1lZGlhUGxheWJhY2tDb3Vu
dGVyKCkgeyByZXR1cm4gbV9zdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXI7IH0KIAorICAgIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXImIHNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXIoKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYs
IFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2
b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjg4OCw2ICsyODkxLDggQEAgcHJpdmF0ZToK
ICAgICBzaXplX3QgbV9zdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXIgeyAwIH07CiAKICAgICBP
cHRpb25hbDxXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24+IG1fbmV3UGFnZU5hdmlnYXRpb25B
ZENsaWNrQXR0cmlidXRpb247CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcj4gbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NjY1Y2NiN2JjNmFmN2E3YTA4OTE1ZmRl
NDY3MjZkOTY3ZjVmY2I0Li40ZjhmYWU3Y2ZhYmI0ZDJkODljYjhlMmE3ZDNhYWJmMDIxNDkwM2Zj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEzOTksNiArMTM5OSw4IEBACiAJCTkzQjI2MTRFMjI3RDE0QjEwMEI5N0E3NiAvKiBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNCMjYxNDUyMjdEMTQ3MDAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNl
LmggKi87IH07CiAJCTkzQjI2MTRGMjI3RDE0QjEwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzQjI2MTQ2MjI3RDE0NzEwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIuaCAqLzsgfTsKIAkJOTNCREVCMDExNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBl
c1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzQkRFQjAwMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNENkI3QTMy
NTUxM0JDRDAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0EwMjU1
MTNBNDIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi87
IH07CisJCTkzRDZCN0E0MjU1MTNCQ0YwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0Q2QjdBMTI1NTEzQTQyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlci5oICovOyB9OwogCQk5M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0
VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y1NDlCNDFFMzE3
NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAv
KiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFB1YmxpYywgKTsgfTsgfTsKIAkJOTUwRjI4ODAyNTI0MTRFQTAwQjc0RjFDIC8qIFdLTW91c2VE
ZXZpY2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTUwRjI4N0UyNTI0MTRFOTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5o
ICovOyB9OwpAQCAtNDUwMSw2ICs0NTAzLDEwIEBACiAJCTkzQkEwNEUwMjE1MUFERjQwMDdGNDU1
RiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzQkEwNEUxMjE1MUFERjQwMDdGNDU1RiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCREVCMDAxNzFERDdBRjAw
QkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tQYWdlTG9hZFR5cGVzUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5M0Q2Qjc5RjI1NTEzQTQyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTNENkI3QTAyNTUxM0E0MjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5M0Q2QjdBMTI1NTEzQTQyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzRDZCN0EyMjU1MTNBNTQwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRU
ZXN0UmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0hpdFRlc3RS
ZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjMxRTMxNzRCNzAw
MEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLU25hcHNob3RDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzRjU0OUI1MUUzMTc0REEwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmln
dXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU25h
cHNob3RDb25maWd1cmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQz
OCw2ICs2NDQ0LDcgQEAKIAkJCQk1Q0E5ODU0QjIxMEJFQjczMDA1N0VCNkIgLyogU2FmZUJyb3dz
aW5nV2FybmluZ0NvY29hLm1tICovLAogCQkJCTFBMDAyRDQ3MTk2QjM0NUQwMEI5QUQ0NCAvKiBT
ZXNzaW9uU3RhdGVDb2RpbmcuaCAqLywKIAkJCQkxQTAwMkQ0NjE5NkIzNDVEMDBCOUFENDQgLyog
U2Vzc2lvblN0YXRlQ29kaW5nLm1tICovLAorCQkJCTkzRDZCN0EyMjU1MTNBNTQwMDU4REQzQSAv
KiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW0gKi8sCiAJCQkJMzE1
NzEzNUMyMDQwQTlCMjAwODRGOUNGIC8qIFN5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0g
Ki8sCiAJCQkJMkQwQ0Y2NEMyMUYyQTgwMzAwNzg3NTY2IC8qIFRleHRDaGVja2luZ0NvbnRyb2xs
ZXIuaCAqLywKIAkJCQkyRDBDRjY0QjIxRjJBODAzMDA3ODc1NjYgLyogVGV4dENoZWNraW5nQ29u
dHJvbGxlci5tbSAqLywKQEAgLTkxNjEsNiArOTE2OCw5IEBACiAJCQkJQkMxMTFCMDgxMTJGNUUz
QzAwMzM3QkFCIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovLAogCQkJCTFBMzAwNjZDMTEx
MEY0RjcwMDMxOTM3QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8sCiAJCQkJNUNBOTg1NDky
MTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmcuaCAqLywKKwkJCQk5M0Q2Qjc5
RjI1NTEzQTQyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5j
cHAgKi8sCisJCQkJOTNENkI3QTEyNTUxM0E0MjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXIuaCAqLywKKwkJCQk5M0Q2QjdBMDI1NTEzQTQyMDA1OEREM0EgLyog
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oICovLAogCQkJCTUxNUM0MTVBMjA3
RDc0RTAwMDcyNkUwMiAvKiBTdXNwZW5kZWRQYWdlUHJveHkuY3BwICovLAogCQkJCTUxNUM0MTVC
MjA3RDc0RTEwMDcyNkUwMiAvKiBTdXNwZW5kZWRQYWdlUHJveHkuaCAqLywKIAkJCQkzMThBMUYw
NDIwNEY0NzY0MDAzNDgwQkMgLyogU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuY3BwICovLApAQCAt
MTEzMjgsNiArMTEzMzgsOCBAQAogCQkJCTU3QkJFQTZEMjJCQzBCRkUwMDI3Mzk5NSAvKiBTT0F1
dGhvcml6YXRpb25Mb2FkUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzZDQTlENzIyQjg2
MjE4MDAzMDE0M0MgLyogU09BdXRob3JpemF0aW9uTlNVUkxFeHRyYXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3RkQzMTg1MjJCMzUxNjkwMDhEMEU4QiAvKiBTT0F1dGhvcml6YXRpb25TZXNzaW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q2QjdBNDI1NTEzQkNGMDA1OEREM0EgLyogU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENkI3
QTMyNTUxM0JDRDAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdBM0ZFQ0EyMjFGN0MwOTcwMEYyNjdDRCAvKiBTdG9yYWdl
QWNjZXNzU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkJFQjZENzIyRkI5QkQ3MDAyNjk4
NjcgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRDMzMDZGMTZCMUQ5OTEw
MDRGNjBFNyAvKiBTdG9yYWdlQXJlYUltcGwuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413230</attachid>
            <date>2020-11-04 17:21:50 -0800</date>
            <delta_ts>2020-11-04 22:30:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201104172149.patch</filename>
            <type>text/plain</type>
            <size>63811</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIzMDY4MDZiZGNjNjBiZTIw
YWY2YTRhYTNiZTNiOWYyZTlkN2ZiMWIuLjZiNWFiYjgzZDg2Yzk2M2VkZTU0ZmY2NDQwMTkyZTY0
MzcyZmZhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMjAtMTEtMDQgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1p
c3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3QgeWV0IHJlYWR5IGZvciByZXZpZXcuCisKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9X
S0Jhc2UuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2Eu
dHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQ
STo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNs
aWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2tHZXRUeXBlSUQpOgorICAgICAgICAoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFja0NvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6cGVyZm9ybVNhbmRib3hDaGVjayk6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydE5leHRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6
Y29tcGxldGVDdXJyZW50UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU2FuZGJveFJlcXVpcmVtZW50KToKKyAgICAgICAg
KFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tNaWNyb3Bo
b25lQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1VzZXJQZXJt
aXNzaW9uRm9yT3JpZ2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2Vi
S2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXI6OnJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyOjpzdGFydEN1cnJlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y29tcGxldGVDdXJyZW50UmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNo
ZWNrU2FuZGJveFJlcXVpcmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNv
Z25pdGlvblNlcnZpY2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1VzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVz
dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdDo6Y29tcGxldGUpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrOjpjb21wbGV0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTExLTAzICBTaWh1aSBMaXUgIDxz
aWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIFNldCB1cCBiYXNpYyBpbmZyYXN0cnVjdHVy
ZSBmb3IgU3BlZWNoUmVjb2duaXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaApp
bmRleCA2ZDA2NTY0NWRjZWU2MmU1OWQ1MGRiZWYzNzQzNWE0OWE4MGViNjgyLi5jZDFjYWQ5NmI0
MDMxMmRiM2IxODhkZTcxZjYwODhiZjcyOGZkODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SU9iamVjdC5oCkBAIC0xNjUsNiArMTY1LDcgQEAgcHVibGljOgogICAgICAgICBSdW5KYXZhU2Ny
aXB0QWxlcnRSZXN1bHRMaXN0ZW5lciwKICAgICAgICAgUnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1
bHRMaXN0ZW5lciwKICAgICAgICAgUnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExpc3RlbmVyLAor
ICAgICAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaywKICAgICAgICAgVGV4
dENoZWNrZXIsCiAgICAgICAgIFVSTFNjaGVtZVRhc2ssCiAgICAgICAgIFVzZXJDb250ZW50Q29u
dHJvbGxlciwKQEAgLTQxMCw2ICs0MTEsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PEFQSTo6T2JqZWN0OjpUeXBlPiB7CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpSdW5KYXZh
U2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlJ1
bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpU
eXBlOjpSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXIsCisgICAgICAgIEFQSTo6T2Jq
ZWN0OjpUeXBlOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaywKICAgICAgICAg
QVBJOjpPYmplY3Q6OlR5cGU6OlRleHRDaGVja2VyLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlw
ZTo6VVJMU2NoZW1lVGFzaywKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250ZW50
Q29udHJvbGxlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXggOWU4MmU1NjAw
MTg3ZWMxY2Y4YWY5YmVlNzllNzFkMGU4ZDdmZDE1YS4uODRlZTZjMjg4ZjZkMmViZDUxZmE3M2Vh
NzI3MDhmMzI5NDZiZGQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTE0
MSw2ICsxNDEsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNpdGVEYXRhQ29u
ZmlndXJhdGlvblN0b3JlKiBXS1dlYnNpdGVEYXRhU3RvcmVDbwogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tXZWJzaXRlRGF0YVN0b3JlKiBXS1dlYnNpdGVEYXRhU3RvcmVSZWY7CiB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNpdGVQb2xpY2llcyogV0tXZWJzaXRlUG9saWNp
ZXNSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dpbmRvd0ZlYXR1cmVzKiBXS1dp
bmRvd0ZlYXR1cmVzUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFjayogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFja1JlZjsKIAogLyogV2ViS2l0MiBCdW5kbGUgdHlwZXMgKi8KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5k
ZXggZDUyNzlmZTYyMjk2M2YwNzQ3MzhhYzFlZTU0YzM3NGRjYmU3YjUyNy4uOTdjMDllMjcxNjVl
MDYyMTAxZTljMzIwNDE1ZjRkZmU2ZTQ5OTViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yODksNiArMjg5
LDcgQEAgVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCiBVSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIuY3BwCiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAog
VUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmNwcAorVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwCiBVSVByb2Nlc3MvVGV4dENoZWNrZXIuY3Bw
CiBVSVByb2Nlc3MvVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcAogVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcApAQCAtNDAyLDYgKzQwMyw3IEBAIFVJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNl
LmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCiBVSVByb2Nl
c3MvQVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuY3BwCitVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1RleHRD
aGVja2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNw
cAogVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlZi5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAppbmRleCA5OWJlYTFmYjU5ZTk2ZDZhMDBlZjFiYmEwOGE3MjRiMWYy
ODg3MDA0Li5mZDBkN2Q3YzdkMGExNTYyNjVkMmIyZTE4N2QyMzFmZWEzNjI0MTc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CkBAIC0zNzksNiArMzc5LDcgQEAgVUlQcm9jZXNzL0NvY29hL1BsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQogVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERl
bGVnYXRlLm1tCiBVSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCiBV
SVByb2Nlc3MvQ29jb2EvU2Vzc2lvblN0YXRlQ29kaW5nLm1tCitVSVByb2Nlc3MvQ29jb2EvU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2Ev
U3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1RleHRDaGVj
a2luZ0NvbnRyb2xsZXIubW0KIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4IGFhN2Q4OWMwMWU3MzUyMGNl
M2VlMDQyMjZiOWFlODU5NzBiZmFhNmUuLmIyZGZmMjk4M2VlMDk4YWRiYzkyNzE4MTVjNDJhYjZh
ZDZkNDA0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCkBA
IC0yMDIsNiArMjAyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0b3JD
b25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGVjaWRl
UG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0
aW9uSGFuZGxlcihmYWxzZSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCBiNTJjNDRiYWVhOWFjZjlmYzAz
MzJkNWE5ZjM3MzU2ZTlkMjM4NjI5Li4xOGNiZmQ1Yjc0ZWI4NzcwYTU3OGYxNWM4YTAxNjE0OTkw
MjE0NTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNh
c3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaApAQCAt
NzksNiArNzksNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI7CiBjbGFz
cyBEb3dubG9hZFByb3h5OwogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKIGNs
YXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworY2xhc3MgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2s7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94
eTsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CiBjbGFzcyBXZWJCYWNr
Rm9yd2FyZExpc3Q7CkBAIC0xNTIsNiArMTUzLDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJl
ZmVyZW5jZXNSZWYsIFdlYlByZWZlcmVuY2VzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJvdGVj
dGlvblNwYWNlUmVmLCBXZWJQcm90ZWN0aW9uU3BhY2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclJlZiwgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tTZXNzaW9uU3RhdGVSZWYsIEFQSTo6U2Vz
c2lvblN0YXRlKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2tSZWYsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKQogV0tf
QUREX0FQSV9NQVBQSU5HKFdLVGV4dENoZWNrZXJSZWYsIFdlYlRleHRDaGVja2VyKQogV0tfQURE
X0FQSV9NQVBQSU5HKFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJDb250ZW50RXh0ZW5zaW9u
U3RvcmVSZWYsIEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA0MzY5Y2RkODI1YjUxNTdmYjAxMGMzZjgxYWU3OGU2
NjBkYWE3NGZjLi4xMWM2NmJmNDI4NDkzMjgxNWQ3ZWZhYTRiYWUzOTA2ZWY3MjM0NTEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTYzLDYgKzYzLDcgQEAK
ICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb3JtYXRpb24uaCIK
ICNpbmNsdWRlICJQcmludEluZm8uaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tQYWdl
UG9saWN5Q2xpZW50SW50ZXJuYWwuaCIKICNpbmNsdWRlICJXS1BhZ2VSZW5kZXJpbmdQcm9ncmVz
c0V2ZW50c0ludGVybmFsLmgiCkBAIC0xMTUsNyArMTE2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
Q2xpZW50VHJhaXRzPFdLUGFnZVBvbGljeUNsaWVudEJhc2U+IHsKIH07CiAKIHRlbXBsYXRlPD4g
c3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VVSUNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0
ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlDbGll
bnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdlVUlDbGllbnRWNCwgV0tQYWdlVUlDbGllbnRW
NSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQYWdlVUlDbGllbnRWNywgV0tQYWdlVUlDbGllbnRWOCwg
V0tQYWdlVUlDbGllbnRWOSwgV0tQYWdlVUlDbGllbnRWMTAsIFdLUGFnZVVJQ2xpZW50VjExLCBX
S1BhZ2VVSUNsaWVudFYxMiwgV0tQYWdlVUlDbGllbnRWMTMsIFdLUGFnZVVJQ2xpZW50VjE0PiBW
ZXJzaW9uczsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQYWdl
VUlDbGllbnRWMSwgV0tQYWdlVUlDbGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdlVUlD
bGllbnRWNCwgV0tQYWdlVUlDbGllbnRWNSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQYWdlVUlDbGll
bnRWNywgV0tQYWdlVUlDbGllbnRWOCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQYWdlVUlDbGllbnRW
MTAsIFdLUGFnZVVJQ2xpZW50VjExLCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQYWdlVUlDbGllbnRW
MTMsIFdLUGFnZVVJQ2xpZW50VjE0LCBXS1BhZ2VVSUNsaWVudFYxNT4gVmVyc2lvbnM7CiB9Owog
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0yMTEwLDYgKzIxMTEsMTMgQEAgdm9pZCBX
S1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xp
ZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6
V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6UHJlc2VudGVkKTsKICAgICAgICAgfQogI2Vu
ZGlmCisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdChXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHJlcXVl
c3RpbmdPcmlnaW4sIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKCZyZXF1ZXN0aW5nT3JpZ2luKSwgdG9BUEkoJnRvcE9y
aWdpbiksIHRvQVBJKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjcmVhdGUo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpLnB0cigpKSk7CisgICAgICAgIH0KICAgICB9Owog
CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRVSUNsaWVudChtYWtlVW5pcXVlPFVJQ2xpZW50Pih3
a0NsaWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xp
ZW50LmgKaW5kZXggYjYzODgxNTVjZDMwMzZlNjY2MTEwZjE5MjU2MTZhZmQzN2U4NjhiYS4uN2Nk
OGZkMGQ5ODRjZmQ5ZjRkNDRiZmU4M2Q4NWRiMWI1NjE3NTk4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCkBAIC0xMzYsNiArMTM2LDcgQEAg
dHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRB
cHBlYXJhbmNlQ2FsbGJhY2spKFdLUGEKIHR5cGVkZWYgYm9vbCAoKldLUGFnZVNob3VsZEFsbG93
RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2Us
IFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pOwogCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2Fs
bGJhY2spKCk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1NlY3Vy
aXR5T3JpZ2luUmVmIHJlcXVlc3RpbmdPcmlnaW4sIFdLU2VjdXJpdHlPcmlnaW5SZWYgdG9wT3Jp
Z2luLCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIGNhbGxiYWNrKTsK
IAogLy8gRGVwcmVjYXRlZAogdHlwZWRlZiBXS1BhZ2VSZWYgKCpXS1BhZ2VDcmVhdGVOZXdQYWdl
Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkoV0tQYWdlUmVmIHBhZ2UsIFdLRGljdGlv
bmFyeVJlZiBmZWF0dXJlcywgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3Vz
ZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CkBAIC0xMzUzLDYg
KzEzNTQsMTE3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjE0IHsKICAgICBXS1Bh
Z2VSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWw7CiB9IFdLUGFnZVVJQ2xpZW50VjE0Owog
Cit0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFYxNSB7CisgICAgV0tQYWdlVUlDbGllbnRC
YXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNl
OworCisgICAgLy8gVmVyc2lvbiAwLgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFja19k
ZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZV9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1BhZ2U7CisgICAgV0tQYWdl
VUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbG9zZTsKKyAgICBXS1BhZ2VUYWtlRm9jdXNDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2VGb2N1czsKKyAgICBXS1BhZ2VGb2N1c0Nh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv
Y3VzOworICAgIFdLUGFnZVVuZm9jdXNDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5mb2N1czsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxl
cnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICAgICAgIHJ1bkphdmFTY3Jp
cHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRD
b25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgcnVuSmF2YVNj
cmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VSdW5KYXZhU2Ny
aXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgIHJ1bkph
dmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VTZXRTdGF0
dXNUZXh0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFN0YXR1c1RleHQ7CisgICAgV0tQYWdlTW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFja19k
ZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZU1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2Vk
Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAgICAgbWlzc2luZ1BsdWdpbkJ1dHRvbkNs
aWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VEaWROb3RIYW5kbGVLZXlF
dmVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZE5vdEhhbmRs
ZUtleUV2ZW50OworICAgIFdLUGFnZURpZE5vdEhhbmRsZVdoZWVsRXZlbnRDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkTm90SGFuZGxlV2hlZWxFdmVudDsKKyAgICBX
S1BhZ2VHZXRUb29sYmFyc0FyZVZpc2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRvb2xiYXJzQXJlVmlzaWJsZTsKKyAgICBXS1BhZ2VTZXRUb29sYmFyc0FyZVZp
c2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvb2xiYXJz
QXJlVmlzaWJsZTsKKyAgICBXS1BhZ2VHZXRNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVCYXJJc1Zpc2libGU7CisgICAgV0tQYWdl
U2V0TWVudUJhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRNZW51QmFySXNWaXNpYmxlOworICAgIFdLUGFnZUdldFN0YXR1c0JhcklzVmlzaWJs
ZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQmFySXNWaXNp
YmxlOworICAgIFdLUGFnZVNldFN0YXR1c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFnZUdl
dElzUmVzaXphYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaXNSZXNpemFibGU7CisgICAgV0tQYWdlU2V0SXNSZXNpemFibGVDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc1Jlc2l6YWJsZTsKKyAgICBXS1Bh
Z2VHZXRXaW5kb3dGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdldFdpbmRvd0ZyYW1lOworICAgIFdLUGFnZVNldFdpbmRvd0ZyYW1lQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0V2luZG93RnJhbWU7Cisg
ICAgV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsQ2FsbGJhY2tfZGVwcmVjYXRlZEZv
clVzZVdpdGhWNiAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWNjsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZERyYXc7CisgICAgV0tQYWdlVUlDbGllbnRDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlRGlk
U2Nyb2xsOworICAgIFdLUGFnZUV4Y2VlZGVkRGF0YWJhc2VRdW90YUNhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZWVkZWREYXRhYmFzZVF1b3RhOworICAgIFdLUGFn
ZVJ1bk9wZW5QYW5lbENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcnVuT3BlblBhbmVsOworICAgIFdLUGFnZURlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VIZWFkZXJIZWlnaHRDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckhlaWdodDsKKyAg
ICBXS1BhZ2VGb290ZXJIZWlnaHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvb3RlckhlaWdodDsKKyAgICBXS1BhZ2VEcmF3SGVhZGVyQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdIZWFkZXI7Cisg
ICAgV0tQYWdlRHJhd0Zvb3RlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkcmF3Rm9vdGVyOworICAgIFdLUGFnZVByaW50RnJhbWVDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRGcmFtZTsKKyAg
ICBXS1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJ1bk1vZGFsOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkMTsgLy8gVXNlZCB0
byBiZSBkaWRDb21wbGV0ZVJ1YmJlckJhbmRGb3JNYWluRnJhbWUKKyAgICBXS1BhZ2VTYXZlRGF0
YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIHNh
dmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXI7CisgICAgdm9pZCogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRJbnRl
cnJ1cHRKYXZhU2NyaXB0X3VuYXZhaWxhYmxlOworCisgICAgLy8gVmVyc2lvbiAxLgorICAgIFdL
UGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxICAgICAgICAg
ICAgICAgICAgY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOworICAgIFdLUGFn
ZU1vdXNlRGlkTW92ZU92ZXJFbGVtZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9y
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAgICBkZWNpZGVQb2xp
Y3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VVbmF2YWlsYWJs
ZVBsdWdpbkJ1dHRvbkNsaWNrZWRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxIHVuYXZh
aWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOworCisgICAg
Ly8gVmVyc2lvbiAyLgorICAgIFdLUGFnZVNob3dDb2xvclBpY2tlckNhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NvbG9yUGlja2VyOworICAgIFdLUGFn
ZUhpZGVDb2xvclBpY2tlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGlkZUNvbG9yUGlja2VyOworICAgIFdLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9u
Q2xpY2tlZENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgdW5hdmFpbGFibGVQbHVnaW5C
dXR0b25DbGlja2VkOworCisgICAgLy8gVmVyc2lvbiAzLgorICAgIFdLUGFnZVBpbm5lZFN0YXRl
RGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVk
U3RhdGVEaWRDaGFuZ2U7CisKKyAgICAvLyBWZXJzaW9uIDQuCisgICAgdm9pZCogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVz
ZWQyOyAvLyBVc2VkIHRvIGJlIGRpZEJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVz
cy4KKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVudXNlZDM7IC8vIFVzZWQgdG8gYmUgZGlkUmVjb2duaXplTG9u
Z01vdXNlUHJlc3MuCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQ0OyAvLyBVc2VkIHRvIGJlIGRpZENh
bmNlbFRyYWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MuCisgICAgV0tQYWdlSXNQbGF5aW5n
QXVkaW9EaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Bs
YXlpbmdBdWRpb0RpZENoYW5nZTsKKworICAgIC8vIFZlcnNpb24gNS4KKyAgICBXS1BhZ2VEZWNp
ZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgICAg
IGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZURp
ZENsaWNrQXV0b0ZpbGxCdXR0b25DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbjsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRD
YWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRB
bGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25m
aXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlw
dENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0
UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFT
Y3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKKyAgICB2b2lkKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNl
ZDU7IC8vIFVzZWQgdG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCisKKyAgICAv
LyBWZXJzaW9uIDYuCisgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlOworICAgIFdLUGFnZVJ1
bkphdmFTY3JpcHRBbGVydENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnVuSmF2YVNjcmlwdEFsZXJ0OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZp
cm07CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0OworICAgIFdLQ2hlY2tVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luOworCisgICAgLy8gVmVyc2lvbiA3Lgor
ICAgIFdLUGFnZVJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOworICAgIFdLRnVsbHNj
cmVlbk1heVJldHVyblRvSW5saW5lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lOworCisgICAgLy8gVmVyc2lvbiA4LgorICAg
IFdLUmVxdWVzdFBvaW50ZXJMb2NrQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdFBvaW50ZXJMb2NrOworICAgIFdLRGlkTG9zZVBvaW50ZXJMb2Nr
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkTG9zZVBv
aW50ZXJMb2NrOworCisgICAgLy8gVmVyc2lvbiA5LgorICAgIFdLSGFuZGxlQXV0b3BsYXlFdmVu
dENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQXV0
b3BsYXlFdmVudDsKKworICAgIC8vIFZlcnNpb24gMTAuCisgICAgV0tIYXNWaWRlb0luUGljdHVy
ZUluUGljdHVyZURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBoYXNWaWRl
b0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZTsKKyAgICBXS0RpZEV4Y2VlZEJhY2tncm91bmRS
ZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmRDYWxsYmFjayAgICAgICAgIGRpZEV4Y2VlZEJh
Y2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQ7CisKKyAgICAvLyBWZXJzaW9u
IDExLgorICAgIFdLUGFnZURpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFy
YW5jZUNhbGxiYWNrICAgICAgICAgZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRB
cHBlYXJhbmNlOworCisgICAgLy8gVmVyc2lvbiAxMi4KKyAgICBXS1BhZ2VSZXF1ZXN0U3RvcmFn
ZUFjY2Vzc0NvbmZpcm1DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RT
dG9yYWdlQWNjZXNzQ29uZmlybTsKKworICAgIC8vIFZlcnNpb24gMTMuCisgICAgV0tQYWdlU2hv
dWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NhbGxiYWNrICAgICAgICAg
ICBzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzOworCisgICAgLy8g
VmVyc2lvbiAxNC4KKyAgICBXS1BhZ2VSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWw7CisK
KyAgICAvLyBWZXJzaW9uIDE1LgorICAgIFdLUGFnZURlY2lkZVBvbGljeUZvclNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgZGVjaWRlUG9saWN5Rm9yU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKKyAgICAKK30gV0tQYWdlVUlDbGllbnRWMTU7
CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3YmU5ZGIwNzFjMzc1N2I0OTIxMTZi
ZjZiYzI2YzQyZmY3NjEzYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcApAQCAt
MCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCIKKworI2luY2x1ZGUgIlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKworV0tUeXBlSUQgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0dl
dFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrOjpBUElUeXBlKTsKK30KKwordm9pZCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNhbGxiYWNrQ29tcGxldGUoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
a1JlZiBzcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaywgYm9vbCBncmFudGVkKQor
eworICAgIHJldHVybiB0b0ltcGwoc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sp
LT5jb21wbGV0ZShncmFudGVkKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kM2NjMTBjYTBjZmM1MTRjYTM5OGM0ZTBiZTUzMmE0MTVkYTNh
MWRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCkBAIC0wLDAgKzEsNDUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tf
aAorI2RlZmluZSBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrX2gKKworI2lu
Y2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMi
IHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFja0dldFR5cGVJRCh2b2lkKTsKKworV0tfRVhQT1JUIHZvaWQgV0tTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0NvbXBsZXRlKFdLU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2tSZWYgc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2ss
IGJvb2wgZ3JhbnRlZCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRp
ZiAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrX2ggKi8KKworCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVBy
aXZhdGUuaAppbmRleCBkMWVhZTIwMWU2NTQyZjRmYWI2MDE5ODBkYzY2MTI0OTEzMTk3OTNmLi41
ZWFiNDY1NzlmOTlmYTZmNjMzMTZhNGMwNTQ0MjJkNjNhNmZkOTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgK
QEAgLTE1Miw2ICsxNTIsOCBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogCiAtICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHdpbGxTaGFyZUFjdGl2aXR5SXRlbXM6KE5TQXJyYXkg
KilhY3Rpdml0eUl0ZW1zIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKIAorLSAo
dm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopcmVxdWVzdGluZ09yaWdp
biB0b3BPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKil0b3BPcmlnaW4gZGVjaXNpb25IYW5kbGVy
Oih2b2lkICheKShCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlciBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAjaWYgVEFSR0VUX09T
X0lQSE9ORQogCiAtIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHNob3VsZElu
Y2x1ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICop
ZWxlbWVudCBXS19BUElfQVZBSUxBQkxFKGlvcyg5LjApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZmQ3MTYzOTQzYjE1MmU1NWU5
NDJjOWRiODdjNGM2MmM2YzczMTRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1t
CkBAIC0wLDAgKzEsMjAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCisKKyNpbXBvcnQgIkFQ
SVNlY3VyaXR5T3JpZ2luLmgiCisjaW1wb3J0ICJBUElVSUNsaWVudC5oIgorI2ltcG9ydCAiU2Fu
ZGJveFV0aWxpdGllcy5oIgorI2ltcG9ydCA8U3BlZWNoL1NwZWVjaC5oPgorI2ltcG9ydCA8d3Rm
L3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgorI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlv
blNvZnRMaW5rLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUksoU3BlZWNoKQorU09GVF9MSU5LX0NM
QVNTKFNwZWVjaCwgU0ZTcGVlY2hSZWNvZ25pemVyKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
c3RhdGljIGJvb2wgcGVyZm9ybVNhbmRib3hDaGVjaygpCit7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGlmIChjdXJyZW50UHJvY2Vzc0lzU2FuZGJveGVkKCkgJiYgISFzYW5kYm94X2NoZWNrKGdl
dHBpZCgpLCAiZGV2aWNlLW1pY3JvcGhvbmUiLCBTQU5EQk9YX0ZJTFRFUl9OT05FKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9udEhhbmRsZXIpCit7CisgICAgbV9yZXF1ZXN0cy5hcHBlbmQoU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShjb21wbGV0
aW9udEhhbmRsZXIpKSk7CisgICAgaWYgKG1fcmVxdWVzdHMuc2l6ZSgpID09IDEpCisgICAgICAg
IHN0YXJ0TmV4dFJlcXVlc3QoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyOjpzdGFydE5leHRSZXF1ZXN0KCkKK3sKKyAgICBjaGVja1NhbmRib3hSZXF1aXJl
bWVudCgpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNv
bXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6
RGVjaXNpb24gZGVjaXNpb24pCit7CisgICAgQVNTRVJUKCFtX3JlcXVlc3RzLmlzRW1wdHkoKSk7
CisgICAgYXV0byBjdXJyZW50UmVxdWVzdCA9IG1fcmVxdWVzdHMudGFrZUZpcnN0KCk7CisgICAg
Y3VycmVudFJlcXVlc3QtPmNvbXBsZXRlKGRlY2lzaW9uKTsKKworICAgIHN0YXJ0TmV4dFJlcXVl
c3QoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVj
a1NhbmRib3hSZXF1aXJlbWVudCgpCit7CisgICAgaWYgKCFtX2lzU2FuZGJveENoZWNrUGFzc2Vk
Lmhhc1ZhbHVlKCkpCisgICAgICAgIG1faXNTYW5kYm94Q2hlY2tQYXNzZWQgPSBwZXJmb3JtU2Fu
ZGJveENoZWNrKCk7CisKKyAgICBpZiAoIW1faXNTYW5kYm94Q2hlY2tQYXNzZWQpIHsKKyAgICAg
ICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0OjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjaGVj
a01pY3JvcGhvbmVBY2Nlc3MoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyOjpjaGVja01pY3JvcGhvbmVBY2Nlc3MoKQoreworICAgIGlmIChtX2lzTWljcm9w
aG9uZUFjY2Vzc0F1dGhvcml6ZWQuaGFzVmFsdWUoKSAmJiBtX2lzTWljcm9waG9uZUFjY2Vzc0F1
dGhvcml6ZWQudmFsdWUoKSkgeworICAgICAgICBjaGVja1NwZWVjaFJlY29nbml0aW9uU2Vydmlj
ZUFjY2VzcygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1faXNNaWNyb3Bo
b25lQWNjZXNzQXV0aG9yaXplZC5oYXNWYWx1ZSgpICYmICFtX2lzTWljcm9waG9uZUFjY2Vzc0F1
dGhvcml6ZWQudmFsdWUoKSkgeworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIE5vIHByb21wdCBmb3IgbWljcm9waG9uZSBvciBzcGVl
Y2ggcmVjb2duaXRpb24gc2VydmljZS4KKyAgICBpZiAobV9wYWdlLnByZWZlcmVuY2VzKCkubW9j
a0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpKSB7CisgICAgICAgIGNoZWNrVXNlclBlcm1pc3Npb25G
b3JPcmlnaW4oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gbWljcm9waG9u
ZUF1dGhvcml6YXRpb25TdGF0dXMgPSBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIGF1
dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpb107CisgICAgaWYg
KG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1
dGhvcml6ZWQpIHsKKyAgICAgICAgbV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkID0gdHJ1
ZTsKKyAgICAgICAgY2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAobWljcm9waG9uZUF1dGhvcml6YXRpb25T
dGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IG1pY3JvcGhvbmVBdXRob3Jp
emF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpIHsKKyAgICAg
ICAgbV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkID0gZmFsc2U7CisgICAgICAgIGNvbXBs
ZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVj
aXNpb246OkRlbnkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKG1pY3Jv
cGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVy
bWluZWQpOworICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oQk9PTCBpc0F1dGhvcml6ZWQpIG11dGFibGUgeworICAg
ICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICgh
aXNBdXRob3JpemVkKSB7CisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9pc01pY3JvcGhvbmVBY2Nl
c3NBdXRob3JpemVkID0gZmFsc2U7CisgICAgICAgICAgICB3ZWFrVGhpcy0+Y29tcGxldGVDdXJy
ZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6
RGVueSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB3ZWFrVGhp
cy0+bV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkID0gdHJ1ZTsKKyAgICAgICAgd2Vha1Ro
aXMtPmNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7CisgICAgfSk7CisgICAg
W1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSByZXF1ZXN0QWNjZXNzRm9yTWVkaWFUeXBl
OkFWTWVkaWFUeXBlQXVkaW8gY29tcGxldGlvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgp
XTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1Nw
ZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpCit7CisgICAgaWYgKG1faXNTcGVlY2hSZWNv
Z25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkLmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgaWYg
KG1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkLnZhbHVlKCkpCisg
ICAgICAgICAgICBjaGVja1VzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgYXV0byBzcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1cyA9IFtnZXRTRlNw
ZWVjaFJlY29nbml6ZXJDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNdOworICAgIGlmIChzcGVl
Y2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1cyA9PSBTRlNwZWVjaFJlY29nbml6ZXJBdXRo
b3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZCkgeworICAgICAgICBtX2lzU3BlZWNoUmVjb2duaXRp
b25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCA9IHRydWU7CisgICAgICAgIGNoZWNrVXNlclBlcm1p
c3Npb25Gb3JPcmlnaW4oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzcGVl
Y2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1cyA9PSBTRlNwZWVjaFJlY29nbml6ZXJBdXRo
b3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCB8fCBzcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlv
blN0YXR1cyA9PSBTRlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkKSB7
CisgICAgICAgIG1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkID0g
ZmFsc2U7CisgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgQVNTRVJUKHNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzID09IFNG
U3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkKTsKKyAgICBh
dXRvIGRlY2lzaW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyldKFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzKSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBpZiAoc3RhdHVzICE9IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0
dXNBdXRob3JpemVkKSB7CisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9pc1NwZWVjaFJlY29nbml0
aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHdlYWtUaGlz
LT5jb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIHdlYWtUaGlzLT5tX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9y
aXplZCA9IHRydWU7CisgICAgICAgIHdlYWtUaGlzLT5jaGVja1VzZXJQZXJtaXNzaW9uRm9yT3Jp
Z2luKCk7CisgICAgfSk7CisgICAgW2dldFNGU3BlZWNoUmVjb2duaXplckNsYXNzKCkgcmVxdWVz
dEF1dGhvcml6YXRpb246ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKK30KKwordm9pZCBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1VzZXJQZXJtaXNzaW9uRm9yT3JpZ2lu
KCkKK3sKKyAgICBBU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKyAgICBhdXRvJiBjdXJy
ZW50UmVxdWVzdCA9IG1fcmVxdWVzdHMuZmlyc3QoKTsKKworICAgIGF1dG8gY2xpZW50T3JpZ2lu
ID0gY3VycmVudFJlcXVlc3QtPm9yaWdpbigpOworICAgIGlmIChtX29yaWdpblBlcm1pc3Npb25N
YXAuY29udGFpbnMoY2xpZW50T3JpZ2luKSkgeworICAgICAgICBib29sIGdyYW50ZWQgPSBtX29y
aWdpblBlcm1pc3Npb25NYXAuZ2V0KGNsaWVudE9yaWdpbik7CisgICAgICAgIGNvbXBsZXRlQ3Vy
cmVudFJlcXVlc3QoZ3JhbnRlZCA/IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6
OkRlY2lzaW9uOjpBbGxvdyA6IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRl
Y2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZGVjaXNp
b25IYW5kbGVyID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShib29sIGlzUGVybWl0
dGVkKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgQVNTRVJUKCF3ZWFrVGhpcy0+bV9yZXF1ZXN0cy5pc0VtcHR5KCkpOworICAgICAgICB3
ZWFrVGhpcy0+bV9vcmlnaW5QZXJtaXNzaW9uTWFwLnNldCh3ZWFrVGhpcy0+bV9yZXF1ZXN0cy5m
aXJzdCgpLT5vcmlnaW4oKSwgaXNQZXJtaXR0ZWQpOworICAgICAgICB3ZWFrVGhpcy0+Y29tcGxl
dGVDdXJyZW50UmVxdWVzdChpc1Blcm1pdHRlZCA/IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3Q6OkRlY2lzaW9uOjpBbGxvdyA6IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICB9OworCisgICAgYXV0byByZXF1ZXN0aW5nT3Jp
Z2luID0gY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOworICAgIGF1
dG8gdG9wT3JpZ2luID1jbGllbnRPcmlnaW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7Cisg
ICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdChtX3BhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXF1ZXN0
aW5nT3JpZ2luLmdldCgpKS5nZXQoKSwgQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRvcE9y
aWdpbi5nZXQoKSkuZ2V0KCksIFdURk1vdmUoZGVjaXNpb25IYW5kbGVyKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLmgKaW5kZXggOGEwOTQ3NDVjMWYyNGJlMTA1ZGJiMDJhYjkxZTMwN2IzMWQ0ODZiMS4uZWFk
NGQ1N2VlMGEzM2E2YjNlZWJiZGVjNDNmOGI3Mzk1NWQ5NzYwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtMTYxLDYgKzE2MSw3IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICAgICAgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlv
blBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYkZy
YW1lUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0
aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYpIGZpbmFsOwogI2VuZGlmCisgICAgICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdl
UHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogCiAgICAgICAgIFVJRGVsZWdhdGUm
IG1fdWlEZWxlZ2F0ZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW0KaW5kZXggZDAzMzhmOGQ2ZTNiOWExM2RmMmFmMTUzYWNiNWRlYjM4ZTFmY2Q5
Yi4uMTkzNDU2YjFjMDc4Njc5Njk2MTk0YjM1MzFiYzY1ZGM0MTU1MTllOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMzMyLDQgKzEzMzIsMjYg
QEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6aW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hh
bmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXoKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLVUlEZWxl
Z2F0ZVByaXZhdGU+PihkZWxlZ2F0ZSkgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBp
bWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkOm5ld1NpemVdOwogfQogCit2b2lkIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6OlNlY3VyaXR5T3JpZ2lu
JiByZXF1ZXN0aW5nT3JpZ2luLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IChpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pbV91aURlbGVnYXRlLm1fZGVs
ZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIVtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46dG9wT3JpZ2luOmRlY2lzaW9uSGFuZGxlcjopXSkg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpj
cmVhdGUoZGVsZWdhdGUsIEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uRm9yT3JpZ2luOnRvcE9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAg
W2RlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcmVxdWVzdFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkZvck9yaWdpbjp3cmFwcGVyKHJlcXVlc3RpbmdPcmlnaW4pIHRv
cE9yaWdpbjp3cmFwcGVyKHRvcE9yaWdpbikgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihb
Y29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGNvbXBsZXRpb25IYW5kbGVyLCB7IH0p
LCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wgZ3JhbnRlZCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGdyYW50ZWQpOworICAgIH0pLmdldCgp
XTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVlMmFhNzQxZWZjYmE1NmMxNmRiOWRkOGRjZDlkMTA0M2Y1MTQ1NGMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoV2ViUGFnZVBy
b3h5JiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09D
T0EpCisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdChX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKK30KKwor
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydEN1cnJlbnRSZXF1
ZXN0KCkKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpj
b21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6
OkRlY2lzaW9uKQoreworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI6OmNoZWNrU2FuZGJveFJlcXVpcmVtZW50KCkKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja01pY3JvcGhvbmVBY2Nlc3MoKQoreworfQorCit2
b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU3BlZWNoUmVjb2du
aXRpb25TZXJ2aWNlQWNjZXNzKCkKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyOjpjaGVja1VzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKCkKK3sKK30KKworI2Vu
ZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWI5YzU1ZTczM2IwMTNhZjFiNWI1M2FmY2E4YzcwZGI4ZGVmYjRjYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIoV2ViUGFnZVByb3h5Jik7CisgICAgdm9pZCByZXF1ZXN0KFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworcHJpdmF0ZToK
KyAgICB2b2lkIHN0YXJ0TmV4dFJlcXVlc3QoKTsKKyAgICB2b2lkIGNvbXBsZXRlQ3VycmVudFJl
cXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb24pOworICAg
IHZvaWQgY2hlY2tTYW5kYm94UmVxdWlyZW1lbnQoKTsKKyAgICB2b2lkIGNoZWNrTWljcm9waG9u
ZUFjY2VzcygpOworICAgIHZvaWQgY2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3Mo
KTsKKyAgICB2b2lkIGNoZWNrVXNlclBlcm1pc3Npb25Gb3JPcmlnaW4oKTsKKworICAgIFdlYlBh
Z2VQcm94eSYgbV9wYWdlOworICAgIERlcXVlPFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0Pj4gbV9yZXF1ZXN0czsKKyAgICBPcHRpb25hbDxib29sPiBtX2lzU2FuZGJveENo
ZWNrUGFzc2VkOworICAgIE9wdGlvbmFsPGJvb2w+IG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9y
aXplZDsKKyAgICBPcHRpb25hbDxib29sPiBtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNj
ZXNzQXV0aG9yaXplZDsKKyAgICBIYXNoTWFwPENsaWVudE9yaWdpbiwgYm9vbD4gbV9vcmlnaW5Q
ZXJtaXNzaW9uTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAyNjk1N2JmYjliMzA0Mzg3YmQ0N2EwOWJlMmM1NmRhYzgw
YWYzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0NsaWVudE9yaWdpbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+IGNyZWF0ZShXZWJDb3JlOjpDbGllbnRP
cmlnaW4mJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpKTsKKyAgICB9CisKKyAgICBlbnVtIGNsYXNzIERlY2lzaW9uIHsgRGVueSwg
QWxsb3cgfTsKKyAgICB2b2lkIGNvbXBsZXRlKERlY2lzaW9uIGRlY2lzaW9uKQorICAgIHsKKyAg
ICAgICAgYm9vbCBpc0FsbG93ZWQgPSBkZWNpc2lvbiA9PSBEZWNpc2lvbjo6QWxsb3c7CisgICAg
ICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhh
bmRsZXIsIHsgfSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGlzQWxsb3dlZCk7CisgICAg
fQorCisgICAgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdCB7IHJl
dHVybiBtX29yaWdpbjsgfQorCitwcml2YXRlOgorICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3QoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICA6IG1fb3JpZ2lu
KFdURk1vdmUob3JpZ2luKSkKKyAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKQorICAgIHsgfQorCisgICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
IG1fb3JpZ2luOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IG1fY29tcGxldGlv
bkhhbmRsZXI7Cit9OworCitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
ayA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaz4gY3JlYXRlKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayhXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIH0KKworICAgIHZvaWQgY29tcGxldGUoYm9vbCBn
cmFudGVkKSB7IG1fY29tcGxldGlvbkhhbmRsZXIoZ3JhbnRlZCk7IH0KKworcHJpdmF0ZToKKyAg
ICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICA6IG1fY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgeyB9CisKKyAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCA0MzAwZTFmNTIyZmY1MjI3NDhmMmIxZGY5MTM3ZGY3YTRkMjZjNWE0Li4zNWY3OGQ0MGE5
OThiNjEwOTEzM2FiNzRjYWVlY2IzNmNmZjI1MGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg2LDYgKzg2LDcgQEAKICNpbmNsdWRlICJQcm92aXNpb25h
bFBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIlNhZmVCcm93c2luZ1dhcm5pbmcuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
VHlwZS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJT
dGF0ZS5oIgpAQCAtMTAxNzEsNiArMTAxNzIsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3Bh
dGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoKQogICAgIH0pOwogfQogCitTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyJiBXZWJQYWdlUHJveHk6OnNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIoKQoreworICAgIGlmICghbV9zcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyKQorICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI+KCp0
aGlzKTsKKworICAgIHJldHVybiAqbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2NlZmJmYzY5
NDVlZGZlNDNhZTU2YzJkNTY0YzBlODFlOTViYjRhNi4uNjM3ODliOTY5ZDllMDFhMzJmOGEzNTA5
NWJkYTgwMTdjNWY1ZDQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTMwNSw2ICszMDUsNyBAQCBjbGFzcyBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3Jt
YW5jZURhdGE7CiBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk7CiBjbGFzcyBTZWNLZXlQcm94eVN0b3JlOworY2xh
c3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjsKIGNsYXNzIFVzZXJEYXRhOwog
Y2xhc3MgVmlld1NuYXBzaG90OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKQEAgLTE4MTksNiAr
MTgyMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5
KFNlY29uZHMgY2FwdHVyZVJlcG9ydGluZ0RlbGF5KSB7IG1fbWVkaWFDYXB0dXJlUmVwb3J0aW5n
RGVsYXkgPSBjYXB0dXJlUmVwb3J0aW5nRGVsYXk7IH0KICAgICBzaXplX3Qgc3VzcGVuZE1lZGlh
UGxheWJhY2tDb3VudGVyKCkgeyByZXR1cm4gbV9zdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXI7
IH0KIAorICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXImIHNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIoKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHko
UGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9u
PiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjg4OCw2ICsyODkxLDgg
QEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9zdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXIgeyAw
IH07CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24+IG1fbmV3UGFn
ZU5hdmlnYXRpb25BZENsaWNrQXR0cmlidXRpb247CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcj4gbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MmQzNzUxY2QxZmZk
N2FhY2ZlMjNiYWY5ZTY2NWUwM2FhN2Y3YTFkLi43MDdmNGVlYmM5ZGJiZGYyYzgyNmQ2MjFkZTk4
ODcwMWU4ZDVjYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE0MDcsNiArMTQwNyw5IEBACiAJCTkzRDZCNzg3MjU0Q0NEOEMwMDU4
REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3ODYyNTRDQ0Q4QjAw
NThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07
CiAJCTkzRDZCNzg4MjU0Q0NEOTQwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25NZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRDZCNzdFMjU0Q0NBQkIwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKIAkJOTNENkI3OEEyNTRDRDQz
RTAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2
Qjc3RDI1NENDQUJCMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTNENkI3QjQyNTUyNjhENTAwNThERDNBIC8qIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi87IH07CisJCTkzRDZCN0I1MjU1MjY4
RDcwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdCMjI1NTI2OEEy
MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzRDZCN0I5MjU1MzRB
MTcwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdCNzI1NTM0
QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRTZBNEVF
MUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcgLyog
X1dLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzRjU0OUI0MUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmln
dXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk5NTBGMjg4MDI1
MjQxNEVBMDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBGMjg3RTI1MjQxNEU5MDBCNzRGMUMg
LyogV0tNb3VzZURldmljZU9ic2VydmVyLmggKi87IH07CkBAIC00NTIyLDYgKzQ1MjUsMTIgQEAK
IAkJOTNENkI3ODAyNTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2Qjc4
MTI1NENDQUJDMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0Q2Qjc4NjI1NENDRDhCMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNENkI3QUYyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5M0Q2QjdCMDI1NTI2OEExMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNENkI3QjIyNTUyNjhBMjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5M0Q2QjdCMzI1NTI2OEJGMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0I4MjU1MzRBMTIwMDU4REQzQSAvKiBXS1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcg
LyogX1dLSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBf
V0tIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjU0OUIz
MUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y1NDlCNTFFMzE3NERBMDAwRTcyMzkgLyogV0tTbmFw
c2hvdENvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTY0NTksNiArNjQ2OCw3IEBACiAJCQkJNUNBOTg1NEIyMTBCRUI3MzAwNTdFQjZCIC8q
IFNhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSAqLywKIAkJCQkxQTAwMkQ0NzE5NkIzNDVEMDBC
OUFENDQgLyogU2Vzc2lvblN0YXRlQ29kaW5nLmggKi8sCiAJCQkJMUEwMDJENDYxOTZCMzQ1RDAw
QjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5tbSAqLywKKwkJCQk5M0Q2QjdCMzI1NTI2OEJG
MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tICov
LAogCQkJCTMxNTcxMzVDMjA0MEE5QjIwMDg0RjlDRiAvKiBTeXN0ZW1QcmV2aWV3Q29udHJvbGxl
ckNvY29hLm1tICovLAogCQkJCTJEMENGNjRDMjFGMkE4MDMwMDc4NzU2NiAvKiBUZXh0Q2hlY2tp
bmdDb250cm9sbGVyLmggKi8sCiAJCQkJMkQwQ0Y2NEIyMUYyQTgwMzAwNzg3NTY2IC8qIFRleHRD
aGVja2luZ0NvbnRyb2xsZXIubW0gKi8sCkBAIC05MTg2LDYgKzkxOTYsOSBAQAogCQkJCUJDMTEx
QjA4MTEyRjVFM0MwMDMzN0JBQiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLywKIAkJCQkx
QTMwMDY2QzExMTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovLAogCQkJ
CTVDQTk4NTQ5MjEwQkVCNUEwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nLmggKi8sCisJ
CQkJOTNENkI3QjAyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIuY3BwICovLAorCQkJCTkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi8sCisJCQkJOTNENkI3QUYyNTUyNjhBMTAw
NThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCAqLywKIAkJCQk5
M0Q2Qjc2QjI1NEI4OTU4MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwICov
LAogCQkJCTkzRDZCNzZDMjU0Qjg5NTgwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5oICovLAogCQkJCTkzRDZCNzdBMjU0Qzk4NEQwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5tZXNzYWdlcy5pbiAqLywKQEAgLTk1MjYsNiArOTUzOSw4IEBACiAJCQkJMzMzNjc2
MzkxMzBDOTlEQzAwNkM5REUyIC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCAqLywKIAkJCQkx
QURFNDZCMDE5NTRFQzYxMDAwRjc5ODUgLyogV0tTZXNzaW9uU3RhdGVSZWYuY3BwICovLAogCQkJ
CTFBREU0NkIxMTk1NEVDNjEwMDBGNzk4NSAvKiBXS1Nlc3Npb25TdGF0ZVJlZi5oICovLAorCQkJ
CTkzRDZCN0I4MjU1MzRBMTIwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmNwcCAqLywKKwkJCQk5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICovLAogCQkJCTUxRjg4NkEzMUYyQzIx
NEEwMEMxOTNFRiAvKiBXS1Rlc3RpbmdTdXBwb3J0LmNwcCAqLywKIAkJCQk1MUY4ODZBNDFGMkMy
MTRBMDBDMTkzRUYgLyogV0tUZXN0aW5nU3VwcG9ydC5oICovLAogCQkJCTMxNDg4OEZFMUQ5MUIx
MUQwMDM3NzA0MiAvKiBXS1RleHRDaGVja2VyLmNwcCAqLywKQEAgLTExMzYyLDYgKzExMzc3LDgg
QEAKIAkJCQk1N0JCRUE2RDIyQkMwQkZFMDAyNzM5OTUgLyogU09BdXRob3JpemF0aW9uTG9hZFBv
bGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc2Q0E5RDcyMkI4NjIxODAwMzAxNDNDIC8qIFNP
QXV0aG9yaXphdGlvbk5TVVJMRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4NTIy
QjM1MTY5MDA4RDBFOEIgLyogU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTNENkI3QjUyNTUyNjhENzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDZCN0I0MjU1MjY4RDUwMDU4REQz
QSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzg0MjU0Q0NEMEUwMDU4REQzQSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4NTI1
NENDRDQzMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlc1JlcGxpZXMu
aCBpbiBIZWFkZXJzICovLApAQCAtMTE5NzQsNiArMTE5OTEsNyBAQAogCQkJCTUxM0U0NjJEMUFE
ODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzRjU0OUI0MUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmln
dXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODcyMkIzNTE3MDAwOEQwRThCIC8q
IFdLU09BdXRob3JpemF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDZCN0I5
MjU1MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTc4RkYzMjIyNDE5MTk2MDA5NjQ4M0UgLyogV0tTdG9y
YWdlQWNjZXNzQWxlcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjA2MTI0RkYwMjcwMDY4
RjIwQSAvKiBXS1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2MUExMjRGRjAzNzAw
NjhGMjBBIC8qIFdLU3RyaW5nQ0YuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk4OGMwOGNmNjI3NGNiNWNlMjE5NmFk
ZDAyZjZlMjY2YjkzMGQyMTYuLmYxMjdkOThlOGUwOGNlMzBlZTVlM2RlNWU3NmNkZTNmMTQ0Y2Ni
NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNCBAQAorMjAyMC0xMS0wNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3IgU3BlZWNo
UmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODQ3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkdyYW50ZWQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNvbXBs
ZXRlU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2spOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyk6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVz
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRl
c3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKToKKwogMjAyMC0xMS0wMyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAog
ICAgICAgICBTZXQgdXAgYmFzaWMgaW5mcmFzdHJ1Y3R1cmUgZm9yIFNwZWVjaFJlY29nbml0aW9u
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA5Njk2MTRlNjcyODg2Mjk2MzMwN2M5OWVj
NDc4NDE1MjRmZjAxMjliLi45ODI5N2FmNzBkYjUxMWRhZDBhNzc5NzVlYTM4ZWQ1YzhkYjZiZDdj
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTQwMSw0ICs0MDEsNyBAQCBpbnRlcmZh
Y2UgVGVzdFJ1bm5lciB7CiAgICAgdW5kZWZpbmVkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbk92ZXJy
aWRlVGltZXJGb3JUZXN0aW5nKGJvb2xlYW4gdmFsdWUpOwogICAgIHVuZGVmaW5lZCBzZXRBZENs
aWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZyhET01TdHJpbmcgdXJsKTsKICAg
ICB1bmRlZmluZWQgbWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7
CisKKyAgICAvLyBTcGVlY2hSZWNvZ25pdGlvbgorICAgIHVuZGVmaW5lZCBzZXRJc1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbGVhbiB2YWx1ZSk7CiB9OwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5k
ZXggZTVjNWY5OWFkMWRjOWMyODZlMDk0NzM0NmM5YmQ3NWZjYTJmOTNjMy4uMjViNDE3Njc2MzAx
MTJjNTE1Y2EzMTQxZDhkOTM1ZWFiNGJhMjU3OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yMDQ3LDYgKzIwNDcs
MTEgQEAgdm9pZCBUZXN0UnVubmVyOjpkaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFjaygpCiAg
ICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhEaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFja0lE
KTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkdyYW50ZWQoYm9vbCBncmFudGVkKQoreworICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdl
KCJzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQiLCBncmFudGVkKTsKK30K
KwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIH0gLy8gbmFtZXNwYWNlIFdU
UgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaAppbmRleCBhYWE1MjE2ZjkyNjBkYjRkOTg4MWNkMGRkYmIxOWY1MDg1Mjk3ZmQ4Li45MThh
YTk2NDI2NzJlZmFhMGNlNDYzNGIxNjhiMDAwZDM0MzNlZWU1IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNTExLDYgKzUx
MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25V
UkxGb3JUZXN0aW5nKEpTU3RyaW5nUmVmKTsKICAgICB2b2lkIG1hcmtBZENsaWNrQXR0cmlidXRp
b25zQXNFeHBpcmVkRm9yVGVzdGluZygpOwogCisgICAgdm9pZCBzZXRJc1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCk7CisKIHByaXZhdGU6CiAgICAgVGVzdFJ1bm5lcigp
OwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGE4YjE1
NDAxZTIwOTJhYmRiODA3YTI0ZGQ1OTBjNDUwYjFhMWZhNDQuLmQ5YzRiMWZiYmZkM2U2YTY4MzI3
MGEyNWM3OWNiYWVkN2VjOWQ0MjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJvdGVjdGlv
blNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0L1dLU2VjdXJpdHlPcmlnaW5SZWYuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1RleHRDaGVj
a2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVVJMLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVXNl
ckNvbnRlbnRDb250cm9sbGVyUmVmLmg+CkBAIC0yOTcsNiArMjk4LDIxIEBAIHN0YXRpYyB2b2lk
IHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoKQogewogfQogCitzdGF0aWMgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tT
ZWN1cml0eU9yaWdpblJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFja1JlZiBjYWxsYmFjaykKK3sKKyAgICBUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkuY29tcGxldGVTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVjayhjYWxs
YmFjayk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNvbXBsZXRlU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2hlY2soV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1Jl
ZiBjYWxsYmFjaykKK3sKKyAgICBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
Q29tcGxldGUoY2FsbGJhY2ssIG1faXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVk
KTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25HcmFudGVkKGJvb2wgZ3JhbnRlZCkKK3sKKyAgICBtX2lzU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uR3JhbnRlZCA9IGdyYW50ZWQ7Cit9CisKIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxl
cjo6Y3JlYXRlT3RoZXJQYWdlKFdLUGFnZVJlZiwgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25m
aWd1cmF0aW9uLCBXS05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvbiwgV0tXaW5k
b3dGZWF0dXJlc1JlZiB3aW5kb3dGZWF0dXJlcywgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsK
ICAgICBQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcgPSBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdl
YlZpZXcqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CkBAIC02NTcsOCArNjczLDgg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKGNvbnN0IFRl
c3RPcHRpb25zJiBvcHRpb25zKQogICAgIFdLSFRUUENvb2tpZVN0b3JlRGVsZXRlQWxsQ29va2ll
cyhXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29va2llU3RvcmUod2Vic2l0ZURhdGFTdG9yZSgp
KSwgbnVsbHB0ciwgbnVsbHB0cik7CiAKICAgICBwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoY29uZmln
dXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7Ci0gICAgV0tQYWdlVUlDbGllbnRWMTQgcGFnZVVJQ2xp
ZW50ID0gewotICAgICAgICB7IDE0LCBtX21haW5XZWJWaWV3LmdldCgpIH0sCisgICAgV0tQYWdl
VUlDbGllbnRWMTUgcGFnZVVJQ2xpZW50ID0geworICAgICAgICB7IDE1LCBtX21haW5XZWJWaWV3
LmdldCgpIH0sCiAgICAgICAgIDAsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMAogICAgICAgICAwLCAvLyBzaG93UGFnZQogICAgICAgICAwLCAvLyBjbG9zZQpAQCAtNzMx
LDcgKzc0Nyw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9u
cyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKICAgICAgICAgMCwgLy8gZGlkUmVzaWduSW5w
dXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlCiAgICAgICAgIDAsIC8vIHJlcXVlc3RT
dG9yYWdlQWNjZXNzQ29uZmlybQogICAgICAgICBzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9u
QW5kTW90aW9uQWNjZXNzLAotICAgICAgICBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsCisgICAg
ICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwsCisgICAgICAgIGRlY2lkZVBvbGljeUZvclNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QKICAgICB9OwogICAgIFdLUGFnZVNldFBh
Z2VVSUNsaWVudChtX21haW5XZWJWaWV3LT5wYWdlKCksICZwYWdlVUlDbGllbnQuYmFzZSk7CiAK
QEAgLTEwNzcsNiArMTA5NCw4IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0Nv
bnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgbV9zZXJ2
ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQgPSAwOwogICAgIG1fc2hvdWxkRGlz
bWlzc0phdmFTY3JpcHRBbGVydHNBc3luY2hyb25vdXNseSA9IGZhbHNlOwogCisgICAgc2V0SXNT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKHRydWUpOworCiAgICAgYXV0byBsb2Fk
QWJvdXRCbGFuayA9IFt0aGlzXSB7CiAgICAgICAgIG1fZG9uZVJlc2V0dGluZyA9IGZhbHNlOwog
ICAgICAgICBXS1BhZ2VMb2FkVVJMKG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgYmxhbmtVUkwoKSk7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggMzNiNjQ5NGFjNjI0
NGI5MmZjYjc4MDlhNThkNzIwM2M3YzEyNThhOC4uMDVjOGY4YmRhYTk1YWQ4N2U0MzllMzA5M2I4
YTRmMzRmNWY4MmM1NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApA
QCAtMzUxLDYgKzM1MSw5IEBAIHB1YmxpYzoKIAogICAgIFdLVVJMUmVmIGN1cnJlbnRUZXN0VVJM
KCkgY29uc3Q7CiAKKyAgICB2b2lkIGNvbXBsZXRlU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2hlY2soV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZik7CisgICAgdm9p
ZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCk7CisKIHByaXZh
dGU6CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVQYWdl
Q29uZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9ucyYpOwogICAgIFdLUmV0YWluUHRyPFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlQ29udGV4dENvbmZpZ3VyYXRpb24oY29uc3Qg
VGVzdE9wdGlvbnMmKSBjb25zdDsKQEAgLTY0MCw2ICs2NDMsOCBAQCBwcml2YXRlOgogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIGJvb2wgbV9oYXNTZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIgeyBmYWxzZSB9OwogI2VuZGlmCisKKyAgICBib29sIG1faXNTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25HcmFudGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAxNGMwNGVkMWZhOTM5
NGY1NzJmNjQ5YTkxYjQ3ZWZiMjA2ZWY4NTRlLi41YjY2NjE3YmVlMDE2YjY3NTFjN2JiMmJjZTZi
YjhiYWU0NGViMGEwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cApAQCAtMTM0NSw2ICsxMzQ1LDExIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9j
YXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAic2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFu
dGVkIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldElzU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChib29sZWFuVmFsdWUobWVzc2FnZUJvZHkpKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413251</attachid>
            <date>2020-11-04 22:30:53 -0800</date>
            <delta_ts>2020-11-04 23:23:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201104223052.patch</filename>
            <type>text/plain</type>
            <size>84776</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc5ZGNmOTFjY2YwZDhi
NDY0OGFhZGE0OWRjNTg2ZDkzNjU1NDcxNC4uNDUzMmUzZjZkMWJiYmU5NTdkNjA2M2M0YzEwYTFi
MDM0MjBjMDdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTExLTA0ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyBw
ZXJtaXNzaW9uIGNoZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnRS
ZWNvZ25pdGlvbik6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OmNs
aWVudE9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3Q6OnNldElzV2FpdGluZ0ZvclBlcm1pc3Npb25DaGVjayk6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OmlzV2FpdGluZ0ZvclBlcm1pc3Npb25DaGVjayBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
SW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6
ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZS5oOgorICAgICAgICAqIHBhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmg6CisK
IDIwMjAtMTEtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICB3
aW5kb3cuZXZlbnQgbWF5IGdldCBzZXQgb24gd3JvbmcgZ2xvYmFsIHdoZW4gZGlzcGF0Y2hpbmcg
YW4gZXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggNzVjNDIyZjQ0NjkzZTU3ZWZmOWJmMGU1MDA5OTFiZGVmNjFj
YTdkOS4uYWQ5ZGM1MDcwZDViZjM3MTc2ODJmMDBhYzU2OWU5YjIxMzNiMmUxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw3NSBAQAorMjAyMC0xMS0wNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxl
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3IgU3Bl
ZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODQ3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
V0tCYXNlLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29h
LnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAgIChB
UEk6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlD
bGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrLmNwcDogQWRkZWQuCisgICAgICAgIChXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrR2V0VHlwZUlEKToKKyAgICAgICAgKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2tDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbTogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OnBlcmZvcm1TYW5kYm94Q2hlY2spOgorICAgICAgICAoV2ViS2l0OjpT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI6OnJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydE5leHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y29tcGxldGVDdXJyZW50UmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6
OmNoZWNrU2FuZGJveFJlcXVpcmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKToKKyAgICAgICAg
KFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hS
ZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1VzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNs
aWVudDo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAgIChX
ZWJLaXQ6On5TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0Q3Vy
cmVudFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpj
aGVja01pY3JvcGhvbmVBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNo
ZWNrVXNlclBlcm1pc3Npb25Gb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Ojpjb21wbGV0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6
Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3Q6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OmNv
bXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2s6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnRQb2Nlc3NpbmdSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmNvbnRpbnVlUHJv
Y2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNl
cnZlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2Nh
bEF1dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcklu
dGVybmFsOjpnZXRFeGlzdGluZ0NyZWRlbnRpYWxzKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxB
dXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Y3Jl
YXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpzdGFydCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaDoKKwogMjAyMC0x
MS0wNCAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgW0Nv
bnRhY3QgUGlja2VyIEFQSV0gQWRkIHN1cHBvcnQgZm9yIHBpY2tlciBVSSBvbiBpT1MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcApp
bmRleCA1MWEzMmNkYWFjYWExZWQwMTE0Mjc2N2QyMmUzMDI1MjZkZWJmNTk1Li5mMTE3YzFmYjFi
NWJkMDRhZTc1NTI1NjVmYmFhODg5MWM1YzFhZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb24uaCIKIAor
I2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTY5LDcgKzcwLDggQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gU3BlZWNoUmVjb2duaXRpb246OnN0YXJ0UmVjb2duaXRpb24oKQogICAg
IGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVW5rbm93bkVy
cm9yLCAiUmVjb2duaXRpb24gZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGNvbm5lY3Rpb24iX3MgfTsK
IAotICAgIG1fY29ubmVjdGlvbi0+c3RhcnQoaWRlbnRpZmllcigpLCBtX2xhbmcsIG1fY29udGlu
dW91cywgbV9pbnRlcmltUmVzdWx0cywgbV9tYXhBbHRlcm5hdGl2ZXMpOworICAgIGF1dG8mIGRv
Y3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwor
ICAgIG1fY29ubmVjdGlvbi0+c3RhcnQoaWRlbnRpZmllcigpLCBtX2xhbmcsIG1fY29udGludW91
cywgbV9pbnRlcmltUmVzdWx0cywgbV9tYXhBbHRlcm5hdGl2ZXMsIENsaWVudE9yaWdpbiB7IGRv
Y3VtZW50LnRvcE9yaWdpbigpLmRhdGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRh
KCkgfSk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpTdGFydGluZzsKICAgICByZXR1cm4geyB9Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAppbmRleCAzZmQyZDMzYWNhMDIwNTI2MzQwNThkMGZiNTY1
MmViNzAwN2ZhNTJhLi5hMDAyZGVkYTBhNjM4Y2UzMzAwMGU0MzBmMDhlYjQ3YWU5YTUyYjE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb24uaApAQCAtMzEsMTIgKzMxLDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50OwogY2xhc3Mg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOwogCiBjbGFzcyBT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDbGllbnQoU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
dGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0
X3QgbWF4QWx0ZXJuYXRpdmVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywg
Ym9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5h
dGl2ZXMsIENsaWVudE9yaWdpbiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBhYm9ydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoY29uc3QgU3BlZWNoUmVjb2du
aXRpb25VcGRhdGUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCmluZGV4IDVjZWVhMDFjNzM4NjU1NmQ0
MjUxZjhjOGI5NWMzMTI0YmFmYzYwMTIuLmRhOTU5ZDdjMDc4ZTlhNTQxZWY5NDFiZWI1ZGU5YjNh
ZGY5NTcyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0IDogcHVibGljIFJl
ZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiB7CitjbGFzcyBTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiB7CiBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3Q+IGNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYpOwogCkBAIC0zOSwxMSAr
MzksMTYgQEAgcHVibGljOgogICAgIGJvb2wgY29udGludW91cygpIGNvbnN0IHsgcmV0dXJuIG1f
aW5mby5jb250aW51b3VzOzsgfQogICAgIGJvb2wgaW50ZXJpbVJlc3VsdHMoKSBjb25zdCB7IHJl
dHVybiBtX2luZm8uaW50ZXJpbVJlc3VsdHM7IH0KICAgICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2
ZXMoKSBjb25zdCB7IHJldHVybiBtX2luZm8ubWF4QWx0ZXJuYXRpdmVzOyB9CisgICAgY29uc3Qg
Q2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2luZm8uY2xpZW50
T3JpZ2luOyB9CiAKKyAgICB2b2lkIHNldElzV2FpdGluZ0ZvclBlcm1pc3Npb25DaGVjayhib29s
IGlzV2FpdGluZ0ZvclBlcm1pc3Npb25DaGVjaykgeyBtX2lzV2FpdGluZ0ZvclBlcm1pc3Npb25D
aGVjayA9IGlzV2FpdGluZ0ZvclBlcm1pc3Npb25DaGVjazsgfQorICAgIGJvb2wgaXNXYWl0aW5n
Rm9yUGVybWlzc2lvbkNoZWNrKCkgY29uc3QgeyByZXR1cm4gbV9pc1dhaXRpbmdGb3JQZXJtaXNz
aW9uQ2hlY2s7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8mJik7CiAKICAgICBTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvIG1faW5mbzsKKyAgICBib29sIG1faXNXYWl0aW5nRm9yUGVy
bWlzc2lvbkNoZWNrIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uUmVxdWVzdEluZm8uaAppbmRleCBhYjFlMWFlNmVmMzg4OThjMjFhMmE5ZGY3YWYxZjAw
N2UyNGIxN2QwLi40ZmMyYTNkYWI3ZTEwNzZjYTZjOWZjMTk4NWUwYjFjMTliMjY5ZTk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3RJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0SW5mby5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
NSw2ICszNiw3IEBAIHN0cnVjdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIHsKICAgICBi
b29sIGNvbnRpbnVvdXMgeyBmYWxzZSB9OwogICAgIGJvb2wgaW50ZXJpbVJlc3VsdHMgeyBmYWxz
ZSB9OwogICAgIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcyB7IDEgfTsKKyAgICBDbGllbnRPcmln
aW4gY2xpZW50T3JpZ2luOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwpA
QCAtNzQsMTIgKzc2LDE4IEBAIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8+
IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmRlY29kZShEZWNvCiAgICAgaWYgKCFtYXhB
bHRlcm5hdGl2ZXMpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBPcHRpb25h
bDxDbGllbnRPcmlnaW4+IGNsaWVudE9yaWdpbjsKKyAgICBkZWNvZGVyID4+IGNsaWVudE9yaWdp
bjsKKyAgICBpZiAoIWNsaWVudE9yaWdpbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KwogICAgIHJldHVybiB7ewogICAgICAgICBXVEZNb3ZlKCpjbGllbnRJZGVudGlmaWVyKSwKICAg
ICAgICAgV1RGTW92ZSgqbGFuZyksCiAgICAgICAgIFdURk1vdmUoKmNvbnRpbnVvdXMpLAogICAg
ICAgICBXVEZNb3ZlKCppbnRlcmltUmVzdWx0cyksCi0gICAgICAgIFdURk1vdmUoKm1heEFsdGVy
bmF0aXZlcykKKyAgICAgICAgV1RGTW92ZSgqbWF4QWx0ZXJuYXRpdmVzKSwKKyAgICAgICAgV1RG
TW92ZSgqY2xpZW50T3JpZ2luKQogICAgIH19OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAppbmRleCAzYTgy
YmY2YmFmNTRjZTBjNGIxMzM0ZWY2ZjhiNTg5M2YzYjg5ODJlLi5lZjNiN2I5NDMxZDAzNDE0MTkw
NGE3YmQ4YzJhOTRjZTgwOTE1Yzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKQEAgLTUyLDggKzUyLDggQEAg
U3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZSk7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7CiBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIGNyZWF0ZShTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGUpOwotICAgIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVFcnJv
cihTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTcGVl
Y2hSZWNvZ25pdGlvbkVycm9yJik7Ci0gICAgc3RhdGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
IGNyZWF0ZVJlc3VsdChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
LCBjb25zdCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVFcnJvcihTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTcGVlY2hSZWNv
Z25pdGlvbkVycm9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlIGNyZWF0ZVJlc3VsdChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYpOwog
CiAgICAgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyOyB9CiAgICAgU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblBy
b3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92
aWRlci5oCmluZGV4IGNmOWU3MmI5M2MwNjRhNTVkZGRmYWI3YjNjYWZiNDg5MGUwMzVmNDYuLmJm
Y2MyZTljMmY5MTc3MjI4OWQyNjA0MmI1ZWE5YjJiN2EyZWUzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaApAQCAtMzks
NyArMzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEdW1t
eVNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbigpKTsKICAgICAgICAgfQogICAgICAgICB2b2lk
IHJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpIGZpbmFs
IHsgfQotICAgICAgICB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wsIHVpbnQ2NF90KSBmaW5hbCB7
IH0KKyAgICAgICAgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCwgQ2xpZW50T3Jp
Z2luJiYpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIHN0b3AoU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmluYWwgeyB9CiAgICAgICAgIHZvaWQgYWJvcnQoU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmluYWwgeyB9CiAgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShjb25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYp
IGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVj
dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IDZkMDY1NjQ1
ZGNlZTYyZTU5ZDUwZGJlZjM3NDM1YTQ5YTgwZWI2ODIuLmNkMWNhZDk2YjQwMzEyZGIzYjE4OGRl
NzFmNjA4OGJmNzI4ZmQ4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAg
LTE2NSw2ICsxNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJ1bkphdmFTY3JpcHRBbGVydFJlc3Vs
dExpc3RlbmVyLAogICAgICAgICBSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVyLAog
ICAgICAgICBSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXIsCisgICAgICAgIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLAogICAgICAgICBUZXh0Q2hlY2tlciwKICAg
ICAgICAgVVJMU2NoZW1lVGFzaywKICAgICAgICAgVXNlckNvbnRlbnRDb250cm9sbGVyLApAQCAt
NDEwLDYgKzQxMSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8QVBJOjpPYmplY3Q6
OlR5cGU+IHsKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlJ1bkphdmFTY3JpcHRBbGVydFJl
c3VsdExpc3RlbmVyLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6UnVuSmF2YVNjcmlwdENv
bmZpcm1SZXN1bHRMaXN0ZW5lciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlJ1bkphdmFT
Y3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lciwKKyAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLAogICAgICAgICBBUEk6Ok9iamVjdDo6
VHlwZTo6VGV4dENoZWNrZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpVUkxTY2hlbWVU
YXNrLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6VXNlckNvbnRlbnRDb250cm9sbGVyLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAppbmRleCA5ZTgyZTU2MDAxODdlYzFjZjhhZjli
ZWU3OWU3MWQwZThkN2ZkMTVhLi44NGVlNmMyODhmNmQyZWJkNTFmYTczZWE3MjcwOGYzMjk0NmJk
ZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAtMTQxLDYgKzE0MSw3IEBA
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2Vic2l0ZURhdGFDb25maWd1cmF0aW9uU3Rv
cmUqIFdLV2Vic2l0ZURhdGFTdG9yZUNvCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dl
YnNpdGVEYXRhU3RvcmUqIFdLV2Vic2l0ZURhdGFTdG9yZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLV2Vic2l0ZVBvbGljaWVzKiBXS1dlYnNpdGVQb2xpY2llc1JlZjsKIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2luZG93RmVhdHVyZXMqIFdLV2luZG93RmVhdHVyZXNS
ZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNhbGxiYWNrKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmOwog
CiAvKiBXZWJLaXQyIEJ1bmRsZSB0eXBlcyAqLwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBkNTI3OWZlNjIy
OTYzZjA3NDczOGFjMWVlNTRjMzc0ZGNiZTdiNTI3Li45N2MwOWUyNzE2NWUwNjIxMDFlOWMzMjA0
MTVmNGRmZTZlNDk5NWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI4OSw2ICsyODksNyBAQCBVSVByb2Nl
c3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNl
cnZlci5jcHAKIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCiBVSVByb2Nlc3MvU3lz
dGVtUHJldmlld0NvbnRyb2xsZXIuY3BwCitVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlci5jcHAKIFVJUHJvY2Vzcy9UZXh0Q2hlY2tlci5jcHAKIFVJUHJvY2Vzcy9U
ZXh0Q2hlY2tlckNvbXBsZXRpb24uY3BwCiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrUHJveHkuY3BwCkBAIC00MDIsNiArNDAzLDcgQEAgVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVy
ZW5jZXMuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuY3BwCiBVSVByb2Nl
c3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1Nl
c3Npb25TdGF0ZVJlZi5jcHAKK1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLVGV4dENoZWNrZXIuY3BwCiBV
SVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCiBVSVByb2Nlc3Mv
QVBJL0MvV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUmVmLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IDA4NGQ1MTM1MmQ0NGE0NTA5NDliM2ZiZDFkMWQ3NjEzNWZiMmJlYjIuLmMyNGZj
NDQ0MWVkMDk0MWU0MmE3NWIxNTA4ZDdmM2ZjNjM0NjVkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKQEAgLTM3OSw2ICszNzksNyBAQCBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5Lm1tCiBVSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KIFVJ
UHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KIFVJUHJvY2Vzcy9Db2Nv
YS9TZXNzaW9uU3RhdGVDb2RpbmcubW0KK1VJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3
Q29udHJvbGxlckNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxl
ci5tbQogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggYWE3ZDg5YzAxZTczNTIwY2UzZWUwNDIyNmI5YWU4
NTk3MGJmYWE2ZS4uYjJkZmYyOTgzZWUwOThhZGJjOTI3MTgxNWM0MmFiNmFkNmQ0MDQ5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTIwMiw2ICsyMDIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb246
OmNyZWF0ZSgpOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgQVBJ
OjpTZWN1cml0eU9yaWdpbiYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQVBJQ2FzdC5oCmluZGV4IGI1MmM0NGJhZWE5YWNmOWZjMDMzMmQ1YTlmMzczNTZl
OWQyMzg2MjkuLjE4Y2JmZDViNzRlYjg3NzBhNTc4ZjE1YzhhMDE2MTQ5OTAyMTQ1NDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC03OSw2ICs3OSw3IEBA
IGNsYXNzIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjsKIGNsYXNzIERvd25sb2FkUHJv
eHk7CiBjbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OwogY2xhc3MgTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3Q7CitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFjazsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OwogY2xhc3MgVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsK
QEAgLTE1Miw2ICsxNTMsNyBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tQcmVmZXJlbmNlc1JlZiwg
V2ViUHJlZmVyZW5jZXMpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQcm90ZWN0aW9uU3BhY2VSZWYs
IFdlYlByb3RlY3Rpb25TcGFjZSkKIFdLX0FERF9BUElfTUFQUElORyhXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW5hZ2VyUmVmLCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcikKIFdL
X0FERF9BUElfTUFQUElORyhXS1Nlc3Npb25TdGF0ZVJlZiwgQVBJOjpTZXNzaW9uU3RhdGUpCitX
S19BRERfQVBJX01BUFBJTkcoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1Jl
ZiwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2spCiBXS19BRERfQVBJX01BUFBJ
TkcoV0tUZXh0Q2hlY2tlclJlZiwgV2ViVGV4dENoZWNrZXIpCiBXS19BRERfQVBJX01BUFBJTkco
V0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYsIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlZiwgQVBJ
OjpDb250ZW50UnVsZUxpc3RTdG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCmluZGV4IDQzNjljZGQ4MjViNTE1N2ZiMDEwYzNmODFhZTc4ZTY2MGRhYTc0ZmMuLjEx
YzY2YmY0Mjg0OTMyODE1ZDdlZmFhNGJhZTM5MDZlZjcyMzQ1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgIlBh
Z2VDbGllbnQuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIlBy
aW50SW5mby5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Qu
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS1BhZ2VQb2xpY3lDbGllbnRJ
bnRlcm5hbC5oIgogI2luY2x1ZGUgIldLUGFnZVJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzSW50ZXJu
YWwuaCIKQEAgLTExNSw3ICsxMTYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8
V0tQYWdlUG9saWN5Q2xpZW50QmFzZT4gewogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50
VHJhaXRzPFdLUGFnZVVJQ2xpZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1Bh
Z2VVSUNsaWVudFYwLCBXS1BhZ2VVSUNsaWVudFYxLCBXS1BhZ2VVSUNsaWVudFYyLCBXS1BhZ2VV
SUNsaWVudFYzLCBXS1BhZ2VVSUNsaWVudFY0LCBXS1BhZ2VVSUNsaWVudFY1LCBXS1BhZ2VVSUNs
aWVudFY2LCBXS1BhZ2VVSUNsaWVudFY3LCBXS1BhZ2VVSUNsaWVudFY4LCBXS1BhZ2VVSUNsaWVu
dFY5LCBXS1BhZ2VVSUNsaWVudFYxMCwgV0tQYWdlVUlDbGllbnRWMTEsIFdLUGFnZVVJQ2xpZW50
VjEyLCBXS1BhZ2VVSUNsaWVudFYxMywgV0tQYWdlVUlDbGllbnRWMTQ+IFZlcnNpb25zOworICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTxXS1BhZ2VVSUNsaWVudFYwLCBXS1BhZ2VVSUNsaWVudFYxLCBX
S1BhZ2VVSUNsaWVudFYyLCBXS1BhZ2VVSUNsaWVudFYzLCBXS1BhZ2VVSUNsaWVudFY0LCBXS1Bh
Z2VVSUNsaWVudFY1LCBXS1BhZ2VVSUNsaWVudFY2LCBXS1BhZ2VVSUNsaWVudFY3LCBXS1BhZ2VV
SUNsaWVudFY4LCBXS1BhZ2VVSUNsaWVudFY5LCBXS1BhZ2VVSUNsaWVudFYxMCwgV0tQYWdlVUlD
bGllbnRWMTEsIFdLUGFnZVVJQ2xpZW50VjEyLCBXS1BhZ2VVSUNsaWVudFYxMywgV0tQYWdlVUlD
bGllbnRWMTQsIFdLUGFnZVVJQ2xpZW50VjE1PiBWZXJzaW9uczsKIH07CiAKICNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKQEAgLTIxMTAsNiArMjExMSwxMyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VV
SUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0Ns
aWVudAogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpXZWJBdXRoZW50aWNh
dGlvblBhbmVsUmVzdWx0OjpQcmVzZW50ZWQpOwogICAgICAgICB9CiAjZW5kaWYKKyAgICAgICAg
dm9pZCBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdl
YlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgcmVxdWVzdGluZ09yaWdpbiwg
QVBJOjpTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3QpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5k
ZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KHRvQVBJKCZw
YWdlKSwgdG9BUEkoJnJlcXVlc3RpbmdPcmlnaW4pLCB0b0FQSSgmdG9wT3JpZ2luKSwgdG9BUEko
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSkucHRyKCkpKTsKKyAgICAgICAgfQogICAgIH07CiAKICAgICB0b0ltcGwo
cGFnZVJlZiktPnNldFVJQ2xpZW50KG1ha2VVbmlxdWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaAppbmRleCBi
NjM4ODE1NWNkMzAzNmU2NjYxMTBmMTkyNTYxNmFmZDM3ZTg2OGJhLi43Y2Q4ZmQwZDk4NGNmZDlm
NGQ0NGJmZTgzZDg1ZGIxYjU2MTc1OThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKQEAgLTEzNiw2ICsxMzYsNyBAQCB0eXBlZGVmIHZvaWQg
KCpXS1BhZ2VEaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2VDYWxs
YmFjaykoV0tQYQogdHlwZWRlZiBib29sICgqV0tQYWdlU2hvdWxkQWxsb3dEZXZpY2VPcmllbnRh
dGlvbkFuZE1vdGlvbkFjY2Vzc0NhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTZWN1cml0eU9y
aWdpblJlZiBzZWN1cml0eU9yaWdpbiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiAKIHR5cGVk
ZWYgdm9pZCAoKldLUGFnZVJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYWxsYmFjaykoKTsKK3R5
cGVkZWYgdm9pZCAoKldLUGFnZURlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3RDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYg
cmVxdWVzdGluZ09yaWdpbiwgV0tTZWN1cml0eU9yaWdpblJlZiB0b3BPcmlnaW4sIFdLU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgY2FsbGJhY2spOwogCiAvLyBEZXByZWNh
dGVkCiB0eXBlZGVmIFdLUGFnZVJlZiAoKldLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFja19kZXBy
ZWNhdGVkRm9yVXNlV2l0aFYwKShXS1BhZ2VSZWYgcGFnZSwgV0tEaWN0aW9uYXJ5UmVmIGZlYXR1
cmVzLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNl
QnV0dG9uLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKQEAgLTEzNTMsNiArMTM1NCwxMTcgQEAg
dHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMTQgewogICAgIFdLUGFnZVJ1bldlYkF1dGhl
bnRpY2F0aW9uUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuV2Vi
QXV0aGVudGljYXRpb25QYW5lbDsKIH0gV0tQYWdlVUlDbGllbnRWMTQ7CiAKK3R5cGVkZWYgc3Ry
dWN0IFdLUGFnZVVJQ2xpZW50VjE1IHsKKyAgICBXS1BhZ2VVSUNsaWVudEJhc2UgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7CisKKyAgICAvLyBW
ZXJzaW9uIDAuCisgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjA7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaG93UGFnZTsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlOwor
ICAgIFdLUGFnZVRha2VGb2N1c0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGFrZUZvY3VzOworICAgIFdLUGFnZUZvY3VzQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXM7CisgICAgV0tQ
YWdlVW5mb2N1c0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bmZvY3VzOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFj
a19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybV9k
ZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21w
dF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZVNldFN0YXR1c1RleHRDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdHVzVGV4dDsK
KyAgICBXS1BhZ2VNb3VzZURpZE1vdmVPdmVyRWxlbWVudENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjAgICAgICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50X2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjA7CisgICAgV0tQYWdlTWlzc2luZ1BsdWdpbkJ1dHRvbkNsaWNrZWRDYWxsYmFja19kZXBy
ZWNhdGVkRm9yVXNlV2l0aFYwICAgICBtaXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNh
dGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZURpZE5vdEhhbmRsZUtleUV2ZW50Q2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkTm90SGFuZGxlS2V5RXZlbnQ7Cisg
ICAgV0tQYWdlRGlkTm90SGFuZGxlV2hlZWxFdmVudENhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWROb3RIYW5kbGVXaGVlbEV2ZW50OworICAgIFdLUGFnZUdldFRvb2xi
YXJzQXJlVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9v
bGJhcnNBcmVWaXNpYmxlOworICAgIFdLUGFnZVNldFRvb2xiYXJzQXJlVmlzaWJsZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG9vbGJhcnNBcmVWaXNpYmxlOwor
ICAgIFdLUGFnZUdldE1lbnVCYXJJc1Zpc2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWVudUJhcklzVmlzaWJsZTsKKyAgICBXS1BhZ2VTZXRNZW51QmFySXNW
aXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1lbnVC
YXJJc1Zpc2libGU7CisgICAgV0tQYWdlR2V0U3RhdHVzQmFySXNWaXNpYmxlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNCYXJJc1Zpc2libGU7CisgICAgV0tQ
YWdlU2V0U3RhdHVzQmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRTdGF0dXNCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlR2V0SXNSZXNpemFibGVD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Jlc2l6YWJs
ZTsKKyAgICBXS1BhZ2VTZXRJc1Jlc2l6YWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldElzUmVzaXphYmxlOworICAgIFdLUGFnZUdldFdpbmRvd0Zy
YW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0V2lu
ZG93RnJhbWU7CisgICAgV0tQYWdlU2V0V2luZG93RnJhbWVDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRXaW5kb3dGcmFtZTsKKyAgICBXS1BhZ2VSdW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWxDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY2ICAg
IHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXByZWNhdGVkRm9yVXNlV2l0aFY2OworICAg
IFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkRHJhdzsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VEaWRTY3JvbGw7CisgICAg
V0tQYWdlRXhjZWVkZWREYXRhYmFzZVF1b3RhQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlZWRlZERhdGFiYXNlUXVvdGE7CisgICAgV0tQYWdlUnVuT3BlblBhbmVs
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5PcGVu
UGFuZWw7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdENhbGxiYWNrICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0OworICAgIFdLUGFnZUhlYWRlckhlaWdodENhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVySGVpZ2h0OworICAgIFdLUGFnZUZvb3Rl
ckhlaWdodENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9vdGVySGVpZ2h0OworICAgIFdLUGFnZURyYXdIZWFkZXJDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0hlYWRlcjsKKyAgICBXS1BhZ2VEcmF3
Rm9vdGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRyYXdGb290ZXI7CisgICAgV0tQYWdlUHJpbnRGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludEZyYW1lOworICAgIFdLUGFnZVVJQ2xp
ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cnVuTW9kYWw7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQxOyAvLyBVc2VkIHRvIGJlIGRpZENvbXBs
ZXRlUnViYmVyQmFuZEZvck1haW5GcmFtZQorICAgIFdLUGFnZVNhdmVEYXRhVG9GaWxlSW5Eb3du
bG9hZHNGb2xkZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgc2F2ZURhdGFUb0ZpbGVJ
bkRvd25sb2Fkc0ZvbGRlcjsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEludGVycnVwdEphdmFTY3Jp
cHRfdW5hdmFpbGFibGU7CisKKyAgICAvLyBWZXJzaW9uIDEuCisgICAgV0tQYWdlQ3JlYXRlTmV3
UGFnZUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEgICAgICAgICAgICAgICAgICBjcmVh
dGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjE7CisgICAgV0tQYWdlTW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VzZURp
ZE1vdmVPdmVyRWxlbWVudDsKKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgIGRlY2lkZVBvbGljeUZvck5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9u
Q2xpY2tlZENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEgdW5hdmFpbGFibGVQbHVnaW5C
dXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjE7CisKKyAgICAvLyBWZXJzaW9uIDIu
CisgICAgV0tQYWdlU2hvd0NvbG9yUGlja2VyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaG93Q29sb3JQaWNrZXI7CisgICAgV0tQYWdlSGlkZUNvbG9yUGlj
a2VyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlQ29s
b3JQaWNrZXI7CisgICAgV0tQYWdlVW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQ7
CisKKyAgICAvLyBWZXJzaW9uIDMuCisgICAgV0tQYWdlUGlubmVkU3RhdGVEaWRDaGFuZ2VDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWRTdGF0ZURpZENoYW5n
ZTsKKworICAgIC8vIFZlcnNpb24gNC4KKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDI7IC8vIFVzZWQg
dG8gYmUgZGlkQmVnaW5UcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzLgorICAgIHZvaWQq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW51c2VkMzsgLy8gVXNlZCB0byBiZSBkaWRSZWNvZ25pemVMb25nTW91c2VQcmVzcy4K
KyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVudXNlZDQ7IC8vIFVzZWQgdG8gYmUgZGlkQ2FuY2VsVHJhY2tpbmdQ
b3RlbnRpYWxMb25nTW91c2VQcmVzcy4KKyAgICBXS1BhZ2VJc1BsYXlpbmdBdWRpb0RpZENoYW5n
ZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUGxheWluZ0F1ZGlvRGlk
Q2hhbmdlOworCisgICAgLy8gVmVyc2lvbiA1LgorICAgIFdLUGFnZURlY2lkZVBvbGljeUZvclVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgICAgZGVjaWRlUG9saWN5
Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQYWdlRGlkQ2xpY2tBdXRvRmls
bEJ1dHRvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRDbGlja0F1
dG9GaWxsQnV0dG9uOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjU7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19k
ZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybV9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFY1OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFj
a19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdF9k
ZXByZWNhdGVkRm9yVXNlV2l0aFY1OworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0
byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4KKworICAgIC8vIFZlcnNpb24gNi4K
KyAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFs
ZXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5KYXZhU2Ny
aXB0QWxlcnQ7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybTsKKyAgICBXS1Bh
Z2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHQ7CisgICAgV0tDaGVja1VzZXJNZWRpYVBlcm1pc3Np
b25DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1VzZXJNZWRp
YVBlcm1pc3Npb25Gb3JPcmlnaW47CisKKyAgICAvLyBWZXJzaW9uIDcuCisgICAgV0tQYWdlUnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CisgICAgV0tGdWxsc2NyZWVuTWF5UmV0dXJu
VG9JbmxpbmVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsc2NyZWVu
TWF5UmV0dXJuVG9JbmxpbmU7CisKKyAgICAvLyBWZXJzaW9uIDguCisgICAgV0tSZXF1ZXN0UG9p
bnRlckxvY2tDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0UG9pbnRlckxvY2s7CisgICAgV0tEaWRMb3NlUG9pbnRlckxvY2tDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRMb3NlUG9pbnRlckxvY2s7CisK
KyAgICAvLyBWZXJzaW9uIDkuCisgICAgV0tIYW5kbGVBdXRvcGxheUV2ZW50Q2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVBdXRvcGxheUV2ZW50Owor
CisgICAgLy8gVmVyc2lvbiAxMC4KKyAgICBXS0hhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlk
Q2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIGhhc1ZpZGVvSW5QaWN0dXJlSW5Q
aWN0dXJlRGlkQ2hhbmdlOworICAgIFdLRGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRX
aGlsZUluRm9yZWdyb3VuZENhbGxiYWNrICAgICAgICAgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291
cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDsKKworICAgIC8vIFZlcnNpb24gMTEuCisgICAgV0tQ
YWdlRGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlQ2FsbGJhY2sg
ICAgICAgICBkaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2U7CisK
KyAgICAvLyBWZXJzaW9uIDEyLgorICAgIFdLUGFnZVJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmly
bUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0b3JhZ2VBY2Nlc3ND
b25maXJtOworCisgICAgLy8gVmVyc2lvbiAxMy4KKyAgICBXS1BhZ2VTaG91bGRBbGxvd0Rldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ2FsbGJhY2sgICAgICAgICAgIHNob3VsZEFsbG93
RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3M7CisKKyAgICAvLyBWZXJzaW9uIDE0Lgor
ICAgIFdLUGFnZVJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDsKKworICAgIC8vIFZlcnNp
b24gMTUuCisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdENhbGxiYWNrICAgICBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0OworICAgIAorfSBXS1BhZ2VVSUNsaWVudFYxNTsKKwogI2lmZGVmIF9f
Y3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdiZTlkYjA3MWMzNzU3YjQ5MjExNmJmNmJjMjZjNDJmZjc2
MTNhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwCkBAIC0wLDAgKzEsNDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIgorCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uUmVxdWVzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5
cGVJRCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKCkKK3sK
KyAgICByZXR1cm4gdG9BUEkoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OkFQ
SVR5cGUpOworfQorCit2b2lkIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tD
b21wbGV0ZShXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIHNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLCBib29sIGdyYW50ZWQpCit7CisgICAgcmV0dXJu
IHRvSW1wbChzcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayktPmNvbXBsZXRlKGdy
YW50ZWQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI4YWVhZmM2OTg0YmE5NmY1NDg5MmU3MzJhZmVhM2EwNjNjOWM3MmQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1
c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKHZvaWQpOworCitXS19FWFBP
UlQgdm9pZCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUoV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBzcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjaywgYm9vbCBncmFudGVkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VJRGVsZWdhdGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IGQxZWFlMjAxZTY1NDJmNGZhYjYwMTk4MGRjNjYx
MjQ5MTMxOTc5M2YuLjVlYWI0NjU3OWY5OWZhNmY2MzMxNmE0YzA1NDQyMmQ2M2E2ZmQ5MTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxl
Z2F0ZVByaXZhdGUuaApAQCAtMTUyLDYgKzE1Miw4IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAK
IC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2lsbFNoYXJlQWN0aXZpdHlJ
dGVtczooTlNBcnJheSAqKWFjdGl2aXR5SXRlbXMgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9T
X1RCQSkpOwogCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKily
ZXF1ZXN0aW5nT3JpZ2luIHRvcE9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXRvcE9yaWdpbiBk
ZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgYXV0aG9yaXplZCkpZGVjaXNpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisK
ICNpZiBUQVJHRVRfT1NfSVBIT05FCiAKIC0gKEJPT0wpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgc2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9yRWxlbWVudDooX1dLQWN0aXZhdGVk
RWxlbWVudEluZm8gKillbGVtZW50IFdLX0FQSV9BVkFJTEFCTEUoaW9zKDkuMCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1MzYy
OWYxMDgyNTkyMWJmYTU5ZDI0ZTRmOGVhZDBmMDczNjUyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyQ29jb2EubW0KQEAgLTAsMCArMSwyMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIK
KworI2ltcG9ydCAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKKyNpbXBvcnQgIkFQSVVJQ2xpZW50Lmgi
CisjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCisjaW1wb3J0IDxTcGVlY2gvU3BlZWNoLmg+
CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CisjaW1wb3J0IDxwYWwvY29j
b2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhTcGVlY2gp
CitTT0ZUX0xJTktfQ0xBU1MoU3BlZWNoLCBTRlNwZWVjaFJlY29nbml6ZXIpCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitzdGF0aWMgYm9vbCBwZXJmb3JtU2FuZGJveENoZWNrKCkKK3sKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgaWYgKGN1cnJlbnRQcm9jZXNzSXNTYW5kYm94ZWQoKSAmJiAhIXNh
bmRib3hfY2hlY2soZ2V0cGlkKCksICJkZXZpY2UtbWljcm9waG9uZSIsIFNBTkRCT1hfRklMVEVS
X05PTkUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKworICAgIHJldHVybiB0cnVl
OworfQorCitTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcigpCit7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9y
ZXF1ZXN0cykKKyAgICAgICAgcmVxdWVzdC0+Y29tcGxldGUoU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbnRIYW5k
bGVyKQoreworICAgIG1fcmVxdWVzdHMuYXBwZW5kKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3Q6OmNyZWF0ZShvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbnRIYW5kbGVyKSkpOwor
ICAgIGlmIChtX3JlcXVlc3RzLnNpemUoKSA9PSAxKQorICAgICAgICBzdGFydE5leHRSZXF1ZXN0
KCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnRO
ZXh0UmVxdWVzdCgpCit7CisgICAgY2hlY2tTYW5kYm94UmVxdWlyZW1lbnQoKTsKK30KKwordm9p
ZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1
ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uIGRlY2lzaW9u
KQoreworICAgIEFTU0VSVCghbV9yZXF1ZXN0cy5pc0VtcHR5KCkpOworICAgIGF1dG8gY3VycmVu
dFJlcXVlc3QgPSBtX3JlcXVlc3RzLnRha2VGaXJzdCgpOworICAgIGN1cnJlbnRSZXF1ZXN0LT5j
b21wbGV0ZShkZWNpc2lvbik7CisKKyAgICBzdGFydE5leHRSZXF1ZXN0KCk7Cit9CisKK3ZvaWQg
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTYW5kYm94UmVxdWlyZW1l
bnQoKQoreworICAgIGlmICghbV9pc1NhbmRib3hDaGVja1Bhc3NlZC5oYXNWYWx1ZSgpKQorICAg
ICAgICBtX2lzU2FuZGJveENoZWNrUGFzc2VkID0gcGVyZm9ybVNhbmRib3hDaGVjaygpOworCisg
ICAgaWYgKCFtX2lzU2FuZGJveENoZWNrUGFzc2VkKSB7CisgICAgICAgIGNvbXBsZXRlQ3VycmVu
dFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRl
bnkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2hlY2tNaWNyb3Bob25lQWNjZXNz
KCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tN
aWNyb3Bob25lQWNjZXNzKCkKK3sKKyAgICBpZiAobV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3Jp
emVkLmhhc1ZhbHVlKCkgJiYgbV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkLnZhbHVlKCkp
IHsKKyAgICAgICAgY2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6
ZWQuaGFzVmFsdWUoKSAmJiAhbV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkLnZhbHVlKCkp
IHsKKyAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBObyBwcm9tcHQgZm9yIG1pY3JvcGhvbmUgb3Igc3BlZWNoIHJlY29nbml0aW9uIHNl
cnZpY2UuCisgICAgaWYgKG1fcGFnZS5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2aWNlc0Vu
YWJsZWQoKSkgeworICAgICAgICBjaGVja1VzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3Rh
dHVzID0gW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0aW9uU3RhdHVz
Rm9yTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW9dOworICAgIGlmIChtaWNyb3Bob25lQXV0aG9y
aXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkKSB7CisgICAg
ICAgIG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZCA9IHRydWU7CisgICAgICAgIGNoZWNr
U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgaWYgKG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9y
aXphdGlvblN0YXR1c0RlbmllZCB8fCBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBB
VkF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkKSB7CisgICAgICAgIG1faXNNaWNyb3Bob25l
QWNjZXNzQXV0aG9yaXplZCA9IGZhbHNlOworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0
KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChtaWNyb3Bob25lQXV0aG9yaXphdGlv
blN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkKTsKKyAgICBhdXRv
IGRlY2lzaW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyldKEJPT0wgaXNBdXRob3JpemVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIWlzQXV0aG9yaXplZCkgewor
ICAgICAgICAgICAgd2Vha1RoaXMtPm1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZCA9IGZh
bHNlOworICAgICAgICAgICAgd2Vha1RoaXMtPmNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgd2Vha1RoaXMtPm1faXNNaWNyb3Bob25l
QWNjZXNzQXV0aG9yaXplZCA9IHRydWU7CisgICAgICAgIHdlYWtUaGlzLT5jaGVja1NwZWVjaFJl
Y29nbml0aW9uU2VydmljZUFjY2VzcygpOworICAgIH0pOworICAgIFtQQUw6OmdldEFWQ2FwdHVy
ZURldmljZUNsYXNzKCkgcmVxdWVzdEFjY2Vzc0Zvck1lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlv
IGNvbXBsZXRpb25IYW5kbGVyOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07Cit9CisKK3ZvaWQgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNl
cnZpY2VBY2Nlc3MoKQoreworICAgIGlmIChtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNj
ZXNzQXV0aG9yaXplZC5oYXNWYWx1ZSgpKSB7CisgICAgICAgIGlmIChtX2lzU3BlZWNoUmVjb2du
aXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZC52YWx1ZSgpKQorICAgICAgICAgICAgY2hlY2tV
c2VyUGVybWlzc2lvbkZvck9yaWdpbigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21w
bGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRl
Y2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gc3BlZWNo
UmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXMgPSBbZ2V0U0ZTcGVlY2hSZWNvZ25pemVyQ2xh
c3MoKSBhdXRob3JpemF0aW9uU3RhdHVzXTsKKyAgICBpZiAoc3BlZWNoUmVjb2duaXplckF1dGhv
cml6YXRpb25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c0F1
dGhvcml6ZWQpIHsKKyAgICAgICAgbV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1
dGhvcml6ZWQgPSB0cnVlOworICAgICAgICBjaGVja1VzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc3BlZWNoUmVjb2duaXplckF1dGhv
cml6YXRpb25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c1Jl
c3RyaWN0ZWQgfHwgc3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZTcGVl
Y2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCkgeworICAgICAgICBtX2lzU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCA9IGZhbHNlOworICAgICAgICBj
b21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6
OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChz
cGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1cyA9PSBTRlNwZWVjaFJlY29nbml6ZXJB
dXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZCk7CisgICAgYXV0byBkZWNpc2lvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShTRlNwZWVj
aFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cykgbXV0YWJsZSB7CisgICAgICAg
IGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHN0YXR1
cyAhPSBTRlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZCkgewor
ICAgICAgICAgICAgd2Vha1RoaXMtPm1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NB
dXRob3JpemVkID0gZmFsc2U7CisgICAgICAgICAgICB3ZWFrVGhpcy0+Y29tcGxldGVDdXJyZW50
UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6RGVu
eSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB3ZWFrVGhpcy0+
bV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQgPSB0cnVlOworICAg
ICAgICB3ZWFrVGhpcy0+Y2hlY2tVc2VyUGVybWlzc2lvbkZvck9yaWdpbigpOworICAgIH0pOwor
ICAgIFtnZXRTRlNwZWVjaFJlY29nbml6ZXJDbGFzcygpIHJlcXVlc3RBdXRob3JpemF0aW9uOmRl
Y2lzaW9uSGFuZGxlci5nZXQoKV07Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6Y2hlY2tVc2VyUGVybWlzc2lvbkZvck9yaWdpbigpCit7CisgICAgQVNTRVJU
KCFtX3JlcXVlc3RzLmlzRW1wdHkoKSk7CisgICAgYXV0byYgY3VycmVudFJlcXVlc3QgPSBtX3Jl
cXVlc3RzLmZpcnN0KCk7CisKKyAgICBhdXRvIGNsaWVudE9yaWdpbiA9IGN1cnJlbnRSZXF1ZXN0
LT5vcmlnaW4oKTsKKyAgICBpZiAobV9vcmlnaW5QZXJtaXNzaW9uTWFwLmNvbnRhaW5zKGNsaWVu
dE9yaWdpbikpIHsKKyAgICAgICAgYm9vbCBncmFudGVkID0gbV9vcmlnaW5QZXJtaXNzaW9uTWFw
LmdldChjbGllbnRPcmlnaW4pOworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KGdyYW50
ZWQgPyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6QWxsb3cg
OiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6RGVueSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IFt3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oYm9vbCBpc1Blcm1pdHRlZCkgeworICAgICAgICBp
ZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEFTU0VSVCghd2Vh
a1RoaXMtPm1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKyAgICAgICAgd2Vha1RoaXMtPm1fb3JpZ2lu
UGVybWlzc2lvbk1hcC5zZXQod2Vha1RoaXMtPm1fcmVxdWVzdHMuZmlyc3QoKS0+b3JpZ2luKCks
IGlzUGVybWl0dGVkKTsKKyAgICAgICAgd2Vha1RoaXMtPmNvbXBsZXRlQ3VycmVudFJlcXVlc3Qo
aXNQZXJtaXR0ZWQgPyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lv
bjo6QWxsb3cgOiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6
RGVueSk7CisgICAgfTsKKworICAgIGF1dG8gcmVxdWVzdGluZ09yaWdpbiA9IGNsaWVudE9yaWdp
bi5jbGllbnRPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBhdXRvIHRvcE9yaWdpbiA9Y2xp
ZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOworICAgIG1fcGFnZS51aUNsaWVu
dCgpLmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QobV9w
YWdlLCBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVxdWVzdGluZ09yaWdpbi5nZXQoKSku
Z2V0KCksIEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0b3BPcmlnaW4uZ2V0KCkpLmdldCgp
LCBXVEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDhhMDk0
NzQ1YzFmMjRiZTEwNWRiYjAyYWI5MWUzMDdiMzFkNDg2YjEuLmVhZDRkNTdlZTBhMzNhNmIzZWVi
YmRlYzQzZjhiNzM5NTVkOTc2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLmgKQEAgLTE2MSw2ICsxNjEsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShXRUJf
QVVUSE4pCiAgICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJv
eHkmLCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJGcmFtZVByb3h5JiwgRnJhbWVJ
bmZvRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxS
ZXN1bHQpPiYmKSBmaW5hbDsKICNlbmRpZgorICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1
cml0eU9yaWdpbiYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKSBmaW5hbDsKIAogICAgICAgICBVSURlbGVnYXRlJiBtX3VpRGVsZWdhdGU7CiAg
ICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4
IGQwMzM4ZjhkNmUzYjlhMTNkZjJhZjE1M2FjYjVkZWIzOGUxZmNkOWIuLjE5MzQ1NmIxYzA3ODY3
OTY5NjE5NGIzNTMxYmM2NWRjNDE1NTE5ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMTMzMiw0ICsxMzMyLDI2IEBAIHZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29y
ZTo6SW50U2l6CiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oZGVs
ZWdhdGUpIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgaW1hZ2VPck1lZGlhRG9jdW1l
bnRTaXplQ2hhbmdlZDpuZXdTaXplXTsKIH0KIAordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6
OldlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgcmVxdWVzdGluZ09yaWdp
biwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gZGVsZWdhdGUgPSAoaWQg
PFdLVUlEZWxlZ2F0ZVByaXZhdGU+KW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOworICAg
IGlmICghZGVsZWdhdGUpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Rm9yT3JpZ2luOnRvcE9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KV0pIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBj
aGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLCBA
c2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkZvck9y
aWdpbjp0b3BPcmlnaW46ZGVjaXNpb25IYW5kbGVyOikpOworICAgIFtkZWxlZ2F0ZSBfd2ViVmll
dzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25Gb3JPcmlnaW46d3JhcHBlcihyZXF1ZXN0aW5nT3JpZ2luKSB0b3BPcmlnaW46d3JhcHBlcih0
b3BPcmlnaW4pIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVy
ID0gc3RkOjpleGNoYW5nZShjb21wbGV0aW9uSGFuZGxlciwgeyB9KSwgY2hlY2tlciA9IFdURk1v
dmUoY2hlY2tlcildIChCT09MIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoY2hlY2tl
ci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihncmFudGVkKTsKKyAgICB9KS5nZXQoKV07Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTlj
ZWY2ZmZlMzA1Mjc0MmFkNGE3NWVkNGNmMGVmYjE4YWU4M2IzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
ci5jcHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKFdlYlBhZ2VQcm94eSYgcGFnZSkKKyAgICA6
IG1fcGFnZShwYWdlKQoreworfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQorCit+U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcigpCit7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0Q3VycmVudFJlcXVlc3QoKQoreworfQorCit2b2lkIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVudFJlcXVlc3Qo
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb24pCit7Cit9CisKK3Zv
aWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTYW5kYm94UmVxdWly
ZW1lbnQoKQoreworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6
OmNoZWNrTWljcm9waG9uZUFjY2VzcygpCit7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKQor
eworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrVXNl
clBlcm1pc3Npb25Gb3JPcmlnaW4oKQoreworfQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Njg5YzVkZDU4ODc4
OThiNTdkYzJjOWY0NmNhMjM0NDJhZDdlNTg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCkBAIC0w
LDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcihXZWJQYWdlUHJveHkm
KTsKKyAgICB+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcigpOworICAgIHZvaWQg
cmVxdWVzdChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHN0YXJ0TmV4dFJlcXVlc3QoKTsK
KyAgICB2b2lkIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdDo6RGVjaXNpb24pOworICAgIHZvaWQgY2hlY2tTYW5kYm94UmVxdWlyZW1lbnQo
KTsKKyAgICB2b2lkIGNoZWNrTWljcm9waG9uZUFjY2VzcygpOworICAgIHZvaWQgY2hlY2tTcGVl
Y2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKKyAgICB2b2lkIGNoZWNrVXNlclBlcm1pc3Np
b25Gb3JPcmlnaW4oKTsKKworICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOworICAgIERlcXVlPFJl
ZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Pj4gbV9yZXF1ZXN0czsKKyAgICBP
cHRpb25hbDxib29sPiBtX2lzU2FuZGJveENoZWNrUGFzc2VkOworICAgIE9wdGlvbmFsPGJvb2w+
IG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZDsKKyAgICBPcHRpb25hbDxib29sPiBtX2lz
U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZDsKKyAgICBIYXNoTWFwPENs
aWVudE9yaWdpbiwgYm9vbD4gbV9vcmlnaW5QZXJtaXNzaW9uTWFwOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE3ZjUzNGZi
YWQ4M2JkMWNiNTE4ZmJmMDAwMzY3ODAxMTZjZWYyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaApA
QCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJB
UElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCA6
IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3Q+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Qo
b3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIH0KKworICAgIGVudW0g
Y2xhc3MgRGVjaXNpb24geyBEZW55LCBBbGxvdyB9OworICAgIHZvaWQgY29tcGxldGUoRGVjaXNp
b24gZGVjaXNpb24pCisgICAgeworICAgICAgICBib29sIGlzQWxsb3dlZCA9IGRlY2lzaW9uID09
IERlY2lzaW9uOjpBbGxvdzsKKyAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6
ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoaXNBbGxvd2VkKTsKKyAgICB9CisKKyAgICBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CisKK3ByaXZhdGU6CisgICAg
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICAgICAgOiBtX29yaWdpbihvcmlnaW4pCisgICAgICAgICwgbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICB7IH0KKworICAgIFdl
YkNvcmU6OkNsaWVudE9yaWdpbiBtX29yaWdpbjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworfTsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2sgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaz4geworcHVibGljOgor
ICAgIHN0YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+IGNyZWF0
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICB9CisKKyAgICB2
b2lkIGNvbXBsZXRlKGJvb2wgZ3JhbnRlZCkgeyBtX2NvbXBsZXRpb25IYW5kbGVyKGdyYW50ZWQp
OyB9CisKK3ByaXZhdGU6CisgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2so
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAg
ICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAg
IHsgfQorCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9jb21wbGV0aW9uSGFu
ZGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCmluZGV4IDFiODgxZWRmNWQz
MDQ4ZGViNzAwOTE0OTc5ZGM1NjhlYTBhNWRiMTIuLmM4NDVlMTAxMzMyNGM0NmNkODMwYzE2NTI5
ZmFkZTMyYzEyMjM4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVj
aFJlY29nbml0aW9uU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblNlcnZlci5jcHAKQEAgLTMyLDkgKzMyLDEwIEBACiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1TcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK1NwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNw
ZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBQZXJtaXNzaW9uQ2hl
Y2tlciYmIHBlcm1pc3Npb25DaGVja2VyKQogICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29u
bmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fcGVybWlz
c2lvbkNoZWNrZXIoV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlcikpCiB7CiB9CiAKQEAgLTEwNSw3
ICsxMDYsMzUgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aW52YWxpZGF0ZShXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGkKICAgICB9CiB9CiAKLXZvaWQgU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0UG9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3QmKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3Rh
cnRQb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVx
dWVzdCkKK3sKKyAgICByZXF1ZXN0LnNldElzV2FpdGluZ0ZvclBlcm1pc3Npb25DaGVjayh0cnVl
KTsKKyAgICBtX3Blcm1pc3Npb25DaGVja2VyKHJlcXVlc3QuY2xpZW50T3JpZ2luKCksIFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWFrUmVxdWVzdCA9IG1ha2VXZWFrUHRy
KHJlcXVlc3QpXShib29sIGdyYW50ZWQpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIXdlYWtSZXF1ZXN0KQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIEFTU0VSVChtX2N1cnJlbnRSZXF1ZXN0ID09IHdlYWtSZXF1ZXN0
LmdldCgpKTsKKyAgICAgICAgaWYgKCF3ZWFrUmVxdWVzdC0+aXNXYWl0aW5nRm9yUGVybWlzc2lv
bkNoZWNrKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHdlYWtSZXF1ZXN0LT5zZXRJ
c1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2soZmFsc2UpOworCisgICAgICAgIGlmICghZ3JhbnRl
ZCkgeworICAgICAgICAgICAgYXV0byBlcnJvciA9IFNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBT
cGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6Tm90QWxsb3dlZCwgIlBlcm1pc3Npb24gY2hlY2sg
ZmFpbHMiX3MgfTsKKyAgICAgICAgICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKHdlYWtSZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVy
KCksIGVycm9yKTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbjo6RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50aWZpZXIpOwor
ICAgICAgICAgICAgbV9jdXJyZW50UmVxdWVzdCA9IG51bGxwdHI7CisgICAgICAgICAgICBwcm9j
ZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoKndlYWtSZXF1ZXN0
KTsKKyAgICB9KTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6Y29udGludWVQ
cm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIuaAppbmRleCA3YWEyNDE2MzhiOWMzNTE0OTY2OTg0NDMyZGJjNTMwZGY4NDg0YTM3Li5mNGRh
NTE3YmY1YTk2ZDRhNjdiZDBkZTc1OWRhMmVhZjkzZDM5OGI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKQEAgLTM2LDExICszNiwx
MiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIAogdXNpbmcg
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyID0gV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI7Cit1c2luZyBQZXJtaXNzaW9uQ2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik+OwogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllcik7CisgICAgU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXJJZGVudGlmaWVyLCBQZXJtaXNzaW9uQ2hlY2tlciYmKTsKIAogICAgIHZvaWQgc3Rh
cnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsKICAgICB2b2lkIHN0
b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7
CkBAIC01Myw2ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBUT0RPOiBpbXBsZW1lbnQgdGhl
c2UuCiAgICAgdm9pZCBzdGFydFBvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0Jik7CisgICAgdm9pZCBjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOwogICAgIHZvaWQgc3RvcFByb2Nlc3NpbmdS
ZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOwogCiAgICAgLy8gSVBD
OjpNZXNzYWdlUmVjZWl2ZXIuCkBAIC02Niw2ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBEZXF1ZTxSZWY8
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Pj4gbV9wZW5kaW5nUmVxdWVzdHM7CiAg
ICAgUmVmUHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gbV9jdXJyZW50UmVx
dWVzdDsKKyAgICBQZXJtaXNzaW9uQ2hlY2tlciBtX3Blcm1pc3Npb25DaGVja2VyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0
b3IubW0KaW5kZXggNGRjOTdlODkzOTBlODVhYWE1NWVkZTRlZjI4MDFlMWI2NzhiM2RkZS4uYjUy
MmIzYjc5MmFlNGUwNGJlYjZmYmIzNTY3OTEzZWQyOWY1OWY3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNh
dG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsQXV0aGVudGljYXRvci5tbQpAQCAtMTQwLDE0ICsxNDAsMTQgQEAgc3RhdGljIE9w
dGlvbmFsPFZlY3RvcjxSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4+IGdldEV4
aXN0aW5nQ3JlZGVudGkKICAgICAgICAgfQogICAgICAgICBhdXRvJiByZXNwb25zZU1hcCA9IGRl
Y29kZWRSZXNwb25zZS0+Z2V0TWFwKCk7CiAKLSAgICAgICAgYXV0byBpdCA9IHJlc3BvbnNlTWFw
LmZpbmQoQ0JPUihrRW50aXR5SWRNYXBLZXkpKTsKKyAgICAgICAgYXV0byBpdCA9IHJlc3BvbnNl
TWFwLmZpbmQoQ0JPUihmaWRvOjprRW50aXR5SWRNYXBLZXkpKTsKICAgICAgICAgaWYgKGl0ID09
IHJlc3BvbnNlTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKSB7CiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgYXV0byYgdXNlckhhbmRsZSA9IGl0LT5zZWNvbmQu
Z2V0Qnl0ZVN0cmluZygpOwogCi0gICAgICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKGtF
bnRpdHlOYW1lTWFwS2V5KSk7CisgICAgICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKGZp
ZG86OmtFbnRpdHlOYW1lTWFwS2V5KSk7CiAgICAgICAgIGlmIChpdCA9PSByZXNwb25zZU1hcC5l
bmQoKSB8fCAhaXQtPnNlY29uZC5pc1N0cmluZygpKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0yOTEsOCAr
MjkxLDggQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxB
ZnRlclVzZXJWZXJpZmljYXRpb24oU2VjQWNjZXNzQ28KICAgICBjb25zdCBhdXRvJiBzZWNBdHRy
TGFiZWwgPSBjcmVhdGlvbk9wdGlvbnMucnAuaWQ7CiAKICAgICBjYm9yOjpDQk9SVmFsdWU6Ok1h
cFZhbHVlIHVzZXJFbnRpdHlNYXA7Ci0gICAgdXNlckVudGl0eU1hcFtjYm9yOjpDQk9SVmFsdWUo
a0VudGl0eUlkTWFwS2V5KV0gPSBjYm9yOjpDQk9SVmFsdWUoY3JlYXRpb25PcHRpb25zLnVzZXIu
aWRWZWN0b3IpOwotICAgIHVzZXJFbnRpdHlNYXBbY2Jvcjo6Q0JPUlZhbHVlKGtFbnRpdHlOYW1l
TWFwS2V5KV0gPSBjYm9yOjpDQk9SVmFsdWUoY3JlYXRpb25PcHRpb25zLnVzZXIubmFtZSk7Cisg
ICAgdXNlckVudGl0eU1hcFtjYm9yOjpDQk9SVmFsdWUoZmlkbzo6a0VudGl0eUlkTWFwS2V5KV0g
PSBjYm9yOjpDQk9SVmFsdWUoY3JlYXRpb25PcHRpb25zLnVzZXIuaWRWZWN0b3IpOworICAgIHVz
ZXJFbnRpdHlNYXBbY2Jvcjo6Q0JPUlZhbHVlKGZpZG86OmtFbnRpdHlOYW1lTWFwS2V5KV0gPSBj
Ym9yOjpDQk9SVmFsdWUoY3JlYXRpb25PcHRpb25zLnVzZXIubmFtZSk7CiAgICAgYXV0byB1c2Vy
RW50aXR5ID0gY2Jvcjo6Q0JPUldyaXRlcjo6d3JpdGUoY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUo
dXNlckVudGl0eU1hcCkpKTsKICAgICBBU1NFUlQodXNlckVudGl0eSk7CiAgICAgYXV0byBzZWNB
dHRyQXBwbGljYXRpb25UYWcgPSB0b05TRGF0YSgqdXNlckVudGl0eSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0MzAwZTFmNTIyZmY1MjI3NDhmMmIxZGY5
MTM3ZGY3YTRkMjZjNWE0Li4zMWYxOGZhMjRkYWJkMjdkZjc0YjI0MThhNTIyNzMyOWZkMmQ3NGJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg2LDYgKzg2
LDcgQEAKICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIlNhZmVC
cm93c2luZ1dhcm5pbmcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgi
CisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIgogI2luY2x1
ZGUgIlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2Vy
LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgpAQCAtMTAxNzEsNiArMTAxNzIsMTQg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3Rp
bmcoKQogICAgIH0pOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBpZiAoIW1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcikKKyAgICAgICAg
bV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyPigqdGhpcyk7CisKKyAgICBtX3NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXItPnJlcXVlc3QoY2xpZW50T3JpZ2luLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCA3Y2VmYmZjNjk0NWVkZmU0M2FlNTZjMmQ1NjRjMGU4MWU5NWJiNGE2Li44ZWExNDYw
NDc4ODljZTczODJmYjZlMDY5MjBhNGFhOWE0ZmQ3MTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMzA1LDYgKzMwNSw3IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJl
ZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YTsKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOwogY2xhc3MgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTsKIGNsYXNzIFNlY0tl
eVByb3h5U3RvcmU7CitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOwog
Y2xhc3MgVXNlckRhdGE7CiBjbGFzcyBWaWV3U25hcHNob3Q7CiBjbGFzcyBWaXNpdGVkTGlua1N0
b3JlOwpAQCAtMTgxOSw2ICsxODIwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWVkaWFDYXB0
dXJlUmVwb3J0aW5nRGVsYXkoU2Vjb25kcyBjYXB0dXJlUmVwb3J0aW5nRGVsYXkpIHsgbV9tZWRp
YUNhcHR1cmVSZXBvcnRpbmdEZWxheSA9IGNhcHR1cmVSZXBvcnRpbmdEZWxheTsgfQogICAgIHNp
emVfdCBzdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXIoKSB7IHJldHVybiBtX3N1c3BlbmRNZWRp
YVBsYXliYWNrQ291bnRlcjsgfQogCisgICAgdm9pZCByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOworCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50
JiwgV2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0yODg4LDYgKzI4OTEsOCBAQCBwcml2YXRl
OgogICAgIHNpemVfdCBtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlciB7IDAgfTsKIAogICAg
IE9wdGlvbmFsPFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbj4gbV9uZXdQYWdlTmF2aWdhdGlv
bkFkQ2xpY2tBdHRyaWJ1dGlvbjsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyPiBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGY2Yjg2N2JkNTY0ZGZkMTcyZWJhM2RiODMzMjVj
YzM3M2NkMjAwNjkuLmZmNGM5NzMxN2RiNmNhYWVlNzI2ZTQ4YWQ4Y2VhNmEzNmZmYjllOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTcxMiw3
ICsxNzEyLDE4IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcihTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50CiB7CiAgICAgYXV0byBzcGVlY2hS
ZWNvZ25pdGlvblNlcnZlciA9IG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNYXAuYWRkKGlkZW50
aWZpZXIsIG51bGxwdHIpOwogICAgIEFTU0VSVChzcGVlY2hSZWNvZ25pdGlvblNlcnZlci5pc05l
d0VudHJ5KTsKLSAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlci5pdGVyYXRvci0+dmFsdWUgPSBt
YWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPihtYWtlUmVmKCpjb25uZWN0aW9uKCkp
LCBpZGVudGlmaWVyKTsKKyAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlci5pdGVyYXRvci0+dmFs
dWUgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPihtYWtlUmVmKCpjb25uZWN0
aW9uKCkpLCBpZGVudGlmaWVyLCBbJmlkZW50aWZpZXIsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyldKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChhdXRvKiBwYWdlIDogd2Vha1RoaXMt
PnBhZ2VzKCkpIHsKKyAgICAgICAgICAgIGlmIChwYWdlICYmIHBhZ2UtPndlYlBhZ2VJRCgpID09
IGlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICAgICBwYWdlLT5yZXF1ZXN0U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uKG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgfSk7CiAgICAgYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBpZGVudGlmaWVyLCAqc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMWQ2M2MyYjNlMjk4Nzg3N2JhZjJmNTU4OGU2N2MwMDc2MzViMTRlNC4uYThhYzgxNTg5
M2JkMGEyYWY0MDY3MGJmZTQ1NjYxOWE1ZTE0NGE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDA3LDYgKzE0MDcsOSBAQAogCQk5
M0Q2Qjc4NzI1NENDRDhDMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzRDZCNzg2MjU0Q0NEOEIwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25NZXNzYWdlcy5oICovOyB9OwogCQk5M0Q2Qjc4ODI1NENDRDk0MDA1OEREM0EgLyogV2ViU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc3RTI1NENDQUJCMDA1OEREM0Eg
LyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggKi87IH07
CiAJCTkzRDZCNzhBMjU0Q0Q0M0UwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNENkI3N0QyNTRDQ0FCQjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTkzRDZCN0I0MjU1
MjY4RDUwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdBRjI1NTI2
OEExMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oICovOyB9
OworCQk5M0Q2QjdCNTI1NTI2OEQ3MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNENkI3QjIyNTUyNjhBMjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk5M0Q2QjdCOTI1NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNkE0RUQx
QkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y1NDlCNDFFMzE3NEI3MDAwRTcyMzkg
LyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90
Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKIAkJOTUwRjI4ODAyNTI0MTRFQTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwRjI4
N0UyNTI0MTRFOTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oICovOyB9OwpAQCAt
NDUyNSw2ICs0NTI4LDEyIEBACiAJCTkzRDZCNzgwMjU0Q0NBQkMwMDU4REQzQSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNENkI3ODEyNTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9u
U2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3ODYyNTRDQ0Q4QjAwNThERDNBIC8qIFdlYlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjAyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjMyNTUyNjhCRjAwNThERDNBIC8qIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjcyNTUzNEExMTAw
NThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdCODI1NTM0QTEy
MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNkE0
RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gX1dLSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3Vy
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTbmFwc2hvdENvbmZp
Z3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjUxRTMxNzRE
QTAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDY1LDYgKzY0NzQsNyBAQAogCQkJCTVDQTk4NTRC
MjEwQkVCNzMwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gKi8sCiAJCQkJ
MUEwMDJENDcxOTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oICovLAogCQkJ
CTFBMDAyRDQ2MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcubW0gKi8sCisJ
CQkJOTNENkI3QjMyNTUyNjhCRjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXJDb2NvYS5tbSAqLywKIAkJCQkzMTU3MTM1QzIwNDBBOUIyMDA4NEY5Q0YgLyogU3lz
dGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbSAqLywKIAkJCQkyRDBDRjY0QzIxRjJBODAzMDA3
ODc1NjYgLyogVGV4dENoZWNraW5nQ29udHJvbGxlci5oICovLAogCQkJCTJEMENGNjRCMjFGMkE4
MDMwMDc4NzU2NiAvKiBUZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tICovLApAQCAtOTE5Niw2ICs5
MjA2LDkgQEAKIAkJCQlCQzExMUIwODExMkY1RTNDMDAzMzdCQUIgLyogUmVzcG9uc2l2ZW5lc3NU
aW1lci5jcHAgKi8sCiAJCQkJMUEzMDA2NkMxMTEwRjRGNzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVu
ZXNzVGltZXIuaCAqLywKIAkJCQk1Q0E5ODU0OTIxMEJFQjVBMDA1N0VCNkIgLyogU2FmZUJyb3dz
aW5nV2FybmluZy5oICovLAorCQkJCTkzRDZCN0IwMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcCAqLywKKwkJCQk5M0Q2QjdCMjI1NTI2OEEy
MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovLAorCQkJ
CTkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmggKi8sCiAJCQkJOTNENkI3NkIyNTRCODk1ODAwNThERDNBIC8qIFNwZWVjaFJlY29n
bml0aW9uU2VydmVyLmNwcCAqLywKIAkJCQk5M0Q2Qjc2QzI1NEI4OTU4MDA1OEREM0EgLyogU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCAqLywKIAkJCQk5M0Q2Qjc3QTI1NEM5ODREMDA1OEREM0Eg
LyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4gKi8sCkBAIC05NTM2LDYgKzk1
NDksOCBAQAogCQkJCTMzMzY3NjM5MTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNlQ2FjaGVN
YW5hZ2VyLmggKi8sCiAJCQkJMUFERTQ2QjAxOTU0RUM2MTAwMEY3OTg1IC8qIFdLU2Vzc2lvblN0
YXRlUmVmLmNwcCAqLywKIAkJCQkxQURFNDZCMTE5NTRFQzYxMDAwRjc5ODUgLyogV0tTZXNzaW9u
U3RhdGVSZWYuaCAqLywKKwkJCQk5M0Q2QjdCODI1NTM0QTEyMDA1OEREM0EgLyogV0tTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi8sCisJCQkJOTNENkI3QjcyNTUzNEEx
MTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLywK
IAkJCQk1MUY4ODZBMzFGMkMyMTRBMDBDMTkzRUYgLyogV0tUZXN0aW5nU3VwcG9ydC5jcHAgKi8s
CiAJCQkJNTFGODg2QTQxRjJDMjE0QTAwQzE5M0VGIC8qIFdLVGVzdGluZ1N1cHBvcnQuaCAqLywK
IAkJCQkzMTQ4ODhGRTFEOTFCMTFEMDAzNzcwNDIgLyogV0tUZXh0Q2hlY2tlci5jcHAgKi8sCkBA
IC0xMTM3Myw2ICsxMTM4OCw4IEBACiAJCQkJNTdCQkVBNkQyMkJDMEJGRTAwMjczOTk1IC8qIFNP
QXV0aG9yaXphdGlvbkxvYWRQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3NkNBOUQ3MjJC
ODYyMTgwMDMwMTQzQyAvKiBTT0F1dGhvcml6YXRpb25OU1VSTEV4dHJhcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTdGRDMxODUyMkIzNTE2OTAwOEQwRThCIC8qIFNPQXV0aG9yaXphdGlvblNlc3Np
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDZCN0I1MjU1MjY4RDcwMDU4REQzQSAvKiBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q2
QjdCNDI1NTI2OEQ1MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3NzIyNTRCQjUxOTAwNThERDNBIC8qIFNwZWVj
aFJlY29nbml0aW9uU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4NDI1NENDRDBF
MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTNENkI3ODUyNTRDQ0Q0MzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTExOTg2LDYgKzEyMDAzLDcg
QEAKIAkJCQk1MTNFNDYyRDFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tl
ckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Y1NDlCNDFFMzE3NEI3MDAwRTcyMzkg
LyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTg3
MjJCMzUxNzAwMDhEMEU4QiAvKiBXS1NPQXV0aG9yaXphdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5M0Q2QjdCOTI1NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E3OEZGMzIyMjQxOTE5
NjAwOTY0ODNFIC8qIFdLU3RvcmFnZUFjY2Vzc0FsZXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzQwNzYwNjEyNEZGMDI3MDA2OEYyMEEgLyogV0tTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNDA3NjFBMTI0RkYwMzcwMDY4RjIwQSAvKiBXS1N0cmluZ0NGLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAKaW5kZXgg
ZDRmNGQ0ZjY5NDAwMDI2Yjk5ZjdiYzU0MjFmYzRjOWNjNGU2MThhZC4uMTdlY2IzNWY4ZjA0M2Zi
YWM2MmU3OTJkY2I3OWViYTljYWY2YmYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbi5jcHAKQEAgLTU4LDkgKzU4LDkgQEAgdm9pZCBXZWJTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb246OnJlZ2lzdGVyQ2xpZW50KFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ28KICAgICBtX2NsaWVudE1hcC5hZGQoY2xpZW50LmlkZW50aWZpZXIoKSwgbWFrZVdl
YWtQdHIoY2xpZW50KSk7CiB9CiAKLXZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
OjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyIGNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3Vz
LCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpCit2b2lkIFdl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0
X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4p
CiB7Ci0gICAgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyBpbmZvIHsgY2xp
ZW50SWRlbnRpZmllciwgbGFuZywgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVy
bmF0aXZlcyB9OworICAgIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gaW5m
byB7IGNsaWVudElkZW50aWZpZXIsIGxhbmcsIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBt
YXhBbHRlcm5hdGl2ZXMsIFdURk1vdmUoY2xpZW50T3JpZ2luKSB9OwogICAgIHNlbmQoTWVzc2Fn
ZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTdGFydChpbmZvKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAppbmRleCAyOGRiZDE5N2NiM2Y3
OThmYzc2MzE5OWViYjEyZGUxM2FlZDc1MWIxLi42Mzc2MTNmNmM2NTI2ZTM0YzQzY2YwY2Q3ZWZj
ODVkODFiNTY3NTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5oCkBAIC00MywxMSArNDMsMTEgQEAgY2xhc3MgV2ViUGFnZTsKIAogdXNpbmcgU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uSWRlbnRpZmllciA9IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
OwogCi1jbGFzcyBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2Vp
dmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CitjbGFzcyBXZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVz
c2FnZVNlbmRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb24+IGNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25JZGVudGlmaWVy
KTsKIAotICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJv
b2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcykgZmluYWw7CisgICAg
dm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmlt
UmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
JikgZmluYWw7CiAgICAgdm9pZCBzdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmluYWw7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNTc1YTQxZmZj
YjU1YzYxMzhiZmJhMWU0OTQ2M2RhMDJmZTYyMTAyLi45NzUxNjZjNDQ1YjQ1N2E1ODEzODUwZTMw
ZWFlYWVjZWUwM2UzOThiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMTEtMDQgIFNpaHVpIExpdSAgPHNpaHVp
X2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hl
Y2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0OgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25HcmFudGVkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdUUjo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjb21wbGV0ZVNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMpOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52
b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6
CisKIDIwMjAtMTEtMDQgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFt3ZWJraXRzY21weV0gQWRkIGNoZWNrb3V0IGNvbW1hbmQKZGlmZiAtLWdpdCBhL1Rv
b2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0IGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0lu
Zm8ucGxpc3QKaW5kZXggNGUyYjFmNDgxOWFkNTEwM2U0Y2YxNzA5YjdjNTNhNjZlOGIzOTVlNS4u
MzNhM2NhMWJlNzM1MDhlMWZmY2IwMjk1N2M4NjRlODU5MmRhYWE0ZSAxMDA2NDQKLS0tIGEvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFj
L0luZm8ucGxpc3QKQEAgLTUyLDkgKzUyLDExIEBACiAJCQk8c3RyaW5nPkVkaXRvcjwvc3RyaW5n
PgogCQk8L2RpY3Q+CiAJPC9hcnJheT4KLSAgICA8a2V5Pk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlv
bjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5nIHZpZGVvIG9uIGJlaGFsZiBvZiB3ZWJzaXRl
czwvc3RyaW5nPgotICAgIDxrZXk+TlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlvbjwva2V5Pgot
ICAgIDxzdHJpbmc+UmVjb3JkaW5nIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5n
PgorCTxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvcmRp
bmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5OU01pY3JvcGhv
bmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvcmRpbmcgYXVkaW8gb24gYmVo
YWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5OU1NwZWVjaFJlY29nbml0aW9uVXNhZ2VE
ZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVjb2duaXppbmcgY2FwdHVyZWQgYXVkaW8gb24g
YmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CiA8L2RpY3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwKaW5kZXggOTY5NjE0ZTY3Mjg4NjI5NjMzMDdjOTllYzQ3ODQxNTI0ZmYw
MTI5Yi4uOTgyOTdhZjcwZGI1MTFkYWQwYTc3OTc1ZWEzOGVkNWM4ZGI2YmQ3YyAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC00MDEsNCArNDAxLDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5u
ZXIgewogICAgIHVuZGVmaW5lZCBzZXRBZENsaWNrQXR0cmlidXRpb25PdmVycmlkZVRpbWVyRm9y
VGVzdGluZyhib29sZWFuIHZhbHVlKTsKICAgICB1bmRlZmluZWQgc2V0QWRDbGlja0F0dHJpYnV0
aW9uQ29udmVyc2lvblVSTEZvclRlc3RpbmcoRE9NU3RyaW5nIHVybCk7CiAgICAgdW5kZWZpbmVk
IG1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZygpOworCisgICAgLy8g
U3BlZWNoUmVjb2duaXRpb24KKyAgICB1bmRlZmluZWQgc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25HcmFudGVkKGJvb2xlYW4gdmFsdWUpOwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGU1YzVmOTlh
ZDFkYzljMjg2ZTA5NDczNDZjOWJkNzVmY2EyZjkzYzMuLjI1YjQxNzY3NjMwMTEyYzUxNWNhMzE0
MWQ4ZDkzNWVhYjRiYTI1NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjA0Nyw2ICsyMDQ3LDExIEBAIHZvaWQg
VGVzdFJ1bm5lcjo6ZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2soKQogICAgIGNhbGxUZXN0
UnVubmVyQ2FsbGJhY2soRGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2tJRCk7CiB9CiAKK3Zv
aWQgVGVzdFJ1bm5lcjo6c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJv
b2wgZ3JhbnRlZCkKK3sKKyAgICBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZSgic2V0SXNTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkIiwgZ3JhbnRlZCk7Cit9CisKIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXgg
YWFhNTIxNmY5MjYwZGI0ZDk4ODFjZDBkZGJiMTlmNTA4NTI5N2ZkOC4uOTE4YWE5NjQyNjcyZWZh
YTBjZTQ2MzRiMTY4YjAwMGQzNDMzZWVlNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTUxMSw2ICs1MTEsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGlu
ZyhKU1N0cmluZ1JlZik7CiAgICAgdm9pZCBtYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJl
ZEZvclRlc3RpbmcoKTsKIAorICAgIHZvaWQgc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25HcmFudGVkKGJvb2wpOworCiBwcml2YXRlOgogICAgIFRlc3RSdW5uZXIoKTsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA2ZGJjNjg0ZTg4NTBhZmUw
NDU5MTM5ZmJlMTlkNWU1Y2NkYjcyNmU3Li4xODZlZmY5YTE0YzcxMDg5ZjA2YWYyOTRhZWVlMjQy
MzBkN2ZjMWUzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApA
QCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1Byb3RlY3Rpb25TcGFjZS5oPgog
I2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1NlY3Vy
aXR5T3JpZ2luUmVmLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tUZXh0Q2hlY2tlci5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XS1VSTC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1VzZXJDb250ZW50Q29u
dHJvbGxlclJlZi5oPgpAQCAtMjk3LDYgKzI5OCwyMSBAQCBzdGF0aWMgdm9pZCBydW5XZWJBdXRo
ZW50aWNhdGlvblBhbmVsKCkKIHsKIH0KIAorc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlPcmln
aW5SZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2tSZWYgY2FsbGJhY2spCit7CisgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
LmNvbXBsZXRlU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2soY2FsbGJhY2spOworfQor
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpjb21wbGV0ZVNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNoZWNrKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgY2FsbGJhY2sp
Cit7CisgICAgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0NvbXBsZXRlKGNh
bGxiYWNrLCBtX2lzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCk7Cit9CisKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRl
ZChib29sIGdyYW50ZWQpCit7CisgICAgbV9pc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdy
YW50ZWQgPSBncmFudGVkOworfQorCiBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90
aGVyUGFnZShXS1BhZ2VSZWYsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwg
V0tOYXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmlnYXRpb25BY3Rpb24sIFdLV2luZG93RmVhdHVyZXNS
ZWYgd2luZG93RmVhdHVyZXMsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7CiAgICAgUGxhdGZv
cm1XZWJWaWV3KiBwYXJlbnRWaWV3ID0gc3RhdGljX2Nhc3Q8UGxhdGZvcm1XZWJWaWV3Kj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwpAQCAtNjUwLDggKzY2Niw4IEBAIHZvaWQgVGVz
dENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYg
b3B0aW9ucykKICAgICBXS0hUVFBDb29raWVTdG9yZURlbGV0ZUFsbENvb2tpZXMoV0tXZWJzaXRl
RGF0YVN0b3JlR2V0SFRUUENvb2tpZVN0b3JlKHdlYnNpdGVEYXRhU3RvcmUoKSksIG51bGxwdHIs
IG51bGxwdHIpOwogCiAgICAgcGxhdGZvcm1DcmVhdGVXZWJWaWV3KGNvbmZpZ3VyYXRpb24uZ2V0
KCksIG9wdGlvbnMpOwotICAgIFdLUGFnZVVJQ2xpZW50VjE0IHBhZ2VVSUNsaWVudCA9IHsKLSAg
ICAgICAgeyAxNCwgbV9tYWluV2ViVmlldy5nZXQoKSB9LAorICAgIFdLUGFnZVVJQ2xpZW50VjE1
IHBhZ2VVSUNsaWVudCA9IHsKKyAgICAgICAgeyAxNSwgbV9tYWluV2ViVmlldy5nZXQoKSB9LAog
ICAgICAgICAwLCAvLyBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKICAgICAg
ICAgMCwgLy8gc2hvd1BhZ2UKICAgICAgICAgMCwgLy8gY2xvc2UKQEAgLTcyNCw3ICs3NDAsOCBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoY29uc3QgVGVz
dE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgICAgIDAsIC8vIGRpZFJlc2lnbklucHV0RWxlbWVudFN0
cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZQogICAgICAgICAwLCAvLyByZXF1ZXN0U3RvcmFnZUFjY2Vz
c0NvbmZpcm0KICAgICAgICAgc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFj
Y2VzcywKLSAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbAorICAgICAgICBydW5XZWJB
dXRoZW50aWNhdGlvblBhbmVsLAorICAgICAgICBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0CiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQo
bV9tYWluV2ViVmlldy0+cGFnZSgpLCAmcGFnZVVJQ2xpZW50LmJhc2UpOwogCkBAIC0xMDUzLDYg
KzEwNzAsOCBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFs
dWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAgIG1fc2VydmVyVHJ1c3RFdmFs
dWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50ID0gMDsKICAgICBtX3Nob3VsZERpc21pc3NKYXZhU2Ny
aXB0QWxlcnRzQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKIAorICAgIHNldElzU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uR3JhbnRlZCh0cnVlKTsKKwogICAgIGF1dG8gbG9hZEFib3V0Qmxhbmsg
PSBbdGhpc10gewogICAgICAgICBtX2RvbmVSZXNldHRpbmcgPSBmYWxzZTsKICAgICAgICAgV0tQ
YWdlTG9hZFVSTChtX21haW5XZWJWaWV3LT5wYWdlKCksIGJsYW5rVVJMKCkpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDMzYjY0OTRhYzYyNDRiOTJmY2I3ODA5
YTU4ZDcyMDNjN2MxMjU4YTguLjA1YzhmOGJkYWE5NWFkODdlNDM5ZTMwOTNiOGE0ZjM0ZjVmODJj
NTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTM1MSw2ICsz
NTEsOSBAQCBwdWJsaWM6CiAKICAgICBXS1VSTFJlZiBjdXJyZW50VGVzdFVSTCgpIGNvbnN0Owog
CisgICAgdm9pZCBjb21wbGV0ZVNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrKFdLU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYpOworICAgIHZvaWQgc2V0SXNTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wpOworCiBwcml2YXRlOgogICAgIFdL
UmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRp
b24oY29uc3QgVGVzdE9wdGlvbnMmKTsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRDb25maWd1
cmF0aW9uUmVmPiBnZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25z
JikgY29uc3Q7CkBAIC02NDAsNiArNjQzLDggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBib29sIG1faGFzU2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyIHsgZmFsc2Ug
fTsKICNlbmRpZgorCisgICAgYm9vbCBtX2lzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3Jh
bnRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMTRjMDRlZDFmYTkzOTRmNTcyZjY0OWE5
MWI0N2VmYjIwNmVmODU0ZS4uNWI2NjYxN2JlZTAxNmI2NzUxYzdiYjJiY2U2YmI4YmFlNDRlYjBh
MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTEzNDUs
NiArMTM0NSwxMSBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgInNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCIpKSB7Cisg
ICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRJc1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkdyYW50ZWQoYm9vbGVhblZhbHVlKG1lc3NhZ2VCb2R5KSk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQo=
</data>
<flag name="commit-queue"
          id="429822"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413254</attachid>
            <date>2020-11-04 23:22:17 -0800</date>
            <delta_ts>2020-11-04 23:43:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201104232216.patch</filename>
            <type>text/plain</type>
            <size>86188</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY5Njk2ZjNhMjQ5ZWQ3OTBkNTQzZWU1
YzU1MDc2YWFhZTAwNGQ1NGEuLjBmM2M2OGQ4ODA0N2M1ZmQ2ODJjY2ZlMTE3Y2RlN2UzOGNhZDU1
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTEtMDQgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMC0xMS0wNCAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGFkZCB3
b3JrYXJvdW5kIGZvciBMaW51eCBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM3OWRjZjkxY2NmMGQ4YjQ2
NDhhYWRhNDlkYzU4NmQ5MzY1NTQ3MTQuLjQ1MzJlM2Y2ZDFiYmJlOTU3ZDYwNjNjNGMxMGExYjAz
NDIwYzA3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMC0xMS0wNCAgU2lodWkg
TGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVy
bWlzc2lvbiBjaGVjayBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQ3NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb246OnN0YXJ0UmVj
b2duaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVx
dWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpjbGll
bnRPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0OjpzZXRJc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Ojppc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2sgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmRl
Y29kZSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUu
aDoKKyAgICAgICAgKiBwYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oOgorCiAy
MDIwLTExLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgd2lu
ZG93LmV2ZW50IG1heSBnZXQgc2V0IG9uIHdyb25nIGdsb2JhbCB3aGVuIGRpc3BhdGNoaW5nIGFu
IGV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDc1YzQyMmY0NDY5M2U1N2VmZjliZjBlNTAwOTkxYmRlZjYxY2E3
ZDkuLjdlM2Q4YjgxN2NhOGI4YjEzZDJkNmIzYTE3NmUxYTcxMmNjN2Q3NzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzUgQEAKKzIwMjAtMTEtMDQgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVj
aFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dL
QmFzZS5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50
eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgorICAgICAgICAoQVBJ
OjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xp
ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
ay5jcHA6IEFkZGVkLgorICAgICAgICAoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFja0dldFR5cGVJRCk6CisgICAgICAgIChXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW06IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpwZXJmb3JtU2FuZGJveENoZWNrKToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0TmV4dFJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpj
b21wbGV0ZUN1cnJlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnQpOgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja01pY3JvcGhv
bmVBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrVXNlclBlcm1p
c3Npb25Gb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJL
aXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcjo6flNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0Ojp+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJL
aXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydE5leHRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcjo6Y29tcGxldGVDdXJyZW50UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU2FuZGJveFJlcXVpcmVtZW50KToKKyAg
ICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tN
aWNyb3Bob25lQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1Vz
ZXJQZXJtaXNzaW9uRm9yT3JpZ2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y29tcGxldGUpOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Ojpvcmln
aW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjb21wbGV0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayk6CisgICAgICAgICogVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0UG9jZXNzaW5nUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpjb250aW51ZVByb2Nlc3Np
bmdSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRo
ZW50aWNhdG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5h
bDo6Z2V0RXhpc3RpbmdDcmVkZW50aWFscyk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVu
dGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNw
ZWVjaFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisKIDIwMjAtMTEtMDQg
IEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250YWN0
IFBpY2tlciBBUEldIEFkZCBzdXBwb3J0IGZvciBwaWNrZXIgVUkgb24gaU9TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
SGF2ZS5oCmluZGV4IDIwM2U4ZWM3ZDYxNWU4NzVmM2IzMTQ1ZjJmOGJkZDFlNWI3YjA4M2QuLjMx
YWZhYjIzNjA3MjIxNjg5NDhkYzk5YjY4MTYyNzU0ZjEwYjFiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2
ZS5oCkBAIC03NTUsMyArNzU1LDcgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExB
VEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAjZGVmaW5lIEhBVkVfQ05DT05U
QUNUUElDS0VSVklFV0NPTlRST0xMRVIgMQogI2VuZGlmCisKKyNpZiAgKFBMQVRGT1JNKElPU19G
QU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxNTAwKSkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRW
KQorI2RlZmluZSBIQVZFX1NQRUVDSFJFQ09HTklaRVIgMQorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKaW5kZXggNTFh
MzJjZGFhY2FhMWVkMDExNDI3NjdkMjJlMzAyNTI2ZGViZjU5NS4uZjExN2MxZmIxYjViZDA0YWU3
NTUyNTY1ZmJhYTg4OTFjNWMxYWViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uLmgiCiAKKyNpbmNsdWRl
ICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC02OSw3ICs3MCw4IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IFNwZWVjaFJlY29nbml0aW9uOjpzdGFydFJlY29nbml0aW9uKCkKICAgICBpZiAoIW1f
Y29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIlJl
Y29nbml0aW9uIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBjb25uZWN0aW9uIl9zIH07CiAKLSAgICBt
X2Nvbm5lY3Rpb24tPnN0YXJ0KGlkZW50aWZpZXIoKSwgbV9sYW5nLCBtX2NvbnRpbnVvdXMsIG1f
aW50ZXJpbVJlc3VsdHMsIG1fbWF4QWx0ZXJuYXRpdmVzKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9
IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX2Nv
bm5lY3Rpb24tPnN0YXJ0KGlkZW50aWZpZXIoKSwgbV9sYW5nLCBtX2NvbnRpbnVvdXMsIG1faW50
ZXJpbVJlc3VsdHMsIG1fbWF4QWx0ZXJuYXRpdmVzLCBDbGllbnRPcmlnaW4geyBkb2N1bWVudC50
b3BPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpIH0pOwog
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3RhcnRpbmc7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uLmgKaW5kZXggM2ZkMmQzM2FjYTAyMDUyNjM0MDU4ZDBmYjU2NTJlYjcwMDdm
YTUyYS4uYTAwMmRlZGEwYTYzOGNlMzMwMDBlNDMwZjA4ZWI0N2FlOWE1MmIxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uLmgKQEAgLTMxLDEyICszMSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudDsKIGNsYXNzIFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlOworc3RydWN0IENsaWVudE9yaWdpbjsKIAogY2xhc3MgU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBs
YW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFs
dGVybmF0aXZlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29u
dGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBD
bGllbnRPcmlnaW4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKFNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWJv
cnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaAppbmRleCA1Y2VlYTAxYzczODY1NTZkNDI1MWY4Yzhi
OTVjMzEyNGJhZmM2MDEyLi5kYTk1OWQ3YzA3OGU5YTU0MWVmOTQxYmViNWRlOWIzYWRmOTU3MjZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3QuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVk
PFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4geworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gewogcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiBjcmVh
dGUoU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsKIApAQCAtMzksMTEgKzM5LDE2IEBA
IHB1YmxpYzoKICAgICBib29sIGNvbnRpbnVvdXMoKSBjb25zdCB7IHJldHVybiBtX2luZm8uY29u
dGludW91czs7IH0KICAgICBib29sIGludGVyaW1SZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9p
bmZvLmludGVyaW1SZXN1bHRzOyB9CiAgICAgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKCkgY29u
c3QgeyByZXR1cm4gbV9pbmZvLm1heEFsdGVybmF0aXZlczsgfQorICAgIGNvbnN0IENsaWVudE9y
aWdpbiYgY2xpZW50T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmNsaWVudE9yaWdpbjsg
fQogCisgICAgdm9pZCBzZXRJc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2soYm9vbCBpc1dhaXRp
bmdGb3JQZXJtaXNzaW9uQ2hlY2spIHsgbV9pc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2sgPSBp
c1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2s7IH0KKyAgICBib29sIGlzV2FpdGluZ0ZvclBlcm1p
c3Npb25DaGVjaygpIGNvbnN0IHsgcmV0dXJuIG1faXNXYWl0aW5nRm9yUGVybWlzc2lvbkNoZWNr
OyB9CisgICAgCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dChTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYpOwogCiAgICAgU3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0SW5mbyBtX2luZm87CisgICAgYm9vbCBtX2lzV2FpdGluZ0ZvclBlcm1pc3Npb25D
aGVjayB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJ
bmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3RJbmZvLmgKaW5kZXggYWIxZTFhZTZlZjM4ODk4YzIxYTJhOWRmN2FmMWYwMDdlMjRiMTdk
MC4uNGZjMmEzZGFiN2UxMDc2Y2E2YzlmYzE5ODVlMGIxYzE5YjI2OWU5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5m
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm8uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkNsaWVudE9yaWdpbi5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudElkZW50aWZpZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsNiArMzYs
NyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7CiAgICAgYm9vbCBjb250
aW51b3VzIHsgZmFsc2UgfTsKICAgICBib29sIGludGVyaW1SZXN1bHRzIHsgZmFsc2UgfTsKICAg
ICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMgeyAxIH07CisgICAgQ2xpZW50T3JpZ2luIGNsaWVu
dE9yaWdpbjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbz4gZGVjb2RlKERlY29kZXImKTsKQEAgLTc0LDEy
ICs3NiwxOCBAQCBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUoRGVjbwogICAgIGlmICghbWF4QWx0ZXJuYXRp
dmVzKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgT3B0aW9uYWw8Q2xpZW50
T3JpZ2luPiBjbGllbnRPcmlnaW47CisgICAgZGVjb2RlciA+PiBjbGllbnRPcmlnaW47CisgICAg
aWYgKCFjbGllbnRPcmlnaW4pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBy
ZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqY2xpZW50SWRlbnRpZmllciksCiAgICAgICAgIFdU
Rk1vdmUoKmxhbmcpLAogICAgICAgICBXVEZNb3ZlKCpjb250aW51b3VzKSwKICAgICAgICAgV1RG
TW92ZSgqaW50ZXJpbVJlc3VsdHMpLAotICAgICAgICBXVEZNb3ZlKCptYXhBbHRlcm5hdGl2ZXMp
CisgICAgICAgIFdURk1vdmUoKm1heEFsdGVybmF0aXZlcyksCisgICAgICAgIFdURk1vdmUoKmNs
aWVudE9yaWdpbikKICAgICB9fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKaW5kZXggM2E4MmJmNmJhZjU0
Y2UwYzRiMTMzNGVmNmY4YjU4OTNmM2I4OTgyZS4uZWYzYjdiOTQzMWQwMzQxNDE5MDRhN2JkOGMy
YTk0Y2U4MDkxNWM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCkBAIC01Miw4ICs1Miw4IEBAIFN0cmluZyBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUpOwog
Y2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGUoU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
KTsKLSAgICBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlRXJyb3IoU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3BlZWNoUmVjb2du
aXRpb25FcnJvciYpOwotICAgIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVS
ZXN1bHQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3Qg
VmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4mKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlRXJyb3IoU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3BlZWNoUmVjb2duaXRpb25F
cnJvciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZSBjcmVhdGVSZXN1bHQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciwgY29uc3QgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4mKTsKIAogICAgIFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50SWRlbnRpZmllcjsgfQogICAgIFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaApp
bmRleCBjZjllNzJiOTNjMDY0YTU1ZGRkZmFiN2IzY2FmYjQ4OTBlMDM1ZjQ2Li5iZmNjMmU5YzJm
OTE3NzIyODlkMjYwNDJiNWVhOWIyYjdhMmVlM2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHVtbXlTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb24oKSk7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCByZWdpc3Rl
ckNsaWVudChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQmKSBmaW5hbCB7IH0KLSAg
ICAgICAgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCkgZmluYWwgeyB9CisgICAg
ICAgIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiwgYm9vbCwgYm9vbCwgdWludDY0X3QsIENsaWVudE9yaWdpbiYmKSBm
aW5hbCB7IH0KICAgICAgICAgdm9pZCBzdG9wKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIGFib3J0KFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFsIHsgfQogICAgICAgICB2b2lk
IGRpZFJlY2VpdmVVcGRhdGUoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSBmaW5hbCB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCA2ZDA2NTY0NWRjZWU2MmU1
OWQ1MGRiZWYzNzQzNWE0OWE4MGViNjgyLi5jZDFjYWQ5NmI0MDMxMmRiM2IxODhkZTcxZjYwODhi
ZjcyOGZkODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0xNjUsNiAr
MTY1LDcgQEAgcHVibGljOgogICAgICAgICBSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5l
ciwKICAgICAgICAgUnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5lciwKICAgICAgICAg
UnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExpc3RlbmVyLAorICAgICAgICBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFjaywKICAgICAgICAgVGV4dENoZWNrZXIsCiAgICAgICAgIFVS
TFNjaGVtZVRhc2ssCiAgICAgICAgIFVzZXJDb250ZW50Q29udHJvbGxlciwKQEAgLTQxMCw2ICs0
MTEsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPEFQSTo6T2JqZWN0OjpUeXBlPiB7
CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0
ZW5lciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlJ1bkphdmFTY3JpcHRDb25maXJtUmVz
dWx0TGlzdGVuZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpSdW5KYXZhU2NyaXB0UHJv
bXB0UmVzdWx0TGlzdGVuZXIsCisgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFjaywKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlRl
eHRDaGVja2VyLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6VVJMU2NoZW1lVGFzaywKICAg
ICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250ZW50Q29udHJvbGxlciwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXggOWU4MmU1NjAwMTg3ZWMxY2Y4YWY5YmVlNzllNzFk
MGU4ZDdmZDE1YS4uODRlZTZjMjg4ZjZkMmViZDUxZmE3M2VhNzI3MDhmMzI5NDZiZGQ4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTE0MSw2ICsxNDEsNyBAQCB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNpdGVEYXRhQ29uZmlndXJhdGlvblN0b3JlKiBXS1dl
YnNpdGVEYXRhU3RvcmVDbwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tXZWJzaXRlRGF0
YVN0b3JlKiBXS1dlYnNpdGVEYXRhU3RvcmVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS1dlYnNpdGVQb2xpY2llcyogV0tXZWJzaXRlUG9saWNpZXNSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1dpbmRvd0ZlYXR1cmVzKiBXS1dpbmRvd0ZlYXR1cmVzUmVmOwordHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjayogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZjsKIAogLyogV2Vi
S2l0MiBCdW5kbGUgdHlwZXMgKi8KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZDUyNzlmZTYyMjk2M2YwNzQ3
MzhhYzFlZTU0YzM3NGRjYmU3YjUyNy4uOTdjMDllMjcxNjVlMDYyMTAxZTljMzIwNDE1ZjRkZmU2
ZTQ5OTViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yODksNiArMjg5LDcgQEAgVUlQcm9jZXNzL1Jlc3Bv
bnNpdmVuZXNzVGltZXIuY3BwCiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3Bw
CiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAogVUlQcm9jZXNzL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyLmNwcAorVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIuY3BwCiBVSVByb2Nlc3MvVGV4dENoZWNrZXIuY3BwCiBVSVByb2Nlc3MvVGV4dENoZWNr
ZXJDb21wbGV0aW9uLmNwcAogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5
LmNwcApAQCAtNDAyLDYgKzQwMyw3IEBAIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNw
cAogVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlLmNwcAogVUlQcm9jZXNzL0FQSS9D
L1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3Rh
dGVSZWYuY3BwCitVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFjay5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1RleHRDaGVja2VyLmNwcAogVUlQcm9jZXNz
L0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dL
VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlZi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRl
eCAwODRkNTEzNTJkNDRhNDUwOTQ5YjNmYmQxZDFkNzYxMzVmYjJiZWIyLi5jMjRmYzQ0NDFlZDA5
NDFlNDJhNzViMTUwOGQ3ZjNmYzYzNDY1ZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0z
NzksNiArMzc5LDcgQEAgVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5tbQogVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCiBVSVByb2Nlc3Mv
Q29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvU2Vzc2lv
blN0YXRlQ29kaW5nLm1tCitVSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlckNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xs
ZXJDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXIubW0KIFVJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElVSUNsaWVudC5oCmluZGV4IGFhN2Q4OWMwMWU3MzUyMGNlM2VlMDQyMjZiOWFlODU5NzBiZmFh
NmUuLmIyZGZmMjk4M2VlMDk4YWRiYzkyNzE4MTVjNDJhYjZhZDZkNDA0OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCkBAIC0yMDIsNiArMjAyLDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uOjpjcmVhdGUo
KTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6U2VjdXJp
dHlPcmlnaW4mLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0FQSUNhc3QuaAppbmRleCBiNTJjNDRiYWVhOWFjZjlmYzAzMzJkNWE5ZjM3MzU2ZTlkMjM4NjI5
Li4xOGNiZmQ1Yjc0ZWI4NzcwYTU3OGYxNWM4YTAxNjE0OTkwMjE0NTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaApAQCAtNzksNiArNzksNyBAQCBjbGFzcyBB
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xh
c3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0OworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7
CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTsKIGNsYXNzIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CkBAIC0xNTIs
NiArMTUzLDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJlZmVyZW5jZXNSZWYsIFdlYlByZWZl
cmVuY2VzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJvdGVjdGlvblNwYWNlUmVmLCBXZWJQcm90
ZWN0aW9uU3BhY2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlclJlZiwgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tTZXNzaW9uU3RhdGVSZWYsIEFQSTo6U2Vzc2lvblN0YXRlKQorV0tfQUREX0FQ
SV9NQVBQSU5HKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYsIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVGV4
dENoZWNrZXJSZWYsIFdlYlRleHRDaGVja2VyKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlckNv
bnRlbnRDb250cm9sbGVyUmVmLCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSkKIFdLX0FE
RF9BUElfTUFQUElORyhXS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVSZWYsIEFQSTo6Q29udGVu
dFJ1bGVMaXN0U3RvcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApp
bmRleCA0MzY5Y2RkODI1YjUxNTdmYjAxMGMzZjgxYWU3OGU2NjBkYWE3NGZjLi4xMWM2NmJmNDI4
NDkzMjgxNWQ3ZWZhYTRiYWUzOTA2ZWY3MjM0NTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJQYWdlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb3JtYXRpb24uaCIKICNpbmNsdWRlICJQcmludEluZm8u
aCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tQYWdlUG9saWN5Q2xpZW50SW50ZXJuYWwu
aCIKICNpbmNsdWRlICJXS1BhZ2VSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0ludGVybmFsLmgiCkBA
IC0xMTUsNyArMTE2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVBv
bGljeUNsaWVudEJhc2U+IHsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxX
S1BhZ2VVSUNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGll
bnRWMCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlDbGllbnRWMiwgV0tQYWdlVUlDbGllbnRW
MywgV0tQYWdlVUlDbGllbnRWNCwgV0tQYWdlVUlDbGllbnRWNSwgV0tQYWdlVUlDbGllbnRWNiwg
V0tQYWdlVUlDbGllbnRWNywgV0tQYWdlVUlDbGllbnRWOCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQ
YWdlVUlDbGllbnRWMTAsIFdLUGFnZVVJQ2xpZW50VjExLCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQ
YWdlVUlDbGllbnRWMTMsIFdLUGFnZVVJQ2xpZW50VjE0PiBWZXJzaW9uczsKKyAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlD
bGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdlVUlDbGllbnRWNCwgV0tQYWdlVUlDbGll
bnRWNSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQYWdlVUlDbGllbnRWNywgV0tQYWdlVUlDbGllbnRW
OCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQYWdlVUlDbGllbnRWMTAsIFdLUGFnZVVJQ2xpZW50VjEx
LCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQYWdlVUlDbGllbnRWMTMsIFdLUGFnZVVJQ2xpZW50VjE0
LCBXS1BhZ2VVSUNsaWVudFYxNT4gVmVyc2lvbnM7CiB9OwogCiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCkBAIC0yMTEwLDYgKzIxMTEsMTMgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQo
V0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5l
bFJlc3VsdDo6UHJlc2VudGVkKTsKICAgICAgICAgfQogI2VuZGlmCisgICAgICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJv
eHkmIHBhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHJlcXVlc3RpbmdPcmlnaW4sIEFQSTo6U2Vj
dXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9s
aWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRv
QVBJKCZyZXF1ZXN0aW5nT3JpZ2luKSwgdG9BUEkoJnRvcE9yaWdpbiksIHRvQVBJKFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpLnB0cigpKSk7CisgICAgICAgIH0KICAgICB9OwogCiAgICAgdG9JbXBsKHBhZ2VSZWYp
LT5zZXRVSUNsaWVudChtYWtlVW5pcXVlPFVJQ2xpZW50Pih3a0NsaWVudCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKaW5kZXggYjYzODgxNTVj
ZDMwMzZlNjY2MTEwZjE5MjU2MTZhZmQzN2U4NjhiYS4uN2NkOGZkMGQ5ODRjZmQ5ZjRkNDRiZmU4
M2Q4NWRiMWI1NjE3NTk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VVSUNsaWVudC5oCkBAIC0xMzYsNiArMTM2LDcgQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdl
RGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlQ2FsbGJhY2spKFdL
UGEKIHR5cGVkZWYgYm9vbCAoKldLUGFnZVNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRN
b3Rpb25BY2Nlc3NDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYg
c2VjdXJpdHlPcmlnaW4sIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogCiB0eXBlZGVmIHZvaWQg
KCpXS1BhZ2VSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FsbGJhY2spKCk7Cit0eXBlZGVmIHZv
aWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHJlcXVlc3Rp
bmdPcmlnaW4sIFdLU2VjdXJpdHlPcmlnaW5SZWYgdG9wT3JpZ2luLCBXS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIGNhbGxiYWNrKTsKIAogLy8gRGVwcmVjYXRlZAogdHlw
ZWRlZiBXS1BhZ2VSZWYgKCpXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2tfZGVwcmVjYXRlZEZv
clVzZVdpdGhWMCkoV0tQYWdlUmVmIHBhZ2UsIFdLRGljdGlvbmFyeVJlZiBmZWF0dXJlcywgV0tF
dmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CkBAIC0xMzUzLDYgKzEzNTQsMTE3IEBAIHR5cGVkZWYg
c3RydWN0IFdLUGFnZVVJQ2xpZW50VjE0IHsKICAgICBXS1BhZ2VSdW5XZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWw7CiB9IFdLUGFnZVVJQ2xpZW50VjE0OwogCit0eXBlZGVmIHN0cnVjdCBXS1Bh
Z2VVSUNsaWVudFYxNSB7CisgICAgV0tQYWdlVUlDbGllbnRCYXNlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOworCisgICAgLy8gVmVyc2lvbiAw
LgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYw
ICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOwor
ICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2hvd1BhZ2U7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZTsKKyAgICBXS1Bh
Z2VUYWtlRm9jdXNDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRha2VGb2N1czsKKyAgICBXS1BhZ2VGb2N1c0NhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzOworICAgIFdLUGFnZVVuZm9j
dXNDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5mb2N1czsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVk
Rm9yVXNlV2l0aFYwICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9y
VXNlV2l0aFYwOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVw
cmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VTZXRTdGF0dXNUZXh0Q2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXR1c1RleHQ7CisgICAgV0tQ
YWdlTW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYw
ICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOwor
ICAgIFdLUGFnZU1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZv
clVzZVdpdGhWMCAgICAgbWlzc2luZ1BsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMDsKKyAgICBXS1BhZ2VEaWROb3RIYW5kbGVLZXlFdmVudENhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZE5vdEhhbmRsZUtleUV2ZW50OworICAgIFdLUGFn
ZURpZE5vdEhhbmRsZVdoZWVsRXZlbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlkTm90SGFuZGxlV2hlZWxFdmVudDsKKyAgICBXS1BhZ2VHZXRUb29sYmFyc0FyZVZp
c2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJzQXJl
VmlzaWJsZTsKKyAgICBXS1BhZ2VTZXRUb29sYmFyc0FyZVZpc2libGVDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvb2xiYXJzQXJlVmlzaWJsZTsKKyAgICBXS1Bh
Z2VHZXRNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1lbnVCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlU2V0TWVudUJhcklzVmlzaWJsZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNZW51QmFySXNWaXNp
YmxlOworICAgIFdLUGFnZUdldFN0YXR1c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFnZVNldFN0
YXR1c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0U3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFnZUdldElzUmVzaXphYmxlQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZXNpemFibGU7CisgICAg
V0tQYWdlU2V0SXNSZXNpemFibGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRJc1Jlc2l6YWJsZTsKKyAgICBXS1BhZ2VHZXRXaW5kb3dGcmFtZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFdpbmRvd0ZyYW1l
OworICAgIFdLUGFnZVNldFdpbmRvd0ZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0V2luZG93RnJhbWU7CisgICAgV0tQYWdlUnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNiAgICBydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWNjsKKyAgICBXS1BhZ2VV
SUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpZERyYXc7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlRGlkU2Nyb2xsOworICAgIFdLUGFnZUV4
Y2VlZGVkRGF0YWJhc2VRdW90YUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZWVkZWREYXRhYmFzZVF1b3RhOworICAgIFdLUGFnZVJ1bk9wZW5QYW5lbENhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuT3BlblBhbmVsOwor
ICAgIFdLUGFnZURlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxs
YmFjayAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dDsKKyAgICBXS1BhZ2VIZWFkZXJIZWlnaHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGhlYWRlckhlaWdodDsKKyAgICBXS1BhZ2VGb290ZXJIZWlnaHRD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3Rlckhl
aWdodDsKKyAgICBXS1BhZ2VEcmF3SGVhZGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRyYXdIZWFkZXI7CisgICAgV0tQYWdlRHJhd0Zvb3RlckNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3Rm9v
dGVyOworICAgIFdLUGFnZVByaW50RnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJpbnRGcmFtZTsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bk1vZGFs
OworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW51c2VkMTsgLy8gVXNlZCB0byBiZSBkaWRDb21wbGV0ZVJ1YmJl
ckJhbmRGb3JNYWluRnJhbWUKKyAgICBXS1BhZ2VTYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9s
ZGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXI7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0X3VuYXZh
aWxhYmxlOworCisgICAgLy8gVmVyc2lvbiAxLgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFn
ZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOworICAgIFdLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVt
ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQ7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RDYWxsYmFjayAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRD
YWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xp
Y2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOworCisgICAgLy8gVmVyc2lvbiAyLgorICAgIFdL
UGFnZVNob3dDb2xvclBpY2tlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2hvd0NvbG9yUGlja2VyOworICAgIFdLUGFnZUhpZGVDb2xvclBpY2tlckNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUNvbG9yUGlja2Vy
OworICAgIFdLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkOworCisgICAg
Ly8gVmVyc2lvbiAzLgorICAgIFdLUGFnZVBpbm5lZFN0YXRlRGlkQ2hhbmdlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkU3RhdGVEaWRDaGFuZ2U7CisKKyAg
ICAvLyBWZXJzaW9uIDQuCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQyOyAvLyBVc2VkIHRvIGJlIGRp
ZEJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcy4KKyAgICB2b2lkKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
dXNlZDM7IC8vIFVzZWQgdG8gYmUgZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MuCisgICAgdm9p
ZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnVzZWQ0OyAvLyBVc2VkIHRvIGJlIGRpZENhbmNlbFRyYWNraW5nUG90ZW50aWFs
TG9uZ01vdXNlUHJlc3MuCisgICAgV0tQYWdlSXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2VDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZTsK
KworICAgIC8vIFZlcnNpb24gNS4KKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZvclVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZURpZENsaWNrQXV0b0ZpbGxCdXR0b25D
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ2xpY2tBdXRvRmlsbEJ1
dHRvbjsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9y
VXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNl
V2l0aFY1OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZv
clVzZVdpdGhWNTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNTsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVk
aWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCisKKyAgICAvLyBWZXJzaW9uIDYuCisgICAgV0tQ
YWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVOZXdQYWdlOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0
OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm07CisgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdFByb21wdENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dW5KYXZhU2NyaXB0UHJvbXB0OworICAgIFdLQ2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tVc2VyTWVkaWFQZXJtaXNz
aW9uRm9yT3JpZ2luOworCisgICAgLy8gVmVyc2lvbiA3LgorICAgIFdLUGFnZVJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsOworICAgIFdLRnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5l
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVlbk1heVJldHVy
blRvSW5saW5lOworCisgICAgLy8gVmVyc2lvbiA4LgorICAgIFdLUmVxdWVzdFBvaW50ZXJMb2Nr
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFBv
aW50ZXJMb2NrOworICAgIFdLRGlkTG9zZVBvaW50ZXJMb2NrQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkTG9zZVBvaW50ZXJMb2NrOworCisgICAgLy8g
VmVyc2lvbiA5LgorICAgIFdLSGFuZGxlQXV0b3BsYXlFdmVudENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQXV0b3BsYXlFdmVudDsKKworICAgIC8v
IFZlcnNpb24gMTAuCisgICAgV0tIYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBoYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURp
ZENoYW5nZTsKKyAgICBXS0RpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZv
cmVncm91bmRDYWxsYmFjayAgICAgICAgIGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0
V2hpbGVJbkZvcmVncm91bmQ7CisKKyAgICAvLyBWZXJzaW9uIDExLgorICAgIFdLUGFnZURpZFJl
c2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZUNhbGxiYWNrICAgICAgICAg
ZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlOworCisgICAgLy8g
VmVyc2lvbiAxMi4KKyAgICBXS1BhZ2VSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm1DYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybTsK
KworICAgIC8vIFZlcnNpb24gMTMuCisgICAgV0tQYWdlU2hvdWxkQWxsb3dEZXZpY2VPcmllbnRh
dGlvbkFuZE1vdGlvbkFjY2Vzc0NhbGxiYWNrICAgICAgICAgICBzaG91bGRBbGxvd0RldmljZU9y
aWVudGF0aW9uQW5kTW90aW9uQWNjZXNzOworCisgICAgLy8gVmVyc2lvbiAxNC4KKyAgICBXS1Bh
Z2VSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWw7CisKKyAgICAvLyBWZXJzaW9uIDE1Lgor
ICAgIFdLUGFnZURlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3RDYWxsYmFjayAgICAgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdDsKKyAgICAKK30gV0tQYWdlVUlDbGllbnRWMTU7CisKICNpZmRlZiBfX2NwbHVzcGx1
cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI3YmU5ZGIwNzFjMzc1N2I0OTIxMTZiZjZiYzI2YzQyZmY3NjEzYTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suaCIKKworI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0dldFR5cGVJRCgpCit7CisgICAgcmV0
dXJuIHRvQVBJKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpBUElUeXBlKTsK
K30KKwordm9pZCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUo
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBzcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFjaywgYm9vbCBncmFudGVkKQoreworICAgIHJldHVybiB0b0ltcGwo
c3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2spLT5jb21wbGV0ZShncmFudGVkKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
OGFlYWZjNjk4NGJhOTZmNTQ4OTJlNzMyYWZlYTNhMDYzYzljNzJkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjay5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitl
eHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFja0dldFR5cGVJRCh2b2lkKTsKKworV0tfRVhQT1JUIHZvaWQg
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0NvbXBsZXRlKFdLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2ssIGJvb2wgZ3JhbnRlZCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVn
YXRlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxl
Z2F0ZVByaXZhdGUuaAppbmRleCBkMWVhZTIwMWU2NTQyZjRmYWI2MDE5ODBkYzY2MTI0OTEzMTk3
OTNmLi41ZWFiNDY1NzlmOTlmYTZmNjMzMTZhNGMwNTQ0MjJkNjNhNmZkOTE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmgKQEAgLTE1Miw2ICsxNTIsOCBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogCiAtICh2b2lk
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHdpbGxTaGFyZUFjdGl2aXR5SXRlbXM6KE5T
QXJyYXkgKilhY3Rpdml0eUl0ZW1zIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsK
IAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopcmVxdWVzdGlu
Z09yaWdpbiB0b3BPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKil0b3BPcmlnaW4gZGVjaXNpb25I
YW5kbGVyOih2b2lkICheKShCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAjaWYgVEFS
R0VUX09TX0lQSE9ORQogCiAtIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHNo
b3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJ
bmZvICopZWxlbWVudCBXS19BUElfQVZBSUxBQkxFKGlvcyg5LjApKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zN2I1NjNjNTdiMWE3
ZTMwZjBjZjUwNDRlNzNjYTlkZDJiNzBlY2ExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNv
Y29hLm1tCkBAIC0wLDAgKzEsMjEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCisKKyNpbXBv
cnQgIkFQSVNlY3VyaXR5T3JpZ2luLmgiCisjaW1wb3J0ICJBUElVSUNsaWVudC5oIgorI2ltcG9y
dCAiU2FuZGJveFV0aWxpdGllcy5oIgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQ
SS5oPgorCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorI2ltcG9ydCA8U3BlZWNoL1NwZWVj
aC5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKFNwZWVjaCkKK1NPRlRfTElOS19DTEFTUyhTcGVl
Y2gsIFNGU3BlZWNoUmVjb2duaXplcikKKyNlbmRpZgorCisjaW1wb3J0IDxwYWwvY29jb2EvQVZG
b3VuZGF0aW9uU29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBib29s
IHBlcmZvcm1TYW5kYm94Q2hlY2soKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoY3Vy
cmVudFByb2Nlc3NJc1NhbmRib3hlZCgpICYmICEhc2FuZGJveF9jaGVjayhnZXRwaWQoKSwgImRl
dmljZS1taWNyb3Bob25lIiwgU0FOREJPWF9GSUxURVJfTk9ORSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9udEhh
bmRsZXIpCit7CisgICAgbV9yZXF1ZXN0cy5hcHBlbmQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdDo6Y3JlYXRlKG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9udEhhbmRsZXIpKSk7
CisgICAgaWYgKG1fcmVxdWVzdHMuc2l6ZSgpID09IDEpCisgICAgICAgIHN0YXJ0TmV4dFJlcXVl
c3QoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFy
dE5leHRSZXF1ZXN0KCkKK3sKKyAgICBjaGVja1NhbmRib3hSZXF1aXJlbWVudCgpOworfQorCit2
b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVudFJl
cXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb24gZGVjaXNp
b24pCit7CisgICAgQVNTRVJUKCFtX3JlcXVlc3RzLmlzRW1wdHkoKSk7CisgICAgYXV0byBjdXJy
ZW50UmVxdWVzdCA9IG1fcmVxdWVzdHMudGFrZUZpcnN0KCk7CisgICAgY3VycmVudFJlcXVlc3Qt
PmNvbXBsZXRlKGRlY2lzaW9uKTsKKworICAgIHN0YXJ0TmV4dFJlcXVlc3QoKTsKK30KKwordm9p
ZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1NhbmRib3hSZXF1aXJl
bWVudCgpCit7CisgICAgaWYgKCFtX2lzU2FuZGJveENoZWNrUGFzc2VkLmhhc1ZhbHVlKCkpCisg
ICAgICAgIG1faXNTYW5kYm94Q2hlY2tQYXNzZWQgPSBwZXJmb3JtU2FuZGJveENoZWNrKCk7CisK
KyAgICBpZiAoIW1faXNTYW5kYm94Q2hlY2tQYXNzZWQpIHsKKyAgICAgICAgY29tcGxldGVDdXJy
ZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6
RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjaGVja01pY3JvcGhvbmVBY2Nl
c3MoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVj
a01pY3JvcGhvbmVBY2Nlc3MoKQoreworICAgIGlmIChtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhv
cml6ZWQuaGFzVmFsdWUoKSAmJiBtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQudmFsdWUo
KSkgeworICAgICAgICBjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9y
aXplZC5oYXNWYWx1ZSgpICYmICFtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQudmFsdWUo
KSkgeworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIE5vIHByb21wdCBmb3IgbWljcm9waG9uZSBvciBzcGVlY2ggcmVjb2duaXRpb24g
c2VydmljZS4KKyAgICBpZiAobV9wYWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2Vz
RW5hYmxlZCgpKSB7CisgICAgICAgIGNoZWNrVXNlclBlcm1pc3Npb25Gb3JPcmlnaW4oKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gbWljcm9waG9uZUF1dGhvcml6YXRpb25T
dGF0dXMgPSBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0
dXNGb3JNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpb107CisgICAgaWYgKG1pY3JvcGhvbmVBdXRo
b3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQpIHsKKyAg
ICAgICAgbV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkID0gdHJ1ZTsKKyAgICAgICAgY2hl
Y2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBpZiAobWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRo
b3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09
IEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpIHsKKyAgICAgICAgbV9pc01pY3JvcGhv
bmVBY2Nlc3NBdXRob3JpemVkID0gZmFsc2U7CisgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVl
c3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKG1pY3JvcGhvbmVBdXRob3JpemF0
aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQpOworICAgIGF1
dG8gZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKV0oQk9PTCBpc0F1dGhvcml6ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtU
aGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghaXNBdXRob3JpemVkKSB7
CisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkID0g
ZmFsc2U7CisgICAgICAgICAgICB3ZWFrVGhpcy0+Y29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB3ZWFrVGhpcy0+bV9pc01pY3JvcGhv
bmVBY2Nlc3NBdXRob3JpemVkID0gdHJ1ZTsKKyAgICAgICAgd2Vha1RoaXMtPmNoZWNrU3BlZWNo
UmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7CisgICAgfSk7CisgICAgW1BBTDo6Z2V0QVZDYXB0
dXJlRGV2aWNlQ2xhc3MoKSByZXF1ZXN0QWNjZXNzRm9yTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVk
aW8gY29tcGxldGlvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKK30KKwordm9pZCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1NwZWVjaFJlY29nbml0aW9u
U2VydmljZUFjY2VzcygpCit7CisgICAgaWYgKCFtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNl
QWNjZXNzQXV0aG9yaXplZCkKKyAgICAgICAgbV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFj
Y2Vzc0F1dGhvcml6ZWQgPSB0cnVlOworCisgICAgaWYgKG1faXNTcGVlY2hSZWNvZ25pdGlvblNl
cnZpY2VBY2Nlc3NBdXRob3JpemVkLmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgaWYgKG1faXNTcGVl
Y2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkLnZhbHVlKCkpCisgICAgICAgICAg
ICBjaGVja1VzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdDo6RGVjaXNpb246OkRlbnkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgSEFW
RShTUEVFQ0hSRUNPR05JWkVSKQorICAgIGF1dG8gc3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRp
b25TdGF0dXMgPSBbZ2V0U0ZTcGVlY2hSZWNvZ25pemVyQ2xhc3MoKSBhdXRob3JpemF0aW9uU3Rh
dHVzXTsKKyAgICBpZiAoc3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZT
cGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQpIHsKKyAgICAgICAg
bV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQgPSB0cnVlOworICAg
ICAgICBjaGVja1VzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoc3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZT
cGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQgfHwgc3BlZWNoUmVj
b2duaXplckF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXph
dGlvblN0YXR1c0RlbmllZCkgeworICAgICAgICBtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNl
QWNjZXNzQXV0aG9yaXplZCA9IGZhbHNlOworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0
KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGVlY2hSZWNvZ25pemVyQXV0aG9y
aXphdGlvblN0YXR1cyA9PSBTRlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzTm90
RGV0ZXJtaW5lZCk7CisgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShTRlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0
aW9uU3RhdHVzIHN0YXR1cykgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBTRlNwZWVjaFJlY29nbml6
ZXJBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZCkgeworICAgICAgICAgICAgd2Vha1RoaXMt
Pm1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkID0gZmFsc2U7Cisg
ICAgICAgICAgICB3ZWFrVGhpcy0+Y29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICB3ZWFrVGhpcy0+bV9pc1NwZWVjaFJlY29nbml0aW9u
U2VydmljZUFjY2Vzc0F1dGhvcml6ZWQgPSB0cnVlOworICAgICAgICB3ZWFrVGhpcy0+Y2hlY2tV
c2VyUGVybWlzc2lvbkZvck9yaWdpbigpOworICAgIH0pOworICAgIFtnZXRTRlNwZWVjaFJlY29n
bml6ZXJDbGFzcygpIHJlcXVlc3RBdXRob3JpemF0aW9uOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07
CisjZWxzZQorICAgIG1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVk
ID0gdHJ1ZTsKKyAgICBjaGVja1VzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKCk7CisjZW5kaWYgLy8g
SEFWRShTUEVFQ0hSRUNPR05JWkVSKQorfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI6OmNoZWNrVXNlclBlcm1pc3Npb25Gb3JPcmlnaW4oKQoreworICAgIEFTU0VS
VCghbV9yZXF1ZXN0cy5pc0VtcHR5KCkpOworICAgIGF1dG8mIGN1cnJlbnRSZXF1ZXN0ID0gbV9y
ZXF1ZXN0cy5maXJzdCgpOworCisgICAgYXV0byBjbGllbnRPcmlnaW4gPSBjdXJyZW50UmVxdWVz
dC0+b3JpZ2luKCk7CisgICAgaWYgKG1fb3JpZ2luUGVybWlzc2lvbk1hcC5jb250YWlucyhjbGll
bnRPcmlnaW4pKSB7CisgICAgICAgIGJvb2wgZ3JhbnRlZCA9IG1fb3JpZ2luUGVybWlzc2lvbk1h
cC5nZXQoY2xpZW50T3JpZ2luKTsKKyAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChncmFu
dGVkID8gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkFsbG93
IDogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKGJvb2wgaXNQZXJtaXR0ZWQpIHsKKyAgICAgICAg
aWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQoIXdl
YWtUaGlzLT5tX3JlcXVlc3RzLmlzRW1wdHkoKSk7CisgICAgICAgIHdlYWtUaGlzLT5tX29yaWdp
blBlcm1pc3Npb25NYXAuc2V0KHdlYWtUaGlzLT5tX3JlcXVlc3RzLmZpcnN0KCktPm9yaWdpbigp
LCBpc1Blcm1pdHRlZCk7CisgICAgICAgIHdlYWtUaGlzLT5jb21wbGV0ZUN1cnJlbnRSZXF1ZXN0
KGlzUGVybWl0dGVkID8gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNp
b246OkFsbG93IDogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246
OkRlbnkpOworICAgIH07CisKKyAgICBhdXRvIHJlcXVlc3RpbmdPcmlnaW4gPSBjbGllbnRPcmln
aW4uY2xpZW50T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0byB0b3BPcmlnaW4gPWNs
aWVudE9yaWdpbi50b3BPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBtX3BhZ2UudWlDbGll
bnQoKS5kZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KG1f
cGFnZSwgQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlcXVlc3RpbmdPcmlnaW4uZ2V0KCkp
LmdldCgpLCBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodG9wT3JpZ2luLmdldCgpKS5nZXQo
KSwgV1RGTW92ZShkZWNpc2lvbkhhbmRsZXIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAppbmRleCA4YTA5
NDc0NWMxZjI0YmUxMDVkYmIwMmFiOTFlMzA3YjMxZDQ4NmIxLi5lYWQ0ZDU3ZWUwYTMzYTZiM2Vl
YmJkZWM0M2Y4YjczOTU1ZDk3NjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5oCkBAIC0xNjEsNiArMTYxLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VC
X0FVVEhOKQogICAgICAgICB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVBy
b3h5JiwgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2ViRnJhbWVQcm94eSYsIEZyYW1l
SW5mb0RhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRoZW50aWNhdGlvblBhbmVs
UmVzdWx0KT4mJikgZmluYWw7CiAjZW5kaWYKKyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIEFQSTo6U2Vj
dXJpdHlPcmlnaW4mLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJikgZmluYWw7CiAKICAgICAgICAgVUlEZWxlZ2F0ZSYgbV91aURlbGVnYXRlOwog
ICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRl
eCBkMDMzOGY4ZDZlM2I5YTEzZGYyYWYxNTNhY2I1ZGViMzhlMWZjZDliLi4xOTM0NTZiMWMwNzg2
Nzk2OTYxOTRiMzUzMWJjNjVkYzQxNTUxOWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTEzMzIsNCArMTMzMiwyNiBAQCB2b2lkIFVJRGVsZWdh
dGU6OlVJQ2xpZW50OjppbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNv
cmU6OkludFNpegogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4+KGRl
bGVnYXRlKSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGltYWdlT3JNZWRpYURvY3Vt
ZW50U2l6ZUNoYW5nZWQ6bmV3U2l6ZV07CiB9CiAKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0
OjpXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHJlcXVlc3RpbmdPcmln
aW4sIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gKGlk
IDxXS1VJRGVsZWdhdGVQcml2YXRlPiltX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKKyAg
ICBpZiAoIWRlbGVnYXRlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkZvck9yaWdpbjp0b3BPcmlnaW46ZGVjaXNpb25IYW5kbGVyOildKSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8g
Y2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZSwg
QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JP
cmlnaW46dG9wT3JpZ2luOmRlY2lzaW9uSGFuZGxlcjopKTsKKyAgICBbZGVsZWdhdGUgX3dlYlZp
ZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uRm9yT3JpZ2luOndyYXBwZXIocmVxdWVzdGluZ09yaWdpbikgdG9wT3JpZ2luOndyYXBwZXIo
dG9wT3JpZ2luKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxl
ciA9IHN0ZDo6ZXhjaGFuZ2UoY29tcGxldGlvbkhhbmRsZXIsIHsgfSksIGNoZWNrZXIgPSBXVEZN
b3ZlKGNoZWNrZXIpXSAoQk9PTCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNoZWNr
ZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZ3JhbnRlZCk7CisgICAgfSkuZ2V0KCldOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWZh
YWRmYjkzZWIwZmRhNmMxMWNlZjY5NDI0YTIzOGQ1ZWEwODQ3MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXIuY3BwCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcihXZWJQYWdlUHJveHkmIHBhZ2UpCisgICAg
OiBtX3BhZ2UocGFnZSkKK3sKK30KKworU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cjo6flNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoKQoreworICAgIGZvciAoYXV0
byYgcmVxdWVzdCA6IG1fcmVxdWVzdHMpCisgICAgICAgIHJlcXVlc3QtPmNvbXBsZXRlKFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKK30KKworI2lm
ICFQTEFURk9STShDT0NPQSkKKworflNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIo
KQoreworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVl
c3QoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVl
KTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydE5l
eHRSZXF1ZXN0KCkKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3Q6OkRlY2lzaW9uKQoreworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OmNoZWNrU2FuZGJveFJlcXVpcmVtZW50KCkKK3sKK30KKwordm9pZCBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja01pY3JvcGhvbmVBY2Nlc3MoKQorewor
fQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU3BlZWNo
UmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCkKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1VzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKCkKK3sKK30K
KworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTY4OWM1ZGQ1ODg3ODk4YjU3ZGMyYzlmNDZjYTIzNDQyYWQ3ZTU4OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNz
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcj4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIoV2ViUGFnZVByb3h5Jik7CisgICAgflNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIoKTsKKyAgICB2b2lkIHJlcXVlc3QoY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCBzdGFydE5leHRSZXF1ZXN0KCk7CisgICAgdm9pZCBjb21wbGV0ZUN1cnJlbnRSZXF1
ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uKTsKKyAgICB2
b2lkIGNoZWNrU2FuZGJveFJlcXVpcmVtZW50KCk7CisgICAgdm9pZCBjaGVja01pY3JvcGhvbmVB
Y2Nlc3MoKTsKKyAgICB2b2lkIGNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7
CisgICAgdm9pZCBjaGVja1VzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKCk7CisKKyAgICBXZWJQYWdl
UHJveHkmIG1fcGFnZTsKKyAgICBEZXF1ZTxSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdD4+IG1fcmVxdWVzdHM7CisgICAgT3B0aW9uYWw8Ym9vbD4gbV9pc1NhbmRib3hDaGVj
a1Bhc3NlZDsKKyAgICBPcHRpb25hbDxib29sPiBtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6
ZWQ7CisgICAgT3B0aW9uYWw8Ym9vbD4gbV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vz
c0F1dGhvcml6ZWQ7CisgICAgSGFzaE1hcDxDbGllbnRPcmlnaW4sIGJvb2w+IG1fb3JpZ2luUGVy
bWlzc2lvbk1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJhN2Y1MzRmYmFkODNiZDFjYjUxOGZiZjAwMDM2NzgwMTE2Y2Vm
MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9DbGllbnRPcmlnaW4uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpKTsKKyAgICB9CisKKyAgICBlbnVtIGNsYXNzIERlY2lzaW9uIHsgRGVueSwgQWxsb3cg
fTsKKyAgICB2b2lkIGNvbXBsZXRlKERlY2lzaW9uIGRlY2lzaW9uKQorICAgIHsKKyAgICAgICAg
Ym9vbCBpc0FsbG93ZWQgPSBkZWNpc2lvbiA9PSBEZWNpc2lvbjo6QWxsb3c7CisgICAgICAgIGF1
dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIs
IHsgfSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGlzQWxsb3dlZCk7CisgICAgfQorCisg
ICAgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBt
X29yaWdpbjsgfQorCitwcml2YXRlOgorICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3QoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogbV9vcmlnaW4o
b3JpZ2luKQorICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCisgICAgeyB9CisKKyAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gbV9vcmlnaW47
CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsK
K307CisKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrPiBjcmVhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKSk7CisgICAgfQorCisgICAgdm9pZCBjb21wbGV0ZShib29sIGdyYW50ZWQpIHsg
bV9jb21wbGV0aW9uSGFuZGxlcihncmFudGVkKTsgfQorCitwcml2YXRlOgorICAgIFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICB7IH0KKworICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+IG1fY29tcGxldGlvbkhhbmRsZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9u
U2VydmVyLmNwcAppbmRleCAxYjg4MWVkZjVkMzA0OGRlYjcwMDkxNDk3OWRjNTY4ZWEwYTVkYjEy
Li5jODQ1ZTEwMTMzMjRjNDZjZDgzMGMxNjUyOWZhZGUzMmMxMjIzODlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCkBAIC0z
Miw5ICszMiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29u
bmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCitT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgUGVybWlzc2lvbkNoZWNrZXImJiBwZXJtaXNzaW9uQ2hlY2tlcikKICAg
ICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCisgICAgLCBtX3Blcm1pc3Npb25DaGVja2VyKFdURk1vdmUocGVybWlzc2lv
bkNoZWNrZXIpKQogewogfQogCkBAIC0xMDUsNyArMTA2LDM1IEBAIHZvaWQgU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXI6OmludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpCiAgICAgfQogfQogCi12b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydFBv
Y2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JikKK3ZvaWQg
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0UG9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmVxdWVzdC5zZXRJc1dh
aXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2sodHJ1ZSk7CisgICAgbV9wZXJtaXNzaW9uQ2hlY2tlcihy
ZXF1ZXN0LmNsaWVudE9yaWdpbigpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KSwgd2Vha1JlcXVlc3QgPSBtYWtlV2Vha1B0cihyZXF1ZXN0KV0oYm9vbCBncmFudGVkKSB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYg
KCF3ZWFrUmVxdWVzdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQobV9j
dXJyZW50UmVxdWVzdCA9PSB3ZWFrUmVxdWVzdC5nZXQoKSk7CisgICAgICAgIGlmICghd2Vha1Jl
cXVlc3QtPmlzV2FpdGluZ0ZvclBlcm1pc3Npb25DaGVjaygpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB3ZWFrUmVxdWVzdC0+c2V0SXNXYWl0aW5nRm9yUGVybWlzc2lvbkNoZWNrKGZh
bHNlKTsKKworICAgICAgICBpZiAoIWdyYW50ZWQpIHsKKyAgICAgICAgICAgIGF1dG8gZXJyb3Ig
PSBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6Ok5v
dEFsbG93ZWQsICJQZXJtaXNzaW9uIGNoZWNrIGZhaWxzIl9zIH07CisgICAgICAgICAgICBhdXRv
IHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcih3
ZWFrUmVxdWVzdC0+Y2xpZW50SWRlbnRpZmllcigpLCBlcnJvcik7CisgICAgICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OkRpZFJlY2VpdmVVcGRh
dGUodXBkYXRlKSwgbV9pZGVudGlmaWVyKTsKKyAgICAgICAgICAgIG1fY3VycmVudFJlcXVlc3Qg
PSBudWxscHRyOworICAgICAgICAgICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVk
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250aW51ZVBy
b2Nlc3NpbmdSZXF1ZXN0KCp3ZWFrUmVxdWVzdCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OmNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0JikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5kZXggN2FhMjQxNjM4YjljMzUxNDk2
Njk4NDQzMmRiYzUzMGRmODQ4NGEzNy4uZjRkYTUxN2JmNWE5NmQ0YTY3YmQwZGU3NTlkYTJlYWY5
M2QzOThiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5oCkBAIC0zNiwxMSArMzYsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJQcm9jZXNzUHJveHk7CiAKIHVzaW5nIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRp
ZmllciA9IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyOwordXNpbmcgUGVybWlzc2lvbkNoZWNrZXIg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpPjsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+
LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVy
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcklkZW50aWZpZXIpOworICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciwgUGVybWlzc2lv
bkNoZWNrZXImJik7CiAKICAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm8mJik7CiAgICAgdm9pZCBzdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwpAQCAtNTMsNiArNTQsNyBAQCBwcml2YXRlOgog
CiAgICAgLy8gVE9ETzogaW1wbGVtZW50IHRoZXNlLgogICAgIHZvaWQgc3RhcnRQb2Nlc3NpbmdS
ZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOworICAgIHZvaWQgY29u
dGludWVQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Qm
KTsKICAgICB2b2lkIHN0b3BQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3QmKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgpAQCAtNjYsNiAr
NjgsNyBAQCBwcml2YXRlOgogICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAgICAgRGVxdWU8UmVmPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdD4+IG1fcGVuZGluZ1JlcXVlc3RzOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3Q+IG1fY3VycmVudFJlcXVlc3Q7CisgICAgUGVybWlzc2lvbkNoZWNrZXIg
bV9wZXJtaXNzaW9uQ2hlY2tlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxBdXRoZW50aWNhdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IDRkYzk3ZTg5MzkwZTg1YWFh
NTVlZGU0ZWYyODAxZTFiNjc4YjNkZGUuLmI1MjJiM2I3OTJhZTRlMDRiZWI2ZmJiMzU2NzkxM2Vk
MjlmNTlmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAg
LTE0MCwxNCArMTQwLDE0IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8UmVmPEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4+PiBnZXRFeGlzdGluZ0NyZWRlbnRpCiAgICAgICAgIH0KICAg
ICAgICAgYXV0byYgcmVzcG9uc2VNYXAgPSBkZWNvZGVkUmVzcG9uc2UtPmdldE1hcCgpOwogCi0g
ICAgICAgIGF1dG8gaXQgPSByZXNwb25zZU1hcC5maW5kKENCT1Ioa0VudGl0eUlkTWFwS2V5KSk7
CisgICAgICAgIGF1dG8gaXQgPSByZXNwb25zZU1hcC5maW5kKENCT1IoZmlkbzo6a0VudGl0eUlk
TWFwS2V5KSk7CiAgICAgICAgIGlmIChpdCA9PSByZXNwb25zZU1hcC5lbmQoKSB8fCAhaXQtPnNl
Y29uZC5pc0J5dGVTdHJpbmcoKSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgICAgIGF1
dG8mIHVzZXJIYW5kbGUgPSBpdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKTsKIAotICAgICAgICBp
dCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUihrRW50aXR5TmFtZU1hcEtleSkpOworICAgICAgICBp
dCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUihmaWRvOjprRW50aXR5TmFtZU1hcEtleSkpOwogICAg
ICAgICBpZiAoaXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNTdHJpbmco
KSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwpAQCAtMjkxLDggKzI5MSw4IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKFNlY0FjY2Vz
c0NvCiAgICAgY29uc3QgYXV0byYgc2VjQXR0ckxhYmVsID0gY3JlYXRpb25PcHRpb25zLnJwLmlk
OwogCiAgICAgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSB1c2VyRW50aXR5TWFwOwotICAgIHVz
ZXJFbnRpdHlNYXBbY2Jvcjo6Q0JPUlZhbHVlKGtFbnRpdHlJZE1hcEtleSldID0gY2Jvcjo6Q0JP
UlZhbHVlKGNyZWF0aW9uT3B0aW9ucy51c2VyLmlkVmVjdG9yKTsKLSAgICB1c2VyRW50aXR5TWFw
W2Nib3I6OkNCT1JWYWx1ZShrRW50aXR5TmFtZU1hcEtleSldID0gY2Jvcjo6Q0JPUlZhbHVlKGNy
ZWF0aW9uT3B0aW9ucy51c2VyLm5hbWUpOworICAgIHVzZXJFbnRpdHlNYXBbY2Jvcjo6Q0JPUlZh
bHVlKGZpZG86OmtFbnRpdHlJZE1hcEtleSldID0gY2Jvcjo6Q0JPUlZhbHVlKGNyZWF0aW9uT3B0
aW9ucy51c2VyLmlkVmVjdG9yKTsKKyAgICB1c2VyRW50aXR5TWFwW2Nib3I6OkNCT1JWYWx1ZShm
aWRvOjprRW50aXR5TmFtZU1hcEtleSldID0gY2Jvcjo6Q0JPUlZhbHVlKGNyZWF0aW9uT3B0aW9u
cy51c2VyLm5hbWUpOwogICAgIGF1dG8gdXNlckVudGl0eSA9IGNib3I6OkNCT1JXcml0ZXI6Ondy
aXRlKGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKHVzZXJFbnRpdHlNYXApKSk7CiAgICAgQVNTRVJU
KHVzZXJFbnRpdHkpOwogICAgIGF1dG8gc2VjQXR0ckFwcGxpY2F0aW9uVGFnID0gdG9OU0RhdGEo
KnVzZXJFbnRpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggNDMwMGUxZjUyMmZmNTIyNzQ4ZjJiMWRmOTEzN2RmN2E0ZDI2YzVhNC4uMzFmMThmYTI0ZGFi
ZDI3ZGY3NGIyNDE4YTUyMjczMjlmZDJkNzRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC04Niw2ICs4Niw3IEBACiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaCIKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJuaW5nLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGUuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyU3Rh
dGUuaCIKQEAgLTEwMTcxLDYgKzEwMTcyLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRj
aEFjdGl2aXR5U3RhdGVVcGRhdGVGb3JUZXN0aW5nKCkKICAgICB9KTsKIH0KIAordm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24oY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX3NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXIpCisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcj4o
KnRoaXMpOworCisgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLT5yZXF1
ZXN0KGNsaWVudE9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2NlZmJmYzY5NDVlZGZlNDNhZTU2
YzJkNTY0YzBlODFlOTViYjRhNi4uOGVhMTQ2MDQ3ODg5Y2U3MzgyZmI2ZTA2OTIwYTRhYTlhNGZk
NzEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTMwNSw2ICsz
MDUsNyBAQCBjbGFzcyBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE7CiBj
bGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHk7CiBjbGFzcyBTZWNLZXlQcm94eVN0b3JlOworY2xhc3MgU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjsKIGNsYXNzIFVzZXJEYXRhOwogY2xhc3MgVmlld1Nu
YXBzaG90OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKQEAgLTE4MTksNiArMTgyMCw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5KFNlY29uZHMgY2Fw
dHVyZVJlcG9ydGluZ0RlbGF5KSB7IG1fbWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkgPSBjYXB0
dXJlUmVwb3J0aW5nRGVsYXk7IH0KICAgICBzaXplX3Qgc3VzcGVuZE1lZGlhUGxheWJhY2tDb3Vu
dGVyKCkgeyByZXR1cm4gbV9zdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXI7IH0KIAorICAgIHZv
aWQgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKwogcHJpdmF0ZToK
ICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6
OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpA
QCAtMjg4OCw2ICsyODkxLDggQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9zdXNwZW5kTWVkaWFQ
bGF5YmFja0NvdW50ZXIgeyAwIH07CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpBZENsaWNrQXR0
cmlidXRpb24+IG1fbmV3UGFnZU5hdmlnYXRpb25BZENsaWNrQXR0cmlidXRpb247CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcj4gbV9zcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBm
NmI4NjdiZDU2NGRmZDE3MmViYTNkYjgzMzI1Y2MzNzNjZDIwMDY5Li5mZjRjOTczMTdkYjZjYWFl
ZTcyNmU0OGFkOGNlYTZhMzZmZmI5ZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKQEAgLTE3MTIsNyArMTcxMiwxOCBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXJJZGVudAogewogICAgIGF1dG8gc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtX3NwZWVjaFJl
Y29nbml0aW9uU2VydmVyTWFwLmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsKICAgICBBU1NFUlQo
c3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXNOZXdFbnRyeSk7Ci0gICAgc3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmllcik7CisgICAgc3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25p
dGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmllciwgWyZpZGVudGlm
aWVyLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShjb25zdCBDbGllbnRPcmlnaW4mIG9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
eworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGZvciAoYXV0byogcGFnZSA6IHdlYWtUaGlzLT5wYWdlcygpKSB7CisgICAgICAgICAgICBpZiAo
cGFnZSAmJiBwYWdlLT53ZWJQYWdlSUQoKSA9PSBpZGVudGlmaWVyKSB7CisgICAgICAgICAgICAg
ICAgcGFnZS0+cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihvcmlnaW4sIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAg
IH0pOwogICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllciwgKnNwZWVjaFJlY29nbml0
aW9uU2VydmVyLml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFkNjNjMmIzZTI5ODc4NzdiYWYyZjU1
ODhlNjdjMDA3NjM1YjE0ZTQuLmVmMTg4OGZiZmU3OTA5YWZkOWZkOWM3YTEzMGYyYmEyYzM4ODk5
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTQwNyw2ICsxNDA3LDkgQEAKIAkJOTNENkI3ODcyNTRDQ0Q4QzAwNThERDNBIC8qIFdl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc4NjI1NENDRDhCMDA1OEREM0EgLyog
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXMuaCAqLzsgfTsKIAkJOTNENkI3
ODgyNTRDQ0Q5NDAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3Nh
Z2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNENkI3N0UyNTRDQ0FCQjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbk1lc3NhZ2VzUmVwbGllcy5oICovOyB9OwogCQk5M0Q2Qjc4QTI1NENENDNFMDA1OEREM0Eg
LyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzdEMjU0Q0NB
QkIwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OworCQk5M0Q2QjdCNDI1NTI2OEQ1MDA1OEREM0EgLyogU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNENkI3QUYyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QuaCAqLzsgfTsKKwkJOTNENkI3QjUyNTUyNjhENzAwNThERDNB
IC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAv
KiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi87IH07CisJCTkzRDZCN0I5
MjU1MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdC
NzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
ay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkz
RTZBNEVFMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0U2QTRFRDFCQzVERDM5MDBGOEEw
RTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzRjU0OUI0MUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90
Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk5NTBG
Mjg4MDI1MjQxNEVBMDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBGMjg3RTI1MjQxNEU5MDBC
NzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLmggKi87IH07CkBAIC00NTI1LDYgKzQ1Mjgs
MTIgQEAKIAkJOTNENkI3ODAyNTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0Q2Qjc4MTI1NENDQUJDMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0Q2Qjc4NjI1NENDRDhCMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTNENkI3QUYyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5M0Q2QjdCMDI1NTI2OEExMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjIyNTUyNjhBMjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5M0Q2QjdCMzI1NTI2OEJGMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0I4MjU1MzRBMTIwMDU4REQzQSAvKiBX
S1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0U2QTRFRDFCQzVERDM5MDBG
OEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
RjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y1NDlCNTFFMzE3NERBMDAwRTcyMzkgLyog
V0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTY0NjUsNiArNjQ3NCw3IEBACiAJCQkJNUNBOTg1NEIyMTBCRUI3MzAwNTdF
QjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSAqLywKIAkJCQkxQTAwMkQ0NzE5NkIz
NDVEMDBCOUFENDQgLyogU2Vzc2lvblN0YXRlQ29kaW5nLmggKi8sCiAJCQkJMUEwMDJENDYxOTZC
MzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5tbSAqLywKKwkJCQk5M0Q2QjdCMzI1
NTI2OEJGMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29h
Lm1tICovLAogCQkJCTMxNTcxMzVDMjA0MEE5QjIwMDg0RjlDRiAvKiBTeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlckNvY29hLm1tICovLAogCQkJCTJEMENGNjRDMjFGMkE4MDMwMDc4NzU2NiAvKiBUZXh0
Q2hlY2tpbmdDb250cm9sbGVyLmggKi8sCiAJCQkJMkQwQ0Y2NEIyMUYyQTgwMzAwNzg3NTY2IC8q
IFRleHRDaGVja2luZ0NvbnRyb2xsZXIubW0gKi8sCkBAIC05MTk2LDYgKzkyMDYsOSBAQAogCQkJ
CUJDMTExQjA4MTEyRjVFM0MwMDMzN0JBQiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLywK
IAkJCQkxQTMwMDY2QzExMTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5oICov
LAogCQkJCTVDQTk4NTQ5MjEwQkVCNUEwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nLmgg
Ki8sCisJCQkJOTNENkI3QjAyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIuY3BwICovLAorCQkJCTkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi8sCisJCQkJOTNENkI3QUYyNTUy
NjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCAqLywK
IAkJCQk5M0Q2Qjc2QjI1NEI4OTU4MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
Y3BwICovLAogCQkJCTkzRDZCNzZDMjU0Qjg5NTgwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5oICovLAogCQkJCTkzRDZCNzdBMjU0Qzk4NEQwMDU4REQzQSAvKiBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlci5tZXNzYWdlcy5pbiAqLywKQEAgLTk1MzYsNiArOTU0OSw4IEBACiAJCQkJ
MzMzNjc2MzkxMzBDOTlEQzAwNkM5REUyIC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCAqLywK
IAkJCQkxQURFNDZCMDE5NTRFQzYxMDAwRjc5ODUgLyogV0tTZXNzaW9uU3RhdGVSZWYuY3BwICov
LAogCQkJCTFBREU0NkIxMTk1NEVDNjEwMDBGNzk4NSAvKiBXS1Nlc3Npb25TdGF0ZVJlZi5oICov
LAorCQkJCTkzRDZCN0I4MjU1MzRBMTIwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrLmNwcCAqLywKKwkJCQk5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyog
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICovLAogCQkJCTUxRjg4NkEz
MUYyQzIxNEEwMEMxOTNFRiAvKiBXS1Rlc3RpbmdTdXBwb3J0LmNwcCAqLywKIAkJCQk1MUY4ODZB
NDFGMkMyMTRBMDBDMTkzRUYgLyogV0tUZXN0aW5nU3VwcG9ydC5oICovLAogCQkJCTMxNDg4OEZF
MUQ5MUIxMUQwMDM3NzA0MiAvKiBXS1RleHRDaGVja2VyLmNwcCAqLywKQEAgLTExMzczLDYgKzEx
Mzg4LDggQEAKIAkJCQk1N0JCRUE2RDIyQkMwQkZFMDAyNzM5OTUgLyogU09BdXRob3JpemF0aW9u
TG9hZFBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc2Q0E5RDcyMkI4NjIxODAwMzAxNDND
IC8qIFNPQXV0aG9yaXphdGlvbk5TVVJMRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZE
MzE4NTIyQjM1MTY5MDA4RDBFOEIgLyogU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOTNENkI3QjUyNTUyNjhENzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDZCN0I0MjU1MjY4RDUw
MDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzg0MjU0Q0NEMEUwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2
Qjc4NTI1NENDRDQzMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlc1Jl
cGxpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTE5ODYsNiArMTIwMDMsNyBAQAogCQkJCTUxM0U0
NjJEMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzRjU0OUI0MUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90
Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODcyMkIzNTE3MDAwOEQw
RThCIC8qIFdLU09BdXRob3JpemF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTkz
RDZCN0I5MjU1MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTc4RkYzMjIyNDE5MTk2MDA5NjQ4M0UgLyog
V0tTdG9yYWdlQWNjZXNzQWxlcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjA2MTI0RkYw
MjcwMDY4RjIwQSAvKiBXS1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2MUExMjRG
RjAzNzAwNjhGMjBBIC8qIFdLU3RyaW5nQ0YuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcAppbmRleCBkNGY0ZDRmNjk0MDAw
MjZiOTlmN2JjNTQyMWZjNGM5Y2M0ZTYxOGFkLi4xN2VjYjM1ZjhmMDQzZmJhYzYyZTc5MmRjYjc5
ZWJhOWNhZjZiZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uLmNwcApAQCAtNTgsOSArNTgsOSBAQCB2b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbjo6cmVnaXN0ZXJDbGllbnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25DbwogICAg
IG1fY2xpZW50TWFwLmFkZChjbGllbnQuaWRlbnRpZmllcigpLCBtYWtlV2Vha1B0cihjbGllbnQp
KTsKIH0KIAotdm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0YXJ0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJp
bVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcykKK3ZvaWQgV2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uOjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywg
Ym9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5h
dGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbikKIHsKLSAgICBXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIGluZm8geyBjbGllbnRJZGVudGlmaWVy
LCBsYW5nLCBjb250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzIH07Cisg
ICAgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyBpbmZvIHsgY2xpZW50SWRl
bnRpZmllciwgbGFuZywgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVybmF0aXZl
cywgV1RGTW92ZShjbGllbnRPcmlnaW4pIH07CiAgICAgc2VuZChNZXNzYWdlczo6U3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXI6OlN0YXJ0KGluZm8pKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCmluZGV4IDI4ZGJkMTk3Y2IzZjc5OGZjNzYzMTk5ZWJi
MTJkZTEzYWVkNzUxYjEuLjYzNzYxM2Y2YzY1MjZlMzRjNDNjZjBjZDdlZmM4NWQ4MWI1Njc1NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKQEAgLTQz
LDExICs0MywxMSBAQCBjbGFzcyBXZWJQYWdlOwogCiB1c2luZyBTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25JZGVudGlmaWVyID0gV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI7CiAKLWNsYXNzIFdl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUg
SVBDOjpNZXNzYWdlU2VuZGVyIHsKK2NsYXNzIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
biBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24sIHBy
aXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbj4g
Y3JlYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgdm9p
ZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVz
dWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0KFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50
NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmKSBmaW5hbDsKICAg
ICB2b2lkIHN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBhYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGI1NzVhNDFmZmNiNTVjNjEzOGJmYmEx
ZTQ5NDYzZGEwMmZlNjIxMDIuLjk3NTE2NmM0NDViNDU3YTU4MTM4NTBlMzBlYWVhZWNlZTAzZTM5
OGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNSBAQAorMjAyMC0xMS0wNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3IgU3BlZWNo
UmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODQ3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3Q6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAo
V1RSOjpUZXN0UnVubmVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV1RSOjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNvbXBsZXRlU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2hlY2spOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0SXNT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyk6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAyMC0xMS0w
NCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtp
dHNjbXB5XSBBZGQgY2hlY2tvdXQgY29tbWFuZApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL0luZm8ucGxpc3QgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdAppbmRl
eCA0ZTJiMWY0ODE5YWQ1MTAzZTRjZjE3MDliN2M1M2E2NmU4YjM5NWU1Li4zM2EzY2ExYmU3MzUw
OGUxZmZjYjAyOTU3Yzg2NGU4NTkyZGFhYTRlIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nl
ci9tYWMvSW5mby5wbGlzdAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdApA
QCAtNTIsOSArNTIsMTEgQEAKIAkJCTxzdHJpbmc+RWRpdG9yPC9zdHJpbmc+CiAJCTwvZGljdD4K
IAk8L2FycmF5PgotICAgIDxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uPC9rZXk+Ci0gICAg
PHN0cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+Ci0g
ICAgPGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+Ci0gICAgPHN0cmluZz5S
ZWNvcmRpbmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5OU0Nh
bWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyB2aWRlbyBvbiBi
ZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TTWljcm9waG9uZVVzYWdlRGVzY3Jp
cHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vic2l0
ZXM8L3N0cmluZz4KKwk8a2V5Pk5TU3BlZWNoUmVjb2duaXRpb25Vc2FnZURlc2NyaXB0aW9uPC9r
ZXk+CisJPHN0cmluZz5SZWNvZ25pemluZyBjYXB0dXJlZCBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vi
c2l0ZXM8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bAppbmRleCA5Njk2MTRlNjcyODg2Mjk2MzMwN2M5OWVjNDc4NDE1MjRmZjAxMjliLi45ODI5N2Fm
NzBkYjUxMWRhZDBhNzc5NzVlYTM4ZWQ1YzhkYjZiZDdjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwKQEAgLTQwMSw0ICs0MDEsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdW5k
ZWZpbmVkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbk92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2xl
YW4gdmFsdWUpOwogICAgIHVuZGVmaW5lZCBzZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9u
VVJMRm9yVGVzdGluZyhET01TdHJpbmcgdXJsKTsKICAgICB1bmRlZmluZWQgbWFya0FkQ2xpY2tB
dHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CisKKyAgICAvLyBTcGVlY2hSZWNvZ25p
dGlvbgorICAgIHVuZGVmaW5lZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50
ZWQoYm9vbGVhbiB2YWx1ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZTVjNWY5OWFkMWRjOWMyODZlMDk0
NzM0NmM5YmQ3NWZjYTJmOTNjMy4uMjViNDE3Njc2MzAxMTJjNTE1Y2EzMTQxZDhkOTM1ZWFiNGJh
MjU3OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCkBAIC0yMDQ3LDYgKzIwNDcsMTEgQEAgdm9pZCBUZXN0UnVubmVyOjpk
aWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFjaygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFj
ayhEaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFja0lEKTsKIH0KIAordm9pZCBUZXN0UnVubmVy
OjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCBncmFudGVkKQor
eworICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJzZXRJc1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkdyYW50ZWQiLCBncmFudGVkKTsKK30KKwogQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCBhYWE1MjE2ZjkyNjBk
YjRkOTg4MWNkMGRkYmIxOWY1MDg1Mjk3ZmQ4Li45MThhYTk2NDI2NzJlZmFhMGNlNDYzNGIxNjhi
MDAwZDM0MzNlZWU1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNTExLDYgKzUxMSw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKEpTU3RyaW5nUmVm
KTsKICAgICB2b2lkIG1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZygp
OwogCisgICAgdm9pZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9v
bCk7CisKIHByaXZhdGU6CiAgICAgVGVzdFJ1bm5lcigpOwogCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDZkYmM2ODRlODg1MGFmZTA0NTkxMzlmYmUxOWQ1
ZTVjY2RiNzI2ZTcuLjE4NmVmZjlhMTRjNzEwODlmMDZhZjI5NGFlZWUyNDIzMGQ3ZmMxZTMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC02Miw2ICs2Miw3
IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW5SZWYu
aD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
ay5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1RleHRDaGVja2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0
L1dLVVJMLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmg+
CkBAIC0yOTcsNiArMjk4LDIxIEBAIHN0YXRpYyB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwoKQogewogfQogCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tTZWN1
cml0eU9yaWdpblJlZiwgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBj
YWxsYmFjaykKK3sKKyAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29tcGxldGVTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVjayhjYWxsYmFjayk7Cit9CisKK3ZvaWQgVGVzdENv
bnRyb2xsZXI6OmNvbXBsZXRlU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2soV0tTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBjYWxsYmFjaykKK3sKKyAgICBXS1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUoY2FsbGJhY2ssIG1faXNT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKTsKK30KKwordm9pZCBUZXN0Q29udHJv
bGxlcjo6c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wgZ3JhbnRl
ZCkKK3sKKyAgICBtX2lzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCA9IGdyYW50
ZWQ7Cit9CisKIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFdLUGFn
ZVJlZiwgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS05hdmlnYXRpb25B
Y3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvbiwgV0tXaW5kb3dGZWF0dXJlc1JlZiB3aW5kb3dGZWF0
dXJlcywgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBQbGF0Zm9ybVdlYlZpZXcqIHBh
cmVudFZpZXcgPSBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdlYlZpZXcqPihjb25zdF9jYXN0PHZvaWQq
PihjbGllbnRJbmZvKSk7CkBAIC02NTAsOCArNjY2LDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6
Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogICAg
IFdLSFRUUENvb2tpZVN0b3JlRGVsZXRlQWxsQ29va2llcyhXS1dlYnNpdGVEYXRhU3RvcmVHZXRI
VFRQQ29va2llU3RvcmUod2Vic2l0ZURhdGFTdG9yZSgpKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAK
ICAgICBwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoY29uZmlndXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7
Ci0gICAgV0tQYWdlVUlDbGllbnRWMTQgcGFnZVVJQ2xpZW50ID0gewotICAgICAgICB7IDE0LCBt
X21haW5XZWJWaWV3LmdldCgpIH0sCisgICAgV0tQYWdlVUlDbGllbnRWMTUgcGFnZVVJQ2xpZW50
ID0geworICAgICAgICB7IDE1LCBtX21haW5XZWJWaWV3LmdldCgpIH0sCiAgICAgICAgIDAsIC8v
IGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAogICAgICAgICAwLCAvLyBzaG93
UGFnZQogICAgICAgICAwLCAvLyBjbG9zZQpAQCAtNzI0LDcgKzc0MCw4IEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0
aW9ucykKICAgICAgICAgMCwgLy8gZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRB
cHBlYXJhbmNlCiAgICAgICAgIDAsIC8vIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybQogICAg
ICAgICBzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzLAotICAgICAg
ICBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsCisgICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9u
UGFuZWwsCisgICAgICAgIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3QKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChtX21haW5XZWJWaWV3
LT5wYWdlKCksICZwYWdlVUlDbGllbnQuYmFzZSk7CiAKQEAgLTEwNTMsNiArMTA3MCw4IEBAIGJv
b2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVz
dE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgbV9zZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFj
a0NhbGxzQ291bnQgPSAwOwogICAgIG1fc2hvdWxkRGlzbWlzc0phdmFTY3JpcHRBbGVydHNBc3lu
Y2hyb25vdXNseSA9IGZhbHNlOwogCisgICAgc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25HcmFudGVkKHRydWUpOworCiAgICAgYXV0byBsb2FkQWJvdXRCbGFuayA9IFt0aGlzXSB7CiAg
ICAgICAgIG1fZG9uZVJlc2V0dGluZyA9IGZhbHNlOwogICAgICAgICBXS1BhZ2VMb2FkVVJMKG1f
bWFpbldlYlZpZXctPnBhZ2UoKSwgYmxhbmtVUkwoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgKaW5kZXggMzNiNjQ5NGFjNjI0NGI5MmZjYjc4MDlhNThkNzIwM2M3YzEy
NThhOC4uMDVjOGY4YmRhYTk1YWQ4N2U0MzllMzA5M2I4YTRmMzRmNWY4MmM1NiAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMzUxLDYgKzM1MSw5IEBAIHB1Ymxp
YzoKIAogICAgIFdLVVJMUmVmIGN1cnJlbnRUZXN0VVJMKCkgY29uc3Q7CiAKKyAgICB2b2lkIGNv
bXBsZXRlU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2soV0tTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFja1JlZik7CisgICAgdm9pZCBzZXRJc1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkdyYW50ZWQoYm9vbCk7CisKIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tQ
YWdlQ29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjb25zdCBUZXN0
T3B0aW9ucyYpOwogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IGdl
bmVyYXRlQ29udGV4dENvbmZpZ3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnMmKSBjb25zdDsKQEAg
LTY0MCw2ICs2NDMsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wg
bV9oYXNTZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgeyBmYWxzZSB9OwogI2VuZGlmCisK
KyAgICBib29sIG1faXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkIHsgZmFsc2Ug
fTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcAppbmRleCAxNGMwNGVkMWZhOTM5NGY1NzJmNjQ5YTkxYjQ3ZWZiMjA2ZWY4
NTRlLi41YjY2NjE3YmVlMDE2YjY3NTFjN2JiMmJjZTZiYjhiYWU0NGViMGEwIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTM0NSw2ICsxMzQ1LDExIEBA
IFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJv
bm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAic2V0
SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkIikpIHsKKyAgICAgICAgVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3Jh
bnRlZChib29sZWFuVmFsdWUobWVzc2FnZUJvZHkpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9Cg==
</data>
<flag name="commit-queue"
          id="429824"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413260</attachid>
            <date>2020-11-04 23:42:42 -0800</date>
            <delta_ts>2020-11-04 23:44:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201104234241.patch</filename>
            <type>text/plain</type>
            <size>87119</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY5Njk2ZjNhMjQ5ZWQ3OTBkNTQzZWU1
YzU1MDc2YWFhZTAwNGQ1NGEuLjBmM2M2OGQ4ODA0N2M1ZmQ2ODJjY2ZlMTE3Y2RlN2UzOGNhZDU1
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTEtMDQgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMC0xMS0wNCAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGFkZCB3
b3JrYXJvdW5kIGZvciBMaW51eCBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM3OWRjZjkxY2NmMGQ4YjQ2
NDhhYWRhNDlkYzU4NmQ5MzY1NTQ3MTQuLjQ1MzJlM2Y2ZDFiYmJlOTU3ZDYwNjNjNGMxMGExYjAz
NDIwYzA3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMC0xMS0wNCAgU2lodWkg
TGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVy
bWlzc2lvbiBjaGVjayBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQ3NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb246OnN0YXJ0UmVj
b2duaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVx
dWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpjbGll
bnRPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0OjpzZXRJc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Ojppc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2sgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmRl
Y29kZSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUu
aDoKKyAgICAgICAgKiBwYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oOgorCiAy
MDIwLTExLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgd2lu
ZG93LmV2ZW50IG1heSBnZXQgc2V0IG9uIHdyb25nIGdsb2JhbCB3aGVuIGRpc3BhdGNoaW5nIGFu
IGV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDc1YzQyMmY0NDY5M2U1N2VmZjliZjBlNTAwOTkxYmRlZjYxY2E3
ZDkuLjdlM2Q4YjgxN2NhOGI4YjEzZDJkNmIzYTE3NmUxYTcxMmNjN2Q3NzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzUgQEAKKzIwMjAtMTEtMDQgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVj
aFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dL
QmFzZS5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50
eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgorICAgICAgICAoQVBJ
OjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xp
ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
ay5jcHA6IEFkZGVkLgorICAgICAgICAoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFja0dldFR5cGVJRCk6CisgICAgICAgIChXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW06IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpwZXJmb3JtU2FuZGJveENoZWNrKToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0TmV4dFJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpj
b21wbGV0ZUN1cnJlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnQpOgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja01pY3JvcGhv
bmVBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrVXNlclBlcm1p
c3Npb25Gb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJL
aXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcjo6flNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0Ojp+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJL
aXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydE5leHRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcjo6Y29tcGxldGVDdXJyZW50UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU2FuZGJveFJlcXVpcmVtZW50KToKKyAg
ICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tN
aWNyb3Bob25lQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1Vz
ZXJQZXJtaXNzaW9uRm9yT3JpZ2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y29tcGxldGUpOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Ojpvcmln
aW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjb21wbGV0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayk6CisgICAgICAgICogVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0UG9jZXNzaW5nUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpjb250aW51ZVByb2Nlc3Np
bmdSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRo
ZW50aWNhdG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5h
bDo6Z2V0RXhpc3RpbmdDcmVkZW50aWFscyk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVu
dGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNw
ZWVjaFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisKIDIwMjAtMTEtMDQg
IEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250YWN0
IFBpY2tlciBBUEldIEFkZCBzdXBwb3J0IGZvciBwaWNrZXIgVUkgb24gaU9TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
SGF2ZS5oCmluZGV4IDIwM2U4ZWM3ZDYxNWU4NzVmM2IzMTQ1ZjJmOGJkZDFlNWI3YjA4M2QuLjMx
YWZhYjIzNjA3MjIxNjg5NDhkYzk5YjY4MTYyNzU0ZjEwYjFiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2
ZS5oCkBAIC03NTUsMyArNzU1LDcgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExB
VEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAjZGVmaW5lIEhBVkVfQ05DT05U
QUNUUElDS0VSVklFV0NPTlRST0xMRVIgMQogI2VuZGlmCisKKyNpZiAgKFBMQVRGT1JNKElPU19G
QU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxNTAwKSkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRW
KQorI2RlZmluZSBIQVZFX1NQRUVDSFJFQ09HTklaRVIgMQorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKaW5kZXggNTFh
MzJjZGFhY2FhMWVkMDExNDI3NjdkMjJlMzAyNTI2ZGViZjU5NS4uZjExN2MxZmIxYjViZDA0YWU3
NTUyNTY1ZmJhYTg4OTFjNWMxYWViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uLmgiCiAKKyNpbmNsdWRl
ICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC02OSw3ICs3MCw4IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IFNwZWVjaFJlY29nbml0aW9uOjpzdGFydFJlY29nbml0aW9uKCkKICAgICBpZiAoIW1f
Y29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIlJl
Y29nbml0aW9uIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBjb25uZWN0aW9uIl9zIH07CiAKLSAgICBt
X2Nvbm5lY3Rpb24tPnN0YXJ0KGlkZW50aWZpZXIoKSwgbV9sYW5nLCBtX2NvbnRpbnVvdXMsIG1f
aW50ZXJpbVJlc3VsdHMsIG1fbWF4QWx0ZXJuYXRpdmVzKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9
IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX2Nv
bm5lY3Rpb24tPnN0YXJ0KGlkZW50aWZpZXIoKSwgbV9sYW5nLCBtX2NvbnRpbnVvdXMsIG1faW50
ZXJpbVJlc3VsdHMsIG1fbWF4QWx0ZXJuYXRpdmVzLCBDbGllbnRPcmlnaW4geyBkb2N1bWVudC50
b3BPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpIH0pOwog
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3RhcnRpbmc7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uLmgKaW5kZXggM2ZkMmQzM2FjYTAyMDUyNjM0MDU4ZDBmYjU2NTJlYjcwMDdm
YTUyYS4uYTAwMmRlZGEwYTYzOGNlMzMwMDBlNDMwZjA4ZWI0N2FlOWE1MmIxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uLmgKQEAgLTMxLDEyICszMSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudDsKIGNsYXNzIFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlOworc3RydWN0IENsaWVudE9yaWdpbjsKIAogY2xhc3MgU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBs
YW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFs
dGVybmF0aXZlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29u
dGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBD
bGllbnRPcmlnaW4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKFNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWJv
cnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaAppbmRleCA1Y2VlYTAxYzczODY1NTZkNDI1MWY4Yzhi
OTVjMzEyNGJhZmM2MDEyLi5kYTk1OWQ3YzA3OGU5YTU0MWVmOTQxYmViNWRlOWIzYWRmOTU3MjZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3QuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVk
PFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4geworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gewogcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiBjcmVh
dGUoU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsKIApAQCAtMzksMTEgKzM5LDE2IEBA
IHB1YmxpYzoKICAgICBib29sIGNvbnRpbnVvdXMoKSBjb25zdCB7IHJldHVybiBtX2luZm8uY29u
dGludW91czs7IH0KICAgICBib29sIGludGVyaW1SZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9p
bmZvLmludGVyaW1SZXN1bHRzOyB9CiAgICAgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKCkgY29u
c3QgeyByZXR1cm4gbV9pbmZvLm1heEFsdGVybmF0aXZlczsgfQorICAgIGNvbnN0IENsaWVudE9y
aWdpbiYgY2xpZW50T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmNsaWVudE9yaWdpbjsg
fQogCisgICAgdm9pZCBzZXRJc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2soYm9vbCBpc1dhaXRp
bmdGb3JQZXJtaXNzaW9uQ2hlY2spIHsgbV9pc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2sgPSBp
c1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2s7IH0KKyAgICBib29sIGlzV2FpdGluZ0ZvclBlcm1p
c3Npb25DaGVjaygpIGNvbnN0IHsgcmV0dXJuIG1faXNXYWl0aW5nRm9yUGVybWlzc2lvbkNoZWNr
OyB9CisgICAgCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dChTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYpOwogCiAgICAgU3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0SW5mbyBtX2luZm87CisgICAgYm9vbCBtX2lzV2FpdGluZ0ZvclBlcm1pc3Npb25D
aGVjayB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJ
bmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3RJbmZvLmgKaW5kZXggYWIxZTFhZTZlZjM4ODk4YzIxYTJhOWRmN2FmMWYwMDdlMjRiMTdk
MC4uNGZjMmEzZGFiN2UxMDc2Y2E2YzlmYzE5ODVlMGIxYzE5YjI2OWU5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5m
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm8uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkNsaWVudE9yaWdpbi5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudElkZW50aWZpZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsNiArMzYs
NyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7CiAgICAgYm9vbCBjb250
aW51b3VzIHsgZmFsc2UgfTsKICAgICBib29sIGludGVyaW1SZXN1bHRzIHsgZmFsc2UgfTsKICAg
ICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMgeyAxIH07CisgICAgQ2xpZW50T3JpZ2luIGNsaWVu
dE9yaWdpbjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbz4gZGVjb2RlKERlY29kZXImKTsKQEAgLTc0LDEy
ICs3NiwxOCBAQCBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUoRGVjbwogICAgIGlmICghbWF4QWx0ZXJuYXRp
dmVzKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgT3B0aW9uYWw8Q2xpZW50
T3JpZ2luPiBjbGllbnRPcmlnaW47CisgICAgZGVjb2RlciA+PiBjbGllbnRPcmlnaW47CisgICAg
aWYgKCFjbGllbnRPcmlnaW4pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBy
ZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqY2xpZW50SWRlbnRpZmllciksCiAgICAgICAgIFdU
Rk1vdmUoKmxhbmcpLAogICAgICAgICBXVEZNb3ZlKCpjb250aW51b3VzKSwKICAgICAgICAgV1RG
TW92ZSgqaW50ZXJpbVJlc3VsdHMpLAotICAgICAgICBXVEZNb3ZlKCptYXhBbHRlcm5hdGl2ZXMp
CisgICAgICAgIFdURk1vdmUoKm1heEFsdGVybmF0aXZlcyksCisgICAgICAgIFdURk1vdmUoKmNs
aWVudE9yaWdpbikKICAgICB9fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKaW5kZXggM2E4MmJmNmJhZjU0
Y2UwYzRiMTMzNGVmNmY4YjU4OTNmM2I4OTgyZS4uZWYzYjdiOTQzMWQwMzQxNDE5MDRhN2JkOGMy
YTk0Y2U4MDkxNWM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCkBAIC01Miw4ICs1Miw4IEBAIFN0cmluZyBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUpOwog
Y2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGUoU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
KTsKLSAgICBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlRXJyb3IoU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3BlZWNoUmVjb2du
aXRpb25FcnJvciYpOwotICAgIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVS
ZXN1bHQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3Qg
VmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4mKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlRXJyb3IoU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3BlZWNoUmVjb2duaXRpb25F
cnJvciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZSBjcmVhdGVSZXN1bHQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciwgY29uc3QgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4mKTsKIAogICAgIFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50SWRlbnRpZmllcjsgfQogICAgIFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaApp
bmRleCBjZjllNzJiOTNjMDY0YTU1ZGRkZmFiN2IzY2FmYjQ4OTBlMDM1ZjQ2Li5iZmNjMmU5YzJm
OTE3NzIyODlkMjYwNDJiNWVhOWIyYjdhMmVlM2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHVtbXlTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb24oKSk7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCByZWdpc3Rl
ckNsaWVudChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQmKSBmaW5hbCB7IH0KLSAg
ICAgICAgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCkgZmluYWwgeyB9CisgICAg
ICAgIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiwgYm9vbCwgYm9vbCwgdWludDY0X3QsIENsaWVudE9yaWdpbiYmKSBm
aW5hbCB7IH0KICAgICAgICAgdm9pZCBzdG9wKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIGFib3J0KFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFsIHsgfQogICAgICAgICB2b2lk
IGRpZFJlY2VpdmVVcGRhdGUoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSBmaW5hbCB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCA2ZDA2NTY0NWRjZWU2MmU1
OWQ1MGRiZWYzNzQzNWE0OWE4MGViNjgyLi5jZDFjYWQ5NmI0MDMxMmRiM2IxODhkZTcxZjYwODhi
ZjcyOGZkODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0xNjUsNiAr
MTY1LDcgQEAgcHVibGljOgogICAgICAgICBSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5l
ciwKICAgICAgICAgUnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5lciwKICAgICAgICAg
UnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExpc3RlbmVyLAorICAgICAgICBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFjaywKICAgICAgICAgVGV4dENoZWNrZXIsCiAgICAgICAgIFVS
TFNjaGVtZVRhc2ssCiAgICAgICAgIFVzZXJDb250ZW50Q29udHJvbGxlciwKQEAgLTQxMCw2ICs0
MTEsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPEFQSTo6T2JqZWN0OjpUeXBlPiB7
CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0
ZW5lciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlJ1bkphdmFTY3JpcHRDb25maXJtUmVz
dWx0TGlzdGVuZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpSdW5KYXZhU2NyaXB0UHJv
bXB0UmVzdWx0TGlzdGVuZXIsCisgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFjaywKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlRl
eHRDaGVja2VyLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6VVJMU2NoZW1lVGFzaywKICAg
ICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250ZW50Q29udHJvbGxlciwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXggOWU4MmU1NjAwMTg3ZWMxY2Y4YWY5YmVlNzllNzFk
MGU4ZDdmZDE1YS4uODRlZTZjMjg4ZjZkMmViZDUxZmE3M2VhNzI3MDhmMzI5NDZiZGQ4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTE0MSw2ICsxNDEsNyBAQCB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNpdGVEYXRhQ29uZmlndXJhdGlvblN0b3JlKiBXS1dl
YnNpdGVEYXRhU3RvcmVDbwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tXZWJzaXRlRGF0
YVN0b3JlKiBXS1dlYnNpdGVEYXRhU3RvcmVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS1dlYnNpdGVQb2xpY2llcyogV0tXZWJzaXRlUG9saWNpZXNSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1dpbmRvd0ZlYXR1cmVzKiBXS1dpbmRvd0ZlYXR1cmVzUmVmOwordHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjayogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZjsKIAogLyogV2Vi
S2l0MiBCdW5kbGUgdHlwZXMgKi8KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZDUyNzlmZTYyMjk2M2YwNzQ3
MzhhYzFlZTU0YzM3NGRjYmU3YjUyNy4uOTdjMDllMjcxNjVlMDYyMTAxZTljMzIwNDE1ZjRkZmU2
ZTQ5OTViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yODksNiArMjg5LDcgQEAgVUlQcm9jZXNzL1Jlc3Bv
bnNpdmVuZXNzVGltZXIuY3BwCiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3Bw
CiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAogVUlQcm9jZXNzL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyLmNwcAorVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIuY3BwCiBVSVByb2Nlc3MvVGV4dENoZWNrZXIuY3BwCiBVSVByb2Nlc3MvVGV4dENoZWNr
ZXJDb21wbGV0aW9uLmNwcAogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5
LmNwcApAQCAtNDAyLDYgKzQwMyw3IEBAIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNw
cAogVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlLmNwcAogVUlQcm9jZXNzL0FQSS9D
L1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3Rh
dGVSZWYuY3BwCitVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFjay5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1RleHRDaGVja2VyLmNwcAogVUlQcm9jZXNz
L0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dL
VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlZi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRl
eCAwODRkNTEzNTJkNDRhNDUwOTQ5YjNmYmQxZDFkNzYxMzVmYjJiZWIyLi5jMjRmYzQ0NDFlZDA5
NDFlNDJhNzViMTUwOGQ3ZjNmYzYzNDY1ZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0z
NzksNiArMzc5LDcgQEAgVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5tbQogVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCiBVSVByb2Nlc3Mv
Q29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvU2Vzc2lv
blN0YXRlQ29kaW5nLm1tCitVSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlckNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xs
ZXJDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXIubW0KIFVJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElVSUNsaWVudC5oCmluZGV4IGFhN2Q4OWMwMWU3MzUyMGNlM2VlMDQyMjZiOWFlODU5NzBiZmFh
NmUuLmIyZGZmMjk4M2VlMDk4YWRiYzkyNzE4MTVjNDJhYjZhZDZkNDA0OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCkBAIC0yMDIsNiArMjAyLDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uOjpjcmVhdGUo
KTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6U2VjdXJp
dHlPcmlnaW4mLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0FQSUNhc3QuaAppbmRleCBiNTJjNDRiYWVhOWFjZjlmYzAzMzJkNWE5ZjM3MzU2ZTlkMjM4NjI5
Li4xOGNiZmQ1Yjc0ZWI4NzcwYTU3OGYxNWM4YTAxNjE0OTkwMjE0NTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaApAQCAtNzksNiArNzksNyBAQCBjbGFzcyBB
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xh
c3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0OworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7
CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTsKIGNsYXNzIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CkBAIC0xNTIs
NiArMTUzLDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJlZmVyZW5jZXNSZWYsIFdlYlByZWZl
cmVuY2VzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJvdGVjdGlvblNwYWNlUmVmLCBXZWJQcm90
ZWN0aW9uU3BhY2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlclJlZiwgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tTZXNzaW9uU3RhdGVSZWYsIEFQSTo6U2Vzc2lvblN0YXRlKQorV0tfQUREX0FQ
SV9NQVBQSU5HKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYsIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVGV4
dENoZWNrZXJSZWYsIFdlYlRleHRDaGVja2VyKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlckNv
bnRlbnRDb250cm9sbGVyUmVmLCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSkKIFdLX0FE
RF9BUElfTUFQUElORyhXS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVSZWYsIEFQSTo6Q29udGVu
dFJ1bGVMaXN0U3RvcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApp
bmRleCA0MzY5Y2RkODI1YjUxNTdmYjAxMGMzZjgxYWU3OGU2NjBkYWE3NGZjLi4xMWM2NmJmNDI4
NDkzMjgxNWQ3ZWZhYTRiYWUzOTA2ZWY3MjM0NTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJQYWdlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb3JtYXRpb24uaCIKICNpbmNsdWRlICJQcmludEluZm8u
aCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tQYWdlUG9saWN5Q2xpZW50SW50ZXJuYWwu
aCIKICNpbmNsdWRlICJXS1BhZ2VSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0ludGVybmFsLmgiCkBA
IC0xMTUsNyArMTE2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVBv
bGljeUNsaWVudEJhc2U+IHsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxX
S1BhZ2VVSUNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGll
bnRWMCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlDbGllbnRWMiwgV0tQYWdlVUlDbGllbnRW
MywgV0tQYWdlVUlDbGllbnRWNCwgV0tQYWdlVUlDbGllbnRWNSwgV0tQYWdlVUlDbGllbnRWNiwg
V0tQYWdlVUlDbGllbnRWNywgV0tQYWdlVUlDbGllbnRWOCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQ
YWdlVUlDbGllbnRWMTAsIFdLUGFnZVVJQ2xpZW50VjExLCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQ
YWdlVUlDbGllbnRWMTMsIFdLUGFnZVVJQ2xpZW50VjE0PiBWZXJzaW9uczsKKyAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlD
bGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdlVUlDbGllbnRWNCwgV0tQYWdlVUlDbGll
bnRWNSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQYWdlVUlDbGllbnRWNywgV0tQYWdlVUlDbGllbnRW
OCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQYWdlVUlDbGllbnRWMTAsIFdLUGFnZVVJQ2xpZW50VjEx
LCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQYWdlVUlDbGllbnRWMTMsIFdLUGFnZVVJQ2xpZW50VjE0
LCBXS1BhZ2VVSUNsaWVudFYxNT4gVmVyc2lvbnM7CiB9OwogCiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCkBAIC0yMTEwLDYgKzIxMTEsMTMgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQo
V0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5l
bFJlc3VsdDo6UHJlc2VudGVkKTsKICAgICAgICAgfQogI2VuZGlmCisgICAgICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJv
eHkmIHBhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHJlcXVlc3RpbmdPcmlnaW4sIEFQSTo6U2Vj
dXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9s
aWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRv
QVBJKCZyZXF1ZXN0aW5nT3JpZ2luKSwgdG9BUEkoJnRvcE9yaWdpbiksIHRvQVBJKFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpLnB0cigpKSk7CisgICAgICAgIH0KICAgICB9OwogCiAgICAgdG9JbXBsKHBhZ2VSZWYp
LT5zZXRVSUNsaWVudChtYWtlVW5pcXVlPFVJQ2xpZW50Pih3a0NsaWVudCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKaW5kZXggYjYzODgxNTVj
ZDMwMzZlNjY2MTEwZjE5MjU2MTZhZmQzN2U4NjhiYS4uN2NkOGZkMGQ5ODRjZmQ5ZjRkNDRiZmU4
M2Q4NWRiMWI1NjE3NTk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VVSUNsaWVudC5oCkBAIC0xMzYsNiArMTM2LDcgQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdl
RGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlQ2FsbGJhY2spKFdL
UGEKIHR5cGVkZWYgYm9vbCAoKldLUGFnZVNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRN
b3Rpb25BY2Nlc3NDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYg
c2VjdXJpdHlPcmlnaW4sIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogCiB0eXBlZGVmIHZvaWQg
KCpXS1BhZ2VSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FsbGJhY2spKCk7Cit0eXBlZGVmIHZv
aWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHJlcXVlc3Rp
bmdPcmlnaW4sIFdLU2VjdXJpdHlPcmlnaW5SZWYgdG9wT3JpZ2luLCBXS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIGNhbGxiYWNrKTsKIAogLy8gRGVwcmVjYXRlZAogdHlw
ZWRlZiBXS1BhZ2VSZWYgKCpXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2tfZGVwcmVjYXRlZEZv
clVzZVdpdGhWMCkoV0tQYWdlUmVmIHBhZ2UsIFdLRGljdGlvbmFyeVJlZiBmZWF0dXJlcywgV0tF
dmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CkBAIC0xMzUzLDYgKzEzNTQsMTE3IEBAIHR5cGVkZWYg
c3RydWN0IFdLUGFnZVVJQ2xpZW50VjE0IHsKICAgICBXS1BhZ2VSdW5XZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWw7CiB9IFdLUGFnZVVJQ2xpZW50VjE0OwogCit0eXBlZGVmIHN0cnVjdCBXS1Bh
Z2VVSUNsaWVudFYxNSB7CisgICAgV0tQYWdlVUlDbGllbnRCYXNlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOworCisgICAgLy8gVmVyc2lvbiAw
LgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYw
ICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOwor
ICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2hvd1BhZ2U7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZTsKKyAgICBXS1Bh
Z2VUYWtlRm9jdXNDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRha2VGb2N1czsKKyAgICBXS1BhZ2VGb2N1c0NhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzOworICAgIFdLUGFnZVVuZm9j
dXNDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5mb2N1czsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVk
Rm9yVXNlV2l0aFYwICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9y
VXNlV2l0aFYwOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVw
cmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VTZXRTdGF0dXNUZXh0Q2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXR1c1RleHQ7CisgICAgV0tQ
YWdlTW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYw
ICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOwor
ICAgIFdLUGFnZU1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZv
clVzZVdpdGhWMCAgICAgbWlzc2luZ1BsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMDsKKyAgICBXS1BhZ2VEaWROb3RIYW5kbGVLZXlFdmVudENhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZE5vdEhhbmRsZUtleUV2ZW50OworICAgIFdLUGFn
ZURpZE5vdEhhbmRsZVdoZWVsRXZlbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlkTm90SGFuZGxlV2hlZWxFdmVudDsKKyAgICBXS1BhZ2VHZXRUb29sYmFyc0FyZVZp
c2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJzQXJl
VmlzaWJsZTsKKyAgICBXS1BhZ2VTZXRUb29sYmFyc0FyZVZpc2libGVDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvb2xiYXJzQXJlVmlzaWJsZTsKKyAgICBXS1Bh
Z2VHZXRNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1lbnVCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlU2V0TWVudUJhcklzVmlzaWJsZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNZW51QmFySXNWaXNp
YmxlOworICAgIFdLUGFnZUdldFN0YXR1c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFnZVNldFN0
YXR1c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0U3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFnZUdldElzUmVzaXphYmxlQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZXNpemFibGU7CisgICAg
V0tQYWdlU2V0SXNSZXNpemFibGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRJc1Jlc2l6YWJsZTsKKyAgICBXS1BhZ2VHZXRXaW5kb3dGcmFtZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFdpbmRvd0ZyYW1l
OworICAgIFdLUGFnZVNldFdpbmRvd0ZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0V2luZG93RnJhbWU7CisgICAgV0tQYWdlUnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNiAgICBydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWNjsKKyAgICBXS1BhZ2VV
SUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpZERyYXc7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlRGlkU2Nyb2xsOworICAgIFdLUGFnZUV4
Y2VlZGVkRGF0YWJhc2VRdW90YUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZWVkZWREYXRhYmFzZVF1b3RhOworICAgIFdLUGFnZVJ1bk9wZW5QYW5lbENhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuT3BlblBhbmVsOwor
ICAgIFdLUGFnZURlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxs
YmFjayAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dDsKKyAgICBXS1BhZ2VIZWFkZXJIZWlnaHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGhlYWRlckhlaWdodDsKKyAgICBXS1BhZ2VGb290ZXJIZWlnaHRD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3Rlckhl
aWdodDsKKyAgICBXS1BhZ2VEcmF3SGVhZGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRyYXdIZWFkZXI7CisgICAgV0tQYWdlRHJhd0Zvb3RlckNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3Rm9v
dGVyOworICAgIFdLUGFnZVByaW50RnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJpbnRGcmFtZTsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bk1vZGFs
OworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW51c2VkMTsgLy8gVXNlZCB0byBiZSBkaWRDb21wbGV0ZVJ1YmJl
ckJhbmRGb3JNYWluRnJhbWUKKyAgICBXS1BhZ2VTYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9s
ZGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXI7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0X3VuYXZh
aWxhYmxlOworCisgICAgLy8gVmVyc2lvbiAxLgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFn
ZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOworICAgIFdLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVt
ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQ7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RDYWxsYmFjayAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRD
YWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xp
Y2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOworCisgICAgLy8gVmVyc2lvbiAyLgorICAgIFdL
UGFnZVNob3dDb2xvclBpY2tlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2hvd0NvbG9yUGlja2VyOworICAgIFdLUGFnZUhpZGVDb2xvclBpY2tlckNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUNvbG9yUGlja2Vy
OworICAgIFdLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkOworCisgICAg
Ly8gVmVyc2lvbiAzLgorICAgIFdLUGFnZVBpbm5lZFN0YXRlRGlkQ2hhbmdlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkU3RhdGVEaWRDaGFuZ2U7CisKKyAg
ICAvLyBWZXJzaW9uIDQuCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQyOyAvLyBVc2VkIHRvIGJlIGRp
ZEJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcy4KKyAgICB2b2lkKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
dXNlZDM7IC8vIFVzZWQgdG8gYmUgZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MuCisgICAgdm9p
ZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnVzZWQ0OyAvLyBVc2VkIHRvIGJlIGRpZENhbmNlbFRyYWNraW5nUG90ZW50aWFs
TG9uZ01vdXNlUHJlc3MuCisgICAgV0tQYWdlSXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2VDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZTsK
KworICAgIC8vIFZlcnNpb24gNS4KKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZvclVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZURpZENsaWNrQXV0b0ZpbGxCdXR0b25D
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ2xpY2tBdXRvRmlsbEJ1
dHRvbjsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9y
VXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNl
V2l0aFY1OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZv
clVzZVdpdGhWNTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNTsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVk
aWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCisKKyAgICAvLyBWZXJzaW9uIDYuCisgICAgV0tQ
YWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVOZXdQYWdlOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0
OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm07CisgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdFByb21wdENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dW5KYXZhU2NyaXB0UHJvbXB0OworICAgIFdLQ2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tVc2VyTWVkaWFQZXJtaXNz
aW9uRm9yT3JpZ2luOworCisgICAgLy8gVmVyc2lvbiA3LgorICAgIFdLUGFnZVJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsOworICAgIFdLRnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5l
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVlbk1heVJldHVy
blRvSW5saW5lOworCisgICAgLy8gVmVyc2lvbiA4LgorICAgIFdLUmVxdWVzdFBvaW50ZXJMb2Nr
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFBv
aW50ZXJMb2NrOworICAgIFdLRGlkTG9zZVBvaW50ZXJMb2NrQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkTG9zZVBvaW50ZXJMb2NrOworCisgICAgLy8g
VmVyc2lvbiA5LgorICAgIFdLSGFuZGxlQXV0b3BsYXlFdmVudENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQXV0b3BsYXlFdmVudDsKKworICAgIC8v
IFZlcnNpb24gMTAuCisgICAgV0tIYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBoYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURp
ZENoYW5nZTsKKyAgICBXS0RpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZv
cmVncm91bmRDYWxsYmFjayAgICAgICAgIGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0
V2hpbGVJbkZvcmVncm91bmQ7CisKKyAgICAvLyBWZXJzaW9uIDExLgorICAgIFdLUGFnZURpZFJl
c2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZUNhbGxiYWNrICAgICAgICAg
ZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlOworCisgICAgLy8g
VmVyc2lvbiAxMi4KKyAgICBXS1BhZ2VSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm1DYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybTsK
KworICAgIC8vIFZlcnNpb24gMTMuCisgICAgV0tQYWdlU2hvdWxkQWxsb3dEZXZpY2VPcmllbnRh
dGlvbkFuZE1vdGlvbkFjY2Vzc0NhbGxiYWNrICAgICAgICAgICBzaG91bGRBbGxvd0RldmljZU9y
aWVudGF0aW9uQW5kTW90aW9uQWNjZXNzOworCisgICAgLy8gVmVyc2lvbiAxNC4KKyAgICBXS1Bh
Z2VSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWw7CisKKyAgICAvLyBWZXJzaW9uIDE1Lgor
ICAgIFdLUGFnZURlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3RDYWxsYmFjayAgICAgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdDsKKyAgICAKK30gV0tQYWdlVUlDbGllbnRWMTU7CisKICNpZmRlZiBfX2NwbHVzcGx1
cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI3YmU5ZGIwNzFjMzc1N2I0OTIxMTZiZjZiYzI2YzQyZmY3NjEzYTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suaCIKKworI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0dldFR5cGVJRCgpCit7CisgICAgcmV0
dXJuIHRvQVBJKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpBUElUeXBlKTsK
K30KKwordm9pZCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUo
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBzcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFjaywgYm9vbCBncmFudGVkKQoreworICAgIHJldHVybiB0b0ltcGwo
c3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2spLT5jb21wbGV0ZShncmFudGVkKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
OGFlYWZjNjk4NGJhOTZmNTQ4OTJlNzMyYWZlYTNhMDYzYzljNzJkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjay5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitl
eHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFja0dldFR5cGVJRCh2b2lkKTsKKworV0tfRVhQT1JUIHZvaWQg
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0NvbXBsZXRlKFdLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2ssIGJvb2wgZ3JhbnRlZCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVn
YXRlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxl
Z2F0ZVByaXZhdGUuaAppbmRleCBkMWVhZTIwMWU2NTQyZjRmYWI2MDE5ODBkYzY2MTI0OTEzMTk3
OTNmLi41ZWFiNDY1NzlmOTlmYTZmNjMzMTZhNGMwNTQ0MjJkNjNhNmZkOTE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmgKQEAgLTE1Miw2ICsxNTIsOCBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogCiAtICh2b2lk
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHdpbGxTaGFyZUFjdGl2aXR5SXRlbXM6KE5T
QXJyYXkgKilhY3Rpdml0eUl0ZW1zIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsK
IAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopcmVxdWVzdGlu
Z09yaWdpbiB0b3BPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKil0b3BPcmlnaW4gZGVjaXNpb25I
YW5kbGVyOih2b2lkICheKShCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAjaWYgVEFS
R0VUX09TX0lQSE9ORQogCiAtIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHNo
b3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJ
bmZvICopZWxlbWVudCBXS19BUElfQVZBSUxBQkxFKGlvcyg5LjApKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZmJmOGJkMDEzZDE2
YWY4OTY2YzZjYTc2N2Y4ZDk2YmFlNTMzOTQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNv
Y29hLm1tCkBAIC0wLDAgKzEsMjIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCisKKyNpbXBv
cnQgIkFQSVNlY3VyaXR5T3JpZ2luLmgiCisjaW1wb3J0ICJBUElVSUNsaWVudC5oIgorI2ltcG9y
dCAiU2FuZGJveFV0aWxpdGllcy5oIgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQ
SS5oPgorCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorI2ltcG9ydCA8U3BlZWNoL1NwZWVj
aC5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKFNwZWVjaCkKK1NPRlRfTElOS19DTEFTUyhTcGVl
Y2gsIFNGU3BlZWNoUmVjb2duaXplcikKKyNlbmRpZgorCisjaW1wb3J0IDxwYWwvY29jb2EvQVZG
b3VuZGF0aW9uU29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBib29s
IHBlcmZvcm1TYW5kYm94Q2hlY2soKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoY3Vy
cmVudFByb2Nlc3NJc1NhbmRib3hlZCgpICYmICEhc2FuZGJveF9jaGVjayhnZXRwaWQoKSwgImRl
dmljZS1taWNyb3Bob25lIiwgU0FOREJPWF9GSUxURVJfTk9ORSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9udEhh
bmRsZXIpCit7CisgICAgV1RGTG9nQWx3YXlzKCJzaWh1aWw6IFslcF1TcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0IG9yaWdpblslc10sIHRvcE9yaWdpblslc10iLCB0
aGlzLCBvcmlnaW4uY2xpZW50T3JpZ2luLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgb3JpZ2lu
LnRvcE9yaWdpbi50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIG1fcmVxdWVzdHMuYXBw
ZW5kKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShvcmlnaW4sIFdU
Rk1vdmUoY29tcGxldGlvbnRIYW5kbGVyKSkpOworICAgIGlmIChtX3JlcXVlc3RzLnNpemUoKSA9
PSAxKQorICAgICAgICBzdGFydE5leHRSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnROZXh0UmVxdWVzdCgpCit7CisgICAgY2hlY2tT
YW5kYm94UmVxdWlyZW1lbnQoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3Q6OkRlY2lzaW9uIGRlY2lzaW9uKQoreworICAgIEFTU0VSVCghbV9yZXF1ZXN0
cy5pc0VtcHR5KCkpOworICAgIGF1dG8gY3VycmVudFJlcXVlc3QgPSBtX3JlcXVlc3RzLnRha2VG
aXJzdCgpOworICAgIGN1cnJlbnRSZXF1ZXN0LT5jb21wbGV0ZShkZWNpc2lvbik7CisKKyAgICBz
dGFydE5leHRSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnQoKQoreworICAgIFdURkxvZ0Fsd2F5cygi
c2lodWlsOiBbJXBdU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTYW5k
Ym94UmVxdWlyZW1lbnQoKSIsIHRoaXMpOworICAgIGlmICghbV9pc1NhbmRib3hDaGVja1Bhc3Nl
ZC5oYXNWYWx1ZSgpKQorICAgICAgICBtX2lzU2FuZGJveENoZWNrUGFzc2VkID0gcGVyZm9ybVNh
bmRib3hDaGVjaygpOworCisgICAgaWYgKCFtX2lzU2FuZGJveENoZWNrUGFzc2VkKSB7CisgICAg
ICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdDo6RGVjaXNpb246OkRlbnkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2hl
Y2tNaWNyb3Bob25lQWNjZXNzKCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKCkKK3sKKyAgICBXVEZMb2dBbHdheXMo
InNpaHVpbDogWyVwXVNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrTWlj
cm9waG9uZUFjY2VzcygpIiwgdGhpcyk7CisgICAgaWYgKG1faXNNaWNyb3Bob25lQWNjZXNzQXV0
aG9yaXplZC5oYXNWYWx1ZSgpICYmIG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZC52YWx1
ZSgpKSB7CisgICAgICAgIGNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRo
b3JpemVkLmhhc1ZhbHVlKCkgJiYgIW1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZC52YWx1
ZSgpKSB7CisgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgLy8gTm8gcHJvbXB0IGZvciBtaWNyb3Bob25lIG9yIHNwZWVjaCByZWNvZ25pdGlv
biBzZXJ2aWNlLgorICAgIGlmIChtX3BhZ2UucHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmlj
ZXNFbmFibGVkKCkpIHsKKyAgICAgICAgY2hlY2tVc2VyUGVybWlzc2lvbkZvck9yaWdpbigpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKSAmJiBV
U0UoQVZGT1VOREFUSU9OKQorICAgIGF1dG8gbWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMg
PSBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JN
ZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpb107CisgICAgaWYgKG1pY3JvcGhvbmVBdXRob3JpemF0
aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQpIHsKKyAgICAgICAg
bV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkID0gdHJ1ZTsKKyAgICAgICAgY2hlY2tTcGVl
Y2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBpZiAobWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0
aW9uU3RhdHVzRGVuaWVkIHx8IG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0
aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpIHsKKyAgICAgICAgbV9pc01pY3JvcGhvbmVBY2Nl
c3NBdXRob3JpemVkID0gZmFsc2U7CisgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3Rh
dHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQpOworICAgIGF1dG8gZGVj
aXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0oQk9PTCBpc0F1dGhvcml6ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghaXNBdXRob3JpemVkKSB7CisgICAg
ICAgICAgICB3ZWFrVGhpcy0+bV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkID0gZmFsc2U7
CisgICAgICAgICAgICB3ZWFrVGhpcy0+Y29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB3ZWFrVGhpcy0+bV9pc01pY3JvcGhvbmVBY2Nl
c3NBdXRob3JpemVkID0gdHJ1ZTsKKyAgICAgICAgd2Vha1RoaXMtPmNoZWNrU3BlZWNoUmVjb2du
aXRpb25TZXJ2aWNlQWNjZXNzKCk7CisgICAgfSk7CisgICAgW1BBTDo6Z2V0QVZDYXB0dXJlRGV2
aWNlQ2xhc3MoKSByZXF1ZXN0QWNjZXNzRm9yTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW8gY29t
cGxldGlvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKKyNlbHNlCisgICAgbV9pc01p
Y3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkID0gdHJ1ZTsKKyAgICBjaGVja1NwZWVjaFJlY29nbml0
aW9uU2VydmljZUFjY2VzcygpOworI2VuZGlmIC8vIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikgJiYg
VVNFKEFWRk9VTkRBVElPTikKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpCit7CisgICAgV1RG
TG9nQWx3YXlzKCJzaWh1aWw6IFslcF1TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
OjpjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpIiwgdGhpcyk7CisgICAgaWYg
KCFtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCkKKyAgICAgICAg
bV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQgPSB0cnVlOworCisg
ICAgaWYgKG1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkLmhhc1Zh
bHVlKCkpIHsKKyAgICAgICAgaWYgKG1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NB
dXRob3JpemVkLnZhbHVlKCkpCisgICAgICAgICAgICBjaGVja1VzZXJQZXJtaXNzaW9uRm9yT3Jp
Z2luKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3Qo
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorICAgIGF1
dG8gc3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXMgPSBbZ2V0U0ZTcGVlY2hSZWNv
Z25pemVyQ2xhc3MoKSBhdXRob3JpemF0aW9uU3RhdHVzXTsKKyAgICBpZiAoc3BlZWNoUmVjb2du
aXplckF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlv
blN0YXR1c0F1dGhvcml6ZWQpIHsKKyAgICAgICAgbV9pc1NwZWVjaFJlY29nbml0aW9uU2Vydmlj
ZUFjY2Vzc0F1dGhvcml6ZWQgPSB0cnVlOworICAgICAgICBjaGVja1VzZXJQZXJtaXNzaW9uRm9y
T3JpZ2luKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc3BlZWNoUmVjb2du
aXplckF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlv
blN0YXR1c1Jlc3RyaWN0ZWQgfHwgc3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXMg
PT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCkgeworICAgICAg
ICBtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCA9IGZhbHNlOwor
ICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IEFTU0VSVChzcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1cyA9PSBTRlNwZWVjaFJl
Y29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZCk7CisgICAgYXV0byBkZWNp
c2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
XShTRlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cykgbXV0YWJsZSB7
CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
aWYgKHN0YXR1cyAhPSBTRlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9y
aXplZCkgeworICAgICAgICAgICAgd2Vha1RoaXMtPm1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZp
Y2VBY2Nlc3NBdXRob3JpemVkID0gZmFsc2U7CisgICAgICAgICAgICB3ZWFrVGhpcy0+Y29tcGxl
dGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNp
c2lvbjo6RGVueSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB3
ZWFrVGhpcy0+bV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQgPSB0
cnVlOworICAgICAgICB3ZWFrVGhpcy0+Y2hlY2tVc2VyUGVybWlzc2lvbkZvck9yaWdpbigpOwor
ICAgIH0pOworICAgIFtnZXRTRlNwZWVjaFJlY29nbml6ZXJDbGFzcygpIHJlcXVlc3RBdXRob3Jp
emF0aW9uOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07CisjZWxzZQorICAgIG1faXNTcGVlY2hSZWNv
Z25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkID0gdHJ1ZTsKKyAgICBjaGVja1VzZXJQZXJt
aXNzaW9uRm9yT3JpZ2luKCk7CisjZW5kaWYgLy8gSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorfQor
Cit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrVXNlclBlcm1p
c3Npb25Gb3JPcmlnaW4oKQoreworICAgIFdURkxvZ0Fsd2F5cygic2lodWlsOiBbJXBdU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tVc2VyUGVybWlzc2lvbkZvck9yaWdp
bigpIiwgdGhpcyk7CisgICAgQVNTRVJUKCFtX3JlcXVlc3RzLmlzRW1wdHkoKSk7CisgICAgYXV0
byYgY3VycmVudFJlcXVlc3QgPSBtX3JlcXVlc3RzLmZpcnN0KCk7CisKKyAgICBhdXRvIGNsaWVu
dE9yaWdpbiA9IGN1cnJlbnRSZXF1ZXN0LT5vcmlnaW4oKTsKKyAgICBpZiAobV9vcmlnaW5QZXJt
aXNzaW9uTWFwLmNvbnRhaW5zKGNsaWVudE9yaWdpbikpIHsKKyAgICAgICAgYm9vbCBncmFudGVk
ID0gbV9vcmlnaW5QZXJtaXNzaW9uTWFwLmdldChjbGllbnRPcmlnaW4pOworICAgICAgICBjb21w
bGV0ZUN1cnJlbnRSZXF1ZXN0KGdyYW50ZWQgPyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0OjpEZWNpc2lvbjo6QWxsb3cgOiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0OjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IGRlY2lzaW9uSGFuZGxlciA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oYm9vbCBp
c1Blcm1pdHRlZCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIEFTU0VSVCghd2Vha1RoaXMtPm1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKyAg
ICAgICAgd2Vha1RoaXMtPm1fb3JpZ2luUGVybWlzc2lvbk1hcC5zZXQod2Vha1RoaXMtPm1fcmVx
dWVzdHMuZmlyc3QoKS0+b3JpZ2luKCksIGlzUGVybWl0dGVkKTsKKyAgICAgICAgd2Vha1RoaXMt
PmNvbXBsZXRlQ3VycmVudFJlcXVlc3QoaXNQZXJtaXR0ZWQgPyBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6QWxsb3cgOiBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6RGVueSk7CisgICAgfTsKKworICAgIGF1dG8gcmVxdWVz
dGluZ09yaWdpbiA9IGNsaWVudE9yaWdpbi5jbGllbnRPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsK
KyAgICBhdXRvIHRvcE9yaWdpbiA9Y2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdp
bigpOworICAgIG1fcGFnZS51aUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QobV9wYWdlLCBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
cmVxdWVzdGluZ09yaWdpbi5nZXQoKSkuZ2V0KCksIEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0
ZSh0b3BPcmlnaW4uZ2V0KCkpLmdldCgpLCBXVEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5oCmluZGV4IDhhMDk0NzQ1YzFmMjRiZTEwNWRiYjAyYWI5MWUzMDdiMzFkNDg2
YjEuLmVhZDRkNTdlZTBhMzNhNmIzZWViYmRlYzQzZjhiNzM5NTVkOTc2MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKQEAgLTE2MSw2ICsxNjEsNyBAQCBw
cml2YXRlOgogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgICAgIHZvaWQgcnVuV2ViQXV0aGVu
dGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwm
LCBXZWJGcmFtZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmKSBmaW5hbDsKICNlbmRpZgorICAgICAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Qo
V2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIEFQSTo6U2VjdXJpdHlPcmlnaW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKIAogICAgICAgICBVSURl
bGVnYXRlJiBtX3VpRGVsZWdhdGU7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGQwMzM4ZjhkNmUzYjlhMTNkZjJhZjE1M2FjYjVkZWIz
OGUxZmNkOWIuLjE5MzQ1NmIxYzA3ODY3OTY5NjE5NGIzNTMxYmM2NWRjNDE1NTE5ZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMTMzMiw0ICsx
MzMyLDI2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmltYWdlT3JNZWRpYURvY3VtZW50
U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6CiAgICAgW3N0YXRpY19jYXN0PGlkIDxX
S1VJRGVsZWdhdGVQcml2YXRlPj4oZGVsZWdhdGUpIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dl
YlZpZXcgaW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZDpuZXdTaXplXTsKIH0KIAordm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpTZWN1cml0
eU9yaWdpbiYgcmVxdWVzdGluZ09yaWdpbiwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2lu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGF1dG8gZGVsZWdhdGUgPSAoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KW1fdWlEZWxlZ2F0
ZS5tX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOnRvcE9yaWdpbjpkZWNpc2lvbkhhbmRs
ZXI6KV0pIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hl
Y2tlcjo6Y3JlYXRlKGRlbGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkZvck9yaWdpbjp0b3BPcmlnaW46ZGVjaXNpb25IYW5kbGVyOikp
OworICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJlcXVlc3RT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46d3JhcHBlcihyZXF1ZXN0aW5nT3Jp
Z2luKSB0b3BPcmlnaW46d3JhcHBlcih0b3BPcmlnaW4pIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxv
Y2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShjb21wbGV0aW9uSGFuZGxl
ciwgeyB9KSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09MIGdyYW50ZWQpIG11dGFi
bGUgeworICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVk
KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihncmFudGVkKTsKKyAgICB9
KS5nZXQoKV07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lMjViZGMzNDVkZDEwMGUwZTkxYjFjNzNlYTUzYmNlOWYxNzNi
MmIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKFdl
YlBhZ2VQcm94eSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCitTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcigpCit7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9yZXF1ZXN0cykKKyAgICAgICAg
cmVxdWVzdC0+Y29tcGxldGUoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVj
aXNpb246OkRlbnkpOworfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQorCit2b2lkIFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QoY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKK30KKwordm9pZCBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydE5leHRSZXF1ZXN0KCkKK3sKK30KKwordm9p
ZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1
ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uKQoreworfQor
Cit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU2FuZGJveFJl
cXVpcmVtZW50KCkKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyOjpjaGVja01pY3JvcGhvbmVBY2Nlc3MoKQoreworfQorCit2b2lkIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNz
KCkKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVj
a1VzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKCkKK3sKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY4OWM1ZGQ1
ODg3ODk4YjU3ZGMyYzlmNDZjYTIzNDQyYWQ3ZTU4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaApA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoV2ViUGFnZVBy
b3h5Jik7CisgICAgflNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoKTsKKyAgICB2
b2lkIHJlcXVlc3QoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzdGFydE5leHRSZXF1ZXN0
KCk7CisgICAgdm9pZCBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uKTsKKyAgICB2b2lkIGNoZWNrU2FuZGJveFJlcXVpcmVt
ZW50KCk7CisgICAgdm9pZCBjaGVja01pY3JvcGhvbmVBY2Nlc3MoKTsKKyAgICB2b2lkIGNoZWNr
U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7CisgICAgdm9pZCBjaGVja1VzZXJQZXJt
aXNzaW9uRm9yT3JpZ2luKCk7CisKKyAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKKyAgICBEZXF1
ZTxSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4+IG1fcmVxdWVzdHM7Cisg
ICAgT3B0aW9uYWw8Ym9vbD4gbV9pc1NhbmRib3hDaGVja1Bhc3NlZDsKKyAgICBPcHRpb25hbDxi
b29sPiBtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQ7CisgICAgT3B0aW9uYWw8Ym9vbD4g
bV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQ7CisgICAgSGFzaE1h
cDxDbGllbnRPcmlnaW4sIGJvb2w+IG1fb3JpZ2luUGVybWlzc2lvbk1hcDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwYTNj
MzBiOGY1MWMxY2JlMWVjZjZlMWFjYmY4ZDdmNGFiNTQ4MjkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KKyNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0PiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0PiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KG9yaWdpbiwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICB9CisKKyAgICBlbnVtIGNsYXNzIERlY2lzaW9uIHsg
RGVueSwgQWxsb3cgfTsKKyAgICB2b2lkIGNvbXBsZXRlKERlY2lzaW9uIGRlY2lzaW9uKQorICAg
IHsKKyAgICAgICAgYm9vbCBpc0FsbG93ZWQgPSBkZWNpc2lvbiA9PSBEZWNpc2lvbjo6QWxsb3c7
CisgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxl
dGlvbkhhbmRsZXIsIHsgfSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGlzQWxsb3dlZCk7
CisgICAgfQorCisgICAgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25z
dCB7IHJldHVybiBtX29yaWdpbjsgfQorCitwcml2YXRlOgorICAgIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3QoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAg
IDogbV9vcmlnaW4ob3JpZ2luKQorICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgeyB9CisKKyAgICBXZWJDb3JlOjpDbGllbnRPcmln
aW4gbV9vcmlnaW47CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9jb21wbGV0
aW9uSGFuZGxlcjsKK307CisKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiBjcmVhdGUoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgfQorCisgICAgdm9pZCBjb21wbGV0ZShib29s
IGdyYW50ZWQpIHsgbV9jb21wbGV0aW9uSGFuZGxlcihncmFudGVkKTsgfQorCitwcml2YXRlOgor
ICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogbV9jb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICB7IH0KKworICAgIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IG1fY29tcGxldGlvbkhhbmRsZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVj
aFJlY29nbml0aW9uU2VydmVyLmNwcAppbmRleCAxYjg4MWVkZjVkMzA0OGRlYjcwMDkxNDk3OWRj
NTY4ZWEwYTVkYjEyLi4zNzhkNjg3NTllYWNiZGZiNjMxNWRhMmZiYjc3NzFkZDgwNzBmOWNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIuY3BwCkBAIC0zMiw5ICszMiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCitTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUGVybWlzc2lvbkNoZWNrZXImJiBwZXJtaXNzaW9u
Q2hlY2tlcikKICAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwg
bV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX3Blcm1pc3Npb25DaGVja2VyKFdURk1v
dmUocGVybWlzc2lvbkNoZWNrZXIpKQogewogfQogCkBAIC0xMDUsNyArMTA2LDM2IEBAIHZvaWQg
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpCiAgICAgfQogfQogCi12b2lkIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpzdGFydFBvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0JikKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0UG9jZXNzaW5nUmVxdWVz
dChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmVx
dWVzdC5zZXRJc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2sodHJ1ZSk7CisgICAgbV9wZXJtaXNz
aW9uQ2hlY2tlcihyZXF1ZXN0LmNsaWVudE9yaWdpbigpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKSwgd2Vha1JlcXVlc3QgPSBtYWtlV2Vha1B0cihyZXF1ZXN0KV0oYm9vbCBn
cmFudGVkKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgaWYgKCF3ZWFrUmVxdWVzdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBBU1NFUlQobV9jdXJyZW50UmVxdWVzdCA9PSB3ZWFrUmVxdWVzdC5nZXQoKSk7CisgICAgICAg
IGlmICghd2Vha1JlcXVlc3QtPmlzV2FpdGluZ0ZvclBlcm1pc3Npb25DaGVjaygpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB3ZWFrUmVxdWVzdC0+c2V0SXNXYWl0aW5nRm9yUGVybWlz
c2lvbkNoZWNrKGZhbHNlKTsKKworICAgICAgICBXVEZMb2dBbHdheXMoInNpaHVpbDogWyVwXVNw
ZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydFBvY2Vzc2luZ1JlcXVlc3QgY2FsbGJhY2sgZ3Jh
bnRlZFslZF0iLCB0aGlzLCBncmFudGVkKTsKKyAgICAgICAgaWYgKCFncmFudGVkKSB7CisgICAg
ICAgICAgICBhdXRvIGVycm9yID0gU3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29n
bml0aW9uRXJyb3JUeXBlOjpOb3RBbGxvd2VkLCAiUGVybWlzc2lvbiBjaGVjayBmYWlscyJfcyB9
OworICAgICAgICAgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZTo6Y3JlYXRlRXJyb3Iod2Vha1JlcXVlc3QtPmNsaWVudElkZW50aWZpZXIoKSwgZXJyb3Ip
OworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uOjpEaWRSZWNlaXZlVXBkYXRlKHVwZGF0ZSksIG1faWRlbnRpZmllcik7CisgICAgICAgICAg
ICBtX2N1cnJlbnRSZXF1ZXN0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHByb2Nlc3NOZXh0UGVu
ZGluZ1JlcXVlc3RJZk5lZWRlZCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgqd2Vha1JlcXVlc3QpOworICAgIH0p
OworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpjb250aW51ZVByb2Nlc3NpbmdS
ZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCmluZGV4
IDdhYTI0MTYzOGI5YzM1MTQ5NjY5ODQ0MzJkYmM1MzBkZjg0ODRhMzcuLmY0ZGE1MTdiZjVhOTZk
NGE2N2JkMGRlNzU5ZGEyZWFmOTNkMzk4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaApAQCAtMzYsMTEgKzM2LDEyIEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiB1c2luZyBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcklkZW50aWZpZXIgPSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcjsKK3VzaW5n
IFBlcm1pc3Npb25DaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKT47CiAKIGNs
YXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVj
aFJlY29nbml0aW9uU2VydmVyPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRl
IElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwg
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyKTsKKyAgICBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklk
ZW50aWZpZXIsIFBlcm1pc3Npb25DaGVja2VyJiYpOwogCiAgICAgdm9pZCBzdGFydChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYpOwogICAgIHZvaWQgc3RvcChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKQEAgLTUzLDYg
KzU0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRPRE86IGltcGxlbWVudCB0aGVzZS4KICAgICB2
b2lkIHN0YXJ0UG9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3QmKTsKKyAgICB2b2lkIGNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBzdG9wUHJvY2Vzc2luZ1JlcXVlc3QoV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlci4KQEAgLTY2LDYgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIERlcXVlPFJlZjxXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+PiBtX3BlbmRpbmdSZXF1ZXN0czsKICAgICBSZWZQdHI8
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiBtX2N1cnJlbnRSZXF1ZXN0OworICAg
IFBlcm1pc3Npb25DaGVja2VyIG1fcGVybWlzc2lvbkNoZWNrZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRl
eCA0ZGM5N2U4OTM5MGU4NWFhYTU1ZWRlNGVmMjgwMWUxYjY3OGIzZGRlLi5iNTIyYjNiNzkyYWU0
ZTA0YmViNmZiYjM1Njc5MTNlZDI5ZjU5Zjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxB
dXRoZW50aWNhdG9yLm1tCkBAIC0xNDAsMTQgKzE0MCwxNCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVj
dG9yPFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+Pj4gZ2V0RXhpc3RpbmdDcmVk
ZW50aQogICAgICAgICB9CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlTWFwID0gZGVjb2RlZFJlc3Bv
bnNlLT5nZXRNYXAoKTsKIAotICAgICAgICBhdXRvIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9S
KGtFbnRpdHlJZE1hcEtleSkpOworICAgICAgICBhdXRvIGl0ID0gcmVzcG9uc2VNYXAuZmluZChD
Qk9SKGZpZG86OmtFbnRpdHlJZE1hcEtleSkpOwogICAgICAgICBpZiAoaXQgPT0gcmVzcG9uc2VN
YXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNCeXRlU3RyaW5nKCkpIHsKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAg
ICAgICAgfQogICAgICAgICBhdXRvJiB1c2VySGFuZGxlID0gaXQtPnNlY29uZC5nZXRCeXRlU3Ry
aW5nKCk7CiAKLSAgICAgICAgaXQgPSByZXNwb25zZU1hcC5maW5kKENCT1Ioa0VudGl0eU5hbWVN
YXBLZXkpKTsKKyAgICAgICAgaXQgPSByZXNwb25zZU1hcC5maW5kKENCT1IoZmlkbzo6a0VudGl0
eU5hbWVNYXBLZXkpKTsKICAgICAgICAgaWYgKGl0ID09IHJlc3BvbnNlTWFwLmVuZCgpIHx8ICFp
dC0+c2Vjb25kLmlzU3RyaW5nKCkpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTI5MSw4ICsyOTEsOCBAQCB2
b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZl
cmlmaWNhdGlvbihTZWNBY2Nlc3NDbwogICAgIGNvbnN0IGF1dG8mIHNlY0F0dHJMYWJlbCA9IGNy
ZWF0aW9uT3B0aW9ucy5ycC5pZDsKIAogICAgIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgdXNl
ckVudGl0eU1hcDsKLSAgICB1c2VyRW50aXR5TWFwW2Nib3I6OkNCT1JWYWx1ZShrRW50aXR5SWRN
YXBLZXkpXSA9IGNib3I6OkNCT1JWYWx1ZShjcmVhdGlvbk9wdGlvbnMudXNlci5pZFZlY3Rvcik7
Ci0gICAgdXNlckVudGl0eU1hcFtjYm9yOjpDQk9SVmFsdWUoa0VudGl0eU5hbWVNYXBLZXkpXSA9
IGNib3I6OkNCT1JWYWx1ZShjcmVhdGlvbk9wdGlvbnMudXNlci5uYW1lKTsKKyAgICB1c2VyRW50
aXR5TWFwW2Nib3I6OkNCT1JWYWx1ZShmaWRvOjprRW50aXR5SWRNYXBLZXkpXSA9IGNib3I6OkNC
T1JWYWx1ZShjcmVhdGlvbk9wdGlvbnMudXNlci5pZFZlY3Rvcik7CisgICAgdXNlckVudGl0eU1h
cFtjYm9yOjpDQk9SVmFsdWUoZmlkbzo6a0VudGl0eU5hbWVNYXBLZXkpXSA9IGNib3I6OkNCT1JW
YWx1ZShjcmVhdGlvbk9wdGlvbnMudXNlci5uYW1lKTsKICAgICBhdXRvIHVzZXJFbnRpdHkgPSBj
Ym9yOjpDQk9SV3JpdGVyOjp3cml0ZShjYm9yOjpDQk9SVmFsdWUoV1RGTW92ZSh1c2VyRW50aXR5
TWFwKSkpOwogICAgIEFTU0VSVCh1c2VyRW50aXR5KTsKICAgICBhdXRvIHNlY0F0dHJBcHBsaWNh
dGlvblRhZyA9IHRvTlNEYXRhKCp1c2VyRW50aXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDQzMDBlMWY1MjJmZjUyMjc0OGYyYjFkZjkxMzdkZjdhNGQy
NmM1YTQuLjMxZjE4ZmEyNGRhYmQyN2RmNzRiMjQxOGE1MjI3MzI5ZmQyZDc0YmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODYsNiArODYsNyBAQAogI2lu
Y2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiU2FmZUJyb3dzaW5nV2Fy
bmluZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRl
ICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3ludGhl
dGljRWRpdGluZ0NvbW1hbmRUeXBlLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNs
dWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCkBAIC0xMDE3MSw2ICsxMDE3MiwxNCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZygpCiAgICAg
fSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICgh
bV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKQorICAgICAgICBtX3NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXI+KCp0aGlzKTsKKworICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlci0+cmVxdWVzdChjbGllbnRPcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xP
R19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDdj
ZWZiZmM2OTQ1ZWRmZTQzYWU1NmMyZDU2NGMwZTgxZTk1YmI0YTYuLjhlYTE0NjA0Nzg4OWNlNzM4
MmZiNmUwNjkyMGE0YWE5YTRmZDcxM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0zMDUsNiArMzA1LDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5n
UGVyZm9ybWFuY2VEYXRhOwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb247CiBjbGFz
cyBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OwogY2xhc3MgU2VjS2V5UHJveHlTdG9y
ZTsKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI7CiBjbGFzcyBVc2Vy
RGF0YTsKIGNsYXNzIFZpZXdTbmFwc2hvdDsKIGNsYXNzIFZpc2l0ZWRMaW5rU3RvcmU7CkBAIC0x
ODE5LDYgKzE4MjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNZWRpYUNhcHR1cmVSZXBvcnRp
bmdEZWxheShTZWNvbmRzIGNhcHR1cmVSZXBvcnRpbmdEZWxheSkgeyBtX21lZGlhQ2FwdHVyZVJl
cG9ydGluZ0RlbGF5ID0gY2FwdHVyZVJlcG9ydGluZ0RlbGF5OyB9CiAgICAgc2l6ZV90IHN1c3Bl
bmRNZWRpYVBsYXliYWNrQ291bnRlcigpIHsgcmV0dXJuIG1fc3VzcGVuZE1lZGlhUGxheWJhY2tD
b3VudGVyOyB9CiAKKyAgICB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24o
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9j
ZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemUoKTsKQEAgLTI4ODgsNiArMjg5MSw4IEBAIHByaXZhdGU6CiAgICAgc2l6
ZV90IG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyIHsgMCB9OwogCiAgICAgT3B0aW9uYWw8
V2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uPiBtX25ld1BhZ2VOYXZpZ2F0aW9uQWRDbGlja0F0
dHJpYnV0aW9uOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI+IG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKaW5kZXggZjZiODY3YmQ1NjRkZmQxNzJlYmEzZGI4MzMyNWNjMzczY2QyMDA2
OS4uZmY0Yzk3MzE3ZGI2Y2FhZWU3MjZlNDhhZDhjZWE2YTM2ZmZiOWU5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNzEyLDcgKzE3MTIsMTgg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKFNw
ZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnQKIHsKICAgICBhdXRvIHNwZWVjaFJlY29nbml0aW9u
U2VydmVyID0gbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZlck1hcC5hZGQoaWRlbnRpZmllciwgbnVs
bHB0cik7CiAgICAgQVNTRVJUKHNwZWVjaFJlY29nbml0aW9uU2VydmVyLmlzTmV3RW50cnkpOwot
ICAgIHNwZWVjaFJlY29nbml0aW9uU2VydmVyLml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24oKSksIGlkZW50aWZp
ZXIpOworICAgIHNwZWVjaFJlY29nbml0aW9uU2VydmVyLml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VV
bmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24oKSksIGlk
ZW50aWZpZXIsIFsmaWRlbnRpZmllciwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oY29u
c3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBmb3IgKGF1dG8qIHBhZ2UgOiB3ZWFrVGhpcy0+cGFnZXMoKSkg
eworICAgICAgICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+d2ViUGFnZUlEKCkgPT0gaWRlbnRpZmll
cikgeworICAgICAgICAgICAgICAgIHBhZ2UtPnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb24ob3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKKyAgICB9KTsKICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZp
ZXIsICpzcGVlY2hSZWNvZ25pdGlvblNlcnZlci5pdGVyYXRvci0+dmFsdWUpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZDYz
YzJiM2UyOTg3ODc3YmFmMmY1NTg4ZTY3YzAwNzYzNWIxNGU0Li5lZjE4ODhmYmZlNzkwOWFmZDlm
ZDljN2ExMzBmMmJhMmMzODg5OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MDcsNiArMTQwNyw5IEBACiAJCTkzRDZCNzg3MjU0
Q0NEOEMwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3ODYy
NTRDQ0Q4QjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2Vz
LmggKi87IH07CiAJCTkzRDZCNzg4MjU0Q0NEOTQwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzdFMjU0Q0NBQkIwMDU4REQzQSAvKiBXZWJTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKIAkJOTNENkI3
OEEyNTRDRDQzRTAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0Q2Qjc3RDI1NENDQUJCMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTNENkI3QjQyNTUyNjhENTAwNThE
RDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0FGMjU1MjY4QTEwMDU4REQz
QSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi87IH07CisJCTkzRDZC
N0I1MjU1MjY4RDcwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdC
MjI1NTI2OEEyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5o
ICovOyB9OworCQk5M0Q2QjdCOTI1NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJl
c3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNF
NkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y1NDlCNDFFMzE3NEI3MDAw
RTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBXS1Nu
YXBzaG90Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1Ymxp
YywgKTsgfTsgfTsKIAkJOTUwRjI4ODAyNTI0MTRFQTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTUwRjI4N0UyNTI0MTRFOTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oICovOyB9
OwpAQCAtNDUyNSw2ICs0NTI4LDEyIEBACiAJCTkzRDZCNzgwMjU0Q0NBQkMwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3ODEyNTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29n
bml0aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3ODYyNTRDQ0Q4QjAwNThERDNBIC8q
IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0FGMjU1MjY4QTEwMDU4REQz
QSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjAyNTUyNjhBMTAwNThERDNBIC8q
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0IyMjU1MjY4QTIwMDU4REQz
QSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjMyNTUyNjhCRjAwNThERDNBIC8q
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjcyNTUz
NEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdCODI1
NTM0QTEyMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENv
bmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTbmFwc2hv
dENvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjUx
RTMxNzREQTAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDY1LDYgKzY0NzQsNyBAQAogCQkJCTVD
QTk4NTRCMjEwQkVCNzMwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gKi8s
CiAJCQkJMUEwMDJENDcxOTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oICov
LAogCQkJCTFBMDAyRDQ2MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcubW0g
Ki8sCisJCQkJOTNENkI3QjMyNTUyNjhCRjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXJDb2NvYS5tbSAqLywKIAkJCQkzMTU3MTM1QzIwNDBBOUIyMDA4NEY5Q0Yg
LyogU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbSAqLywKIAkJCQkyRDBDRjY0QzIxRjJB
ODAzMDA3ODc1NjYgLyogVGV4dENoZWNraW5nQ29udHJvbGxlci5oICovLAogCQkJCTJEMENGNjRC
MjFGMkE4MDMwMDc4NzU2NiAvKiBUZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tICovLApAQCAtOTE5
Niw2ICs5MjA2LDkgQEAKIAkJCQlCQzExMUIwODExMkY1RTNDMDAzMzdCQUIgLyogUmVzcG9uc2l2
ZW5lc3NUaW1lci5jcHAgKi8sCiAJCQkJMUEzMDA2NkMxMTEwRjRGNzAwMzE5MzdDIC8qIFJlc3Bv
bnNpdmVuZXNzVGltZXIuaCAqLywKIAkJCQk1Q0E5ODU0OTIxMEJFQjVBMDA1N0VCNkIgLyogU2Fm
ZUJyb3dzaW5nV2FybmluZy5oICovLAorCQkJCTkzRDZCN0IwMjU1MjY4QTEwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcCAqLywKKwkJCQk5M0Q2QjdCMjI1
NTI2OEEyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICov
LAorCQkJCTkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0LmggKi8sCiAJCQkJOTNENkI3NkIyNTRCODk1ODAwNThERDNBIC8qIFNwZWVj
aFJlY29nbml0aW9uU2VydmVyLmNwcCAqLywKIAkJCQk5M0Q2Qjc2QzI1NEI4OTU4MDA1OEREM0Eg
LyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCAqLywKIAkJCQk5M0Q2Qjc3QTI1NEM5ODREMDA1
OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4gKi8sCkBAIC05NTM2
LDYgKzk1NDksOCBAQAogCQkJCTMzMzY3NjM5MTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNl
Q2FjaGVNYW5hZ2VyLmggKi8sCiAJCQkJMUFERTQ2QjAxOTU0RUM2MTAwMEY3OTg1IC8qIFdLU2Vz
c2lvblN0YXRlUmVmLmNwcCAqLywKIAkJCQkxQURFNDZCMTE5NTRFQzYxMDAwRjc5ODUgLyogV0tT
ZXNzaW9uU3RhdGVSZWYuaCAqLywKKwkJCQk5M0Q2QjdCODI1NTM0QTEyMDA1OEREM0EgLyogV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi8sCisJCQkJOTNENkI3Qjcy
NTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
aCAqLywKIAkJCQk1MUY4ODZBMzFGMkMyMTRBMDBDMTkzRUYgLyogV0tUZXN0aW5nU3VwcG9ydC5j
cHAgKi8sCiAJCQkJNTFGODg2QTQxRjJDMjE0QTAwQzE5M0VGIC8qIFdLVGVzdGluZ1N1cHBvcnQu
aCAqLywKIAkJCQkzMTQ4ODhGRTFEOTFCMTFEMDAzNzcwNDIgLyogV0tUZXh0Q2hlY2tlci5jcHAg
Ki8sCkBAIC0xMTM3Myw2ICsxMTM4OCw4IEBACiAJCQkJNTdCQkVBNkQyMkJDMEJGRTAwMjczOTk1
IC8qIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3NkNB
OUQ3MjJCODYyMTgwMDMwMTQzQyAvKiBTT0F1dGhvcml6YXRpb25OU1VSTEV4dHJhcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTdGRDMxODUyMkIzNTE2OTAwOEQwRThCIC8qIFNPQXV0aG9yaXphdGlv
blNlc3Npb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDZCN0I1MjU1MjY4RDcwMDU4REQzQSAv
KiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk5M0Q2QjdCNDI1NTI2OEQ1MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3NzIyNTRCQjUxOTAwNThERDNBIC8q
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4NDI1
NENDRDBFMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTNENkI3ODUyNTRDQ0Q0MzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0
aW9uU2VydmVyTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTExOTg2LDYgKzEy
MDAzLDcgQEAKIAkJCQk1MTNFNDYyRDFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2Vydmlj
ZVBpY2tlckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Y1NDlCNDFFMzE3NEI3MDAw
RTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTU3
RkQzMTg3MjJCMzUxNzAwMDhEMEU4QiAvKiBXS1NPQXV0aG9yaXphdGlvbkRlbGVnYXRlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5M0Q2QjdCOTI1NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E3OEZGMzIy
MjQxOTE5NjAwOTY0ODNFIC8qIFdLU3RvcmFnZUFjY2Vzc0FsZXJ0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzQwNzYwNjEyNEZGMDI3MDA2OEYyMEEgLyogV0tTdHJpbmcuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDNDA3NjFBMTI0RkYwMzcwMDY4RjIwQSAvKiBXS1N0cmluZ0NGLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAK
aW5kZXggZDRmNGQ0ZjY5NDAwMDI2Yjk5ZjdiYzU0MjFmYzRjOWNjNGU2MThhZC4uMTdlY2IzNWY4
ZjA0M2ZiYWM2MmU3OTJkY2I3OWViYTljYWY2YmYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAKQEAgLTU4LDkgKzU4LDkgQEAgdm9pZCBXZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnJlZ2lzdGVyQ2xpZW50KFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ28KICAgICBtX2NsaWVudE1hcC5hZGQoY2xpZW50LmlkZW50aWZpZXIoKSwg
bWFrZVdlYWtQdHIoY2xpZW50KSk7CiB9CiAKLXZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uOjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250
aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpCit2
b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywg
dWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRP
cmlnaW4pCiB7Ci0gICAgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyBpbmZv
IHsgY2xpZW50SWRlbnRpZmllciwgbGFuZywgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1h
eEFsdGVybmF0aXZlcyB9OworICAgIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8gaW5mbyB7IGNsaWVudElkZW50aWZpZXIsIGxhbmcsIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1
bHRzLCBtYXhBbHRlcm5hdGl2ZXMsIFdURk1vdmUoY2xpZW50T3JpZ2luKSB9OwogICAgIHNlbmQo
TWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTdGFydChpbmZvKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAppbmRleCAyOGRiZDE5
N2NiM2Y3OThmYzc2MzE5OWViYjEyZGUxM2FlZDc1MWIxLi42Mzc2MTNmNmM2NTI2ZTM0YzQzY2Yw
Y2Q3ZWZjODVkODFiNTY3NTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbi5oCkBAIC00MywxMSArNDMsMTEgQEAgY2xhc3MgV2ViUGFnZTsKIAogdXNpbmcg
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uSWRlbnRpZmllciA9IFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyOwogCi1jbGFzcyBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gOiBwdWJsaWMg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CitjbGFzcyBXZWJTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQ
Qzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24+IGNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25JZGVu
dGlmaWVyKTsKIAotICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVv
dXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcykgZmluYWw7
CisgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBp
bnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mJikgZmluYWw7CiAgICAgdm9pZCBzdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmluYWw7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNTc1
YTQxZmZjYjU1YzYxMzhiZmJhMWU0OTQ2M2RhMDJmZTYyMTAyLi45NzUxNjZjNDQ1YjQ1N2E1ODEz
ODUwZTMwZWFlYWVjZWUwM2UzOThiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMTEtMDQgIFNpaHVpIExpdSAg
PHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Np
b24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0OgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0SXNTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25HcmFudGVkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjb21w
bGV0ZVNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrKToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCk6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMpOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVl
cyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZSk6CisKIDIwMjAtMTEtMDQgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29t
PgogCiAgICAgICAgIFt3ZWJraXRzY21weV0gQWRkIGNoZWNrb3V0IGNvbW1hbmQKZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0IGIvVG9vbHMvTWluaUJyb3dzZXIv
bWFjL0luZm8ucGxpc3QKaW5kZXggNGUyYjFmNDgxOWFkNTEwM2U0Y2YxNzA5YjdjNTNhNjZlOGIz
OTVlNS4uMzNhM2NhMWJlNzM1MDhlMWZmY2IwMjk1N2M4NjRlODU5MmRhYWE0ZSAxMDA2NDQKLS0t
IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QKKysrIGIvVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL0luZm8ucGxpc3QKQEAgLTUyLDkgKzUyLDExIEBACiAJCQk8c3RyaW5nPkVkaXRvcjwv
c3RyaW5nPgogCQk8L2RpY3Q+CiAJPC9hcnJheT4KLSAgICA8a2V5Pk5TQ2FtZXJhVXNhZ2VEZXNj
cmlwdGlvbjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5nIHZpZGVvIG9uIGJlaGFsZiBvZiB3
ZWJzaXRlczwvc3RyaW5nPgotICAgIDxrZXk+TlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlvbjwv
a2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5nIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwv
c3RyaW5nPgorCTxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5S
ZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5OU01p
Y3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvcmRpbmcgYXVkaW8g
b24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5OU1NwZWVjaFJlY29nbml0aW9u
VXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVjb2duaXppbmcgY2FwdHVyZWQgYXVk
aW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CiA8L2RpY3Q+CiA8L3BsaXN0PgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggOTY5NjE0ZTY3Mjg4NjI5NjMzMDdjOTllYzQ3ODQx
NTI0ZmYwMTI5Yi4uOTgyOTdhZjcwZGI1MTFkYWQwYTc3OTc1ZWEzOGVkNWM4ZGI2YmQ3YyAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC00MDEsNCArNDAxLDcgQEAgaW50ZXJmYWNlIFRl
c3RSdW5uZXIgewogICAgIHVuZGVmaW5lZCBzZXRBZENsaWNrQXR0cmlidXRpb25PdmVycmlkZVRp
bWVyRm9yVGVzdGluZyhib29sZWFuIHZhbHVlKTsKICAgICB1bmRlZmluZWQgc2V0QWRDbGlja0F0
dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRlc3RpbmcoRE9NU3RyaW5nIHVybCk7CiAgICAgdW5k
ZWZpbmVkIG1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZygpOworCisg
ICAgLy8gU3BlZWNoUmVjb2duaXRpb24KKyAgICB1bmRlZmluZWQgc2V0SXNTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2xlYW4gdmFsdWUpOwogfTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGU1
YzVmOTlhZDFkYzljMjg2ZTA5NDczNDZjOWJkNzVmY2EyZjkzYzMuLjI1YjQxNzY3NjMwMTEyYzUx
NWNhMzE0MWQ4ZDkzNWVhYjRiYTI1NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjA0Nyw2ICsyMDQ3LDExIEBA
IHZvaWQgVGVzdFJ1bm5lcjo6ZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2soKQogICAgIGNh
bGxUZXN0UnVubmVyQ2FsbGJhY2soRGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2tJRCk7CiB9
CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFu
dGVkKGJvb2wgZ3JhbnRlZCkKK3sKKyAgICBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZSgic2V0
SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkIiwgZ3JhbnRlZCk7Cit9CisKIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgK
aW5kZXggYWFhNTIxNmY5MjYwZGI0ZDk4ODFjZDBkZGJiMTlmNTA4NTI5N2ZkOC4uOTE4YWE5NjQy
NjcyZWZhYTBjZTQ2MzRiMTY4YjAwMGQzNDMzZWVlNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTUxMSw2ICs1MTEsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9y
VGVzdGluZyhKU1N0cmluZ1JlZik7CiAgICAgdm9pZCBtYXJrQWRDbGlja0F0dHJpYnV0aW9uc0Fz
RXhwaXJlZEZvclRlc3RpbmcoKTsKIAorICAgIHZvaWQgc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25HcmFudGVkKGJvb2wpOworCiBwcml2YXRlOgogICAgIFRlc3RSdW5uZXIoKTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA2ZGJjNjg0ZTg4
NTBhZmUwNDU5MTM5ZmJlMTlkNWU1Y2NkYjcyNmU3Li4xODZlZmY5YTE0YzcxMDg5ZjA2YWYyOTRh
ZWVlMjQyMzBkN2ZjMWUzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1Byb3RlY3Rpb25TcGFj
ZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUgPFdlYktpdC9X
S1NlY3VyaXR5T3JpZ2luUmVmLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2suaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tUZXh0Q2hlY2tlci5o
PgogI2luY2x1ZGUgPFdlYktpdC9XS1VSTC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1VzZXJDb250
ZW50Q29udHJvbGxlclJlZi5oPgpAQCAtMjk3LDYgKzI5OCwyMSBAQCBzdGF0aWMgdm9pZCBydW5X
ZWJBdXRoZW50aWNhdGlvblBhbmVsKCkKIHsKIH0KIAorc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5
Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJp
dHlPcmlnaW5SZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2tSZWYgY2FsbGJhY2spCit7CisgICAgVGVzdENvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLmNvbXBsZXRlU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2soY2FsbGJhY2sp
OworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpjb21wbGV0ZVNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNoZWNrKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgY2Fs
bGJhY2spCit7CisgICAgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0NvbXBs
ZXRlKGNhbGxiYWNrLCBtX2lzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCk7Cit9
CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
R3JhbnRlZChib29sIGdyYW50ZWQpCit7CisgICAgbV9pc1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkdyYW50ZWQgPSBncmFudGVkOworfQorCiBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNy
ZWF0ZU90aGVyUGFnZShXS1BhZ2VSZWYsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJh
dGlvbiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmlnYXRpb25BY3Rpb24sIFdLV2luZG93RmVh
dHVyZXNSZWYgd2luZG93RmVhdHVyZXMsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7CiAgICAg
UGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3ID0gc3RhdGljX2Nhc3Q8UGxhdGZvcm1XZWJWaWV3
Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwpAQCAtNjUwLDggKzY2Niw4IEBAIHZv
aWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0
aW9ucyYgb3B0aW9ucykKICAgICBXS0hUVFBDb29raWVTdG9yZURlbGV0ZUFsbENvb2tpZXMoV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0SFRUUENvb2tpZVN0b3JlKHdlYnNpdGVEYXRhU3RvcmUoKSksIG51
bGxwdHIsIG51bGxwdHIpOwogCiAgICAgcGxhdGZvcm1DcmVhdGVXZWJWaWV3KGNvbmZpZ3VyYXRp
b24uZ2V0KCksIG9wdGlvbnMpOwotICAgIFdLUGFnZVVJQ2xpZW50VjE0IHBhZ2VVSUNsaWVudCA9
IHsKLSAgICAgICAgeyAxNCwgbV9tYWluV2ViVmlldy5nZXQoKSB9LAorICAgIFdLUGFnZVVJQ2xp
ZW50VjE1IHBhZ2VVSUNsaWVudCA9IHsKKyAgICAgICAgeyAxNSwgbV9tYWluV2ViVmlldy5nZXQo
KSB9LAogICAgICAgICAwLCAvLyBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAK
ICAgICAgICAgMCwgLy8gc2hvd1BhZ2UKICAgICAgICAgMCwgLy8gY2xvc2UKQEAgLTcyNCw3ICs3
NDAsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoY29u
c3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgICAgIDAsIC8vIGRpZFJlc2lnbklucHV0RWxl
bWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZQogICAgICAgICAwLCAvLyByZXF1ZXN0U3RvcmFn
ZUFjY2Vzc0NvbmZpcm0KICAgICAgICAgc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvbkFjY2VzcywKLSAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbAorICAgICAgICBy
dW5XZWJBdXRoZW50aWNhdGlvblBhbmVsLAorICAgICAgICBkZWNpZGVQb2xpY3lGb3JTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0CiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlVUlD
bGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAmcGFnZVVJQ2xpZW50LmJhc2UpOwogCkBAIC0x
MDUzLDYgKzEwNzAsOCBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0
ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAgIG1fc2VydmVyVHJ1
c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50ID0gMDsKICAgICBtX3Nob3VsZERpc21pc3NK
YXZhU2NyaXB0QWxlcnRzQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKIAorICAgIHNldElzU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCh0cnVlKTsKKwogICAgIGF1dG8gbG9hZEFib3V0
QmxhbmsgPSBbdGhpc10gewogICAgICAgICBtX2RvbmVSZXNldHRpbmcgPSBmYWxzZTsKICAgICAg
ICAgV0tQYWdlTG9hZFVSTChtX21haW5XZWJWaWV3LT5wYWdlKCksIGJsYW5rVVJMKCkpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDMzYjY0OTRhYzYyNDRiOTJm
Y2I3ODA5YTU4ZDcyMDNjN2MxMjU4YTguLjA1YzhmOGJkYWE5NWFkODdlNDM5ZTMwOTNiOGE0ZjM0
ZjVmODJjNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTM1
MSw2ICszNTEsOSBAQCBwdWJsaWM6CiAKICAgICBXS1VSTFJlZiBjdXJyZW50VGVzdFVSTCgpIGNv
bnN0OwogCisgICAgdm9pZCBjb21wbGV0ZVNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNr
KFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYpOworICAgIHZvaWQgc2V0
SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wpOworCiBwcml2YXRlOgog
ICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlUGFnZUNvbmZp
Z3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnMmKTsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRD
b25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RP
cHRpb25zJikgY29uc3Q7CkBAIC02NDAsNiArNjQzLDggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBib29sIG1faGFzU2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyIHsg
ZmFsc2UgfTsKICNlbmRpZgorCisgICAgYm9vbCBtX2lzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uR3JhbnRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMTRjMDRlZDFmYTkzOTRmNTcy
ZjY0OWE5MWI0N2VmYjIwNmVmODU0ZS4uNWI2NjYxN2JlZTAxNmI2NzUxYzdiYjJiY2U2YmI4YmFl
NDRlYjBhMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAg
LTEzNDUsNiArMTM0NSwxMSBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9u
OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhtZXNzYWdlTmFtZSwgInNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCIp
KSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRJc1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbGVhblZhbHVlKG1lc3NhZ2VCb2R5KSk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBudWxscHRyOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413261</attachid>
            <date>2020-11-04 23:44:32 -0800</date>
            <delta_ts>2020-11-06 01:12:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201104234431.patch</filename>
            <type>text/plain</type>
            <size>86376</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY5Njk2ZjNhMjQ5ZWQ3OTBkNTQzZWU1
YzU1MDc2YWFhZTAwNGQ1NGEuLjBmM2M2OGQ4ODA0N2M1ZmQ2ODJjY2ZlMTE3Y2RlN2UzOGNhZDU1
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTEtMDQgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMC0xMS0wNCAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGFkZCB3
b3JrYXJvdW5kIGZvciBMaW51eCBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM3OWRjZjkxY2NmMGQ4YjQ2
NDhhYWRhNDlkYzU4NmQ5MzY1NTQ3MTQuLjQ1MzJlM2Y2ZDFiYmJlOTU3ZDYwNjNjNGMxMGExYjAz
NDIwYzA3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMC0xMS0wNCAgU2lodWkg
TGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVy
bWlzc2lvbiBjaGVjayBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQ3NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb246OnN0YXJ0UmVj
b2duaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVx
dWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpjbGll
bnRPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0OjpzZXRJc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Ojppc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2sgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmRl
Y29kZSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUu
aDoKKyAgICAgICAgKiBwYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oOgorCiAy
MDIwLTExLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgd2lu
ZG93LmV2ZW50IG1heSBnZXQgc2V0IG9uIHdyb25nIGdsb2JhbCB3aGVuIGRpc3BhdGNoaW5nIGFu
IGV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDc1YzQyMmY0NDY5M2U1N2VmZjliZjBlNTAwOTkxYmRlZjYxY2E3
ZDkuLjdlM2Q4YjgxN2NhOGI4YjEzZDJkNmIzYTE3NmUxYTcxMmNjN2Q3NzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzUgQEAKKzIwMjAtMTEtMDQgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVj
aFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dL
QmFzZS5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50
eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgorICAgICAgICAoQVBJ
OjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xp
ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
ay5jcHA6IEFkZGVkLgorICAgICAgICAoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFja0dldFR5cGVJRCk6CisgICAgICAgIChXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW06IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpwZXJmb3JtU2FuZGJveENoZWNrKToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0TmV4dFJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpj
b21wbGV0ZUN1cnJlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnQpOgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja01pY3JvcGhv
bmVBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrVXNlclBlcm1p
c3Npb25Gb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJL
aXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcjo6flNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0Ojp+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJL
aXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydE5leHRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcjo6Y29tcGxldGVDdXJyZW50UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU2FuZGJveFJlcXVpcmVtZW50KToKKyAg
ICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tN
aWNyb3Bob25lQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1Vz
ZXJQZXJtaXNzaW9uRm9yT3JpZ2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y29tcGxldGUpOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Ojpvcmln
aW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjb21wbGV0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayk6CisgICAgICAgICogVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0UG9jZXNzaW5nUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpjb250aW51ZVByb2Nlc3Np
bmdSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRo
ZW50aWNhdG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5h
bDo6Z2V0RXhpc3RpbmdDcmVkZW50aWFscyk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVu
dGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNw
ZWVjaFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisKIDIwMjAtMTEtMDQg
IEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250YWN0
IFBpY2tlciBBUEldIEFkZCBzdXBwb3J0IGZvciBwaWNrZXIgVUkgb24gaU9TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
SGF2ZS5oCmluZGV4IDIwM2U4ZWM3ZDYxNWU4NzVmM2IzMTQ1ZjJmOGJkZDFlNWI3YjA4M2QuLjMx
YWZhYjIzNjA3MjIxNjg5NDhkYzk5YjY4MTYyNzU0ZjEwYjFiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2
ZS5oCkBAIC03NTUsMyArNzU1LDcgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExB
VEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAjZGVmaW5lIEhBVkVfQ05DT05U
QUNUUElDS0VSVklFV0NPTlRST0xMRVIgMQogI2VuZGlmCisKKyNpZiAgKFBMQVRGT1JNKElPU19G
QU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxNTAwKSkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRW
KQorI2RlZmluZSBIQVZFX1NQRUVDSFJFQ09HTklaRVIgMQorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKaW5kZXggNTFh
MzJjZGFhY2FhMWVkMDExNDI3NjdkMjJlMzAyNTI2ZGViZjU5NS4uZjExN2MxZmIxYjViZDA0YWU3
NTUyNTY1ZmJhYTg4OTFjNWMxYWViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uLmgiCiAKKyNpbmNsdWRl
ICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC02OSw3ICs3MCw4IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IFNwZWVjaFJlY29nbml0aW9uOjpzdGFydFJlY29nbml0aW9uKCkKICAgICBpZiAoIW1f
Y29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIlJl
Y29nbml0aW9uIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBjb25uZWN0aW9uIl9zIH07CiAKLSAgICBt
X2Nvbm5lY3Rpb24tPnN0YXJ0KGlkZW50aWZpZXIoKSwgbV9sYW5nLCBtX2NvbnRpbnVvdXMsIG1f
aW50ZXJpbVJlc3VsdHMsIG1fbWF4QWx0ZXJuYXRpdmVzKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9
IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX2Nv
bm5lY3Rpb24tPnN0YXJ0KGlkZW50aWZpZXIoKSwgbV9sYW5nLCBtX2NvbnRpbnVvdXMsIG1faW50
ZXJpbVJlc3VsdHMsIG1fbWF4QWx0ZXJuYXRpdmVzLCBDbGllbnRPcmlnaW4geyBkb2N1bWVudC50
b3BPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpIH0pOwog
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3RhcnRpbmc7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uLmgKaW5kZXggM2ZkMmQzM2FjYTAyMDUyNjM0MDU4ZDBmYjU2NTJlYjcwMDdm
YTUyYS4uYTAwMmRlZGEwYTYzOGNlMzMwMDBlNDMwZjA4ZWI0N2FlOWE1MmIxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uLmgKQEAgLTMxLDEyICszMSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudDsKIGNsYXNzIFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlOworc3RydWN0IENsaWVudE9yaWdpbjsKIAogY2xhc3MgU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBs
YW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFs
dGVybmF0aXZlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29u
dGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBD
bGllbnRPcmlnaW4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKFNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWJv
cnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaAppbmRleCA1Y2VlYTAxYzczODY1NTZkNDI1MWY4Yzhi
OTVjMzEyNGJhZmM2MDEyLi5kYTk1OWQ3YzA3OGU5YTU0MWVmOTQxYmViNWRlOWIzYWRmOTU3MjZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3QuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVk
PFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4geworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gewogcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiBjcmVh
dGUoU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsKIApAQCAtMzksMTEgKzM5LDE2IEBA
IHB1YmxpYzoKICAgICBib29sIGNvbnRpbnVvdXMoKSBjb25zdCB7IHJldHVybiBtX2luZm8uY29u
dGludW91czs7IH0KICAgICBib29sIGludGVyaW1SZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9p
bmZvLmludGVyaW1SZXN1bHRzOyB9CiAgICAgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKCkgY29u
c3QgeyByZXR1cm4gbV9pbmZvLm1heEFsdGVybmF0aXZlczsgfQorICAgIGNvbnN0IENsaWVudE9y
aWdpbiYgY2xpZW50T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmNsaWVudE9yaWdpbjsg
fQogCisgICAgdm9pZCBzZXRJc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2soYm9vbCBpc1dhaXRp
bmdGb3JQZXJtaXNzaW9uQ2hlY2spIHsgbV9pc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2sgPSBp
c1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2s7IH0KKyAgICBib29sIGlzV2FpdGluZ0ZvclBlcm1p
c3Npb25DaGVjaygpIGNvbnN0IHsgcmV0dXJuIG1faXNXYWl0aW5nRm9yUGVybWlzc2lvbkNoZWNr
OyB9CisgICAgCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dChTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYpOwogCiAgICAgU3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0SW5mbyBtX2luZm87CisgICAgYm9vbCBtX2lzV2FpdGluZ0ZvclBlcm1pc3Npb25D
aGVjayB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJ
bmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3RJbmZvLmgKaW5kZXggYWIxZTFhZTZlZjM4ODk4YzIxYTJhOWRmN2FmMWYwMDdlMjRiMTdk
MC4uNGZjMmEzZGFiN2UxMDc2Y2E2YzlmYzE5ODVlMGIxYzE5YjI2OWU5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5m
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm8uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkNsaWVudE9yaWdpbi5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudElkZW50aWZpZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsNiArMzYs
NyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7CiAgICAgYm9vbCBjb250
aW51b3VzIHsgZmFsc2UgfTsKICAgICBib29sIGludGVyaW1SZXN1bHRzIHsgZmFsc2UgfTsKICAg
ICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMgeyAxIH07CisgICAgQ2xpZW50T3JpZ2luIGNsaWVu
dE9yaWdpbjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbz4gZGVjb2RlKERlY29kZXImKTsKQEAgLTc0LDEy
ICs3NiwxOCBAQCBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUoRGVjbwogICAgIGlmICghbWF4QWx0ZXJuYXRp
dmVzKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgT3B0aW9uYWw8Q2xpZW50
T3JpZ2luPiBjbGllbnRPcmlnaW47CisgICAgZGVjb2RlciA+PiBjbGllbnRPcmlnaW47CisgICAg
aWYgKCFjbGllbnRPcmlnaW4pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBy
ZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqY2xpZW50SWRlbnRpZmllciksCiAgICAgICAgIFdU
Rk1vdmUoKmxhbmcpLAogICAgICAgICBXVEZNb3ZlKCpjb250aW51b3VzKSwKICAgICAgICAgV1RG
TW92ZSgqaW50ZXJpbVJlc3VsdHMpLAotICAgICAgICBXVEZNb3ZlKCptYXhBbHRlcm5hdGl2ZXMp
CisgICAgICAgIFdURk1vdmUoKm1heEFsdGVybmF0aXZlcyksCisgICAgICAgIFdURk1vdmUoKmNs
aWVudE9yaWdpbikKICAgICB9fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKaW5kZXggM2E4MmJmNmJhZjU0
Y2UwYzRiMTMzNGVmNmY4YjU4OTNmM2I4OTgyZS4uZWYzYjdiOTQzMWQwMzQxNDE5MDRhN2JkOGMy
YTk0Y2U4MDkxNWM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCkBAIC01Miw4ICs1Miw4IEBAIFN0cmluZyBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUpOwog
Y2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGUoU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
KTsKLSAgICBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlRXJyb3IoU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3BlZWNoUmVjb2du
aXRpb25FcnJvciYpOwotICAgIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVS
ZXN1bHQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3Qg
VmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4mKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlRXJyb3IoU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3BlZWNoUmVjb2duaXRpb25F
cnJvciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZSBjcmVhdGVSZXN1bHQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciwgY29uc3QgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4mKTsKIAogICAgIFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50SWRlbnRpZmllcjsgfQogICAgIFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaApp
bmRleCBjZjllNzJiOTNjMDY0YTU1ZGRkZmFiN2IzY2FmYjQ4OTBlMDM1ZjQ2Li5iZmNjMmU5YzJm
OTE3NzIyODlkMjYwNDJiNWVhOWIyYjdhMmVlM2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHVtbXlTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb24oKSk7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCByZWdpc3Rl
ckNsaWVudChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQmKSBmaW5hbCB7IH0KLSAg
ICAgICAgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCkgZmluYWwgeyB9CisgICAg
ICAgIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiwgYm9vbCwgYm9vbCwgdWludDY0X3QsIENsaWVudE9yaWdpbiYmKSBm
aW5hbCB7IH0KICAgICAgICAgdm9pZCBzdG9wKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIGFib3J0KFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFsIHsgfQogICAgICAgICB2b2lk
IGRpZFJlY2VpdmVVcGRhdGUoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSBmaW5hbCB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCA2ZDA2NTY0NWRjZWU2MmU1
OWQ1MGRiZWYzNzQzNWE0OWE4MGViNjgyLi5jZDFjYWQ5NmI0MDMxMmRiM2IxODhkZTcxZjYwODhi
ZjcyOGZkODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0xNjUsNiAr
MTY1LDcgQEAgcHVibGljOgogICAgICAgICBSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5l
ciwKICAgICAgICAgUnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5lciwKICAgICAgICAg
UnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExpc3RlbmVyLAorICAgICAgICBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFjaywKICAgICAgICAgVGV4dENoZWNrZXIsCiAgICAgICAgIFVS
TFNjaGVtZVRhc2ssCiAgICAgICAgIFVzZXJDb250ZW50Q29udHJvbGxlciwKQEAgLTQxMCw2ICs0
MTEsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPEFQSTo6T2JqZWN0OjpUeXBlPiB7
CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0
ZW5lciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlJ1bkphdmFTY3JpcHRDb25maXJtUmVz
dWx0TGlzdGVuZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpSdW5KYXZhU2NyaXB0UHJv
bXB0UmVzdWx0TGlzdGVuZXIsCisgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFjaywKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlRl
eHRDaGVja2VyLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6VVJMU2NoZW1lVGFzaywKICAg
ICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250ZW50Q29udHJvbGxlciwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXggOWU4MmU1NjAwMTg3ZWMxY2Y4YWY5YmVlNzllNzFk
MGU4ZDdmZDE1YS4uODRlZTZjMjg4ZjZkMmViZDUxZmE3M2VhNzI3MDhmMzI5NDZiZGQ4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTE0MSw2ICsxNDEsNyBAQCB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNpdGVEYXRhQ29uZmlndXJhdGlvblN0b3JlKiBXS1dl
YnNpdGVEYXRhU3RvcmVDbwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tXZWJzaXRlRGF0
YVN0b3JlKiBXS1dlYnNpdGVEYXRhU3RvcmVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS1dlYnNpdGVQb2xpY2llcyogV0tXZWJzaXRlUG9saWNpZXNSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS1dpbmRvd0ZlYXR1cmVzKiBXS1dpbmRvd0ZlYXR1cmVzUmVmOwordHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjayogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZjsKIAogLyogV2Vi
S2l0MiBCdW5kbGUgdHlwZXMgKi8KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZDUyNzlmZTYyMjk2M2YwNzQ3
MzhhYzFlZTU0YzM3NGRjYmU3YjUyNy4uOTdjMDllMjcxNjVlMDYyMTAxZTljMzIwNDE1ZjRkZmU2
ZTQ5OTViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yODksNiArMjg5LDcgQEAgVUlQcm9jZXNzL1Jlc3Bv
bnNpdmVuZXNzVGltZXIuY3BwCiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3Bw
CiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAogVUlQcm9jZXNzL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyLmNwcAorVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIuY3BwCiBVSVByb2Nlc3MvVGV4dENoZWNrZXIuY3BwCiBVSVByb2Nlc3MvVGV4dENoZWNr
ZXJDb21wbGV0aW9uLmNwcAogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5
LmNwcApAQCAtNDAyLDYgKzQwMyw3IEBAIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNw
cAogVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlLmNwcAogVUlQcm9jZXNzL0FQSS9D
L1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3Rh
dGVSZWYuY3BwCitVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFjay5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1RleHRDaGVja2VyLmNwcAogVUlQcm9jZXNz
L0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dL
VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlZi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRl
eCAwODRkNTEzNTJkNDRhNDUwOTQ5YjNmYmQxZDFkNzYxMzVmYjJiZWIyLi5jMjRmYzQ0NDFlZDA5
NDFlNDJhNzViMTUwOGQ3ZjNmYzYzNDY1ZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0z
NzksNiArMzc5LDcgQEAgVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5tbQogVUlQcm9jZXNzL0NvY29hL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCiBVSVByb2Nlc3Mv
Q29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvU2Vzc2lv
blN0YXRlQ29kaW5nLm1tCitVSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlckNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xs
ZXJDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXIubW0KIFVJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElVSUNsaWVudC5oCmluZGV4IGFhN2Q4OWMwMWU3MzUyMGNlM2VlMDQyMjZiOWFlODU5NzBiZmFh
NmUuLmIyZGZmMjk4M2VlMDk4YWRiYzkyNzE4MTVjNDJhYjZhZDZkNDA0OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCkBAIC0yMDIsNiArMjAyLDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uOjpjcmVhdGUo
KTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6U2VjdXJp
dHlPcmlnaW4mLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0FQSUNhc3QuaAppbmRleCBiNTJjNDRiYWVhOWFjZjlmYzAzMzJkNWE5ZjM3MzU2ZTlkMjM4NjI5
Li4xOGNiZmQ1Yjc0ZWI4NzcwYTU3OGYxNWM4YTAxNjE0OTkwMjE0NTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaApAQCAtNzksNiArNzksNyBAQCBjbGFzcyBB
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xh
c3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0OworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7
CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eTsKIGNsYXNzIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CkBAIC0xNTIs
NiArMTUzLDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJlZmVyZW5jZXNSZWYsIFdlYlByZWZl
cmVuY2VzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJvdGVjdGlvblNwYWNlUmVmLCBXZWJQcm90
ZWN0aW9uU3BhY2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFuYWdlclJlZiwgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXIpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tTZXNzaW9uU3RhdGVSZWYsIEFQSTo6U2Vzc2lvblN0YXRlKQorV0tfQUREX0FQ
SV9NQVBQSU5HKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYsIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVGV4
dENoZWNrZXJSZWYsIFdlYlRleHRDaGVja2VyKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlckNv
bnRlbnRDb250cm9sbGVyUmVmLCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSkKIFdLX0FE
RF9BUElfTUFQUElORyhXS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVSZWYsIEFQSTo6Q29udGVu
dFJ1bGVMaXN0U3RvcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApp
bmRleCA0MzY5Y2RkODI1YjUxNTdmYjAxMGMzZjgxYWU3OGU2NjBkYWE3NGZjLi4xMWM2NmJmNDI4
NDkzMjgxNWQ3ZWZhYTRiYWUzOTA2ZWY3MjM0NTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJQYWdlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb3JtYXRpb24uaCIKICNpbmNsdWRlICJQcmludEluZm8u
aCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tQYWdlUG9saWN5Q2xpZW50SW50ZXJuYWwu
aCIKICNpbmNsdWRlICJXS1BhZ2VSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0ludGVybmFsLmgiCkBA
IC0xMTUsNyArMTE2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVBv
bGljeUNsaWVudEJhc2U+IHsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxX
S1BhZ2VVSUNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGll
bnRWMCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlDbGllbnRWMiwgV0tQYWdlVUlDbGllbnRW
MywgV0tQYWdlVUlDbGllbnRWNCwgV0tQYWdlVUlDbGllbnRWNSwgV0tQYWdlVUlDbGllbnRWNiwg
V0tQYWdlVUlDbGllbnRWNywgV0tQYWdlVUlDbGllbnRWOCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQ
YWdlVUlDbGllbnRWMTAsIFdLUGFnZVVJQ2xpZW50VjExLCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQ
YWdlVUlDbGllbnRWMTMsIFdLUGFnZVVJQ2xpZW50VjE0PiBWZXJzaW9uczsKKyAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlD
bGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdlVUlDbGllbnRWNCwgV0tQYWdlVUlDbGll
bnRWNSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQYWdlVUlDbGllbnRWNywgV0tQYWdlVUlDbGllbnRW
OCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQYWdlVUlDbGllbnRWMTAsIFdLUGFnZVVJQ2xpZW50VjEx
LCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQYWdlVUlDbGllbnRWMTMsIFdLUGFnZVVJQ2xpZW50VjE0
LCBXS1BhZ2VVSUNsaWVudFYxNT4gVmVyc2lvbnM7CiB9OwogCiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCkBAIC0yMTEwLDYgKzIxMTEsMTMgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQo
V0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5l
bFJlc3VsdDo6UHJlc2VudGVkKTsKICAgICAgICAgfQogI2VuZGlmCisgICAgICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJv
eHkmIHBhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHJlcXVlc3RpbmdPcmlnaW4sIEFQSTo6U2Vj
dXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9s
aWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRv
QVBJKCZyZXF1ZXN0aW5nT3JpZ2luKSwgdG9BUEkoJnRvcE9yaWdpbiksIHRvQVBJKFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpLnB0cigpKSk7CisgICAgICAgIH0KICAgICB9OwogCiAgICAgdG9JbXBsKHBhZ2VSZWYp
LT5zZXRVSUNsaWVudChtYWtlVW5pcXVlPFVJQ2xpZW50Pih3a0NsaWVudCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKaW5kZXggYjYzODgxNTVj
ZDMwMzZlNjY2MTEwZjE5MjU2MTZhZmQzN2U4NjhiYS4uN2NkOGZkMGQ5ODRjZmQ5ZjRkNDRiZmU4
M2Q4NWRiMWI1NjE3NTk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VVSUNsaWVudC5oCkBAIC0xMzYsNiArMTM2LDcgQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdl
RGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlQ2FsbGJhY2spKFdL
UGEKIHR5cGVkZWYgYm9vbCAoKldLUGFnZVNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRN
b3Rpb25BY2Nlc3NDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYg
c2VjdXJpdHlPcmlnaW4sIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogCiB0eXBlZGVmIHZvaWQg
KCpXS1BhZ2VSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FsbGJhY2spKCk7Cit0eXBlZGVmIHZv
aWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHJlcXVlc3Rp
bmdPcmlnaW4sIFdLU2VjdXJpdHlPcmlnaW5SZWYgdG9wT3JpZ2luLCBXS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIGNhbGxiYWNrKTsKIAogLy8gRGVwcmVjYXRlZAogdHlw
ZWRlZiBXS1BhZ2VSZWYgKCpXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2tfZGVwcmVjYXRlZEZv
clVzZVdpdGhWMCkoV0tQYWdlUmVmIHBhZ2UsIFdLRGljdGlvbmFyeVJlZiBmZWF0dXJlcywgV0tF
dmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CkBAIC0xMzUzLDYgKzEzNTQsMTE3IEBAIHR5cGVkZWYg
c3RydWN0IFdLUGFnZVVJQ2xpZW50VjE0IHsKICAgICBXS1BhZ2VSdW5XZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWw7CiB9IFdLUGFnZVVJQ2xpZW50VjE0OwogCit0eXBlZGVmIHN0cnVjdCBXS1Bh
Z2VVSUNsaWVudFYxNSB7CisgICAgV0tQYWdlVUlDbGllbnRCYXNlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOworCisgICAgLy8gVmVyc2lvbiAw
LgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYw
ICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOwor
ICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2hvd1BhZ2U7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZTsKKyAgICBXS1Bh
Z2VUYWtlRm9jdXNDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRha2VGb2N1czsKKyAgICBXS1BhZ2VGb2N1c0NhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzOworICAgIFdLUGFnZVVuZm9j
dXNDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5mb2N1czsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVk
Rm9yVXNlV2l0aFYwICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9y
VXNlV2l0aFYwOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVw
cmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VTZXRTdGF0dXNUZXh0Q2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXR1c1RleHQ7CisgICAgV0tQ
YWdlTW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYw
ICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOwor
ICAgIFdLUGFnZU1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZv
clVzZVdpdGhWMCAgICAgbWlzc2luZ1BsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMDsKKyAgICBXS1BhZ2VEaWROb3RIYW5kbGVLZXlFdmVudENhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZE5vdEhhbmRsZUtleUV2ZW50OworICAgIFdLUGFn
ZURpZE5vdEhhbmRsZVdoZWVsRXZlbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlkTm90SGFuZGxlV2hlZWxFdmVudDsKKyAgICBXS1BhZ2VHZXRUb29sYmFyc0FyZVZp
c2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJzQXJl
VmlzaWJsZTsKKyAgICBXS1BhZ2VTZXRUb29sYmFyc0FyZVZpc2libGVDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvb2xiYXJzQXJlVmlzaWJsZTsKKyAgICBXS1Bh
Z2VHZXRNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1lbnVCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlU2V0TWVudUJhcklzVmlzaWJsZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNZW51QmFySXNWaXNp
YmxlOworICAgIFdLUGFnZUdldFN0YXR1c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFnZVNldFN0
YXR1c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0U3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFnZUdldElzUmVzaXphYmxlQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZXNpemFibGU7CisgICAg
V0tQYWdlU2V0SXNSZXNpemFibGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRJc1Jlc2l6YWJsZTsKKyAgICBXS1BhZ2VHZXRXaW5kb3dGcmFtZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFdpbmRvd0ZyYW1l
OworICAgIFdLUGFnZVNldFdpbmRvd0ZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0V2luZG93RnJhbWU7CisgICAgV0tQYWdlUnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNiAgICBydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWNjsKKyAgICBXS1BhZ2VV
SUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpZERyYXc7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlRGlkU2Nyb2xsOworICAgIFdLUGFnZUV4
Y2VlZGVkRGF0YWJhc2VRdW90YUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZWVkZWREYXRhYmFzZVF1b3RhOworICAgIFdLUGFnZVJ1bk9wZW5QYW5lbENhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuT3BlblBhbmVsOwor
ICAgIFdLUGFnZURlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxs
YmFjayAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dDsKKyAgICBXS1BhZ2VIZWFkZXJIZWlnaHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGhlYWRlckhlaWdodDsKKyAgICBXS1BhZ2VGb290ZXJIZWlnaHRD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3Rlckhl
aWdodDsKKyAgICBXS1BhZ2VEcmF3SGVhZGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRyYXdIZWFkZXI7CisgICAgV0tQYWdlRHJhd0Zvb3RlckNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3Rm9v
dGVyOworICAgIFdLUGFnZVByaW50RnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJpbnRGcmFtZTsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bk1vZGFs
OworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW51c2VkMTsgLy8gVXNlZCB0byBiZSBkaWRDb21wbGV0ZVJ1YmJl
ckJhbmRGb3JNYWluRnJhbWUKKyAgICBXS1BhZ2VTYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9s
ZGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXI7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0X3VuYXZh
aWxhYmxlOworCisgICAgLy8gVmVyc2lvbiAxLgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFn
ZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOworICAgIFdLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVt
ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQ7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RDYWxsYmFjayAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRD
YWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xp
Y2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOworCisgICAgLy8gVmVyc2lvbiAyLgorICAgIFdL
UGFnZVNob3dDb2xvclBpY2tlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2hvd0NvbG9yUGlja2VyOworICAgIFdLUGFnZUhpZGVDb2xvclBpY2tlckNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUNvbG9yUGlja2Vy
OworICAgIFdLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkOworCisgICAg
Ly8gVmVyc2lvbiAzLgorICAgIFdLUGFnZVBpbm5lZFN0YXRlRGlkQ2hhbmdlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkU3RhdGVEaWRDaGFuZ2U7CisKKyAg
ICAvLyBWZXJzaW9uIDQuCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQyOyAvLyBVc2VkIHRvIGJlIGRp
ZEJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcy4KKyAgICB2b2lkKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
dXNlZDM7IC8vIFVzZWQgdG8gYmUgZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MuCisgICAgdm9p
ZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnVzZWQ0OyAvLyBVc2VkIHRvIGJlIGRpZENhbmNlbFRyYWNraW5nUG90ZW50aWFs
TG9uZ01vdXNlUHJlc3MuCisgICAgV0tQYWdlSXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2VDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZTsK
KworICAgIC8vIFZlcnNpb24gNS4KKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZvclVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZURpZENsaWNrQXV0b0ZpbGxCdXR0b25D
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ2xpY2tBdXRvRmlsbEJ1
dHRvbjsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9y
VXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNl
V2l0aFY1OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZv
clVzZVdpdGhWNTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNTsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVk
aWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCisKKyAgICAvLyBWZXJzaW9uIDYuCisgICAgV0tQ
YWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVOZXdQYWdlOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0
OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm07CisgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdFByb21wdENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dW5KYXZhU2NyaXB0UHJvbXB0OworICAgIFdLQ2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tVc2VyTWVkaWFQZXJtaXNz
aW9uRm9yT3JpZ2luOworCisgICAgLy8gVmVyc2lvbiA3LgorICAgIFdLUGFnZVJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsOworICAgIFdLRnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5l
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVlbk1heVJldHVy
blRvSW5saW5lOworCisgICAgLy8gVmVyc2lvbiA4LgorICAgIFdLUmVxdWVzdFBvaW50ZXJMb2Nr
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFBv
aW50ZXJMb2NrOworICAgIFdLRGlkTG9zZVBvaW50ZXJMb2NrQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkTG9zZVBvaW50ZXJMb2NrOworCisgICAgLy8g
VmVyc2lvbiA5LgorICAgIFdLSGFuZGxlQXV0b3BsYXlFdmVudENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQXV0b3BsYXlFdmVudDsKKworICAgIC8v
IFZlcnNpb24gMTAuCisgICAgV0tIYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBoYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURp
ZENoYW5nZTsKKyAgICBXS0RpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZv
cmVncm91bmRDYWxsYmFjayAgICAgICAgIGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0
V2hpbGVJbkZvcmVncm91bmQ7CisKKyAgICAvLyBWZXJzaW9uIDExLgorICAgIFdLUGFnZURpZFJl
c2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZUNhbGxiYWNrICAgICAgICAg
ZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlOworCisgICAgLy8g
VmVyc2lvbiAxMi4KKyAgICBXS1BhZ2VSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm1DYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybTsK
KworICAgIC8vIFZlcnNpb24gMTMuCisgICAgV0tQYWdlU2hvdWxkQWxsb3dEZXZpY2VPcmllbnRh
dGlvbkFuZE1vdGlvbkFjY2Vzc0NhbGxiYWNrICAgICAgICAgICBzaG91bGRBbGxvd0RldmljZU9y
aWVudGF0aW9uQW5kTW90aW9uQWNjZXNzOworCisgICAgLy8gVmVyc2lvbiAxNC4KKyAgICBXS1Bh
Z2VSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWw7CisKKyAgICAvLyBWZXJzaW9uIDE1Lgor
ICAgIFdLUGFnZURlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3RDYWxsYmFjayAgICAgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdDsKKyAgICAKK30gV0tQYWdlVUlDbGllbnRWMTU7CisKICNpZmRlZiBfX2NwbHVzcGx1
cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI3YmU5ZGIwNzFjMzc1N2I0OTIxMTZiZjZiYzI2YzQyZmY3NjEzYTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suaCIKKworI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0dldFR5cGVJRCgpCit7CisgICAgcmV0
dXJuIHRvQVBJKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpBUElUeXBlKTsK
K30KKwordm9pZCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUo
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBzcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFjaywgYm9vbCBncmFudGVkKQoreworICAgIHJldHVybiB0b0ltcGwo
c3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2spLT5jb21wbGV0ZShncmFudGVkKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
OGFlYWZjNjk4NGJhOTZmNTQ4OTJlNzMyYWZlYTNhMDYzYzljNzJkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjay5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitl
eHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFja0dldFR5cGVJRCh2b2lkKTsKKworV0tfRVhQT1JUIHZvaWQg
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0NvbXBsZXRlKFdLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2ssIGJvb2wgZ3JhbnRlZCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVn
YXRlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxl
Z2F0ZVByaXZhdGUuaAppbmRleCBkMWVhZTIwMWU2NTQyZjRmYWI2MDE5ODBkYzY2MTI0OTEzMTk3
OTNmLi41ZWFiNDY1NzlmOTlmYTZmNjMzMTZhNGMwNTQ0MjJkNjNhNmZkOTE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmgKQEAgLTE1Miw2ICsxNTIsOCBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogCiAtICh2b2lk
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHdpbGxTaGFyZUFjdGl2aXR5SXRlbXM6KE5T
QXJyYXkgKilhY3Rpdml0eUl0ZW1zIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsK
IAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopcmVxdWVzdGlu
Z09yaWdpbiB0b3BPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKil0b3BPcmlnaW4gZGVjaXNpb25I
YW5kbGVyOih2b2lkICheKShCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAjaWYgVEFS
R0VUX09TX0lQSE9ORQogCiAtIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHNo
b3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJ
bmZvICopZWxlbWVudCBXS19BUElfQVZBSUxBQkxFKGlvcyg5LjApKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzA1ZTk1Y2ZkYTQw
MjVjZGRjYzBhYTRmZDUxZTc0M2FjYTM0MTRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNv
Y29hLm1tCkBAIC0wLDAgKzEsMjE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCisKKyNpbXBv
cnQgIkFQSVNlY3VyaXR5T3JpZ2luLmgiCisjaW1wb3J0ICJBUElVSUNsaWVudC5oIgorI2ltcG9y
dCAiU2FuZGJveFV0aWxpdGllcy5oIgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQ
SS5oPgorCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorI2ltcG9ydCA8U3BlZWNoL1NwZWVj
aC5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKFNwZWVjaCkKK1NPRlRfTElOS19DTEFTUyhTcGVl
Y2gsIFNGU3BlZWNoUmVjb2duaXplcikKKyNlbmRpZgorCisjaW1wb3J0IDxwYWwvY29jb2EvQVZG
b3VuZGF0aW9uU29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBib29s
IHBlcmZvcm1TYW5kYm94Q2hlY2soKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoY3Vy
cmVudFByb2Nlc3NJc1NhbmRib3hlZCgpICYmICEhc2FuZGJveF9jaGVjayhnZXRwaWQoKSwgImRl
dmljZS1taWNyb3Bob25lIiwgU0FOREJPWF9GSUxURVJfTk9ORSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9udEhh
bmRsZXIpCit7CisgICAgbV9yZXF1ZXN0cy5hcHBlbmQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdDo6Y3JlYXRlKG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9udEhhbmRsZXIpKSk7
CisgICAgaWYgKG1fcmVxdWVzdHMuc2l6ZSgpID09IDEpCisgICAgICAgIHN0YXJ0TmV4dFJlcXVl
c3QoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFy
dE5leHRSZXF1ZXN0KCkKK3sKKyAgICBjaGVja1NhbmRib3hSZXF1aXJlbWVudCgpOworfQorCit2
b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVudFJl
cXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb24gZGVjaXNp
b24pCit7CisgICAgQVNTRVJUKCFtX3JlcXVlc3RzLmlzRW1wdHkoKSk7CisgICAgYXV0byBjdXJy
ZW50UmVxdWVzdCA9IG1fcmVxdWVzdHMudGFrZUZpcnN0KCk7CisgICAgY3VycmVudFJlcXVlc3Qt
PmNvbXBsZXRlKGRlY2lzaW9uKTsKKworICAgIHN0YXJ0TmV4dFJlcXVlc3QoKTsKK30KKwordm9p
ZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1NhbmRib3hSZXF1aXJl
bWVudCgpCit7CisgICAgaWYgKCFtX2lzU2FuZGJveENoZWNrUGFzc2VkLmhhc1ZhbHVlKCkpCisg
ICAgICAgIG1faXNTYW5kYm94Q2hlY2tQYXNzZWQgPSBwZXJmb3JtU2FuZGJveENoZWNrKCk7CisK
KyAgICBpZiAoIW1faXNTYW5kYm94Q2hlY2tQYXNzZWQpIHsKKyAgICAgICAgY29tcGxldGVDdXJy
ZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6
RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjaGVja01pY3JvcGhvbmVBY2Nl
c3MoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVj
a01pY3JvcGhvbmVBY2Nlc3MoKQoreworICAgIGlmIChtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhv
cml6ZWQuaGFzVmFsdWUoKSAmJiBtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQudmFsdWUo
KSkgeworICAgICAgICBjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9y
aXplZC5oYXNWYWx1ZSgpICYmICFtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQudmFsdWUo
KSkgeworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIE5vIHByb21wdCBmb3IgbWljcm9waG9uZSBvciBzcGVlY2ggcmVjb2duaXRpb24g
c2VydmljZS4KKyAgICBpZiAobV9wYWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2Vz
RW5hYmxlZCgpKSB7CisgICAgICAgIGNoZWNrVXNlclBlcm1pc3Npb25Gb3JPcmlnaW4oKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikgJiYgVVNF
KEFWRk9VTkRBVElPTikKKyAgICBhdXRvIG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID0g
W1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0aW9uU3RhdHVzRm9yTWVk
aWFUeXBlOkFWTWVkaWFUeXBlQXVkaW9dOworICAgIGlmIChtaWNyb3Bob25lQXV0aG9yaXphdGlv
blN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkKSB7CisgICAgICAgIG1f
aXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZCA9IHRydWU7CisgICAgICAgIGNoZWNrU3BlZWNo
UmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgaWYgKG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlv
blN0YXR1c0RlbmllZCB8fCBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhv
cml6YXRpb25TdGF0dXNSZXN0cmljdGVkKSB7CisgICAgICAgIG1faXNNaWNyb3Bob25lQWNjZXNz
QXV0aG9yaXplZCA9IGZhbHNlOworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1
cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkKTsKKyAgICBhdXRvIGRlY2lz
aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyld
KEJPT0wgaXNBdXRob3JpemVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIWlzQXV0aG9yaXplZCkgeworICAgICAg
ICAgICAgd2Vha1RoaXMtPm1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZCA9IGZhbHNlOwor
ICAgICAgICAgICAgd2Vha1RoaXMtPmNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgd2Vha1RoaXMtPm1faXNNaWNyb3Bob25lQWNjZXNz
QXV0aG9yaXplZCA9IHRydWU7CisgICAgICAgIHdlYWtUaGlzLT5jaGVja1NwZWVjaFJlY29nbml0
aW9uU2VydmljZUFjY2VzcygpOworICAgIH0pOworICAgIFtQQUw6OmdldEFWQ2FwdHVyZURldmlj
ZUNsYXNzKCkgcmVxdWVzdEFjY2Vzc0Zvck1lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvIGNvbXBs
ZXRpb25IYW5kbGVyOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07CisjZWxzZQorICAgIG1faXNNaWNy
b3Bob25lQWNjZXNzQXV0aG9yaXplZCA9IHRydWU7CisgICAgY2hlY2tTcGVlY2hSZWNvZ25pdGlv
blNlcnZpY2VBY2Nlc3MoKTsKKyNlbmRpZiAvLyBIQVZFKFNQRUVDSFJFQ09HTklaRVIpICYmIFVT
RShBVkZPVU5EQVRJT04pCit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKQoreworICAgIGlmICgh
bV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQpCisgICAgICAgIG1f
aXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkID0gdHJ1ZTsKKworICAg
IGlmIChtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZC5oYXNWYWx1
ZSgpKSB7CisgICAgICAgIGlmIChtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0
aG9yaXplZC52YWx1ZSgpKQorICAgICAgICAgICAgY2hlY2tVc2VyUGVybWlzc2lvbkZvck9yaWdp
bigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKyAgICBhdXRv
IHNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzID0gW2dldFNGU3BlZWNoUmVjb2du
aXplckNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c107CisgICAgaWYgKHNwZWVjaFJlY29nbml6
ZXJBdXRob3JpemF0aW9uU3RhdHVzID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25T
dGF0dXNBdXRob3JpemVkKSB7CisgICAgICAgIG1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VB
Y2Nlc3NBdXRob3JpemVkID0gdHJ1ZTsKKyAgICAgICAgY2hlY2tVc2VyUGVybWlzc2lvbkZvck9y
aWdpbigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHNwZWVjaFJlY29nbml6
ZXJBdXRob3JpemF0aW9uU3RhdHVzID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25T
dGF0dXNSZXN0cmljdGVkIHx8IHNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzID09
IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQpIHsKKyAgICAgICAg
bV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQgPSBmYWxzZTsKKyAg
ICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0OjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBB
U1NFUlQoc3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNv
Z25pemVyQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQpOworICAgIGF1dG8gZGVjaXNp
b25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0o
U0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMpIG11dGFibGUgewor
ICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlm
IChzdGF0dXMgIT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6
ZWQpIHsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5tX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNl
QWNjZXNzQXV0aG9yaXplZCA9IGZhbHNlOworICAgICAgICAgICAgd2Vha1RoaXMtPmNvbXBsZXRl
Q3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNp
b246OkRlbnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgd2Vh
a1RoaXMtPm1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkID0gdHJ1
ZTsKKyAgICAgICAgd2Vha1RoaXMtPmNoZWNrVXNlclBlcm1pc3Npb25Gb3JPcmlnaW4oKTsKKyAg
ICB9KTsKKyAgICBbZ2V0U0ZTcGVlY2hSZWNvZ25pemVyQ2xhc3MoKSByZXF1ZXN0QXV0aG9yaXph
dGlvbjpkZWNpc2lvbkhhbmRsZXIuZ2V0KCldOworI2Vsc2UKKyAgICBtX2lzU3BlZWNoUmVjb2du
aXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCA9IHRydWU7CisgICAgY2hlY2tVc2VyUGVybWlz
c2lvbkZvck9yaWdpbigpOworI2VuZGlmIC8vIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKK30KKwor
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1VzZXJQZXJtaXNz
aW9uRm9yT3JpZ2luKCkKK3sKKyAgICBBU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKyAg
ICBhdXRvJiBjdXJyZW50UmVxdWVzdCA9IG1fcmVxdWVzdHMuZmlyc3QoKTsKKworICAgIGF1dG8g
Y2xpZW50T3JpZ2luID0gY3VycmVudFJlcXVlc3QtPm9yaWdpbigpOworICAgIGlmIChtX29yaWdp
blBlcm1pc3Npb25NYXAuY29udGFpbnMoY2xpZW50T3JpZ2luKSkgeworICAgICAgICBib29sIGdy
YW50ZWQgPSBtX29yaWdpblBlcm1pc3Npb25NYXAuZ2V0KGNsaWVudE9yaWdpbik7CisgICAgICAg
IGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoZ3JhbnRlZCA/IFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpBbGxvdyA6IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8gZGVjaXNpb25IYW5kbGVyID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShi
b29sIGlzUGVybWl0dGVkKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgQVNTRVJUKCF3ZWFrVGhpcy0+bV9yZXF1ZXN0cy5pc0VtcHR5KCkp
OworICAgICAgICB3ZWFrVGhpcy0+bV9vcmlnaW5QZXJtaXNzaW9uTWFwLnNldCh3ZWFrVGhpcy0+
bV9yZXF1ZXN0cy5maXJzdCgpLT5vcmlnaW4oKSwgaXNQZXJtaXR0ZWQpOworICAgICAgICB3ZWFr
VGhpcy0+Y29tcGxldGVDdXJyZW50UmVxdWVzdChpc1Blcm1pdHRlZCA/IFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpBbGxvdyA6IFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICB9OworCisgICAgYXV0byBy
ZXF1ZXN0aW5nT3JpZ2luID0gY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbi5zZWN1cml0eU9yaWdp
bigpOworICAgIGF1dG8gdG9wT3JpZ2luID1jbGllbnRPcmlnaW4udG9wT3JpZ2luLnNlY3VyaXR5
T3JpZ2luKCk7CisgICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShyZXF1ZXN0aW5nT3JpZ2luLmdldCgpKS5nZXQoKSwgQVBJOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKHRvcE9yaWdpbi5nZXQoKSkuZ2V0KCksIFdURk1vdmUoZGVjaXNpb25IYW5kbGVyKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLmgKaW5kZXggOGEwOTQ3NDVjMWYyNGJlMTA1ZGJiMDJhYjkxZTMwN2Iz
MWQ0ODZiMS4uZWFkNGQ1N2VlMGEzM2E2YjNlZWJiZGVjNDNmOGI3Mzk1NWQ5NzYwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtMTYxLDYgKzE2MSw3
IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICAgICAgdm9pZCBydW5XZWJB
dXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQSTo6V2ViQXV0aGVudGljYXRpb25Q
YW5lbCYsIFdlYkZyYW1lUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYpIGZpbmFsOwogI2VuZGlmCisg
ICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdChXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgQVBJOjpTZWN1cml0eU9y
aWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogCiAgICAgICAg
IFVJRGVsZWdhdGUmIG1fdWlEZWxlZ2F0ZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggZDAzMzhmOGQ2ZTNiOWExM2RmMmFmMTUzYWNi
NWRlYjM4ZTFmY2Q5Yi4uMTkzNDU2YjFjMDc4Njc5Njk2MTk0YjM1MzFiYzY1ZGM0MTU1MTllOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMzMy
LDQgKzEzMzIsMjYgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6aW1hZ2VPck1lZGlhRG9j
dW1lbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXoKICAgICBbc3RhdGljX2Nhc3Q8
aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+PihkZWxlZ2F0ZSkgX3dlYlZpZXc6bV91aURlbGVnYXRl
Lm1fd2ViVmlldyBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkOm5ld1NpemVdOwogfQog
Cit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6OlNl
Y3VyaXR5T3JpZ2luJiByZXF1ZXN0aW5nT3JpZ2luLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiB0b3BP
cmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IChpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pbV91aURl
bGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVl
c3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46dG9wT3JpZ2luOmRlY2lzaW9u
SGFuZGxlcjopXSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNh
bGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUsIEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOnRvcE9yaWdpbjpkZWNpc2lvbkhhbmRs
ZXI6KSk7CisgICAgW2RlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcmVx
dWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkZvck9yaWdpbjp3cmFwcGVyKHJlcXVlc3Rp
bmdPcmlnaW4pIHRvcE9yaWdpbjp3cmFwcGVyKHRvcE9yaWdpbikgZGVjaXNpb25IYW5kbGVyOm1h
a2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGNvbXBsZXRpb25I
YW5kbGVyLCB7IH0pLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wgZ3JhbnRlZCkg
bXV0YWJsZSB7CisgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5D
YWxsZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGdyYW50ZWQpOwor
ICAgIH0pLmdldCgpXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyNWJkYzM0NWRkMTAwZTBlOTFiMWM3M2VhNTNiY2U5
ZjE3M2IyYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtMCwwICsxLDc2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXIoV2ViUGFnZVByb3h5JiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6On5TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyKCkKK3sKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3JlcXVlc3RzKQorICAg
ICAgICByZXF1ZXN0LT5jb21wbGV0ZShTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
OjpEZWNpc2lvbjo6RGVueSk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisKK3ZvaWQgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdChjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworfQorCit2b2lkIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0TmV4dFJlcXVlc3QoKQoreworfQor
Cit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVu
dFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb24pCit7
Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTYW5k
Ym94UmVxdWlyZW1lbnQoKQoreworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OmNoZWNrTWljcm9waG9uZUFjY2VzcygpCit7Cit9CisKK3ZvaWQgU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VB
Y2Nlc3MoKQoreworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6
OmNoZWNrVXNlclBlcm1pc3Npb25Gb3JPcmlnaW4oKQoreworfQorCisjZW5kaWYKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Njg5
YzVkZDU4ODc4OThiNTdkYzJjOWY0NmNhMjM0NDJhZDdlNTg4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
ci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcihXZWJQ
YWdlUHJveHkmKTsKKyAgICB+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcigpOwor
ICAgIHZvaWQgcmVxdWVzdChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHN0YXJ0TmV4dFJl
cXVlc3QoKTsKKyAgICB2b2lkIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb24pOworICAgIHZvaWQgY2hlY2tTYW5kYm94UmVx
dWlyZW1lbnQoKTsKKyAgICB2b2lkIGNoZWNrTWljcm9waG9uZUFjY2VzcygpOworICAgIHZvaWQg
Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKKyAgICB2b2lkIGNoZWNrVXNl
clBlcm1pc3Npb25Gb3JPcmlnaW4oKTsKKworICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOworICAg
IERlcXVlPFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Pj4gbV9yZXF1ZXN0
czsKKyAgICBPcHRpb25hbDxib29sPiBtX2lzU2FuZGJveENoZWNrUGFzc2VkOworICAgIE9wdGlv
bmFsPGJvb2w+IG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZDsKKyAgICBPcHRpb25hbDxi
b29sPiBtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZDsKKyAgICBI
YXNoTWFwPENsaWVudE9yaWdpbiwgYm9vbD4gbV9vcmlnaW5QZXJtaXNzaW9uTWFwOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDBhM2MzMGI4ZjUxYzFjYmUxZWNmNmUxYWNiZjhkN2Y0YWI1NDgyOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3QuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgor
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCA6IHB1YmxpYyBSZWZD
b3VudGVkPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+IGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Qob3JpZ2luLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIH0KKworICAgIGVudW0gY2xhc3MgRGVjaXNp
b24geyBEZW55LCBBbGxvdyB9OworICAgIHZvaWQgY29tcGxldGUoRGVjaXNpb24gZGVjaXNpb24p
CisgICAgeworICAgICAgICBib29sIGlzQWxsb3dlZCA9IGRlY2lzaW9uID09IERlY2lzaW9uOjpB
bGxvdzsKKyAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9j
b21wbGV0aW9uSGFuZGxlciwgeyB9KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNBbGxv
d2VkKTsKKyAgICB9CisKKyAgICBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CisKK3ByaXZhdGU6CisgICAgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICAgICAgOiBtX29yaWdpbihvcmlnaW4pCisgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICB7IH0KKworICAgIFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiBtX29yaWdpbjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX2Nv
bXBsZXRpb25IYW5kbGVyOworfTsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2sgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaz4geworcHVibGljOgorICAgIHN0YXRpYyBS
ZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+IGNyZWF0ZShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2so
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBsZXRl
KGJvb2wgZ3JhbnRlZCkgeyBtX2NvbXBsZXRpb25IYW5kbGVyKGdyYW50ZWQpOyB9CisKK3ByaXZh
dGU6CisgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2soQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgOiBtX2NvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgIHsgfQorCisgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCmluZGV4IDFiODgxZWRmNWQzMDQ4ZGViNzAwOTE0
OTc5ZGM1NjhlYTBhNWRiMTIuLmM4NDVlMTAxMzMyNGM0NmNkODMwYzE2NTI5ZmFkZTMyYzEyMjM4
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9u
U2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5jcHAKQEAgLTMyLDkgKzMyLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1T
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKK1NwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNwZWVjaFJlY29nbml0
aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBQZXJtaXNzaW9uQ2hlY2tlciYmIHBlcm1p
c3Npb25DaGVja2VyKQogICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiAg
ICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fcGVybWlzc2lvbkNoZWNrZXIo
V1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlcikpCiB7CiB9CiAKQEAgLTEwNSw3ICsxMDYsMzUgQEAg
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGkKICAgICB9CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OnN0YXJ0UG9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3QmKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnRQb2Nlc3NpbmdS
ZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAg
ICByZXF1ZXN0LnNldElzV2FpdGluZ0ZvclBlcm1pc3Npb25DaGVjayh0cnVlKTsKKyAgICBtX3Bl
cm1pc3Npb25DaGVja2VyKHJlcXVlc3QuY2xpZW50T3JpZ2luKCksIFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWFrUmVxdWVzdCA9IG1ha2VXZWFrUHRyKHJlcXVlc3QpXShi
b29sIGdyYW50ZWQpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAoIXdlYWtSZXF1ZXN0KQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIEFTU0VSVChtX2N1cnJlbnRSZXF1ZXN0ID09IHdlYWtSZXF1ZXN0LmdldCgpKTsKKyAg
ICAgICAgaWYgKCF3ZWFrUmVxdWVzdC0+aXNXYWl0aW5nRm9yUGVybWlzc2lvbkNoZWNrKCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHdlYWtSZXF1ZXN0LT5zZXRJc1dhaXRpbmdGb3JQ
ZXJtaXNzaW9uQ2hlY2soZmFsc2UpOworCisgICAgICAgIGlmICghZ3JhbnRlZCkgeworICAgICAg
ICAgICAgYXV0byBlcnJvciA9IFNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBTcGVlY2hSZWNvZ25p
dGlvbkVycm9yVHlwZTo6Tm90QWxsb3dlZCwgIlBlcm1pc3Npb24gY2hlY2sgZmFpbHMiX3MgfTsK
KyAgICAgICAgICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRh
dGU6OmNyZWF0ZUVycm9yKHdlYWtSZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCksIGVycm9yKTsK
KyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bjo6RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50aWZpZXIpOworICAgICAgICAgICAg
bV9jdXJyZW50UmVxdWVzdCA9IG51bGxwdHI7CisgICAgICAgICAgICBwcm9jZXNzTmV4dFBlbmRp
bmdSZXF1ZXN0SWZOZWVkZWQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoKndlYWtSZXF1ZXN0KTsKKyAgICB9KTsK
K30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6Y29udGludWVQcm9jZXNzaW5nUmVx
dWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAppbmRleCA3
YWEyNDE2MzhiOWMzNTE0OTY2OTg0NDMyZGJjNTMwZGY4NDg0YTM3Li5mNGRhNTE3YmY1YTk2ZDRh
NjdiZDBkZTc1OWRhMmVhZjkzZDM5OGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKQEAgLTM2LDExICszNiwxMiBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIAogdXNpbmcgU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXJJZGVudGlmaWVyID0gV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI7Cit1c2luZyBQ
ZXJtaXNzaW9uQ2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik+OwogCiBjbGFz
cyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNw
ZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllcik7CisgICAgU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVu
dGlmaWVyLCBQZXJtaXNzaW9uQ2hlY2tlciYmKTsKIAogICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsKICAgICB2b2lkIHN0b3AoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CkBAIC01Myw2ICs1
NCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBUT0RPOiBpbXBsZW1lbnQgdGhlc2UuCiAgICAgdm9p
ZCBzdGFydFBvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
Jik7CisgICAgdm9pZCBjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdCYpOwogICAgIHZvaWQgc3RvcFByb2Nlc3NpbmdSZXF1ZXN0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIuCkBAIC02Niw2ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBEZXF1ZTxSZWY8V2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0Pj4gbV9wZW5kaW5nUmVxdWVzdHM7CiAgICAgUmVmUHRyPFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBQ
ZXJtaXNzaW9uQ2hlY2tlciBtX3Blcm1pc3Npb25DaGVja2VyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KaW5kZXgg
NGRjOTdlODkzOTBlODVhYWE1NWVkZTRlZjI4MDFlMWI2NzhiM2RkZS4uYjUyMmIzYjc5MmFlNGUw
NGJlYjZmYmIzNTY3OTEzZWQyOWY1OWY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0
aGVudGljYXRvci5tbQpAQCAtMTQwLDE0ICsxNDAsMTQgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rv
cjxSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4+IGdldEV4aXN0aW5nQ3JlZGVu
dGkKICAgICAgICAgfQogICAgICAgICBhdXRvJiByZXNwb25zZU1hcCA9IGRlY29kZWRSZXNwb25z
ZS0+Z2V0TWFwKCk7CiAKLSAgICAgICAgYXV0byBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUihr
RW50aXR5SWRNYXBLZXkpKTsKKyAgICAgICAgYXV0byBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JP
UihmaWRvOjprRW50aXR5SWRNYXBLZXkpKTsKICAgICAgICAgaWYgKGl0ID09IHJlc3BvbnNlTWFw
LmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKSB7CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
ICAgIH0KICAgICAgICAgYXV0byYgdXNlckhhbmRsZSA9IGl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmlu
ZygpOwogCi0gICAgICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKGtFbnRpdHlOYW1lTWFw
S2V5KSk7CisgICAgICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKGZpZG86OmtFbnRpdHlO
YW1lTWFwS2V5KSk7CiAgICAgICAgIGlmIChpdCA9PSByZXNwb25zZU1hcC5lbmQoKSB8fCAhaXQt
PnNlY29uZC5pc1N0cmluZygpKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0yOTEsOCArMjkxLDggQEAgdm9p
ZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJWZXJp
ZmljYXRpb24oU2VjQWNjZXNzQ28KICAgICBjb25zdCBhdXRvJiBzZWNBdHRyTGFiZWwgPSBjcmVh
dGlvbk9wdGlvbnMucnAuaWQ7CiAKICAgICBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlIHVzZXJF
bnRpdHlNYXA7Ci0gICAgdXNlckVudGl0eU1hcFtjYm9yOjpDQk9SVmFsdWUoa0VudGl0eUlkTWFw
S2V5KV0gPSBjYm9yOjpDQk9SVmFsdWUoY3JlYXRpb25PcHRpb25zLnVzZXIuaWRWZWN0b3IpOwot
ICAgIHVzZXJFbnRpdHlNYXBbY2Jvcjo6Q0JPUlZhbHVlKGtFbnRpdHlOYW1lTWFwS2V5KV0gPSBj
Ym9yOjpDQk9SVmFsdWUoY3JlYXRpb25PcHRpb25zLnVzZXIubmFtZSk7CisgICAgdXNlckVudGl0
eU1hcFtjYm9yOjpDQk9SVmFsdWUoZmlkbzo6a0VudGl0eUlkTWFwS2V5KV0gPSBjYm9yOjpDQk9S
VmFsdWUoY3JlYXRpb25PcHRpb25zLnVzZXIuaWRWZWN0b3IpOworICAgIHVzZXJFbnRpdHlNYXBb
Y2Jvcjo6Q0JPUlZhbHVlKGZpZG86OmtFbnRpdHlOYW1lTWFwS2V5KV0gPSBjYm9yOjpDQk9SVmFs
dWUoY3JlYXRpb25PcHRpb25zLnVzZXIubmFtZSk7CiAgICAgYXV0byB1c2VyRW50aXR5ID0gY2Jv
cjo6Q0JPUldyaXRlcjo6d3JpdGUoY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUodXNlckVudGl0eU1h
cCkpKTsKICAgICBBU1NFUlQodXNlckVudGl0eSk7CiAgICAgYXV0byBzZWNBdHRyQXBwbGljYXRp
b25UYWcgPSB0b05TRGF0YSgqdXNlckVudGl0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCA0MzAwZTFmNTIyZmY1MjI3NDhmMmIxZGY5MTM3ZGY3YTRkMjZj
NWE0Li4zMWYxOGZhMjRkYWJkMjdkZjc0YjI0MThhNTIyNzMyOWZkMmQ3NGJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg2LDYgKzg2LDcgQEAKICNpbmNs
dWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIlNhZmVCcm93c2luZ1dhcm5p
bmcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAi
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kVHlwZS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVk
ZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgpAQCAtMTAxNzEsNiArMTAxNzIsMTQgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoKQogICAgIH0p
OwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1f
c3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcikKKyAgICAgICAgbV9zcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyPigqdGhpcyk7CisKKyAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXItPnJlcXVlc3QoY2xpZW50T3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3Y2Vm
YmZjNjk0NWVkZmU0M2FlNTZjMmQ1NjRjMGU4MWU5NWJiNGE2Li44ZWExNDYwNDc4ODljZTczODJm
YjZlMDY5MjBhNGFhOWE0ZmQ3MTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMzA1LDYgKzMwNSw3IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1Bl
cmZvcm1hbmNlRGF0YTsKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOwogY2xhc3Mg
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTsKIGNsYXNzIFNlY0tleVByb3h5U3RvcmU7
CitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOwogY2xhc3MgVXNlckRh
dGE7CiBjbGFzcyBWaWV3U25hcHNob3Q7CiBjbGFzcyBWaXNpdGVkTGlua1N0b3JlOwpAQCAtMTgx
OSw2ICsxODIwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5n
RGVsYXkoU2Vjb25kcyBjYXB0dXJlUmVwb3J0aW5nRGVsYXkpIHsgbV9tZWRpYUNhcHR1cmVSZXBv
cnRpbmdEZWxheSA9IGNhcHR1cmVSZXBvcnRpbmdEZWxheTsgfQogICAgIHNpemVfdCBzdXNwZW5k
TWVkaWFQbGF5YmFja0NvdW50ZXIoKSB7IHJldHVybiBtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291
bnRlcjsgfQogCisgICAgdm9pZCByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOworCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vz
c1Byb3h5JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplKCk7CkBAIC0yODg4LDYgKzI4OTEsOCBAQCBwcml2YXRlOgogICAgIHNpemVf
dCBtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlciB7IDAgfTsKIAogICAgIE9wdGlvbmFsPFdl
YkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbj4gbV9uZXdQYWdlTmF2aWdhdGlvbkFkQ2xpY2tBdHRy
aWJ1dGlvbjsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyPiBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCmluZGV4IGY2Yjg2N2JkNTY0ZGZkMTcyZWJhM2RiODMzMjVjYzM3M2NkMjAwNjku
LmZmNGM5NzMxN2RiNmNhYWVlNzI2ZTQ4YWQ4Y2VhNmEzNmZmYjllOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTcxMiw3ICsxNzEyLDE4IEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcklkZW50CiB7CiAgICAgYXV0byBzcGVlY2hSZWNvZ25pdGlvblNl
cnZlciA9IG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNYXAuYWRkKGlkZW50aWZpZXIsIG51bGxw
dHIpOwogICAgIEFTU0VSVChzcGVlY2hSZWNvZ25pdGlvblNlcnZlci5pc05ld0VudHJ5KTsKLSAg
ICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlci5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFNw
ZWVjaFJlY29nbml0aW9uU2VydmVyPihtYWtlUmVmKCpjb25uZWN0aW9uKCkpLCBpZGVudGlmaWVy
KTsKKyAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlci5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5p
cXVlPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPihtYWtlUmVmKCpjb25uZWN0aW9uKCkpLCBpZGVu
dGlmaWVyLCBbJmlkZW50aWZpZXIsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0
IENsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgZm9yIChhdXRvKiBwYWdlIDogd2Vha1RoaXMtPnBhZ2VzKCkpIHsK
KyAgICAgICAgICAgIGlmIChwYWdlICYmIHBhZ2UtPndlYlBhZ2VJRCgpID09IGlkZW50aWZpZXIp
IHsKKyAgICAgICAgICAgICAgICBwYWdlLT5yZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uKG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CisgICAgfSk7CiAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVy
LCAqc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWQ2M2My
YjNlMjk4Nzg3N2JhZjJmNTU4OGU2N2MwMDc2MzViMTRlNC4uZWYxODg4ZmJmZTc5MDlhZmQ5ZmQ5
YzdhMTMwZjJiYTJjMzg4OTk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDA3LDYgKzE0MDcsOSBAQAogCQk5M0Q2Qjc4NzI1NEND
RDhDMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzg2MjU0
Q0NEOEIwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5o
ICovOyB9OwogCQk5M0Q2Qjc4ODI1NENDRDk0MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc3RTI1NENDQUJCMDA1OEREM0EgLyogV2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggKi87IH07CiAJCTkzRDZCNzhB
MjU0Q0Q0M0UwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNENkI3N0QyNTRDQ0FCQjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTkzRDZCN0I0MjU1MjY4RDUwMDU4REQz
QSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdBRjI1NTI2OEExMDA1OEREM0Eg
LyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oICovOyB9OworCQk5M0Q2QjdC
NTI1NTI2OEQ3MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3QjIy
NTUyNjhBMjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCAq
LzsgfTsKKwkJOTNENkI3QjkyNTUzNEExNzAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzRDZCN0I3MjU1MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTNFNkE0RUUxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1
bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTZB
NEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGNTQ5QjQxRTMxNzRCNzAwMEU3
MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFw
c2hvdENvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMs
ICk7IH07IH07CiAJCTk1MEYyODgwMjUyNDE0RUEwMEI3NEYxQyAvKiBXS01vdXNlRGV2aWNlT2Jz
ZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1
MEYyODdFMjUyNDE0RTkwMEI3NEYxQyAvKiBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIuaCAqLzsgfTsK
QEAgLTQ1MjUsNiArNDUyOCwxMiBAQAogCQk5M0Q2Qjc4MDI1NENDQUJDMDA1OEREM0EgLyogU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzRDZCNzgxMjU0Q0NBQkMwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25p
dGlvblNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCNzg2MjU0Q0NEOEIwMDU4REQzQSAvKiBX
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdBRjI1NTI2OEExMDA1OEREM0Eg
LyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0IwMjU1MjY4QTEwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdCMjI1NTI2OEEyMDA1OEREM0Eg
LyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0IzMjU1MjY4QkYwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0I3MjU1MzRB
MTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjgyNTUz
NEExMjAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
RTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0hpdFRlc3RSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25m
aWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU25hcHNob3RD
b25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjU0OUI1MUUz
MTc0REEwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU25hcHNob3RDb25maWd1cmF0aW9uLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQ2NSw2ICs2NDc0LDcgQEAKIAkJCQk1Q0E5
ODU0QjIxMEJFQjczMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tICovLAog
CQkJCTFBMDAyRDQ3MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcuaCAqLywK
IAkJCQkxQTAwMkQ0NjE5NkIzNDVEMDBCOUFENDQgLyogU2Vzc2lvblN0YXRlQ29kaW5nLm1tICov
LAorCQkJCTkzRDZCN0IzMjU1MjY4QkYwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyQ29jb2EubW0gKi8sCiAJCQkJMzE1NzEzNUMyMDQwQTlCMjAwODRGOUNGIC8q
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gKi8sCiAJCQkJMkQwQ0Y2NEMyMUYyQTgw
MzAwNzg3NTY2IC8qIFRleHRDaGVja2luZ0NvbnRyb2xsZXIuaCAqLywKIAkJCQkyRDBDRjY0QjIx
RjJBODAzMDA3ODc1NjYgLyogVGV4dENoZWNraW5nQ29udHJvbGxlci5tbSAqLywKQEAgLTkxOTYs
NiArOTIwNiw5IEBACiAJCQkJQkMxMTFCMDgxMTJGNUUzQzAwMzM3QkFCIC8qIFJlc3BvbnNpdmVu
ZXNzVGltZXIuY3BwICovLAogCQkJCTFBMzAwNjZDMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNwb25z
aXZlbmVzc1RpbWVyLmggKi8sCiAJCQkJNUNBOTg1NDkyMTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVC
cm93c2luZ1dhcm5pbmcuaCAqLywKKwkJCQk5M0Q2QjdCMDI1NTI2OEExMDA1OEREM0EgLyogU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAgKi8sCisJCQkJOTNENkI3QjIyNTUy
NjhBMjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCAqLywK
KwkJCQk5M0Q2QjdBRjI1NTI2OEExMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdC5oICovLAogCQkJCTkzRDZCNzZCMjU0Qjg5NTgwMDU4REQzQSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5jcHAgKi8sCiAJCQkJOTNENkI3NkMyNTRCODk1ODAwNThERDNBIC8q
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmggKi8sCiAJCQkJOTNENkI3N0EyNTRDOTg0RDAwNThE
RDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluICovLApAQCAtOTUzNiw2
ICs5NTQ5LDggQEAKIAkJCQkzMzM2NzYzOTEzMEM5OURDMDA2QzlERTIgLyogV0tSZXNvdXJjZUNh
Y2hlTWFuYWdlci5oICovLAogCQkJCTFBREU0NkIwMTk1NEVDNjEwMDBGNzk4NSAvKiBXS1Nlc3Np
b25TdGF0ZVJlZi5jcHAgKi8sCiAJCQkJMUFERTQ2QjExOTU0RUM2MTAwMEY3OTg1IC8qIFdLU2Vz
c2lvblN0YXRlUmVmLmggKi8sCisJCQkJOTNENkI3QjgyNTUzNEExMjAwNThERDNBIC8qIFdLU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwICovLAorCQkJCTkzRDZCN0I3MjU1
MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgg
Ki8sCiAJCQkJNTFGODg2QTMxRjJDMjE0QTAwQzE5M0VGIC8qIFdLVGVzdGluZ1N1cHBvcnQuY3Bw
ICovLAogCQkJCTUxRjg4NkE0MUYyQzIxNEEwMEMxOTNFRiAvKiBXS1Rlc3RpbmdTdXBwb3J0Lmgg
Ki8sCiAJCQkJMzE0ODg4RkUxRDkxQjExRDAwMzc3MDQyIC8qIFdLVGV4dENoZWNrZXIuY3BwICov
LApAQCAtMTEzNzMsNiArMTEzODgsOCBAQAogCQkJCTU3QkJFQTZEMjJCQzBCRkUwMDI3Mzk5NSAv
KiBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzZDQTlE
NzIyQjg2MjE4MDAzMDE0M0MgLyogU09BdXRob3JpemF0aW9uTlNVUkxFeHRyYXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3RkQzMTg1MjJCMzUxNjkwMDhEMEU4QiAvKiBTT0F1dGhvcml6YXRpb25T
ZXNzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q2QjdCNTI1NTI2OEQ3MDA1OEREM0EgLyog
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTNENkI3QjQyNTUyNjhENTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzcyMjU0QkI1MTkwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3ODQyNTRD
Q0QwRTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzRDZCNzg1MjU0Q0NENDMwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlck1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTk4Niw2ICsxMjAw
Myw3IEBACiAJCQkJNTEzRTQ2MkQxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQ
aWNrZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGNTQ5QjQxRTMxNzRCNzAwMEU3
MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZE
MzE4NzIyQjM1MTcwMDA4RDBFOEIgLyogV0tTT0F1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTNENkI3QjkyNTUzNEExNzAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTdBNzhGRjMyMjI0
MTkxOTYwMDk2NDgzRSAvKiBXS1N0b3JhZ2VBY2Nlc3NBbGVydC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM0MDc2MDYxMjRGRjAyNzAwNjhGMjBBIC8qIFdLU3RyaW5nLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzQwNzYxQTEyNEZGMDM3MDA2OEYyMEEgLyogV0tTdHJpbmdDRi5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCmlu
ZGV4IGQ0ZjRkNGY2OTQwMDAyNmI5OWY3YmM1NDIxZmM0YzljYzRlNjE4YWQuLjE3ZWNiMzVmOGYw
NDNmYmFjNjJlNzkyZGNiNzllYmE5Y2FmNmJmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCkBAIC01OCw5ICs1OCw5IEBAIHZvaWQgV2ViU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpyZWdpc3RlckNsaWVudChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvCiAgICAgbV9jbGllbnRNYXAuYWRkKGNsaWVudC5pZGVudGlmaWVyKCksIG1h
a2VXZWFrUHRyKGNsaWVudCkpOwogfQogCi12b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGlu
dW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKQordm9p
ZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVp
bnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgY2xpZW50T3Jp
Z2luKQogewotICAgIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gaW5mbyB7
IGNsaWVudElkZW50aWZpZXIsIGxhbmcsIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhB
bHRlcm5hdGl2ZXMgfTsKKyAgICBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZv
IGluZm8geyBjbGllbnRJZGVudGlmaWVyLCBsYW5nLCBjb250aW51b3VzLCBpbnRlcmltUmVzdWx0
cywgbWF4QWx0ZXJuYXRpdmVzLCBXVEZNb3ZlKGNsaWVudE9yaWdpbikgfTsKICAgICBzZW5kKE1l
c3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3RhcnQoaW5mbykpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKaW5kZXggMjhkYmQxOTdj
YjNmNzk4ZmM3NjMxOTllYmIxMmRlMTNhZWQ3NTFiMS4uNjM3NjEzZjZjNjUyNmUzNGM0M2NmMGNk
N2VmYzg1ZDgxYjU2NzU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb24uaApAQCAtNDMsMTEgKzQzLDExIEBAIGNsYXNzIFdlYlBhZ2U7CiAKIHVzaW5nIFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbklkZW50aWZpZXIgPSBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllcjsKIAotY2xhc3MgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uIDogcHVibGljIFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgeworY2xhc3MgV2ViU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VTZW5kZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uPiBjcmVhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uSWRlbnRp
Zmllcik7CiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3Vz
LCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpIGZpbmFsOwor
ICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50
ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiYpIGZpbmFsOwogICAgIHZvaWQgc3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjU3NWE0
MWZmY2I1NWM2MTM4YmZiYTFlNDk0NjNkYTAyZmU2MjEwMi4uOTc1MTY2YzQ0NWI0NTdhNTgxMzg1
MGUzMGVhZWFlY2VlMDNlMzk4YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTExLTA0ICBTaWh1aSBMaXUgIDxz
aWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyBwZXJtaXNzaW9u
IGNoZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uR3JhbnRlZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXVFI6OmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y29tcGxl
dGVTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVjayk6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQpOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVz
dEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUpOgorCiAyMDIwLTExLTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4K
IAogICAgICAgICBbd2Via2l0c2NtcHldIEFkZCBjaGVja291dCBjb21tYW5kCmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdCBiL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9JbmZvLnBsaXN0CmluZGV4IDRlMmIxZjQ4MTlhZDUxMDNlNGNmMTcwOWI3YzUzYTY2ZThiMzk1
ZTUuLjMzYTNjYTFiZTczNTA4ZTFmZmNiMDI5NTdjODY0ZTg1OTJkYWFhNGUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0CisrKyBiL1Rvb2xzL01pbmlCcm93c2Vy
L21hYy9JbmZvLnBsaXN0CkBAIC01Miw5ICs1MiwxMSBAQAogCQkJPHN0cmluZz5FZGl0b3I8L3N0
cmluZz4KIAkJPC9kaWN0PgogCTwvYXJyYXk+Ci0gICAgPGtleT5OU0NhbWVyYVVzYWdlRGVzY3Jp
cHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJlY29yZGluZyB2aWRlbyBvbiBiZWhhbGYgb2Ygd2Vi
c2l0ZXM8L3N0cmluZz4KLSAgICA8a2V5Pk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb248L2tl
eT4KLSAgICA8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0
cmluZz4KKwk8a2V5Pk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVj
b3JkaW5nIHZpZGVvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+TlNNaWNy
b3Bob25lVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVjb3JkaW5nIGF1ZGlvIG9u
IGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+TlNTcGVlY2hSZWNvZ25pdGlvblVz
YWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29nbml6aW5nIGNhcHR1cmVkIGF1ZGlv
IG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgogPC9kaWN0PgogPC9wbGlzdD4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDk2OTYxNGU2NzI4ODYyOTYzMzA3Yzk5ZWM0Nzg0MTUy
NGZmMDEyOWIuLjk4Mjk3YWY3MGRiNTExZGFkMGE3Nzk3NWVhMzhlZDVjOGRiNmJkN2MgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtNDAxLDQgKzQwMSw3IEBAIGludGVyZmFjZSBUZXN0
UnVubmVyIHsKICAgICB1bmRlZmluZWQgc2V0QWRDbGlja0F0dHJpYnV0aW9uT3ZlcnJpZGVUaW1l
ckZvclRlc3RpbmcoYm9vbGVhbiB2YWx1ZSk7CiAgICAgdW5kZWZpbmVkIHNldEFkQ2xpY2tBdHRy
aWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKERPTVN0cmluZyB1cmwpOwogICAgIHVuZGVm
aW5lZCBtYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKKworICAg
IC8vIFNwZWVjaFJlY29nbml0aW9uCisgICAgdW5kZWZpbmVkIHNldElzU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uR3JhbnRlZChib29sZWFuIHZhbHVlKTsKIH07CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBlNWM1
Zjk5YWQxZGM5YzI4NmUwOTQ3MzQ2YzliZDc1ZmNhMmY5M2MzLi4yNWI0MTc2NzYzMDExMmM1MTVj
YTMxNDFkOGQ5MzVlYWI0YmEyNTc5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTIwNDcsNiArMjA0NywxMSBAQCB2
b2lkIFRlc3RSdW5uZXI6OmRpZFNldEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKCkKICAgICBjYWxs
VGVzdFJ1bm5lckNhbGxiYWNrKERpZFNldEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrSUQpOwogfQog
Cit2b2lkIFRlc3RSdW5uZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRl
ZChib29sIGdyYW50ZWQpCit7CisgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2UoInNldElz
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCIsIGdyYW50ZWQpOworfQorCiBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmlu
ZGV4IGFhYTUyMTZmOTI2MGRiNGQ5ODgxY2QwZGRiYjE5ZjUwODUyOTdmZDguLjkxOGFhOTY0MjY3
MmVmYWEwY2U0NjM0YjE2OGIwMDBkMzQzM2VlZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC01MTEsNiArNTExLDggQEAg
cHVibGljOgogICAgIHZvaWQgc2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRl
c3RpbmcoSlNTdHJpbmdSZWYpOwogICAgIHZvaWQgbWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4
cGlyZWRGb3JUZXN0aW5nKCk7CiAKKyAgICB2b2lkIHNldElzU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uR3JhbnRlZChib29sKTsKKwogcHJpdmF0ZToKICAgICBUZXN0UnVubmVyKCk7CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNmRiYzY4NGU4ODUw
YWZlMDQ1OTEzOWZiZTE5ZDVlNWNjZGI3MjZlNy4uMTg2ZWZmOWExNGM3MTA4OWYwNmFmMjk0YWVl
ZTI0MjMwZDdmYzFlMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tQcm90ZWN0aW9uU3BhY2Uu
aD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tT
ZWN1cml0eU9yaWdpblJlZi5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVGV4dENoZWNrZXIuaD4K
ICNpbmNsdWRlIDxXZWJLaXQvV0tVUkwuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tVc2VyQ29udGVu
dENvbnRyb2xsZXJSZWYuaD4KQEAgLTI5Nyw2ICsyOTgsMjEgQEAgc3RhdGljIHZvaWQgcnVuV2Vi
QXV0aGVudGljYXRpb25QYW5lbCgpCiB7CiB9CiAKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZv
clNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmLCBXS1NlY3VyaXR5
T3JpZ2luUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNhbGxiYWNrUmVmIGNhbGxiYWNrKQoreworICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5jb21wbGV0ZVNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrKGNhbGxiYWNrKTsK
K30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6Y29tcGxldGVTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DaGVjayhXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIGNhbGxi
YWNrKQoreworICAgIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tDb21wbGV0
ZShjYWxsYmFjaywgbV9pc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQpOworfQor
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdy
YW50ZWQoYm9vbCBncmFudGVkKQoreworICAgIG1faXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25HcmFudGVkID0gZ3JhbnRlZDsKK30KKwogV0tQYWdlUmVmIFRlc3RDb250cm9sbGVyOjpjcmVh
dGVPdGhlclBhZ2UoV0tQYWdlUmVmLCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRp
b24sIFdLTmF2aWdhdGlvbkFjdGlvblJlZiBuYXZpZ2F0aW9uQWN0aW9uLCBXS1dpbmRvd0ZlYXR1
cmVzUmVmIHdpbmRvd0ZlYXR1cmVzLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewogICAgIFBs
YXRmb3JtV2ViVmlldyogcGFyZW50VmlldyA9IHN0YXRpY19jYXN0PFBsYXRmb3JtV2ViVmlldyo+
KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKQEAgLTY1MCw4ICs2NjYsOCBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlv
bnMmIG9wdGlvbnMpCiAgICAgV0tIVFRQQ29va2llU3RvcmVEZWxldGVBbGxDb29raWVzKFdLV2Vi
c2l0ZURhdGFTdG9yZUdldEhUVFBDb29raWVTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKCkpLCBudWxs
cHRyLCBudWxscHRyKTsKIAogICAgIHBsYXRmb3JtQ3JlYXRlV2ViVmlldyhjb25maWd1cmF0aW9u
LmdldCgpLCBvcHRpb25zKTsKLSAgICBXS1BhZ2VVSUNsaWVudFYxNCBwYWdlVUlDbGllbnQgPSB7
Ci0gICAgICAgIHsgMTQsIG1fbWFpbldlYlZpZXcuZ2V0KCkgfSwKKyAgICBXS1BhZ2VVSUNsaWVu
dFYxNSBwYWdlVUlDbGllbnQgPSB7CisgICAgICAgIHsgMTUsIG1fbWFpbldlYlZpZXcuZ2V0KCkg
fSwKICAgICAgICAgMCwgLy8gY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCiAg
ICAgICAgIDAsIC8vIHNob3dQYWdlCiAgICAgICAgIDAsIC8vIGNsb3NlCkBAIC03MjQsNyArNzQw
LDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKGNvbnN0
IFRlc3RPcHRpb25zJiBvcHRpb25zKQogICAgICAgICAwLCAvLyBkaWRSZXNpZ25JbnB1dEVsZW1l
bnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UKICAgICAgICAgMCwgLy8gcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NDb25maXJtCiAgICAgICAgIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25BY2Nlc3MsCi0gICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwKKyAgICAgICAgcnVu
V2ViQXV0aGVudGljYXRpb25QYW5lbCwKKyAgICAgICAgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdAogICAgIH07CiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xp
ZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJnBhZ2VVSUNsaWVudC5iYXNlKTsKIApAQCAtMTA1
Myw2ICsxMDcwLDggQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVu
dFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmUKICAgICBtX3NlcnZlclRydXN0
RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCA9IDA7CiAgICAgbV9zaG91bGREaXNtaXNzSmF2
YVNjcmlwdEFsZXJ0c0FzeW5jaHJvbm91c2x5ID0gZmFsc2U7CiAKKyAgICBzZXRJc1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQodHJ1ZSk7CisKICAgICBhdXRvIGxvYWRBYm91dEJs
YW5rID0gW3RoaXNdIHsKICAgICAgICAgbV9kb25lUmVzZXR0aW5nID0gZmFsc2U7CiAgICAgICAg
IFdLUGFnZUxvYWRVUkwobV9tYWluV2ViVmlldy0+cGFnZSgpLCBibGFua1VSTCgpKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAzM2I2NDk0YWM2MjQ0YjkyZmNi
NzgwOWE1OGQ3MjAzYzdjMTI1OGE4Li4wNWM4ZjhiZGFhOTVhZDg3ZTQzOWUzMDkzYjhhNGYzNGY1
ZjgyYzU2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0zNTEs
NiArMzUxLDkgQEAgcHVibGljOgogCiAgICAgV0tVUkxSZWYgY3VycmVudFRlc3RVUkwoKSBjb25z
dDsKIAorICAgIHZvaWQgY29tcGxldGVTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVjayhX
S1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmKTsKKyAgICB2b2lkIHNldElz
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChib29sKTsKKwogcHJpdmF0ZToKICAg
ICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZVBhZ2VDb25maWd1
cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJik7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0Q29u
ZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbihjb25zdCBUZXN0T3B0
aW9ucyYpIGNvbnN0OwpAQCAtNjQwLDYgKzY0Myw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgYm9vbCBtX2hhc1NldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciB7IGZh
bHNlIH07CiAjZW5kaWYKKworICAgIGJvb2wgbV9pc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkdyYW50ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDE0YzA0ZWQxZmE5Mzk0ZjU3MmY2
NDlhOTFiNDdlZmIyMDZlZjg1NGUuLjViNjY2MTdiZWUwMTZiNjc1MWM3YmIyYmNlNmJiOGJhZTQ0
ZWIwYTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0x
MzQ1LDYgKzEzNDUsMTEgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6
ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
bWVzc2FnZU5hbWUsICJzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQiKSkg
eworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0SXNTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2xlYW5WYWx1ZShtZXNzYWdlQm9keSkpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413414</attachid>
            <date>2020-11-06 01:12:51 -0800</date>
            <delta_ts>2020-11-06 08:11:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201106011251.patch</filename>
            <type>text/plain</type>
            <size>100051</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY5Njk2ZjNhMjQ5ZWQ3OTBkNTQzZWU1
YzU1MDc2YWFhZTAwNGQ1NGEuLjBiY2UwMzQ0ZjY2NjMwNmU5MTgxZjNkOGIyNDkxZjdlNzVmYmNj
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTEtMDYgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMC0xMS0wNCAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGFkZCB3
b3JrYXJvdW5kIGZvciBMaW51eCBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM3OWRjZjkxY2NmMGQ4YjQ2
NDhhYWRhNDlkYzU4NmQ5MzY1NTQ3MTQuLjY0YmM0NmFkMDQ5ZWM0NjhiNTZjN2E2Njc0ZTk4YmY4
NmYzYzY1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMC0xMS0wNiAgU2lodWkg
TGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVy
bWlzc2lvbiBjaGVjayBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQ3NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb246OnN0YXJ0UmVj
b2duaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVx
dWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpjbGll
bnRPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0OjpzZXRJc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Ojppc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2sgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJ
bmZvOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
VXBkYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmVycm9y
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpyZXN1
bHQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBk
YXRlLmg6CisgICAgICAgICogcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaDoK
KwogMjAyMC0xMS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IHdpbmRvdy5ldmVudCBtYXkgZ2V0IHNldCBvbiB3cm9uZyBnbG9iYWwgd2hlbiBkaXNwYXRjaGlu
ZyBhbiBldmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA3NWM0MjJmNDQ2OTNlNTdlZmY5YmYwZTUwMDk5MWJkZWY2
MWNhN2Q5Li4wYTZjYzcyZWJmN2I5MDdmZGY5M2JlZDkxZmJkNjczNTU3NGY0MGFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDkxIEBACisyMDIwLTExLTA2ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBw
bGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyBwZXJtaXNzaW9uIGNoZWNrIGZvciBT
cGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE4NDc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW50cm9kdWNlIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIsIHdo
aWNoIGNoZWNrcyBwZXJtaXNzaW9ucyB0aGF0IHNwZWVjaCByZWNvZ25pdGlvbiBuZWVkcyBiZWZv
cmUgCisgICAgICAgIHdlIGFjdHVhbGx5IHN0YXJ0IGNhcHR1cmluZyBhdWRpbyBhbmQgcGVyZm9y
bSByZWNvZ25pdGlvbiwgaW5jbHVkaW5nOgorICAgICAgICAxLiBTYW5kYm94IGZvciBtaWNyb3Bo
b25lCisgICAgICAgIDIuIFRDQyBjaGVjayBmb3IgbWljcm9waG9uZQorICAgICAgICAzLiBUQ0Mg
Y2hlY2sgZm9yIFNGU3BlZWNoUmVjb2duaXplcgorICAgICAgICA0LiBVc2VyIHBlcm1pc3Npb24g
Zm9yIG9yaWdpbnMKKworICAgICAgICBBZGQgYSBkZWxlZ2F0ZSBmdW5jdGlvbiBmb3IgcmVxdWVz
dGluZyBwZXJtaXNzaW9uIG9uIG9yaWdpbnMgdGhhdCByZXF1ZXN0IHNwZWVjaCByZWNvZ25pdGlv
bi4gQnkgZGVmYXVsdCwgdGhpcyAKKyAgICAgICAga2luZCBvZiBwZXJtaXNzaW9uIGlzIG5vdCBn
cmFudGVkLCBzbyBTcGVlY2hSZWNvZ25pdGlvbiB3aWxsIGZhaWwgdGhlIHBlcm1pc3Npb24gY2hl
Y2sgYW5kIGdldHMgZXJyb3IgZXZlbnQuCisKKyAgICAgICAgVGVzdDogZmFzdC9zcGVlY2hyZWNv
Z25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwKKworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJ
T2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElVSUNsaWVudC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6ZGVjaWRlUG9s
aWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAg
ICAoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0dldFR5cGVJRCk6CisgICAg
ICAgIChXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRl
UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpwZXJmb3Jt
U2FuZGJveENoZWNrKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6cmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0TmV4dFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6
Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja01pY3JvcGhvbmVBY2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1NwZWVjaFJl
Y29nbml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrVXNlclBlcm1pc3Npb25Gb3JPcmlnaW4pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6flNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnROZXh0UmVxdWVzdCk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVu
dFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpjaGVja1NhbmRib3hSZXF1aXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrTWljcm9waG9uZUFjY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNr
U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tVc2VyUGVybWlzc2lvbkZvck9yaWdp
bik6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXIuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6Y29tcGxldGUpOgorICAgICAgICAoV2ViS2l0
OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpyZW1vdmVQZW5kaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29n
bml0aW9uU2VydmVyOjpzdGFydFBvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6Y29udGludWVQcm9jZXNzaW5nUmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzZW5kVXBkYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0b3BQcm9jZXNzaW5nUmVxdWVz
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRv
ci5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw6OmdldEV4
aXN0aW5nQ3JlZGVudGlhbHMpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6
OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcik6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uOjpkaWRSZWNlaXZlVXBkYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oOgorCiAyMDIwLTEx
LTA0ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29u
dGFjdCBQaWNrZXIgQVBJXSBBZGQgc3VwcG9ydCBmb3IgcGlja2VyIFVJIG9uIGlPUwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUhhdmUuaAppbmRleCAyMDNlOGVjN2Q2MTVlODc1ZjNiMzE0NWYyZjhiZGQxZTViN2IwODNk
Li5iYWQ0N2VjMDE0ZTRmZTY0N2JiMWIwNThhMjQ4NjEyMmY4OTczM2Y4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUhhdmUuaApAQCAtNzU1LDMgKzc1NSw3IEBACiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
IVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX0NO
Q09OVEFDVFBJQ0tFUlZJRVdDT05UUk9MTEVSIDEKICNlbmRpZgorCisjaWYgKFBMQVRGT1JNKElP
U19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxNTAwKSkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBM
RVRWKQorI2RlZmluZSBIQVZFX1NQRUVDSFJFQ09HTklaRVIgMQorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKaW5kZXgg
NTFhMzJjZGFhY2FhMWVkMDExNDI3NjdkMjJlMzAyNTI2ZGViZjU5NS4uZjExN2MxZmIxYjViZDA0
YWU3NTUyNTY1ZmJhYTg4OTFjNWMxYWViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uLmgiCiAKKyNpbmNs
dWRlICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC02OSw3ICs3MCw4IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IFNwZWVjaFJlY29nbml0aW9uOjpzdGFydFJlY29nbml0aW9uKCkKICAgICBpZiAo
IW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwg
IlJlY29nbml0aW9uIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBjb25uZWN0aW9uIl9zIH07CiAKLSAg
ICBtX2Nvbm5lY3Rpb24tPnN0YXJ0KGlkZW50aWZpZXIoKSwgbV9sYW5nLCBtX2NvbnRpbnVvdXMs
IG1faW50ZXJpbVJlc3VsdHMsIG1fbWF4QWx0ZXJuYXRpdmVzKTsKKyAgICBhdXRvJiBkb2N1bWVu
dCA9IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBt
X2Nvbm5lY3Rpb24tPnN0YXJ0KGlkZW50aWZpZXIoKSwgbV9sYW5nLCBtX2NvbnRpbnVvdXMsIG1f
aW50ZXJpbVJlc3VsdHMsIG1fbWF4QWx0ZXJuYXRpdmVzLCBDbGllbnRPcmlnaW4geyBkb2N1bWVu
dC50b3BPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpIH0p
OwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3RhcnRpbmc7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uLmgKaW5kZXggM2ZkMmQzM2FjYTAyMDUyNjM0MDU4ZDBmYjU2NTJlYjcw
MDdmYTUyYS4uNjllZWJjMjkzZDViN2RlMWUzOGNlZWFkMmEzZWUzOGYwMGQxY2E1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uLmgKQEAgLTMxLDE1ICszMSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudDsKIGNsYXNzIFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlOworc3RydWN0IENsaWVudE9yaWdpbjsKIAogY2xhc3MgU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnQo
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1h
eEFsdGVybmF0aXZlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wg
Y29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVz
LCBDbGllbnRPcmlnaW4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
YWJvcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlJiYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0LmgKaW5kZXggNWNlZWEwMWM3Mzg2NTU2ZDQyNTFmOGM4Yjk1YzMxMjRiYWZjNjAx
Mi4uZGE5NTlkN2MwNzhlOWE1NDFlZjk0MWJlYjVkZTliM2FkZjk1NzI2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0LmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3Q+IHsKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gY3JlYXRlKFNwZWVjaFJlY29n
bml0aW9uUmVxdWVzdEluZm8mJik7CiAKQEAgLTM5LDExICszOSwxNiBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBjb250aW51b3VzKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmNvbnRpbnVvdXM7OyB9CiAg
ICAgYm9vbCBpbnRlcmltUmVzdWx0cygpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5pbnRlcmltUmVz
dWx0czsgfQogICAgIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcygpIGNvbnN0IHsgcmV0dXJuIG1f
aW5mby5tYXhBbHRlcm5hdGl2ZXM7IH0KKyAgICBjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5jbGllbnRPcmlnaW47IH0KIAorICAgIHZvaWQg
c2V0SXNXYWl0aW5nRm9yUGVybWlzc2lvbkNoZWNrKGJvb2wgaXNXYWl0aW5nRm9yUGVybWlzc2lv
bkNoZWNrKSB7IG1faXNXYWl0aW5nRm9yUGVybWlzc2lvbkNoZWNrID0gaXNXYWl0aW5nRm9yUGVy
bWlzc2lvbkNoZWNrOyB9CisgICAgYm9vbCBpc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2soKSBj
b25zdCB7IHJldHVybiBtX2lzV2FpdGluZ0ZvclBlcm1pc3Npb25DaGVjazsgfQorICAgIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QoU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0SW5mbyYmKTsKIAogICAgIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8g
bV9pbmZvOworICAgIGJvb2wgbV9pc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2sgeyBmYWxzZSB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCmlu
ZGV4IGFiMWUxYWU2ZWYzODg5OGMyMWEyYTlkZjdhZjFmMDA3ZTI0YjE3ZDAuLjFlZmU5ZTA2NDZl
NzQ3Y2I1NWQ3Y2NiMGY3YjE4ZmY1ZTBiM2M0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDbGllbnRPcmln
aW4uaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDYgKzM2LDcgQEAgc3RydWN0IFNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gewogICAgIGJvb2wgY29udGludW91cyB7IGZhbHNl
IH07CiAgICAgYm9vbCBpbnRlcmltUmVzdWx0cyB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbWF4
QWx0ZXJuYXRpdmVzIHsgMSB9OworICAgIENsaWVudE9yaWdpbiBjbGllbnRPcmlnaW47CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdEluZm8+IGRlY29kZShEZWNvZGVyJik7CkBAIC00Myw3ICs0NSw3IEBAIHN0cnVj
dCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIHsKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CiB2b2lkIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgY2xpZW50SWRlbnRpZmllciA8PCBsYW5nIDw8
IGNvbnRpbnVvdXMgPDwgaW50ZXJpbVJlc3VsdHMgPDwgbWF4QWx0ZXJuYXRpdmVzOworICAgIGVu
Y29kZXIgPDwgY2xpZW50SWRlbnRpZmllciA8PCBsYW5nIDw8IGNvbnRpbnVvdXMgPDwgaW50ZXJp
bVJlc3VsdHMgPDwgbWF4QWx0ZXJuYXRpdmVzIDw8IGNsaWVudE9yaWdpbjsKIH0KIAogdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTc0LDEyICs3NiwxOCBAQCBPcHRpb25hbDxTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvPiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUo
RGVjbwogICAgIGlmICghbWF4QWx0ZXJuYXRpdmVzKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCisgICAgT3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBjbGllbnRPcmlnaW47CisgICAgZGVj
b2RlciA+PiBjbGllbnRPcmlnaW47CisgICAgaWYgKCFjbGllbnRPcmlnaW4pCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKICAgICByZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqY2xp
ZW50SWRlbnRpZmllciksCiAgICAgICAgIFdURk1vdmUoKmxhbmcpLAogICAgICAgICBXVEZNb3Zl
KCpjb250aW51b3VzKSwKICAgICAgICAgV1RGTW92ZSgqaW50ZXJpbVJlc3VsdHMpLAotICAgICAg
ICBXVEZNb3ZlKCptYXhBbHRlcm5hdGl2ZXMpCisgICAgICAgIFdURk1vdmUoKm1heEFsdGVybmF0
aXZlcyksCisgICAgICAgIFdURk1vdmUoKmNsaWVudE9yaWdpbikKICAgICB9fTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25V
cGRhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25VcGRhdGUuY3BwCmluZGV4IDUzNGVkYTNkMjQ3N2VlMWM2ZjE3ZWM2YWYxNzkzMjZiYjc5ZjAy
MDcuLjlhOWE3ZDkyMDY5NjU1YzQ1NzE2MDdkZGExOGM0ZTZiMzMwZjcyZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3Ry
aW5nKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSBlbnVtZXJhdGlvblZhbHVlKQogCiBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKFNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlIHsgY2xpZW50SWRlbnRpZmllciwgdHlwZSB9OworICAgIHJldHVybiBT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7IGNsaWVudElkZW50aWZpZXIsIHR5cGUsIFdURjo6TW9u
b3N0YXRlKCkgfTsKIH0KIAogU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgU3BlZWNoUmVjb2duaXRp
b25VcGRhdGU6OmNyZWF0ZUVycm9yKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgY29uc3QgU3BlZWNoUmVjb2duaXRpb25FcnJvciYg
ZXJyb3IpCkBAIC04Myw3ICs4Myw3IEBAIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllCiBTcGVlY2hS
ZWNvZ25pdGlvbkVycm9yIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjplcnJvcigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9jb250ZW50LAotICAgICAgICBbXSAoU3BlZWNo
UmVjb2duaXRpb25FcnJvciYgZXJyb3IpIHsgcmV0dXJuIGVycm9yOyB9LAorICAgICAgICBbXSAo
Y29uc3QgU3BlZWNoUmVjb2duaXRpb25FcnJvciYgZXJyb3IpIHsgcmV0dXJuIGVycm9yOyB9LAog
ICAgICAgICBbXSAoY29uc3QgYXV0byYpIHsgcmV0dXJuIFNwZWVjaFJlY29nbml0aW9uRXJyb3Io
KTsgfQogICAgICk7CiB9CkBAIC05MSw3ICs5MSw3IEBAIFNwZWVjaFJlY29nbml0aW9uRXJyb3Ig
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmVycm9yKCkgY29uc3QKIFZlY3RvcjxTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdERhdGE+IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpyZXN1bHQoKSBjb25z
dAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fY29udGVudCwKLSAgICAgICAgW10gKFZl
Y3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+JiBkYXRhKSB7IHJldHVybiBkYXRhOyB9
LAorICAgICAgICBbXSAoY29uc3QgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4m
IGRhdGEpIHsgcmV0dXJuIGRhdGE7IH0sCiAgICAgICAgIFtdIChjb25zdCBhdXRvJikgeyByZXR1
cm4gVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4geyB9OyB9CiAgICAgKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZS5oCmluZGV4IDNhODJiZjZiYWY1NGNlMGM0YjEzMzRlZjZmOGI1ODkzZjNiODk4
MmUuLmFhODYzMTMyMjE0ZjM2N2M2NDdhNDc3OWQ5NGZmZjA5YmFiZjEzODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRh
dGUuaApAQCAtNTIsOCArNTIsOCBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlKTsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3BlZWNoUmVjb2duaXRp
b25VcGRhdGUgY3JlYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSk7Ci0gICAgc3RhdGljIFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlIGNyZWF0ZUVycm9yKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIsIGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXJyb3ImKTsKLSAgICBzdGF0aWMg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlUmVzdWx0KFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdERhdGE+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlIGNyZWF0ZUVycm9yKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIsIGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXJyb3ImKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlUmVzdWx0KFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdERhdGE+Jik7CiAKICAgICBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dElkZW50aWZpZXI7IH0KICAgICBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgdXNpbmcgQ29udGVudCA9IFZhcmlhbnQ8V1RGOjpNb25vc3RhdGUsIFNwZWVjaFJl
Y29nbml0aW9uRXJyb3IsIFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PjsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZShTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGUsIENvbnRlbnQgPSBXVEY6Ok1vbm9zdGF0ZSgpKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIENvbnRl
bnQpOwogCiAgICAgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBt
X2NsaWVudElkZW50aWZpZXI7CiAgICAgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIG1fdHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlv
blByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Q
cm92aWRlci5oCmluZGV4IGNmOWU3MmI5M2MwNjRhNTVkZGRmYWI3YjNjYWZiNDg5MGUwMzVmNDYu
LjI0MGFhM2Q0ODRhOTczYjQ0MTEyYWVmNjFlOGVhYWE4NDdiNThkMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaApAQCAt
MzksMTAgKzM5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IER1bW15U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uKCkpOwogICAgICAgICB9CiAgICAgICAg
IHZvaWQgcmVnaXN0ZXJDbGllbnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50Jikg
ZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgYm9vbCwgYm9vbCwgdWludDY0X3QpIGZp
bmFsIHsgfQorICAgICAgICB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wsIHVpbnQ2NF90LCBDbGll
bnRPcmlnaW4mJikgZmluYWwgeyB9CiAgICAgICAgIHZvaWQgc3RvcChTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbCB7IH0KICAgICAgICAgdm9pZCBhYm9y
dChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbCB7IH0K
LSAgICAgICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZSYmKSBmaW5hbCB7IH0KICAgICB9OwogICAgIER1bW15U3BlZWNoUmVjb2du
aXRpb25Qcm92aWRlcigpID0gZGVmYXVsdDsKICAgICBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b24mIHNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmgKaW5kZXggNmQwNjU2NDVkY2VlNjJlNTlkNTBkYmVmMzc0MzVhNDlhODBlYjY4Mi4u
Y2QxY2FkOTZiNDAzMTJkYjNiMTg4ZGU3MWY2MDg4YmY3MjhmZDg3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTY1LDYgKzE2NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
UnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1bkphdmFTY3JpcHRD
b25maXJtUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1bHRM
aXN0ZW5lciwKKyAgICAgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2ssCiAg
ICAgICAgIFRleHRDaGVja2VyLAogICAgICAgICBVUkxTY2hlbWVUYXNrLAogICAgICAgICBVc2Vy
Q29udGVudENvbnRyb2xsZXIsCkBAIC00MTAsNiArNDExLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxBUEk6Ok9iamVjdDo6VHlwZT4gewogICAgICAgICBBUEk6Ok9iamVjdDo6VHlw
ZTo6UnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0
OjpUeXBlOjpSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVyLAogICAgICAgICBBUEk6
Ok9iamVjdDo6VHlwZTo6UnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExpc3RlbmVyLAorICAgICAg
ICBBUEk6Ok9iamVjdDo6VHlwZTo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2ss
CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpUZXh0Q2hlY2tlciwKICAgICAgICAgQVBJOjpP
YmplY3Q6OlR5cGU6OlVSTFNjaGVtZVRhc2ssCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpV
c2VyQ29udGVudENvbnRyb2xsZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCmluZGV4
IDllODJlNTYwMDE4N2VjMWNmOGFmOWJlZTc5ZTcxZDBlOGQ3ZmQxNWEuLjg0ZWU2YzI4OGY2ZDJl
YmQ1MWZhNzNlYTcyNzA4ZjMyOTQ2YmRkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oCkBAIC0xNDEsNiArMTQxLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tXZWJz
aXRlRGF0YUNvbmZpZ3VyYXRpb25TdG9yZSogV0tXZWJzaXRlRGF0YVN0b3JlQ28KIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLV2Vic2l0ZURhdGFTdG9yZSogV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tXZWJzaXRlUG9saWNpZXMqIFdLV2Vi
c2l0ZVBvbGljaWVzUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tXaW5kb3dGZWF0
dXJlcyogV0tXaW5kb3dGZWF0dXJlc1JlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdL
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sqIFdLU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2tSZWY7CiAKIC8qIFdlYktpdDIgQnVuZGxlIHR5cGVzICovCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CmluZGV4IGQ1Mjc5ZmU2MjI5NjNmMDc0NzM4YWMxZWU1NGMzNzRkY2JlN2I1MjcuLjk3
YzA5ZTI3MTY1ZTA2MjEwMWU5YzMyMDQxNWY0ZGZlNmU0OTk1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAt
Mjg5LDYgKzI4OSw3IEBAIFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcAogVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQ
cm94eS5jcHAKIFVJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5jcHAKK1VJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAogVUlQcm9jZXNzL1RleHRD
aGVja2VyLmNwcAogVUlQcm9jZXNzL1RleHRDaGVja2VyQ29tcGxldGlvbi5jcHAKIFVJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAKQEAgLTQwMiw2ICs0MDMsNyBAQCBV
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1Byb3Rl
Y3Rpb25TcGFjZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNw
cAogVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRlUmVmLmNwcAorVUlQcm9jZXNzL0FQSS9D
L1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwCiBVSVByb2Nlc3MvQVBJ
L0MvV0tUZXh0Q2hlY2tlci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29udHJv
bGxlclJlZi5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVS
ZWYuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMDg0ZDUxMzUyZDQ0YTQ1MDk0OWIzZmJk
MWQxZDc2MTM1ZmIyYmViMi4uYzI0ZmM0NDQxZWQwOTQxZTQyYTc1YjE1MDhkN2YzZmM2MzQ2NWRk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMzc5LDYgKzM3OSw3IEBAIFVJUHJvY2Vzcy9D
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KIFVJUHJvY2Vzcy9Db2NvYS9SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdD
b2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1Nlc3Npb25TdGF0ZUNvZGluZy5tbQorVUlQcm9jZXNz
L0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbQogVUlQcm9j
ZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KIFVJUHJvY2Vzcy9Db2Nv
YS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAppbmRleCBhYTdkODlj
MDFlNzM1MjBjZTNlZTA0MjI2YjlhZTg1OTcwYmZhYTZlLi5iMmRmZjI5ODNlZTA5OGFkYmM5Mjcx
ODE1YzQyYWI2YWQ2ZDQwNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlD
bGllbnQuaApAQCAtMjAyLDYgKzIwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEFQSTo6
SW5zcGVjdG9yQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgfQogCisgICAgdmlydHVhbCB2
b2lkIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoV2Vi
S2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgQVBJOjpTZWN1cml0eU9y
aWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKaW5kZXggYjUyYzQ0YmFl
YTlhY2Y5ZmMwMzMyZDVhOWYzNzM1NmU5ZDIzODYyOS4uMThjYmZkNWI3NGViODc3MGE1NzhmMTVj
OGEwMTYxNDk5MDIxNDU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElD
YXN0LmgKQEAgLTc5LDYgKzc5LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyOwogY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3Q7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKK2NsYXNzIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOwogY2xhc3MgVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrUHJveHk7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OwogY2xh
c3MgV2ViQmFja0ZvcndhcmRMaXN0OwpAQCAtMTUyLDYgKzE1Myw3IEBAIFdLX0FERF9BUElfTUFQ
UElORyhXS1ByZWZlcmVuY2VzUmVmLCBXZWJQcmVmZXJlbmNlcykKIFdLX0FERF9BUElfTUFQUElO
RyhXS1Byb3RlY3Rpb25TcGFjZVJlZiwgV2ViUHJvdGVjdGlvblNwYWNlKQogV0tfQUREX0FQSV9N
QVBQSU5HKFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJSZWYsIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLU2Vzc2lvblN0YXRlUmVm
LCBBUEk6OlNlc3Npb25TdGF0ZSkKK1dLX0FERF9BUElfTUFQUElORyhXS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjaykKIFdLX0FERF9BUElfTUFQUElORyhXS1RleHRDaGVja2VyUmVmLCBXZWJUZXh0Q2hlY2tl
cikKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZiwgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyQ29udGVu
dEV4dGVuc2lvblN0b3JlUmVmLCBBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggNDM2OWNkZDgyNWI1MTU3ZmIwMTBj
M2Y4MWFlNzhlNjYwZGFhNzRmYy4uMTFjNjZiZjQyODQ5MzI4MTVkN2VmYWE0YmFlMzkwNmVmNzIz
NDUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC02Myw2
ICs2Myw3IEBACiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9y
bWF0aW9uLmgiCiAjaW5jbHVkZSAiUHJpbnRJbmZvLmgiCisjaW5jbHVkZSAiU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1
ZGUgIldLUGFnZVBvbGljeUNsaWVudEludGVybmFsLmgiCiAjaW5jbHVkZSAiV0tQYWdlUmVuZGVy
aW5nUHJvZ3Jlc3NFdmVudHNJbnRlcm5hbC5oIgpAQCAtMTE1LDcgKzExNiw3IEBAIHRlbXBsYXRl
PD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VQb2xpY3lDbGllbnRCYXNlPiB7CiB9OwogCiB0
ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tQYWdlVUlDbGllbnRCYXNlPiB7Ci0gICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZVVJQ2xpZW50VjAsIFdLUGFnZVVJQ2xpZW50VjEsIFdL
UGFnZVVJQ2xpZW50VjIsIFdLUGFnZVVJQ2xpZW50VjMsIFdLUGFnZVVJQ2xpZW50VjQsIFdLUGFn
ZVVJQ2xpZW50VjUsIFdLUGFnZVVJQ2xpZW50VjYsIFdLUGFnZVVJQ2xpZW50VjcsIFdLUGFnZVVJ
Q2xpZW50VjgsIFdLUGFnZVVJQ2xpZW50VjksIFdLUGFnZVVJQ2xpZW50VjEwLCBXS1BhZ2VVSUNs
aWVudFYxMSwgV0tQYWdlVUlDbGllbnRWMTIsIFdLUGFnZVVJQ2xpZW50VjEzLCBXS1BhZ2VVSUNs
aWVudFYxND4gVmVyc2lvbnM7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZVVJQ2xpZW50
VjAsIFdLUGFnZVVJQ2xpZW50VjEsIFdLUGFnZVVJQ2xpZW50VjIsIFdLUGFnZVVJQ2xpZW50VjMs
IFdLUGFnZVVJQ2xpZW50VjQsIFdLUGFnZVVJQ2xpZW50VjUsIFdLUGFnZVVJQ2xpZW50VjYsIFdL
UGFnZVVJQ2xpZW50VjcsIFdLUGFnZVVJQ2xpZW50VjgsIFdLUGFnZVVJQ2xpZW50VjksIFdLUGFn
ZVVJQ2xpZW50VjEwLCBXS1BhZ2VVSUNsaWVudFYxMSwgV0tQYWdlVUlDbGllbnRWMTIsIFdLUGFn
ZVVJQ2xpZW50VjEzLCBXS1BhZ2VVSUNsaWVudFYxNCwgV0tQYWdlVUlDbGllbnRWMTU+IFZlcnNp
b25zOwogfTsKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpAQCAtMjExMCw2ICsyMTExLDEz
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlByZXNlbnRlZCk7CiAgICAg
ICAgIH0KICNlbmRpZgorICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6OlNlY3VyaXR5T3Jp
Z2luJiByZXF1ZXN0aW5nT3JpZ2luLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQSSgmcmVxdWVzdGluZ09yaWdpbiksIHRv
QVBJKCZ0b3BPcmlnaW4pLCB0b0FQSShTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
azo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5wdHIoKSkpOworICAgICAgICB9
CiAgICAgfTsKIAogICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0VUlDbGllbnQobWFrZVVuaXF1ZTxV
SUNsaWVudD4od2tDbGllbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VVSUNsaWVudC5oCmluZGV4IGI2Mzg4MTU1Y2QzMDM2ZTY2NjExMGYxOTI1NjE2YWZkMzdl
ODY4YmEuLjdjZDhmZDBkOTg0Y2ZkOWY0ZDQ0YmZlODNkODVkYjFiNTYxNzU5OGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaApAQCAtMTM2LDYg
KzEzNiw3IEBAIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZFJlc2lnbklucHV0RWxlbWVudFN0cm9u
Z1Bhc3N3b3JkQXBwZWFyYW5jZUNhbGxiYWNrKShXS1BhCiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VT
aG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ2FsbGJhY2spKFdLUGFn
ZVJlZiBwYWdlLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCB2b2lk
ICpjbGllbnRJbmZvKTsKIAogdHlwZWRlZiB2b2lkICgqV0tQYWdlUnVuV2ViQXV0aGVudGljYXRp
b25QYW5lbENhbGxiYWNrKSgpOwordHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9y
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrKShXS1BhZ2VSZWYgcGFn
ZSwgV0tTZWN1cml0eU9yaWdpblJlZiByZXF1ZXN0aW5nT3JpZ2luLCBXS1NlY3VyaXR5T3JpZ2lu
UmVmIHRvcE9yaWdpbiwgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBj
YWxsYmFjayk7CiAKIC8vIERlcHJlY2F0ZWQKIHR5cGVkZWYgV0tQYWdlUmVmICgqV0tQYWdlQ3Jl
YXRlTmV3UGFnZUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjApKFdLUGFnZVJlZiBwYWdl
LCBXS0RpY3Rpb25hcnlSZWYgZmVhdHVyZXMsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBX
S0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24sIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwpA
QCAtMTM1Myw2ICsxMzU0LDExNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFYxNCB7
CiAgICAgV0tQYWdlUnVuV2ViQXV0aGVudGljYXRpb25QYW5lbENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsOwogfSBXS1BhZ2VVSUNs
aWVudFYxNDsKIAordHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMTUgeworICAgIFdLUGFn
ZVVJQ2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYmFzZTsKKworICAgIC8vIFZlcnNpb24gMC4KKyAgICBXS1BhZ2VDcmVhdGVOZXdQYWdl
Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgICAgICAgIGNyZWF0ZU5l
d1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dQYWdlOwor
ICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xvc2U7CisgICAgV0tQYWdlVGFrZUZvY3VzQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlRm9jdXM7CisgICAgV0tQ
YWdlRm9jdXNDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb2N1czsKKyAgICBXS1BhZ2VVbmZvY3VzQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZm9jdXM7CisgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgICBy
dW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VSdW5K
YXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAg
IHJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdl
UnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAg
ICAgICBydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQ
YWdlU2V0U3RhdHVzVGV4dENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRTdGF0dXNUZXh0OworICAgIFdLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgbW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VNaXNzaW5nUGx1Z2luQnV0
dG9uQ2xpY2tlZENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgIG1pc3NpbmdQbHVn
aW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlRGlkTm90
SGFuZGxlS2V5RXZlbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWROb3RIYW5kbGVLZXlFdmVudDsKKyAgICBXS1BhZ2VEaWROb3RIYW5kbGVXaGVlbEV2ZW50Q2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZE5vdEhhbmRsZVdoZWVsRXZl
bnQ7CisgICAgV0tQYWdlR2V0VG9vbGJhcnNBcmVWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0b29sYmFyc0FyZVZpc2libGU7CisgICAgV0tQYWdlU2V0VG9v
bGJhcnNBcmVWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRUb29sYmFyc0FyZVZpc2libGU7CisgICAgV0tQYWdlR2V0TWVudUJhcklzVmlzaWJsZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51QmFySXNWaXNpYmxlOwor
ICAgIFdLUGFnZVNldE1lbnVCYXJJc1Zpc2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0TWVudUJhcklzVmlzaWJsZTsKKyAgICBXS1BhZ2VHZXRTdGF0dXNC
YXJJc1Zpc2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1
c0JhcklzVmlzaWJsZTsKKyAgICBXS1BhZ2VTZXRTdGF0dXNCYXJJc1Zpc2libGVDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXR1c0JhcklzVmlzaWJsZTsKKyAg
ICBXS1BhZ2VHZXRJc1Jlc2l6YWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlzUmVzaXphYmxlOworICAgIFdLUGFnZVNldElzUmVzaXphYmxlQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNSZXNpemFibGU7
CisgICAgV0tQYWdlR2V0V2luZG93RnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnZXRXaW5kb3dGcmFtZTsKKyAgICBXS1BhZ2VTZXRXaW5kb3dGcmFt
ZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFdpbmRv
d0ZyYW1lOworICAgIFdLUGFnZVJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbENhbGxiYWNrX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjYgICAgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsX2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjY7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWREcmF3OworICAgIFdLUGFnZVVJ
Q2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFnZURpZFNjcm9sbDsKKyAgICBXS1BhZ2VFeGNlZWRlZERhdGFiYXNlUXVvdGFDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VlZGVkRGF0YWJhc2VRdW90YTsK
KyAgICBXS1BhZ2VSdW5PcGVuUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ1bk9wZW5QYW5lbDsKKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgIGRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQYWdlSGVhZGVySGVpZ2h0
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJI
ZWlnaHQ7CisgICAgV0tQYWdlRm9vdGVySGVpZ2h0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJIZWlnaHQ7CisgICAgV0tQYWdlRHJhd0hlYWRl
ckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3
SGVhZGVyOworICAgIFdLUGFnZURyYXdGb290ZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0Zvb3RlcjsKKyAgICBXS1BhZ2VQcmludEZyYW1l
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50
RnJhbWU7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBydW5Nb2RhbDsKKyAgICB2b2lkKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDE7
IC8vIFVzZWQgdG8gYmUgZGlkQ29tcGxldGVSdWJiZXJCYW5kRm9yTWFpbkZyYW1lCisgICAgV0tQ
YWdlU2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlckNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyOworICAgIHZvaWQqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdF91bmF2YWlsYWJsZTsKKworICAgIC8vIFZlcnNpb24g
MS4KKyAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MSAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTsK
KyAgICBXS1BhZ2VNb3VzZURpZE1vdmVPdmVyRWxlbWVudENhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50OworICAgIFdLUGFnZURlY2lk
ZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAg
ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQYWdl
VW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMSB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MTsKKworICAgIC8vIFZlcnNpb24gMi4KKyAgICBXS1BhZ2VTaG93Q29sb3JQaWNrZXJDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDb2xvclBpY2tlcjsK
KyAgICBXS1BhZ2VIaWRlQ29sb3JQaWNrZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhpZGVDb2xvclBpY2tlcjsKKyAgICBXS1BhZ2VVbmF2YWlsYWJsZVBs
dWdpbkJ1dHRvbkNsaWNrZWRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgIHVuYXZhaWxh
YmxlUGx1Z2luQnV0dG9uQ2xpY2tlZDsKKworICAgIC8vIFZlcnNpb24gMy4KKyAgICBXS1BhZ2VQ
aW5uZWRTdGF0ZURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBpbm5lZFN0YXRlRGlkQ2hhbmdlOworCisgICAgLy8gVmVyc2lvbiA0LgorICAgIHZvaWQq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW51c2VkMjsgLy8gVXNlZCB0byBiZSBkaWRCZWdpblRyYWNraW5nUG90ZW50aWFsTG9u
Z01vdXNlUHJlc3MuCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQzOyAvLyBVc2VkIHRvIGJlIGRpZFJl
Y29nbml6ZUxvbmdNb3VzZVByZXNzLgorICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNDsgLy8gVXNlZCB0
byBiZSBkaWRDYW5jZWxUcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzLgorICAgIFdLUGFn
ZUlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2U7CisKKyAgICAvLyBWZXJzaW9uIDUuCisgICAg
V0tQYWdlRGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAg
ICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDsKKyAg
ICBXS1BhZ2VEaWRDbGlja0F1dG9GaWxsQnV0dG9uQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpZENsaWNrQXV0b0ZpbGxCdXR0b247CisgICAgV0tQYWdlUnVuSmF2YVNj
cmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBydW5K
YXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKKyAgICBXS1BhZ2VSdW5KYXZh
U2NyaXB0Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1
bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CisgICAgV0tQYWdlUnVu
SmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAg
ICBydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CisgICAgdm9pZCog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnVzZWQ1OyAvLyBVc2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdl
LgorCisgICAgLy8gVmVyc2lvbiA2LgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKKyAg
ICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0
Q29uZmlybUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkphdmFT
Y3JpcHRDb25maXJtOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdDsKKyAgICBX
S0NoZWNrVXNlck1lZGlhUGVybWlzc2lvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbjsKKworICAgIC8vIFZl
cnNpb24gNy4KKyAgICBXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDsKKyAg
ICBXS0Z1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZTsKKworICAgIC8vIFZlcnNp
b24gOC4KKyAgICBXS1JlcXVlc3RQb2ludGVyTG9ja0NhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RQb2ludGVyTG9jazsKKyAgICBXS0RpZExvc2VQ
b2ludGVyTG9ja0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZExvc2VQb2ludGVyTG9jazsKKworICAgIC8vIFZlcnNpb24gOS4KKyAgICBXS0hhbmRsZUF1
dG9wbGF5RXZlbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhhbmRsZUF1dG9wbGF5RXZlbnQ7CisKKyAgICAvLyBWZXJzaW9uIDEwLgorICAgIFdLSGFzVmlk
ZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgaGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2U7CisgICAgV0tEaWRFeGNlZWRC
YWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kQ2FsbGJhY2sgICAgICAgICBk
aWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kOworCisgICAg
Ly8gVmVyc2lvbiAxMS4KKyAgICBXS1BhZ2VEaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNz
d29yZEFwcGVhcmFuY2VDYWxsYmFjayAgICAgICAgIGRpZFJlc2lnbklucHV0RWxlbWVudFN0cm9u
Z1Bhc3N3b3JkQXBwZWFyYW5jZTsKKworICAgIC8vIFZlcnNpb24gMTIuCisgICAgV0tQYWdlUmVx
dWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm07CisKKyAgICAvLyBWZXJzaW9uIDEzLgorICAg
IFdLUGFnZVNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDYWxsYmFj
ayAgICAgICAgICAgc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzczsK
KworICAgIC8vIFZlcnNpb24gMTQuCisgICAgV0tQYWdlUnVuV2ViQXV0aGVudGljYXRpb25QYW5l
bENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5XZWJBdXRoZW50aWNhdGlv
blBhbmVsOworCisgICAgLy8gVmVyc2lvbiAxNS4KKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgIGRlY2lkZVBvbGlj
eUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisgICAgCit9IFdLUGFnZVVJ
Q2xpZW50VjE1OworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25DYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2M4ZjlhMzVkYjg0
MTFlMDM4NWE3YWUxNTQ5YTM5YWY4MTMyZWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
ay5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgiCisKKyNp
bmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tHZXRUeXBlSUQoKQoreworICAgIHJldHVy
biB0b0FQSShTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6QVBJVHlwZSk7Cit9
CisKK3ZvaWQgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0NvbXBsZXRlKFdL
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgc3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2ssIGJvb2wgZ3JhbnRlZCkKK3sKKyAgICByZXR1cm4gdG9JbXBsKHNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKS0+Y29tcGxldGUoZ3JhbnRlZCk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhh
ZWFmYzY5ODRiYTk2ZjU0ODkyZTczMmFmZWEzYTA2M2M5YzcyZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2suaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0
ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2tHZXRUeXBlSUQodm9pZCk7CisKK1dLX0VYUE9SVCB2b2lkIFdL
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tDb21wbGV0ZShXS1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIHNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrLCBib29sIGdyYW50ZWQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0
ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdh
dGVQcml2YXRlLmgKaW5kZXggZDFlYWUyMDFlNjU0MmY0ZmFiNjAxOTgwZGM2NjEyNDkxMzE5Nzkz
Zi4uNWVhYjQ2NTc5Zjk5ZmE2ZjYzMzE2YTRjMDU0NDIyZDYzYTZmZDkxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0
ZS5oCkBAIC0xNTIsNiArMTUyLDggQEAgc3RydWN0IFVJRWRnZUluc2V0czsKIAogLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3aWxsU2hhcmVBY3Rpdml0eUl0ZW1zOihOU0Fy
cmF5ICopYWN0aXZpdHlJdGVtcyBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CiAK
Ky0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXJlcXVlc3RpbmdP
cmlnaW4gdG9wT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopdG9wT3JpZ2luIGRlY2lzaW9uSGFu
ZGxlcjoodm9pZCAoXikoQk9PTCBhdXRob3JpemVkKSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogI2lmIFRBUkdF
VF9PU19JUEhPTkUKIAogLSAoQk9PTClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzaG91
bGRJbmNsdWRlQXBwTGlua0FjdGlvbnNGb3JFbGVtZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5m
byAqKWVsZW1lbnQgV0tfQVBJX0FWQUlMQUJMRShpb3MoOS4wKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGFkNjEzZTVlNDI2YTgx
M2Y5ZmNmYjBmYjA2M2I5ZmNmNmI3YWYxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2Nv
YS5tbQpAQCAtMCwwICsxLDI1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIgorCisjaW1wb3J0
ICJBUElTZWN1cml0eU9yaWdpbi5oIgorI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKKyNpbXBvcnQg
IlNhbmRib3hVdGlsaXRpZXMuaCIKKyNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEku
aD4KKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKyNpbXBvcnQgPFNwZWVjaC9TcGVlY2gu
aD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhTcGVlY2gpCitTT0ZUX0xJTktfQ0xBU1MoU3BlZWNo
LCBTRlNwZWVjaFJlY29nbml6ZXIpCisjZW5kaWYKKworI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91
bmRhdGlvblNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgYm9vbCBw
ZXJmb3JtU2FuZGJveENoZWNrKCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKGN1cnJl
bnRQcm9jZXNzSXNTYW5kYm94ZWQoKSAmJiAhIXNhbmRib3hfY2hlY2soZ2V0cGlkKCksICJkZXZp
Y2UtbWljcm9waG9uZSIsIFNBTkRCT1hfRklMVEVSX05PTkUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbnRIYW5k
bGVyKQoreworICAgIG1fcmVxdWVzdHMuYXBwZW5kKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3Q6OmNyZWF0ZShvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbnRIYW5kbGVyKSkpOwor
ICAgIGlmIChtX3JlcXVlc3RzLnNpemUoKSA9PSAxKQorICAgICAgICBzdGFydE5leHRSZXF1ZXN0
KCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnRO
ZXh0UmVxdWVzdCgpCit7CisgICAgaWYgKG1fcmVxdWVzdHMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBjaGVja1NhbmRib3hSZXF1aXJlbWVudCgpOworfQorCit2b2lkIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb24gZGVjaXNpb24pCit7Cisg
ICAgQVNTRVJUKCFtX3JlcXVlc3RzLmlzRW1wdHkoKSk7CisgICAgYXV0byBjdXJyZW50UmVxdWVz
dCA9IG1fcmVxdWVzdHMudGFrZUZpcnN0KCk7CisgICAgY3VycmVudFJlcXVlc3QtPmNvbXBsZXRl
KGRlY2lzaW9uKTsKKworICAgIHN0YXJ0TmV4dFJlcXVlc3QoKTsKK30KKwordm9pZCBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1NhbmRib3hSZXF1aXJlbWVudCgpCit7
CisgICAgaWYgKCFtX2lzU2FuZGJveENoZWNrUGFzc2VkLmhhc1ZhbHVlKCkpCisgICAgICAgIG1f
aXNTYW5kYm94Q2hlY2tQYXNzZWQgPSBwZXJmb3JtU2FuZGJveENoZWNrKCk7CisKKyAgICBpZiAo
IW1faXNTYW5kYm94Q2hlY2tQYXNzZWQpIHsKKyAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVz
dChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6RGVueSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjaGVja01pY3JvcGhvbmVBY2Nlc3MoKTsKK30K
Kwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja01pY3JvcGhv
bmVBY2Nlc3MoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNN
aWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZC5oYXNWYWx1ZSgpICYmIG1faXNNaWNyb3Bob25lQWNj
ZXNzQXV0aG9yaXplZC52YWx1ZSgpKSB7CisgICAgICAgIGNoZWNrU3BlZWNoUmVjb2duaXRpb25T
ZXJ2aWNlQWNjZXNzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9pc01p
Y3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkLmhhc1ZhbHVlKCkgJiYgIW1faXNNaWNyb3Bob25lQWNj
ZXNzQXV0aG9yaXplZC52YWx1ZSgpKSB7CisgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3Qo
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gTm8gcHJvbXB0IGZvciBtaWNyb3Bob25lIG9y
IHNwZWVjaCByZWNvZ25pdGlvbiBzZXJ2aWNlLgorICAgIGlmIChtX3BhZ2UucHJlZmVyZW5jZXMo
KS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCkpIHsKKyAgICAgICAgY2hlY2tVc2VyUGVybWlz
c2lvbkZvck9yaWdpbigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgSEFWRShTUEVF
Q0hSRUNPR05JWkVSKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAgIGJvb2wgaGFzRGVzY3JpcHRp
b25TdHJpbmcgPSBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1bmRs
ZS5pbmZvRGljdGlvbmFyeVtAIk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb24iXSkubGVuZ3Ro
OworICAgIGlmICghaGFzRGVzY3JpcHRpb25TdHJpbmcpIHsKKyAgICAgICAgbV9pc01pY3JvcGhv
bmVBY2Nlc3NBdXRob3JpemVkID0gZmFsc2U7CisgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVl
c3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBtaWNyb3Bob25lQXV0aG9yaXphdGlv
blN0YXR1cyA9IFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgYXV0aG9yaXphdGlvblN0
YXR1c0Zvck1lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvXTsKKyAgICBpZiAobWljcm9waG9uZUF1
dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZCkgewor
ICAgICAgICBtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQgPSB0cnVlOworICAgICAgICBj
aGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIGlmIChtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1
dGhvcml6YXRpb25TdGF0dXNEZW5pZWQgfHwgbWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMg
PT0gQVZBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkgeworICAgICAgICBtX2lzTWljcm9w
aG9uZUFjY2Vzc0F1dGhvcml6ZWQgPSBmYWxzZTsKKyAgICAgICAgY29tcGxldGVDdXJyZW50UmVx
dWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6RGVueSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQobWljcm9waG9uZUF1dGhvcml6
YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZCk7CisgICAg
YXV0byBtYWluVGhyZWFkSGFuZGxlciA9IChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKV0oQk9PTCBpc0F1dGhvcml6ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlz
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghaXNBdXRob3JpemVkKSB7Cisg
ICAgICAgICAgICBtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgbV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkID0gdHJ1ZTsKKyAgICAg
ICAgY2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKKyAgICB9KTsKKyAgICBh
dXRvIGRlY2lzaW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbbWFpblRocmVhZEhhbmRsZXIgPSBX
VEZNb3ZlKG1haW5UaHJlYWRIYW5kbGVyKV0oQk9PTCBpc0F1dGhvcml6ZWQpIG11dGFibGUgewor
ICAgICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFttYWluVGhyZWFkSGFuZGxlciA9IFdURk1vdmUobWFpblRocmVhZEhhbmRsZXIpLCBpc0F1
dGhvcml6ZWRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgbWFpblRocmVhZEhhbmRsZXIo
aXNBdXRob3JpemVkKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIG1haW5UaHJlYWRIYW5kbGVyKGlzQXV0aG9yaXplZCk7CisgICAgfSk7
CisgICAgW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSByZXF1ZXN0QWNjZXNzRm9yTWVk
aWFUeXBlOkFWTWVkaWFUeXBlQXVkaW8gY29tcGxldGlvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVy
LmdldCgpXTsKKyNlbHNlCisgICAgbV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkID0gdHJ1
ZTsKKyAgICBjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpOworI2VuZGlmIC8v
IEhBVkUoU1BFRUNIUkVDT0dOSVpFUikgJiYgVVNFKEFWRk9VTkRBVElPTikKK30KKwordm9pZCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1NwZWVjaFJlY29nbml0aW9u
U2VydmljZUFjY2VzcygpCit7CisgICAgaWYgKG1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VB
Y2Nlc3NBdXRob3JpemVkLmhhc1ZhbHVlKCkgJiYgbV9pc1NwZWVjaFJlY29nbml0aW9uU2Vydmlj
ZUFjY2Vzc0F1dGhvcml6ZWQudmFsdWUoKSkgeworICAgICAgICBjaGVja1VzZXJQZXJtaXNzaW9u
Rm9yT3JpZ2luKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9pc1NwZWVj
aFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQuaGFzVmFsdWUoKSAmJiAhbV9pc1Nw
ZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQudmFsdWUoKSkgeworICAgICAg
ICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIEhBVkUo
U1BFRUNIUkVDT0dOSVpFUikKKyAgICBib29sIGhhc0Rlc2NyaXB0aW9uU3RyaW5nID0gZHluYW1p
Y19vYmpjX2Nhc3Q8TlNTdHJpbmc+KE5TQnVuZGxlLm1haW5CdW5kbGUuaW5mb0RpY3Rpb25hcnlb
QCJOU1NwZWVjaFJlY29nbml0aW9uVXNhZ2VEZXNjcmlwdGlvbiJdKS5sZW5ndGg7CisgICAgaWYg
KCFoYXNEZXNjcmlwdGlvblN0cmluZykgeworICAgICAgICBtX2lzU3BlZWNoUmVjb2duaXRpb25T
ZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCA9IGZhbHNlOworICAgICAgICBjb21wbGV0ZUN1cnJlbnRS
ZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gc3BlZWNoUmVjb2duaXplckF1
dGhvcml6YXRpb25TdGF0dXMgPSBbZ2V0U0ZTcGVlY2hSZWNvZ25pemVyQ2xhc3MoKSBhdXRob3Jp
emF0aW9uU3RhdHVzXTsKKyAgICBpZiAoc3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0
dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQpIHsK
KyAgICAgICAgbV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQgPSB0
cnVlOworICAgICAgICBjaGVja1VzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoc3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0
dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQgfHwg
c3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVy
QXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCkgeworICAgICAgICBtX2lzU3BlZWNoUmVjb2duaXRp
b25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCA9IGZhbHNlOworICAgICAgICBjb21wbGV0ZUN1cnJl
bnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpE
ZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChzcGVlY2hSZWNvZ25p
emVyQXV0aG9yaXphdGlvblN0YXR1cyA9PSBTRlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9u
U3RhdHVzTm90RGV0ZXJtaW5lZCk7CisgICAgYXV0byBtYWluVGhyZWFkSGFuZGxlciA9IChbdGhp
cywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9y
aXphdGlvblN0YXR1cyBzdGF0dXMpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChzdGF0dXMgIT0gU0ZTcGVlY2hSZWNv
Z25pemVyQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQpIHsKKyAgICAgICAgICAgIG1faXNT
cGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkID0gZmFsc2U7CisgICAgICAg
ICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIG1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkID0g
dHJ1ZTsKKyAgICAgICAgY2hlY2tVc2VyUGVybWlzc2lvbkZvck9yaWdpbigpOworICAgIH0pOwor
ICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFttYWluVGhyZWFkSGFuZGxl
ciA9IFdURk1vdmUobWFpblRocmVhZEhhbmRsZXIpXShTRlNwZWVjaFJlY29nbml6ZXJBdXRob3Jp
emF0aW9uU3RhdHVzIHN0YXR1cykgbXV0YWJsZSB7CisgICAgICAgIGlmICghaXNNYWluVGhyZWFk
KCkpIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW21haW5UaHJlYWRIYW5kbGVyID0g
V1RGTW92ZShtYWluVGhyZWFkSGFuZGxlciksIHN0YXR1c10oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICBtYWluVGhyZWFkSGFuZGxlcihzdGF0dXMpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbWFpblRocmVhZEhhbmRsZXIoc3Rh
dHVzKTsKKyAgICB9KTsKKyAgICBbZ2V0U0ZTcGVlY2hSZWNvZ25pemVyQ2xhc3MoKSByZXF1ZXN0
QXV0aG9yaXphdGlvbjpkZWNpc2lvbkhhbmRsZXIuZ2V0KCldOworI2Vsc2UKKyAgICBtX2lzU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCA9IHRydWU7CisgICAgY2hlY2tV
c2VyUGVybWlzc2lvbkZvck9yaWdpbigpOworI2VuZGlmIC8vIEhBVkUoU1BFRUNIUkVDT0dOSVpF
UikKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1Vz
ZXJQZXJtaXNzaW9uRm9yT3JpZ2luKCkKK3sKKyAgICBBU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0
eSgpKTsKKyAgICBhdXRvJiBjdXJyZW50UmVxdWVzdCA9IG1fcmVxdWVzdHMuZmlyc3QoKTsKKwor
ICAgIGF1dG8gY2xpZW50T3JpZ2luID0gY3VycmVudFJlcXVlc3QtPm9yaWdpbigpOworICAgIGlm
IChtX29yaWdpblBlcm1pc3Npb25NYXAuY29udGFpbnMoY2xpZW50T3JpZ2luKSkgeworICAgICAg
ICBib29sIGdyYW50ZWQgPSBtX29yaWdpblBlcm1pc3Npb25NYXAuZ2V0KGNsaWVudE9yaWdpbik7
CisgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoZ3JhbnRlZCA/IFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpBbGxvdyA6IFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpXShib29sIGlzUGVybWl0dGVkKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgQVNTRVJUKCF3ZWFrVGhpcy0+bV9yZXF1ZXN0cy5p
c0VtcHR5KCkpOworICAgICAgICB3ZWFrVGhpcy0+bV9vcmlnaW5QZXJtaXNzaW9uTWFwLnNldCh3
ZWFrVGhpcy0+bV9yZXF1ZXN0cy5maXJzdCgpLT5vcmlnaW4oKSwgaXNQZXJtaXR0ZWQpOworICAg
ICAgICB3ZWFrVGhpcy0+Y29tcGxldGVDdXJyZW50UmVxdWVzdChpc1Blcm1pdHRlZCA/IFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpBbGxvdyA6IFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICB9OworCisg
ICAgYXV0byByZXF1ZXN0aW5nT3JpZ2luID0gY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbi5zZWN1
cml0eU9yaWdpbigpOworICAgIGF1dG8gdG9wT3JpZ2luID1jbGllbnRPcmlnaW4udG9wT3JpZ2lu
LnNlY3VyaXR5T3JpZ2luKCk7CisgICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9y
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsIEFQSTo6U2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShyZXF1ZXN0aW5nT3JpZ2luLmdldCgpKS5nZXQoKSwgQVBJOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKHRvcE9yaWdpbi5nZXQoKSkuZ2V0KCksIFdURk1vdmUoZGVjaXNpb25I
YW5kbGVyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggOGEwOTQ3NDVjMWYyNGJlMTA1ZGJiMDJh
YjkxZTMwN2IzMWQ0ODZiMS4uZWFkNGQ1N2VlMGEzM2E2YjNlZWJiZGVjNDNmOGI3Mzk1NWQ5NzYw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtMTYx
LDYgKzE2MSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICAgICAgdm9p
ZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQSTo6V2ViQXV0aGVu
dGljYXRpb25QYW5lbCYsIFdlYkZyYW1lUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYpIGZpbmFsOwog
I2VuZGlmCisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgQVBJOjpT
ZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwog
CiAgICAgICAgIFVJRGVsZWdhdGUmIG1fdWlEZWxlZ2F0ZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggZDAzMzhmOGQ2ZTNiOWExM2Rm
MmFmMTUzYWNiNWRlYjM4ZTFmY2Q5Yi4uMTkzNDU2YjFjMDc4Njc5Njk2MTk0YjM1MzFiYzY1ZGM0
MTU1MTllOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
CkBAIC0xMzMyLDQgKzEzMzIsMjYgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6aW1hZ2VP
ck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXoKICAgICBbc3Rh
dGljX2Nhc3Q8aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+PihkZWxlZ2F0ZSkgX3dlYlZpZXc6bV91
aURlbGVnYXRlLm1fd2ViVmlldyBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkOm5ld1Np
emVdOwogfQogCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdl
LCBBUEk6OlNlY3VyaXR5T3JpZ2luJiByZXF1ZXN0aW5nT3JpZ2luLCBBUEk6OlNlY3VyaXR5T3Jp
Z2luJiB0b3BPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IChpZCA8V0tVSURlbGVnYXRlUHJpdmF0
ZT4pbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46dG9wT3JpZ2lu
OmRlY2lzaW9uSGFuZGxlcjopXSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUsIEBzZWxlY3Rvcihfd2ViVmlldzpy
ZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOnRvcE9yaWdpbjpkZWNp
c2lvbkhhbmRsZXI6KSk7CisgICAgW2RlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dl
YlZpZXcgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkZvck9yaWdpbjp3cmFwcGVy
KHJlcXVlc3RpbmdPcmlnaW4pIHRvcE9yaWdpbjp3cmFwcGVyKHRvcE9yaWdpbikgZGVjaXNpb25I
YW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGNv
bXBsZXRpb25IYW5kbGVyLCB7IH0pLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wg
Z3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxl
ckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2hlY2tlci0+
ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGdy
YW50ZWQpOworICAgIH0pLmdldCgpXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyNWJkYzM0NWRkMTAwZTBlOTFiMWM3
M2VhNTNiY2U5ZjE3M2IyYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtMCwwICsxLDc2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OlNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXIoV2ViUGFnZVByb3h5JiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9
CisKK1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6On5TcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyKCkKK3sKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3JlcXVl
c3RzKQorICAgICAgICByZXF1ZXN0LT5jb21wbGV0ZShTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0OjpEZWNpc2lvbjo6RGVueSk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisK
K3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdChjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworfQorCit2
b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0TmV4dFJlcXVlc3Qo
KQoreworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNvbXBs
ZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVj
aXNpb24pCit7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6
Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnQoKQoreworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrTWljcm9waG9uZUFjY2VzcygpCit7Cit9CisKK3ZvaWQg
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlv
blNlcnZpY2VBY2Nlc3MoKQoreworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OmNoZWNrVXNlclBlcm1pc3Npb25Gb3JPcmlnaW4oKQoreworfQorCisjZW5kaWYK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41Njg5YzVkZDU4ODc4OThiNTdkYzJjOWY0NmNhMjM0NDJhZDdlNTg4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcihXZWJQYWdlUHJveHkmKTsKKyAgICB+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcigpOworICAgIHZvaWQgcmVxdWVzdChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHN0
YXJ0TmV4dFJlcXVlc3QoKTsKKyAgICB2b2lkIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb24pOworICAgIHZvaWQgY2hlY2tT
YW5kYm94UmVxdWlyZW1lbnQoKTsKKyAgICB2b2lkIGNoZWNrTWljcm9waG9uZUFjY2VzcygpOwor
ICAgIHZvaWQgY2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKKyAgICB2b2lk
IGNoZWNrVXNlclBlcm1pc3Npb25Gb3JPcmlnaW4oKTsKKworICAgIFdlYlBhZ2VQcm94eSYgbV9w
YWdlOworICAgIERlcXVlPFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Pj4g
bV9yZXF1ZXN0czsKKyAgICBPcHRpb25hbDxib29sPiBtX2lzU2FuZGJveENoZWNrUGFzc2VkOwor
ICAgIE9wdGlvbmFsPGJvb2w+IG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZDsKKyAgICBP
cHRpb25hbDxib29sPiBtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXpl
ZDsKKyAgICBIYXNoTWFwPENsaWVudE9yaWdpbiwgYm9vbD4gbV9vcmlnaW5QZXJtaXNzaW9uTWFw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDBhM2MzMGI4ZjUxYzFjYmUxZWNmNmUxYWNiZjhkN2Y0YWI1NDgyOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3QuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9y
aWdpbi5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCA6IHB1
YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+
IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Qob3Jp
Z2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIH0KKworICAgIGVudW0gY2xh
c3MgRGVjaXNpb24geyBEZW55LCBBbGxvdyB9OworICAgIHZvaWQgY29tcGxldGUoRGVjaXNpb24g
ZGVjaXNpb24pCisgICAgeworICAgICAgICBib29sIGlzQWxsb3dlZCA9IGRlY2lzaW9uID09IERl
Y2lzaW9uOjpBbGxvdzsKKyAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhj
aGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoaXNBbGxvd2VkKTsKKyAgICB9CisKKyAgICBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
IG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CisKK3ByaXZhdGU6CisgICAgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICAgICAgOiBtX29yaWdpbihvcmlnaW4pCisgICAgICAgICwgbV9jb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICB7IH0KKworICAgIFdlYkNv
cmU6OkNsaWVudE9yaWdpbiBtX29yaWdpbjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworfTsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2sgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaz4geworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+IGNyZWF0ZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICB9CisKKyAgICB2b2lk
IGNvbXBsZXRlKGJvb2wgZ3JhbnRlZCkgeyBtX2NvbXBsZXRpb25IYW5kbGVyKGdyYW50ZWQpOyB9
CisKK3ByaXZhdGU6CisgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2soQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAg
OiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgIHsg
fQorCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9jb21wbGV0aW9uSGFuZGxl
cjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCmluZGV4IDFiODgxZWRmNWQzMDQ4
ZGViNzAwOTE0OTc5ZGM1NjhlYTBhNWRiMTIuLjBmYzQ0Y2ZkZjI5NzVkMjNhZDRlOGM0M2ZkMTJh
YWVlNDJiNDQ1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5jcHAKQEAgLTMyLDkgKzMyLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1TcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIo
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cklkZW50aWZpZXIgaWRlbnRpZmllcikKK1NwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNwZWVj
aFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBQZXJtaXNzaW9uQ2hlY2tl
ciYmIHBlcm1pc3Npb25DaGVja2VyKQogICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVj
dGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fcGVybWlzc2lv
bkNoZWNrZXIoV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlcikpCiB7CiB9CiAKQEAgLTcyLDggKzcz
LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWQKIHsKICAgICBpZiAobV9jdXJyZW50UmVxdWVz
dCAmJiBtX2N1cnJlbnRSZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRp
ZmllcikgewogICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbnVsbHB0cjsKLSAgICAgICAgYXV0
byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVu
dElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKTsK
LSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpE
aWRSZWNlaXZlVXBkYXRlKHVwZGF0ZSksIG1faWRlbnRpZmllcik7CisgICAgICAgIHNlbmRVcGRh
dGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
OjpFbmQpOwogCiAgICAgICAgIHByb2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJZk5lZWRlZCgpOwog
ICAgICAgICByZXR1cm47CkBAIC04OSw4ICs4OSw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6OnJlbW92ZVBlbmRpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29u
CiAgICAgd2hpbGUgKCFwZW5kaW5nUmVxdWVzdHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8g
cmVxdWVzdCA9IHBlbmRpbmdSZXF1ZXN0cy50YWtlRmlyc3QoKTsKICAgICAgICAgaWYgKHJlcXVl
c3QtPmNsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlmaWVyKSB7Ci0gICAgICAgICAg
ICBhdXRvIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUo
Y2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOwotICAg
ICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpE
aWRSZWNlaXZlVXBkYXRlKHVwZGF0ZSksIG1faWRlbnRpZmllcik7CisgICAgICAgICAgICBzZW5k
VXBkYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZTo6RW5kKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIG1f
cGVuZGluZ1JlcXVlc3RzLmFwcGVuZChXVEZNb3ZlKHJlcXVlc3QpKTsKQEAgLTEwNSwxMiArMTA0
LDY1IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmludmFsaWRhdGUoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpCiAgICAgfQogfQogCi12b2lkIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyOjpzdGFydFBvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0JikKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0UG9j
ZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3Qp
CiB7CisgICAgcmVxdWVzdC5zZXRJc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2sodHJ1ZSk7Cisg
ICAgbV9wZXJtaXNzaW9uQ2hlY2tlcihyZXF1ZXN0LmNsaWVudE9yaWdpbigpLCBbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd2Vha1JlcXVlc3QgPSBtYWtlV2Vha1B0cihyZXF1
ZXN0KV0oYm9vbCBncmFudGVkKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKCF3ZWFrUmVxdWVzdCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBBU1NFUlQobV9jdXJyZW50UmVxdWVzdCA9PSB3ZWFrUmVxdWVzdC5nZXQo
KSk7CisgICAgICAgIEFTU0VSVCh3ZWFrUmVxdWVzdC0+aXNXYWl0aW5nRm9yUGVybWlzc2lvbkNo
ZWNrKCkpOworICAgICAgICB3ZWFrUmVxdWVzdC0+c2V0SXNXYWl0aW5nRm9yUGVybWlzc2lvbkNo
ZWNrKGZhbHNlKTsKKworICAgICAgICBpZiAoIWdyYW50ZWQpIHsKKyAgICAgICAgICAgIGF1dG8g
ZXJyb3IgPSBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25FcnJvclR5
cGU6Ok5vdEFsbG93ZWQsICJwZXJtaXNzaW9uIGNoZWNrIGZhaWxzIl9zIH07CisgICAgICAgICAg
ICBzZW5kVXBkYXRlKHdlYWtSZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCksIFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IsIGVycm9yKTsKKyAgICAgICAgICAgIG1f
Y3VycmVudFJlcXVlc3QgPSBudWxscHRyOworICAgICAgICAgICAgcHJvY2Vzc05leHRQZW5kaW5n
UmVxdWVzdElmTmVlZGVkKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCp3ZWFrUmVxdWVzdCk7CisgICAgfSk7Cit9
CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVl
c3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JikKK3sKKyAgICAvLyBUT0RPOiBz
dGFydCBjYXB0dXJpbmcgYXVkaW8gYW5kIHJlY29nbml6aW5nLgorfQorCit2b2lkIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyOjpzZW5kVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVU
eXBlIHR5cGUsIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+IGVycm9yLCBPcHRpb25h
bDxWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gcmVzdWx0KQoreworICAgIGF1
dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGll
bnRJZGVudGlmaWVyLCB0eXBlKTsKKyAgICBpZiAodHlwZSA9PSBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGU6OkVycm9yKQorICAgICAgICB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRlbnRpZmllciwgKmVycm9yKTsKKyAgICBp
ZiAodHlwZSA9PSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlJlc3VsdCkKKyAgICAgICAg
dXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZVJlc3VsdChj
bGllbnRJZGVudGlmaWVyLCAqcmVzdWx0KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb246OkRpZFJlY2VpdmVVcGRhdGUodXBkYXRlKSwgbV9pZGVudGlm
aWVyKTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RvcFByb2Nlc3NpbmdS
ZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpCit2b2lkIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyOjpzdG9wUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0JiByZXF1ZXN0KQogeworICAgIGlmIChyZXF1ZXN0LmlzV2FpdGluZ0Zv
clBlcm1pc3Npb25DaGVjaygpKSB7CisgICAgICAgIHNlbmRVcGRhdGUocmVxdWVzdC5jbGllbnRJ
ZGVudGlmaWVyKCksIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6Tm9NYXRj
aCk7CisgICAgICAgIHNlbmRVcGRhdGUocmVxdWVzdC5jbGllbnRJZGVudGlmaWVyKCksIFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKTsKKworICAgICAgICBBU1NFUlQo
bV9jdXJyZW50UmVxdWVzdCA9PSAmcmVxdWVzdCk7CisgICAgICAgIG1fY3VycmVudFJlcXVlc3Qg
PSBudWxscHRyOworICAgICAgICBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFRPRE86IHN0b3AgY2FwdHVyaW5nIGF1
ZGlvIGFuZCBmaW5hbGl6aW5nIHJlY29nbml0aW9uIHJlc3VsdCB3aXRoIGNhcHR1cmVkIGF1ZGlv
LgorICAgIFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+IHJlc3VsdERhdGFzOwor
ICAgIHNlbmRVcGRhdGUocmVxdWVzdC5jbGllbnRJZGVudGlmaWVyKCksIFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uVXBkYXRlVHlwZTo6UmVzdWx0LCBXVEY6Om51bGxvcHQsIHJlc3VsdERhdGFz
KTsKKyAgICBzZW5kVXBkYXRlKHJlcXVlc3QuY2xpZW50SWRlbnRpZmllcigpLCBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7CisgICAgbV9jdXJyZW50UmVxdWVzdCA9
IG51bGxwdHI7CisgICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7CiB9CiAK
IElQQzo6Q29ubmVjdGlvbiogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6Om1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5oCmluZGV4IDdhYTI0MTYzOGI5YzM1MTQ5NjY5ODQ0MzJkYmM1MzBk
Zjg0ODRhMzcuLjIxOWMwMzliYzc2Mzc4ZmU1YWI3NWNiNWQ1YjlmNjY3ZWEzMDUwMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaApA
QCAtMjgsMTkgKzI4LDI2IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NwZWVjaFJlY29nbml0aW9uRXJyb3IuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3Bl
ZWNoUmVjb2duaXRpb25SZXN1bHREYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2VudW0gY2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiB1
c2luZyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgPSBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcjsKK3VzaW5nIFBlcm1pc3Npb25DaGVja2VyID0gRnVuY3Rpb248dm9pZChjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKT47
CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRy
PFNwZWVjaFJlY29nbml0aW9uU2VydmVyPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBw
cml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyKTsKKyAgICBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcklkZW50aWZpZXIsIFBlcm1pc3Npb25DaGVja2VyJiYpOwogCiAgICAgdm9pZCBzdGFydChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYpOwogICAgIHZvaWQgc3RvcChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKQEAg
LTUzLDcgKzYwLDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRPRE86IGltcGxlbWVudCB0aGVzZS4K
ICAgICB2b2lkIHN0YXJ0UG9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3QmKTsKKyAgICB2b2lkIGNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBzdG9wUHJvY2Vzc2luZ1JlcXVl
c3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7CisgICAgdm9pZCBzZW5kVXBk
YXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIs
IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gPSBXVEY6Om51bGxvcHQsIE9wdGlvbmFsPFZlY3RvcjxX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PiA9IFdURjo6bnVsbG9wdCk7CiAK
ICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwpAQCAtNjYsNiArNzUs
NyBAQCBwcml2YXRlOgogICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiAgICAgRGVxdWU8UmVmPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dD4+IG1fcGVuZGluZ1JlcXVlc3RzOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3Q+IG1fY3VycmVudFJlcXVlc3Q7CisgICAgUGVybWlzc2lvbkNoZWNrZXIgbV9w
ZXJtaXNzaW9uQ2hlY2tlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxB
dXRoZW50aWNhdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IDRkYzk3ZTg5MzkwZTg1YWFhNTVl
ZGU0ZWYyODAxZTFiNjc4YjNkZGUuLmI1MjJiM2I3OTJhZTRlMDRiZWI2ZmJiMzU2NzkxM2VkMjlm
NTlmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAgLTE0
MCwxNCArMTQwLDE0IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8UmVmPEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4+PiBnZXRFeGlzdGluZ0NyZWRlbnRpCiAgICAgICAgIH0KICAgICAg
ICAgYXV0byYgcmVzcG9uc2VNYXAgPSBkZWNvZGVkUmVzcG9uc2UtPmdldE1hcCgpOwogCi0gICAg
ICAgIGF1dG8gaXQgPSByZXNwb25zZU1hcC5maW5kKENCT1Ioa0VudGl0eUlkTWFwS2V5KSk7Cisg
ICAgICAgIGF1dG8gaXQgPSByZXNwb25zZU1hcC5maW5kKENCT1IoZmlkbzo6a0VudGl0eUlkTWFw
S2V5KSk7CiAgICAgICAgIGlmIChpdCA9PSByZXNwb25zZU1hcC5lbmQoKSB8fCAhaXQtPnNlY29u
ZC5pc0J5dGVTdHJpbmcoKSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgICAgIGF1dG8m
IHVzZXJIYW5kbGUgPSBpdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKTsKIAotICAgICAgICBpdCA9
IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUihrRW50aXR5TmFtZU1hcEtleSkpOworICAgICAgICBpdCA9
IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUihmaWRvOjprRW50aXR5TmFtZU1hcEtleSkpOwogICAgICAg
ICBpZiAoaXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNTdHJpbmcoKSkg
ewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwpAQCAtMjkxLDggKzI5MSw4IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9y
Ojpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKFNlY0FjY2Vzc0Nv
CiAgICAgY29uc3QgYXV0byYgc2VjQXR0ckxhYmVsID0gY3JlYXRpb25PcHRpb25zLnJwLmlkOwog
CiAgICAgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSB1c2VyRW50aXR5TWFwOwotICAgIHVzZXJF
bnRpdHlNYXBbY2Jvcjo6Q0JPUlZhbHVlKGtFbnRpdHlJZE1hcEtleSldID0gY2Jvcjo6Q0JPUlZh
bHVlKGNyZWF0aW9uT3B0aW9ucy51c2VyLmlkVmVjdG9yKTsKLSAgICB1c2VyRW50aXR5TWFwW2Ni
b3I6OkNCT1JWYWx1ZShrRW50aXR5TmFtZU1hcEtleSldID0gY2Jvcjo6Q0JPUlZhbHVlKGNyZWF0
aW9uT3B0aW9ucy51c2VyLm5hbWUpOworICAgIHVzZXJFbnRpdHlNYXBbY2Jvcjo6Q0JPUlZhbHVl
KGZpZG86OmtFbnRpdHlJZE1hcEtleSldID0gY2Jvcjo6Q0JPUlZhbHVlKGNyZWF0aW9uT3B0aW9u
cy51c2VyLmlkVmVjdG9yKTsKKyAgICB1c2VyRW50aXR5TWFwW2Nib3I6OkNCT1JWYWx1ZShmaWRv
OjprRW50aXR5TmFtZU1hcEtleSldID0gY2Jvcjo6Q0JPUlZhbHVlKGNyZWF0aW9uT3B0aW9ucy51
c2VyLm5hbWUpOwogICAgIGF1dG8gdXNlckVudGl0eSA9IGNib3I6OkNCT1JXcml0ZXI6OndyaXRl
KGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKHVzZXJFbnRpdHlNYXApKSk7CiAgICAgQVNTRVJUKHVz
ZXJFbnRpdHkpOwogICAgIGF1dG8gc2VjQXR0ckFwcGxpY2F0aW9uVGFnID0gdG9OU0RhdGEoKnVz
ZXJFbnRpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
NDMwMGUxZjUyMmZmNTIyNzQ4ZjJiMWRmOTEzN2RmN2E0ZDI2YzVhNC4uMzFmMThmYTI0ZGFiZDI3
ZGY3NGIyNDE4YTUyMjczMjlmZDJkNzRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC04Niw2ICs4Niw3IEBACiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdl
UHJveHkuaCIKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJuaW5nLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUu
aCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUu
aCIKQEAgLTEwMTcxLDYgKzEwMTcyLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFj
dGl2aXR5U3RhdGVVcGRhdGVGb3JUZXN0aW5nKCkKICAgICB9KTsKIH0KIAordm9pZCBXZWJQYWdl
UHJveHk6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24oY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX3NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIpCisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcj4oKnRo
aXMpOworCisgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLT5yZXF1ZXN0
KGNsaWVudE9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2NlZmJmYzY5NDVlZGZlNDNhZTU2YzJk
NTY0YzBlODFlOTViYjRhNi4uOGVhMTQ2MDQ3ODg5Y2U3MzgyZmI2ZTA2OTIwYTRhYTlhNGZkNzEz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTMwNSw2ICszMDUs
NyBAQCBjbGFzcyBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE7CiBjbGFz
cyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHk7CiBjbGFzcyBTZWNLZXlQcm94eVN0b3JlOworY2xhc3MgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjsKIGNsYXNzIFVzZXJEYXRhOwogY2xhc3MgVmlld1NuYXBz
aG90OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKQEAgLTE4MTksNiArMTgyMCw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5KFNlY29uZHMgY2FwdHVy
ZVJlcG9ydGluZ0RlbGF5KSB7IG1fbWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkgPSBjYXB0dXJl
UmVwb3J0aW5nRGVsYXk7IH0KICAgICBzaXplX3Qgc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVy
KCkgeyByZXR1cm4gbV9zdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXI7IH0KIAorICAgIHZvaWQg
cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKwogcHJpdmF0ZToKICAg
ICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBh
Z2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAt
Mjg4OCw2ICsyODkxLDggQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9zdXNwZW5kTWVkaWFQbGF5
YmFja0NvdW50ZXIgeyAwIH07CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpBZENsaWNrQXR0cmli
dXRpb24+IG1fbmV3UGFnZU5hdmlnYXRpb25BZENsaWNrQXR0cmlidXRpb247CisKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcj4gbV9zcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBmNmI4
NjdiZDU2NGRmZDE3MmViYTNkYjgzMzI1Y2MzNzNjZDIwMDY5Li44YjMwMjljNDA5ODI2MDk2MDk0
YWE2ODc1OTdhMjRlNDIzMDczODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKQEAgLTE3MTIsNyArMTcxMiwxOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJ
ZGVudAogewogICAgIGF1dG8gc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtX3NwZWVjaFJlY29n
bml0aW9uU2VydmVyTWFwLmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsKICAgICBBU1NFUlQoc3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXNOZXdFbnRyeSk7Ci0gICAgc3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmllcik7CisgICAgc3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmllciwgW2lkZW50aWZpZXIs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2lu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9y
IChhdXRvKiBwYWdlIDogd2Vha1RoaXMtPnBhZ2VzKCkpIHsKKyAgICAgICAgICAgIGlmIChwYWdl
ICYmIHBhZ2UtPndlYlBhZ2VJRCgpID09IGlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICAgICBw
YWdlLT5yZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKG9yaWdpbiwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICB9
KTsKICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIsICpzcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5pdGVyYXRvci0+dmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZDYzYzJiM2UyOTg3ODc3YmFmMmY1NTg4
ZTY3YzAwNzYzNWIxNGU0Li5lZjE4ODhmYmZlNzkwOWFmZDlmZDljN2ExMzBmMmJhMmMzODg5OTU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE0MDcsNiArMTQwNyw5IEBACiAJCTkzRDZCNzg3MjU0Q0NEOEMwMDU4REQzQSAvKiBXZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3ODYyNTRDQ0Q4QjAwNThERDNBIC8qIFdl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CiAJCTkzRDZCNzg4
MjU0Q0NEOTQwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdl
c1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzRDZCNzdFMjU0Q0NBQkIwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25NZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKIAkJOTNENkI3OEEyNTRDRDQzRTAwNThERDNBIC8q
IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc3RDI1NENDQUJC
MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLzsgfTsKKwkJOTNENkI3QjQyNTUyNjhENTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmggKi87IH07CisJCTkzRDZCN0I1MjU1MjY4RDcwMDU4REQzQSAv
KiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdCMjI1NTI2OEEyMDA1OEREM0EgLyog
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovOyB9OworCQk5M0Q2QjdCOTI1
NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3Qjcy
NTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0U2
QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3
IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5M0Y1NDlCNDFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENv
bmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzRjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJOTUwRjI4
ODAyNTI0MTRFQTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwRjI4N0UyNTI0MTRFOTAwQjc0
RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oICovOyB9OwpAQCAtNDUyNSw2ICs0NTI4LDEy
IEBACiAJCTkzRDZCNzgwMjU0Q0NBQkMwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
ck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29n
bml0aW9uU2VydmVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNE
NkI3ODEyNTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNENkI3ODYyNTRDQ0Q4QjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNENkI3QjAyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNENkI3QjMyNTUyNjhCRjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdCODI1NTM0QTEyMDA1OEREM0EgLyogV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNkE0RUQxQkM1REQzOTAwRjhB
MEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y1
NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjUxRTMxNzREQTAwMEU3MjM5IC8qIFdL
U25hcHNob3RDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02NDY1LDYgKzY0NzQsNyBAQAogCQkJCTVDQTk4NTRCMjEwQkVCNzMwMDU3RUI2
QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gKi8sCiAJCQkJMUEwMDJENDcxOTZCMzQ1
RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oICovLAogCQkJCTFBMDAyRDQ2MTk2QjM0
NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcubW0gKi8sCisJCQkJOTNENkI3QjMyNTUy
NjhCRjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5t
bSAqLywKIAkJCQkzMTU3MTM1QzIwNDBBOUIyMDA4NEY5Q0YgLyogU3lzdGVtUHJldmlld0NvbnRy
b2xsZXJDb2NvYS5tbSAqLywKIAkJCQkyRDBDRjY0QzIxRjJBODAzMDA3ODc1NjYgLyogVGV4dENo
ZWNraW5nQ29udHJvbGxlci5oICovLAogCQkJCTJEMENGNjRCMjFGMkE4MDMwMDc4NzU2NiAvKiBU
ZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tICovLApAQCAtOTE5Niw2ICs5MjA2LDkgQEAKIAkJCQlC
QzExMUIwODExMkY1RTNDMDAzMzdCQUIgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8sCiAJ
CQkJMUEzMDA2NkMxMTEwRjRGNzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLywK
IAkJCQk1Q0E5ODU0OTIxMEJFQjVBMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2FybmluZy5oICov
LAorCQkJCTkzRDZCN0IwMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyLmNwcCAqLywKKwkJCQk5M0Q2QjdCMjI1NTI2OEEyMDA1OEREM0EgLyogU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovLAorCQkJCTkzRDZCN0FGMjU1MjY4
QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi8sCiAJ
CQkJOTNENkI3NkIyNTRCODk1ODAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmNw
cCAqLywKIAkJCQk5M0Q2Qjc2QzI1NEI4OTU4MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIuaCAqLywKIAkJCQk5M0Q2Qjc3QTI1NEM5ODREMDA1OEREM0EgLyogU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4gKi8sCkBAIC05NTM2LDYgKzk1NDksOCBAQAogCQkJCTMz
MzY3NjM5MTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmggKi8sCiAJ
CQkJMUFERTQ2QjAxOTU0RUM2MTAwMEY3OTg1IC8qIFdLU2Vzc2lvblN0YXRlUmVmLmNwcCAqLywK
IAkJCQkxQURFNDZCMTE5NTRFQzYxMDAwRjc5ODUgLyogV0tTZXNzaW9uU3RhdGVSZWYuaCAqLywK
KwkJCQk5M0Q2QjdCODI1NTM0QTEyMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjay5jcHAgKi8sCisJCQkJOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdL
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLywKIAkJCQk1MUY4ODZBMzFG
MkMyMTRBMDBDMTkzRUYgLyogV0tUZXN0aW5nU3VwcG9ydC5jcHAgKi8sCiAJCQkJNTFGODg2QTQx
RjJDMjE0QTAwQzE5M0VGIC8qIFdLVGVzdGluZ1N1cHBvcnQuaCAqLywKIAkJCQkzMTQ4ODhGRTFE
OTFCMTFEMDAzNzcwNDIgLyogV0tUZXh0Q2hlY2tlci5jcHAgKi8sCkBAIC0xMTM3Myw2ICsxMTM4
OCw4IEBACiAJCQkJNTdCQkVBNkQyMkJDMEJGRTAwMjczOTk1IC8qIFNPQXV0aG9yaXphdGlvbkxv
YWRQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3NkNBOUQ3MjJCODYyMTgwMDMwMTQzQyAv
KiBTT0F1dGhvcml6YXRpb25OU1VSTEV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMx
ODUyMkIzNTE2OTAwOEQwRThCIC8qIFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTkzRDZCN0I1MjU1MjY4RDcwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q2QjdCNDI1NTI2OEQ1MDA1
OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTNENkI3NzIyNTRCQjUxOTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4NDI1NENDRDBFMDA1OEREM0EgLyogU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3
ODUyNTRDQ0Q0MzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXNSZXBs
aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTExOTg2LDYgKzEyMDAzLDcgQEAKIAkJCQk1MTNFNDYy
RDFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5M0Y1NDlCNDFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENv
bmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTg3MjJCMzUxNzAwMDhEMEU4
QiAvKiBXS1NPQXV0aG9yaXphdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q2
QjdCOTI1NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E3OEZGMzIyMjQxOTE5NjAwOTY0ODNFIC8qIFdL
U3RvcmFnZUFjY2Vzc0FsZXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYwNjEyNEZGMDI3
MDA2OEYyMEEgLyogV0tTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjFBMTI0RkYw
MzcwMDY4RjIwQSAvKiBXS1N0cmluZ0NGLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAKaW5kZXggZDRmNGQ0ZjY5NDAwMDI2
Yjk5ZjdiYzU0MjFmYzRjOWNjNGU2MThhZC4uYzk2OTAyYzdmZDkyMGM2Zjk2MzFkMjNlNzhlZjhk
NWJhODgwN2U4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5jcHAKQEAgLTU4LDkgKzU4LDkgQEAgdm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb246OnJlZ2lzdGVyQ2xpZW50KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ28KICAgICBt
X2NsaWVudE1hcC5hZGQoY2xpZW50LmlkZW50aWZpZXIoKSwgbWFrZVdlYWtQdHIoY2xpZW50KSk7
CiB9CiAKLXZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpzdGFydChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1S
ZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpCit2b2lkIFdlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJv
b2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRp
dmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4pCiB7Ci0gICAgV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyBpbmZvIHsgY2xpZW50SWRlbnRpZmllciwg
bGFuZywgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVybmF0aXZlcyB9OworICAg
IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gaW5mbyB7IGNsaWVudElkZW50
aWZpZXIsIGxhbmcsIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMs
IFdURk1vdmUoY2xpZW50T3JpZ2luKSB9OwogICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29n
bml0aW9uU2VydmVyOjpTdGFydChpbmZvKSk7CiB9CiAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBX
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OmludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWMKICAgICBzZW5kKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6SW52YWxpZGF0ZShjbGllbnRJZGVudGlmaWVyKSk7CiB9CiAKLXZvaWQgV2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uOjpkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlJiB1cGRhdGUpCit2b2lkIFdlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZSYmIHVwZGF0ZSkKIHsKICAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSB1cGRhdGUuY2xp
ZW50SWRlbnRpZmllcigpOwogICAgIGlmICghbV9jbGllbnRNYXAuY29udGFpbnMoY2xpZW50SWRl
bnRpZmllcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgK
aW5kZXggMjhkYmQxOTdjYjNmNzk4ZmM3NjMxOTllYmIxMmRlMTNhZWQ3NTFiMS4uNDQzYjA0ZjFj
Y2FhYjBhMGU2YWE1MzgzMWU5ODVkMTBhNmE1MzMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaApAQCAtNDMsMTEgKzQzLDExIEBAIGNsYXNzIFdlYlBh
Z2U7CiAKIHVzaW5nIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbklkZW50aWZpZXIgPSBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcjsKIAotY2xhc3MgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uIDogcHVibGljIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiwgcHJpdmF0
ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgeworY2xh
c3MgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uPiBjcmVhdGUoU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywg
Ym9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5h
dGl2ZXMpIGZpbmFsOworICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRp
bnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiYpIGZpbmFsOwogICAgIHZvaWQgc3RvcChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lk
IGFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIpIGZpbmFsOwogCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgfldlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbigpOwogCiAgICAgdm9pZCByZWdpc3RlckNsaWVudChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVVcGRhdGUoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGUmJikgZmluYWw7CiAgICAgdm9pZCBpbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogCiAgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIuCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggYjU3NWE0MWZmY2I1NWM2MTM4YmZiYTFlNDk0NjNkYTAyZmU2MjEwMi4uMmNmMjEz
YTVhNGZlNmYzYjFkNmI4MWM4Njc0ZDI5ZDBlZTUyMWM1OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTExLTA2
ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBi
YXNpYyBwZXJtaXNzaW9uIGNoZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvSW5m
by5wbGlzdDoKKyAgICAgICAgKiBNb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9J
bmZvLnBsaXN0OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0SXNT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6ZGVjaWRlUG9saWN5Rm9y
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpjb21wbGV0ZVNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrKToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uR3JhbnRlZCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3
V2l0aE9wdGlvbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRv
Q29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMjAtMTEtMDQgIEpvbmF0aGFuIEJlZGFyZCAgPGpi
ZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRzY21weV0gQWRkIGNoZWNrb3V0IGNv
bW1hbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0IGIvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QKaW5kZXggNGUyYjFmNDgxOWFkNTEwM2U0Y2Yx
NzA5YjdjNTNhNjZlOGIzOTVlNS4uMzNhM2NhMWJlNzM1MDhlMWZmY2IwMjk1N2M4NjRlODU5MmRh
YWE0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QKKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QKQEAgLTUyLDkgKzUyLDExIEBACiAJCQk8
c3RyaW5nPkVkaXRvcjwvc3RyaW5nPgogCQk8L2RpY3Q+CiAJPC9hcnJheT4KLSAgICA8a2V5Pk5T
Q2FtZXJhVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5nIHZpZGVv
IG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgotICAgIDxrZXk+TlNNaWNyb3Bob25lVXNh
Z2VEZXNjcmlwdGlvbjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5nIGF1ZGlvIG9uIGJlaGFs
ZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uPC9r
ZXk+CisJPHN0cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJp
bmc+CisJPGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5S
ZWNvcmRpbmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5OU1Nw
ZWVjaFJlY29nbml0aW9uVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVjb2duaXpp
bmcgY2FwdHVyZWQgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CiA8L2RpY3Q+
CiA8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWlu
aUJyb3dzZXIvSW5mby5wbGlzdCBiL1Rvb2xzL01vYmlsZU1pbmlCcm93c2VyL01vYmlsZU1pbmlC
cm93c2VyL0luZm8ucGxpc3QKaW5kZXggMmQxYmM1ODJmYmU3NjVjZmRjNDEwNWVmZTllY2MxZDgz
MjBjYzk1OS4uNTM4N2IzNzQ5YTQ3NGZlMGIzZDljNjA5NWNiMjg4MTdiOGY5MjMwYSAxMDA2NDQK
LS0tIGEvVG9vbHMvTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5mby5wbGlz
dAorKysgYi9Ub29scy9Nb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBs
aXN0CkBAIC01NCw5ICs1NCwxMSBAQAogCQk8a2V5Pk5TQWxsb3dzQXJiaXRyYXJ5TG9hZHNJbldl
YkNvbnRlbnQ8L2tleT4KIAkJPHRydWUvPgogCTwvZGljdD4KLSAgICA8a2V5Pk5TQ2FtZXJhVXNh
Z2VEZXNjcmlwdGlvbjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5nIHZpZGVvIG9uIGJlaGFs
ZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgotICAgIDxrZXk+TlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlw
dGlvbjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5nIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJz
aXRlczwvc3RyaW5nPgorCTxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0
cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtl
eT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvcmRpbmcg
YXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5OU1NwZWVjaFJlY29n
bml0aW9uVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVjb2duaXppbmcgY2FwdHVy
ZWQgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CiA8L2RpY3Q+CiA8L3BsaXN0
PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggOTY5NjE0ZTY3Mjg4NjI5NjMzMDdjOTll
YzQ3ODQxNTI0ZmYwMTI5Yi4uOTgyOTdhZjcwZGI1MTFkYWQwYTc3OTc1ZWEzOGVkNWM4ZGI2YmQ3
YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC00MDEsNCArNDAxLDcgQEAgaW50ZXJm
YWNlIFRlc3RSdW5uZXIgewogICAgIHVuZGVmaW5lZCBzZXRBZENsaWNrQXR0cmlidXRpb25PdmVy
cmlkZVRpbWVyRm9yVGVzdGluZyhib29sZWFuIHZhbHVlKTsKICAgICB1bmRlZmluZWQgc2V0QWRD
bGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRlc3RpbmcoRE9NU3RyaW5nIHVybCk7CiAg
ICAgdW5kZWZpbmVkIG1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZygp
OworCisgICAgLy8gU3BlZWNoUmVjb2duaXRpb24KKyAgICB1bmRlZmluZWQgc2V0SXNTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2xlYW4gdmFsdWUpOwogfTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmlu
ZGV4IGU1YzVmOTlhZDFkYzljMjg2ZTA5NDczNDZjOWJkNzVmY2EyZjkzYzMuLjI1YjQxNzY3NjMw
MTEyYzUxNWNhMzE0MWQ4ZDkzNWVhYjRiYTI1NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjA0Nyw2ICsyMDQ3
LDExIEBAIHZvaWQgVGVzdFJ1bm5lcjo6ZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2soKQog
ICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soRGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2tJ
RCk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25HcmFudGVkKGJvb2wgZ3JhbnRlZCkKK3sKKyAgICBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2Fn
ZSgic2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkIiwgZ3JhbnRlZCk7Cit9
CisKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiB9IC8vIG5hbWVzcGFjZSBX
VFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmgKaW5kZXggYWFhNTIxNmY5MjYwZGI0ZDk4ODFjZDBkZGJiMTlmNTA4NTI5N2ZkOC4uOTE4
YWE5NjQyNjcyZWZhYTBjZTQ2MzRiMTY4YjAwMGQzNDMzZWVlNSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTUxMSw2ICs1
MTEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9u
VVJMRm9yVGVzdGluZyhKU1N0cmluZ1JlZik7CiAgICAgdm9pZCBtYXJrQWRDbGlja0F0dHJpYnV0
aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKIAorICAgIHZvaWQgc2V0SXNTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wpOworCiBwcml2YXRlOgogICAgIFRlc3RSdW5uZXIo
KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA2ZGJj
Njg0ZTg4NTBhZmUwNDU5MTM5ZmJlMTlkNWU1Y2NkYjcyNmU3Li4xODZlZmY5YTE0YzcxMDg5ZjA2
YWYyOTRhZWVlMjQyMzBkN2ZjMWUzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1Byb3RlY3Rp
b25TcGFjZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUgPFdl
YktpdC9XS1NlY3VyaXR5T3JpZ2luUmVmLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tUZXh0Q2hl
Y2tlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1VSTC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1Vz
ZXJDb250ZW50Q29udHJvbGxlclJlZi5oPgpAQCAtMjk3LDYgKzI5OCwyMSBAQCBzdGF0aWMgdm9p
ZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKCkKIHsKIH0KIAorc3RhdGljIHZvaWQgZGVjaWRl
UG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdL
U2VjdXJpdHlPcmlnaW5SZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgY2FsbGJhY2spCit7CisgICAgVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLmNvbXBsZXRlU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2soY2Fs
bGJhY2spOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpjb21wbGV0ZVNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNoZWNrKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tS
ZWYgY2FsbGJhY2spCit7CisgICAgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
a0NvbXBsZXRlKGNhbGxiYWNrLCBtX2lzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRl
ZCk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uR3JhbnRlZChib29sIGdyYW50ZWQpCit7CisgICAgbV9pc1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkdyYW50ZWQgPSBncmFudGVkOworfQorCiBXS1BhZ2VSZWYgVGVzdENvbnRyb2xs
ZXI6OmNyZWF0ZU90aGVyUGFnZShXS1BhZ2VSZWYsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29u
ZmlndXJhdGlvbiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmlnYXRpb25BY3Rpb24sIFdLV2lu
ZG93RmVhdHVyZXNSZWYgd2luZG93RmVhdHVyZXMsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7
CiAgICAgUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3ID0gc3RhdGljX2Nhc3Q8UGxhdGZvcm1X
ZWJWaWV3Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwpAQCAtNjUwLDggKzY2Niw4
IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBU
ZXN0T3B0aW9ucyYgb3B0aW9ucykKICAgICBXS0hUVFBDb29raWVTdG9yZURlbGV0ZUFsbENvb2tp
ZXMoV0tXZWJzaXRlRGF0YVN0b3JlR2V0SFRUUENvb2tpZVN0b3JlKHdlYnNpdGVEYXRhU3RvcmUo
KSksIG51bGxwdHIsIG51bGxwdHIpOwogCiAgICAgcGxhdGZvcm1DcmVhdGVXZWJWaWV3KGNvbmZp
Z3VyYXRpb24uZ2V0KCksIG9wdGlvbnMpOwotICAgIFdLUGFnZVVJQ2xpZW50VjE0IHBhZ2VVSUNs
aWVudCA9IHsKLSAgICAgICAgeyAxNCwgbV9tYWluV2ViVmlldy5nZXQoKSB9LAorICAgIFdLUGFn
ZVVJQ2xpZW50VjE1IHBhZ2VVSUNsaWVudCA9IHsKKyAgICAgICAgeyAxNSwgbV9tYWluV2ViVmll
dy5nZXQoKSB9LAogICAgICAgICAwLCAvLyBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjAKICAgICAgICAgMCwgLy8gc2hvd1BhZ2UKICAgICAgICAgMCwgLy8gY2xvc2UKQEAgLTcy
NCw3ICs3NDAsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlv
bnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgICAgIDAsIC8vIGRpZFJlc2lnbklu
cHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZQogICAgICAgICAwLCAvLyByZXF1ZXN0
U3RvcmFnZUFjY2Vzc0NvbmZpcm0KICAgICAgICAgc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlv
bkFuZE1vdGlvbkFjY2VzcywKLSAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbAorICAg
ICAgICBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsLAorICAgICAgICBkZWNpZGVQb2xpY3lGb3JT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0CiAgICAgfTsKICAgICBXS1BhZ2VTZXRQ
YWdlVUlDbGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAmcGFnZVVJQ2xpZW50LmJhc2UpOwog
CkBAIC0xMDUzLDYgKzEwNzAsOCBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9D
b25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAgIG1fc2Vy
dmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50ID0gMDsKICAgICBtX3Nob3VsZERp
c21pc3NKYXZhU2NyaXB0QWxlcnRzQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKIAorICAgIHNldElz
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCh0cnVlKTsKKwogICAgIGF1dG8gbG9h
ZEFib3V0QmxhbmsgPSBbdGhpc10gewogICAgICAgICBtX2RvbmVSZXNldHRpbmcgPSBmYWxzZTsK
ICAgICAgICAgV0tQYWdlTG9hZFVSTChtX21haW5XZWJWaWV3LT5wYWdlKCksIGJsYW5rVVJMKCkp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDMzYjY0OTRhYzYy
NDRiOTJmY2I3ODA5YTU4ZDcyMDNjN2MxMjU4YTguLjA1YzhmOGJkYWE5NWFkODdlNDM5ZTMwOTNi
OGE0ZjM0ZjVmODJjNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgK
QEAgLTM1MSw2ICszNTEsOSBAQCBwdWJsaWM6CiAKICAgICBXS1VSTFJlZiBjdXJyZW50VGVzdFVS
TCgpIGNvbnN0OwogCisgICAgdm9pZCBjb21wbGV0ZVNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNoZWNrKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYpOworICAgIHZv
aWQgc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wpOworCiBwcml2
YXRlOgogICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlUGFn
ZUNvbmZpZ3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnMmKTsKICAgICBXS1JldGFpblB0cjxXS0Nv
bnRleHRDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKGNvbnN0
IFRlc3RPcHRpb25zJikgY29uc3Q7CkBAIC02NDAsNiArNjQzLDggQEAgcHJpdmF0ZToKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBib29sIG1faGFzU2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyIHsgZmFsc2UgfTsKICNlbmRpZgorCisgICAgYm9vbCBtX2lzU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uR3JhbnRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMTRjMDRlZDFmYTkz
OTRmNTcyZjY0OWE5MWI0N2VmYjIwNmVmODU0ZS4uNWI2NjYxN2JlZTAxNmI2NzUxYzdiYjJiY2U2
YmI4YmFlNDRlYjBhMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAKQEAgLTEzNDUsNiArMTM0NSwxMSBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZv
Y2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgInNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3Jh
bnRlZCIpKSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRJc1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbGVhblZhbHVlKG1lc3NhZ2VCb2R5KSk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDAzOWQwZmE4OWQ3YjAxMGMzYzg0
YWEwYTY0MTEyMjFjNTJjZDI2OTAuLmFiYTNlYjQ5NmQxZjBlOTAxZTA1MmM4N2ViMTg3ZTA5NjEz
Zjc2ZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0xMS0wNiAgU2lodWkgTGl1ICA8c2lo
dWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBj
aGVjayBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxODQ3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVy
cm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zcGVlY2hyZWNvZ25pdGlv
bi9wZXJtaXNzaW9uLWVycm9yLmh0bWw6IEFkZGVkLgorCiAyMDIwLTExLTA0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgd2luZG93LmV2ZW50IG1heSBnZXQgc2V0
IG9uIHdyb25nIGdsb2JhbCB3aGVuIGRpc3BhdGNoaW5nIGFuIGV2ZW50CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3ItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVy
cm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjliOGFiMDRkMDgzZmEyN2EwODQ1ODVkYWE5
OGZkN2I2MDZiNDY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hy
ZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBA
CitWZXJpZnkgdGhhdCBlcnJvciBldmVudCBpcyBmaXJlZCB3aGVuIHBlcm1pc3Npb24gaXMgZGVu
aWVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyByZWNvZ25pdGlvbiA9
IG5ldyBTcGVlY2hSZWNvZ25pdGlvbigpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBy
ZWNvZ25pdGlvbi5zdGFydCgpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBldmVudC5l
cnJvciBpcyAibm90LWFsbG93ZWQiCitQQVNTIGV2ZW50Lm1lc3NhZ2UgaXMgInBlcm1pc3Npb24g
Y2hlY2sgZmFpbHMiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9w
ZXJtaXNzaW9uLWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9u
L3Blcm1pc3Npb24tZXJyb3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDZlOWYzYTc3NjQwOWFhM2RmNDE5
MmJmYmM1ODc1OTAxNWUzNmNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9z
cGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwKQEAgLTAsMCArMSwyNCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVmVyaWZ5
IHRoYXQgZXJyb3IgZXZlbnQgaXMgZmlyZWQgd2hlbiBwZXJtaXNzaW9uIGlzIGRlbmllZC4iKTsK
KworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7Cisg
ICAgdGVzdFJ1bm5lci5zZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoZmFs
c2UpOworfQorCitzaG91bGROb3RUaHJvdygicmVjb2duaXRpb24gPSBuZXcgU3BlZWNoUmVjb2du
aXRpb24oKSIpOworc2hvdWxkTm90VGhyb3coInJlY29nbml0aW9uLnN0YXJ0KCkiKTsKK3JlY29n
bml0aW9uLm9uZXJyb3IgPSAoZXZlbnQpID0+IHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImV2ZW50LmVycm9yIiwgIm5vdC1hbGxvd2VkIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC5tZXNzYWdlIiwgInBlcm1pc3Npb24gY2hlY2sgZmFpbHMiKTsKKworICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413434</attachid>
            <date>2020-11-06 08:11:35 -0800</date>
            <delta_ts>2020-11-06 20:37:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201106081133.patch</filename>
            <type>text/plain</type>
            <size>97882</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQwYjNmYTMyYjRlOGM1MmRkNmFjZmQ5
YjVmYjcwZDgwOGE2YTE3OGEuLmFjYmJhNTI2YjdiZWM4YTI2MzllNzZhODcwMDFhYTg3Y2I0MTQw
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTEtMDYgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMC0xMS0wNSAgU2FhbSBC
YXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYmFjayBzd2FwKCkgZnJl
ZSBmdW5jdGlvbiBmb3IgUmVmUHRyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNkM2M4YTE3NTNhMzc2N2Q1MDA5
ZGM0ZjIyMzQwMWU0NzNkYTM2My4uZDNlNWU1NzNmMWVjZTI0NjgzOTA2YmJlZjc1M2EzZGE0MzMw
OTRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTExLTA2ICBTaWh1aSBMaXUg
IDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyBwZXJtaXNz
aW9uIGNoZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnRSZWNvZ25p
dGlvbik6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OmNsaWVudE9y
aWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6
OnNldElzV2FpdGluZ0ZvclBlcm1pc3Npb25DaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3Q6OmlzV2FpdGluZ0ZvclBlcm1pc3Npb25DaGVjayBjb25zdCk6
CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5o
OgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86
OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRh
dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6ZXJyb3IgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OnJlc3VsdCBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUu
aDoKKyAgICAgICAgKiBwYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oOgorCiAy
MDIwLTExLTA2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TEZDXVtJbnRlZ3JhdGlvbl0gbG9jYWxDYXJldE9mZnNldCBzaG91bGQgdXNlIGl0ZXJhdG9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGRiYWQxYWEyYzkzYTk2MTI2YzU1MWUxN2M1YTcwZWZlMDMzZjVmOTUuLjY1OGVh
OTg1ZTJlZGIwNzM4NjI1MTJkYWI3ZDdiOTQ1Njg1ZWI1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
ODggQEAKKzIwMjAtMTEtMDYgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0
NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRy
b2R1Y2UgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciwgd2hpY2ggY2hlY2tzIHBl
cm1pc3Npb25zIHRoYXQgc3BlZWNoIHJlY29nbml0aW9uIG5lZWRzIGJlZm9yZSAKKyAgICAgICAg
d2UgYWN0dWFsbHkgc3RhcnQgY2FwdHVyaW5nIGF1ZGlvIGFuZCBwZXJmb3JtIHJlY29nbml0aW9u
LCBpbmNsdWRpbmc6CisgICAgICAgIDEuIFNhbmRib3ggZm9yIG1pY3JvcGhvbmUKKyAgICAgICAg
Mi4gVENDIGNoZWNrIGZvciBtaWNyb3Bob25lCisgICAgICAgIDMuIFRDQyBjaGVjayBmb3IgU0ZT
cGVlY2hSZWNvZ25pemVyCisgICAgICAgIDQuIFVzZXIgcGVybWlzc2lvbiBmb3Igb3JpZ2lucwor
CisgICAgICAgIEFkZCBhIGRlbGVnYXRlIGZ1bmN0aW9uIGZvciByZXF1ZXN0aW5nIHBlcm1pc3Np
b24gb24gb3JpZ2lucyB0aGF0IHJlcXVlc3Qgc3BlZWNoIHJlY29nbml0aW9uLiBCeSBkZWZhdWx0
LCB0aGlzIAorICAgICAgICBraW5kIG9mIHBlcm1pc3Npb24gaXMgbm90IGdyYW50ZWQsIHNvIFNw
ZWVjaFJlY29nbml0aW9uIHdpbGwgZmFpbCB0aGUgcGVybWlzc2lvbiBjaGVjayBhbmQgZ2V0cyBl
cnJvciBldmVudC4KKworICAgICAgICBUZXN0OiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1p
c3Npb24tZXJyb3IuaHRtbAorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJ
Q2xpZW50Lmg6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAg
ICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VVSUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcDogQWRkZWQuCisgICAgICAgIChXS1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKToKKyAgICAgICAgKFdLU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXJDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnBlcmZvcm1TYW5kYm94Q2hlY2sp
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpy
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcjo6c3RhcnROZXh0UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVudFJlcXVlc3QpOgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1NhbmRib3hS
ZXF1aXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OmNoZWNrTWljcm9waG9uZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2
aWNlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6Y2hlY2tVc2VyUGVybWlzc2lvbkZvck9yaWdpbik6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBv
bGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OlNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXI6OnJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyOjpzdGFydE5leHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y29tcGxldGVDdXJyZW50UmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNr
U2FuZGJveFJlcXVpcmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKToKKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25p
dGlvblNlcnZpY2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyOjpjaGVja1VzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdDo6Y29tcGxldGUpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrOjpjb21wbGV0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0
aW9uU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFi
b3J0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlbW92ZVBl
bmRpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6
OnN0YXJ0UG9jZXNzaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjpjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnNlbmRVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RvcFByb2Nlc3NpbmdSZXF1ZXN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1
ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZVVwZGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaDoKKwogMjAyMC0xMS0wNiAgTWls
YW4gQ3JoYSAgPG1jcmhhQHJlZGhhdC5jb20+CiAKICAgICAgICAgW0dUS10gQXBwbGljYXRpb24g
Y2Fubm90IG92ZXJyaWRlIGRyYWcmZHJvcCBjYWxsYmFja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5k
ZXggMjAzZThlYzdkNjE1ZTg3NWYzYjMxNDVmMmY4YmRkMWU1YjdiMDgzZC4uYmFkNDdlYzAxNGU0
ZmU2NDdiYjFiMDU4YTI0ODYxMjJmODk3MzNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTc1
NSwzICs3NTUsNyBAQAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShXQVRD
SE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKICNkZWZpbmUgSEFWRV9DTkNPTlRBQ1RQSUNLRVJW
SUVXQ09OVFJPTExFUiAxCiAjZW5kaWYKKworI2lmIChQTEFURk9STShJT1NfRkFNSUxZKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUw
MCkpICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKKyNkZWZpbmUg
SEFWRV9TUEVFQ0hSRUNPR05JWkVSIDEKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCmluZGV4IDUxYTMyY2RhYWNhYTFl
ZDAxMTQyNzY3ZDIyZTMwMjUyNmRlYmY1OTUuLmYxMTdjMWZiMWI1YmQwNGFlNzU1MjU2NWZiYWE4
ODkxYzVjMWFlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbi5oIgogCisjaW5jbHVkZSAiQ2xpZW50T3Jp
Z2luLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgpAQCAtNjksNyArNzAsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTcGVl
Y2hSZWNvZ25pdGlvbjo6c3RhcnRSZWNvZ25pdGlvbigpCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24p
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJSZWNvZ25pdGlvbiBk
b2VzIG5vdCBoYXZlIGEgdmFsaWQgY29ubmVjdGlvbiJfcyB9OwogCi0gICAgbV9jb25uZWN0aW9u
LT5zdGFydChpZGVudGlmaWVyKCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVyaW1SZXN1
bHRzLCBtX21heEFsdGVybmF0aXZlcyk7CisgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxE
b2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5z
dGFydChpZGVudGlmaWVyKCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVyaW1SZXN1bHRz
LCBtX21heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2luIHsgZG9jdW1lbnQudG9wT3JpZ2luKCku
ZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9KTsKICAgICBtX3N0YXRl
ID0gU3RhdGU6OlN0YXJ0aW5nOwogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bi5oCmluZGV4IDNmZDJkMzNhY2EwMjA1MjYzNDA1OGQwZmI1NjUyZWI3MDA3ZmE1MmEuLjY5ZWVi
YzI5M2Q1YjdkZTFlMzhjZWVhZDJhM2VlMzhmMDBkMWNhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bi5oCkBAIC0zMSwxNSArMzEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQ7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZTsKK3N0cnVjdCBDbGllbnRPcmlnaW47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbj4g
ewogcHVibGljOgogICAgIHZpcnR1YWwgflNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbigpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNsaWVudChTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBj
b250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJv
b2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2lu
JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVVwZGF0ZShjb25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZSYmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCmlu
ZGV4IDVjZWVhMDFjNzM4NjU1NmQ0MjUxZjhjOGI5NWMzMTI0YmFmYzYwMTIuLmRhOTU5ZDdjMDc4
ZTlhNTQxZWY5NDFiZWI1ZGU5YjNhZGY5NTcyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCkBAIC0zMCw3
ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiB7
CitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3Q+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0PiB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IGNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJ
bmZvJiYpOwogCkBAIC0zOSwxMSArMzksMTYgQEAgcHVibGljOgogICAgIGJvb2wgY29udGludW91
cygpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5jb250aW51b3VzOzsgfQogICAgIGJvb2wgaW50ZXJp
bVJlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX2luZm8uaW50ZXJpbVJlc3VsdHM7IH0KICAgICB1
aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMoKSBjb25zdCB7IHJldHVybiBtX2luZm8ubWF4QWx0ZXJu
YXRpdmVzOyB9CisgICAgY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4oKSBjb25zdCB7
IHJldHVybiBtX2luZm8uY2xpZW50T3JpZ2luOyB9CiAKKyAgICB2b2lkIHNldElzV2FpdGluZ0Zv
clBlcm1pc3Npb25DaGVjayhib29sIGlzV2FpdGluZ0ZvclBlcm1pc3Npb25DaGVjaykgeyBtX2lz
V2FpdGluZ0ZvclBlcm1pc3Npb25DaGVjayA9IGlzV2FpdGluZ0ZvclBlcm1pc3Npb25DaGVjazsg
fQorICAgIGJvb2wgaXNXYWl0aW5nRm9yUGVybWlzc2lvbkNoZWNrKCkgY29uc3QgeyByZXR1cm4g
bV9pc1dhaXRpbmdGb3JQZXJtaXNzaW9uQ2hlY2s7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8mJik7CiAKICAgICBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIG1faW5mbzsKKyAgICBi
b29sIG1faXNXYWl0aW5nRm9yUGVybWlzc2lvbkNoZWNrIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaAppbmRleCBhYjFlMWFlNmVm
Mzg4OThjMjFhMmE5ZGY3YWYxZjAwN2UyNGIxN2QwLi4xZWZlOWUwNjQ2ZTc0N2NiNTVkN2NjYjBm
N2IxOGZmNWUwYjNjNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCkBAIC0yNSw2ICsyNSw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zNSw2ICszNiw3IEBAIHN0cnVjdCBTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3RJbmZvIHsKICAgICBib29sIGNvbnRpbnVvdXMgeyBmYWxzZSB9OwogICAgIGJvb2wg
aW50ZXJpbVJlc3VsdHMgeyBmYWxzZSB9OwogICAgIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcyB7
IDEgfTsKKyAgICBDbGllbnRPcmlnaW4gY2xpZW50T3JpZ2luOwogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZv
PiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtNDMsNyArNDUsNyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0SW5mbyB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
LSAgICBlbmNvZGVyIDw8IGNsaWVudElkZW50aWZpZXIgPDwgbGFuZyA8PCBjb250aW51b3VzIDw8
IGludGVyaW1SZXN1bHRzIDw8IG1heEFsdGVybmF0aXZlczsKKyAgICBlbmNvZGVyIDw8IGNsaWVu
dElkZW50aWZpZXIgPDwgbGFuZyA8PCBjb250aW51b3VzIDw8IGludGVyaW1SZXN1bHRzIDw8IG1h
eEFsdGVybmF0aXZlcyA8PCBjbGllbnRPcmlnaW47CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CkBAIC03NCwxMiArNzYsMTggQEAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
SW5mbz4gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2RlKERlY28KICAgICBpZiAo
IW1heEFsdGVybmF0aXZlcykKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIE9w
dGlvbmFsPENsaWVudE9yaWdpbj4gY2xpZW50T3JpZ2luOworICAgIGRlY29kZXIgPj4gY2xpZW50
T3JpZ2luOworICAgIGlmICghY2xpZW50T3JpZ2luKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCiAgICAgcmV0dXJuIHt7CiAgICAgICAgIFdURk1vdmUoKmNsaWVudElkZW50aWZpZXIp
LAogICAgICAgICBXVEZNb3ZlKCpsYW5nKSwKICAgICAgICAgV1RGTW92ZSgqY29udGludW91cyks
CiAgICAgICAgIFdURk1vdmUoKmludGVyaW1SZXN1bHRzKSwKLSAgICAgICAgV1RGTW92ZSgqbWF4
QWx0ZXJuYXRpdmVzKQorICAgICAgICBXVEZNb3ZlKCptYXhBbHRlcm5hdGl2ZXMpLAorICAgICAg
ICBXVEZNb3ZlKCpjbGllbnRPcmlnaW4pCiAgICAgfX07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcApp
bmRleCA1MzRlZGEzZDI0NzdlZTFjNmYxN2VjNmFmMTc5MzI2YmI3OWYwMjA3Li45YTlhN2Q5MjA2
OTY1NWM0NTcxNjA3ZGRhMThjNGU2YjMzMGY3MmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwCkBAIC02
MCw3ICs2MCw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGUgZW51bWVyYXRpb25WYWx1ZSkKIAogU3BlZWNoUmVjb2duaXRpb25V
cGRhdGUgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlVHlwZSB0eXBlKQogewotICAgIHJldHVybiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZSB7IGNsaWVudElkZW50aWZpZXIsIHR5cGUgfTsKKyAgICByZXR1cm4gU3BlZWNoUmVjb2duaXRp
b25VcGRhdGUgeyBjbGllbnRJZGVudGlmaWVyLCB0eXBlLCBXVEY6Ok1vbm9zdGF0ZSgpIH07CiB9
CiAKIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVh
dGVFcnJvcihTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVu
dElkZW50aWZpZXIsIGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXJyb3ImIGVycm9yKQpAQCAtODMs
NyArODMsNyBAQCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRh
dGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZQogU3BlZWNoUmVjb2duaXRpb25FcnJv
ciBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6ZXJyb3IoKSBjb25zdAogewogICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKG1fY29udGVudCwKLSAgICAgICAgW10gKFNwZWVjaFJlY29nbml0aW9uRXJy
b3ImIGVycm9yKSB7IHJldHVybiBlcnJvcjsgfSwKKyAgICAgICAgW10gKGNvbnN0IFNwZWVjaFJl
Y29nbml0aW9uRXJyb3ImIGVycm9yKSB7IHJldHVybiBlcnJvcjsgfSwKICAgICAgICAgW10gKGNv
bnN0IGF1dG8mKSB7IHJldHVybiBTcGVlY2hSZWNvZ25pdGlvbkVycm9yKCk7IH0KICAgICApOwog
fQpAQCAtOTEsNyArOTEsNyBAQCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlOjplcnJvcigpIGNvbnN0CiBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRE
YXRhPiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6cmVzdWx0KCkgY29uc3QKIHsKICAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihtX2NvbnRlbnQsCi0gICAgICAgIFtdIChWZWN0b3I8U3BlZWNoUmVj
b2duaXRpb25SZXN1bHREYXRhPiYgZGF0YSkgeyByZXR1cm4gZGF0YTsgfSwKKyAgICAgICAgW10g
KGNvbnN0IFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+JiBkYXRhKSB7IHJldHVy
biBkYXRhOyB9LAogICAgICAgICBbXSAoY29uc3QgYXV0byYpIHsgcmV0dXJuIFZlY3RvcjxTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdERhdGE+IHsgfTsgfQogICAgICk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaApp
bmRleCAzYTgyYmY2YmFmNTRjZTBjNGIxMzM0ZWY2ZjhiNTg5M2YzYjg5ODJlLi5hYTg2MzEzMjIx
NGYzNjdjNjQ3YTQ3NzlkOTRmZmYwOWJhYmYxMzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKQEAgLTUyLDgg
KzUyLDggQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlVHlwZSk7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7CiBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIGNyZWF0
ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGUpOwotICAgIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBj
cmVhdGVFcnJvcihTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBj
b25zdCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yJik7Ci0gICAgc3RhdGljIFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlIGNyZWF0ZVJlc3VsdChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVF
cnJvcihTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBT
cGVlY2hSZWNvZ25pdGlvbkVycm9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlIGNyZWF0ZVJlc3VsdChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRE
YXRhPiYpOwogCiAgICAgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciBjbGllbnRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyOyB9
CiAgICAgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHVzaW5n
IENvbnRlbnQgPSBWYXJpYW50PFdURjo6TW9ub3N0YXRlLCBTcGVlY2hSZWNvZ25pdGlvbkVycm9y
LCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj47Ci0gICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUoU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlLCBDb250
ZW50ID0gV1RGOjpNb25vc3RhdGUoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlLCBDb250ZW50KTsKIAogICAgIFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgbV9jbGllbnRJZGVudGlm
aWVyOwogICAgIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSBtX3R5cGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaAppbmRl
eCBjZjllNzJiOTNjMDY0YTU1ZGRkZmFiN2IzY2FmYjQ4OTBlMDM1ZjQ2Li4yNDBhYTNkNDg0YTk3
M2I0NDExMmFlZjYxZThlYWFhODQ3YjU4ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKQEAgLTM5LDEwICszOSwxMCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEdW1teVNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbigpKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIHJlZ2lzdGVy
Q2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpIGZpbmFsIHsgfQotICAg
ICAgICB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wsIHVpbnQ2NF90KSBmaW5hbCB7IH0KKyAgICAg
ICAgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCwgQ2xpZW50T3JpZ2luJiYpIGZp
bmFsIHsgfQogICAgICAgICB2b2lkIHN0b3AoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcikgZmluYWwgeyB9CiAgICAgICAgIHZvaWQgYWJvcnQoU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZVVwZGF0ZShjb25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpIGZpbmFsIHsg
fQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoU3BlZWNoUmVjb2duaXRpb25VcGRhdGUm
JikgZmluYWwgeyB9CiAgICAgfTsKICAgICBEdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIo
KSA9IGRlZmF1bHQ7CiAgICAgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uJiBzcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4
IGI3YjdlZTY4OGFhNmZmODkwNWEyMWI3NzhkNGQ5NjM1MjI1MTYzOTcuLjA1NTY5MzQzYTBkYzNh
YWQ2YzJkMzM0MDNlOGUyOWJhODZmZTRjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2Jq
ZWN0LmgKQEAgLTE2OCw2ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJ1bkphdmFTY3JpcHRB
bGVydFJlc3VsdExpc3RlbmVyLAogICAgICAgICBSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExp
c3RlbmVyLAogICAgICAgICBSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXIsCisgICAg
ICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLAogICAgICAgICBUZXh0Q2hl
Y2tlciwKICAgICAgICAgVVJMU2NoZW1lVGFzaywKICAgICAgICAgVXNlckNvbnRlbnRDb250cm9s
bGVyLApAQCAtNDE2LDYgKzQxNyw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8QVBJ
OjpPYmplY3Q6OlR5cGU+IHsKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlJ1bkphdmFTY3Jp
cHRBbGVydFJlc3VsdExpc3RlbmVyLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6UnVuSmF2
YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5lciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6
OlJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lciwKKyAgICAgICAgQVBJOjpPYmplY3Q6
OlR5cGU6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLAogICAgICAgICBBUEk6
Ok9iamVjdDo6VHlwZTo6VGV4dENoZWNrZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpV
UkxTY2hlbWVUYXNrLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6VXNlckNvbnRlbnRDb250
cm9sbGVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAppbmRleCA5ZTgyZTU2MDAxODdl
YzFjZjhhZjliZWU3OWU3MWQwZThkN2ZkMTVhLi44NGVlNmMyODhmNmQyZWJkNTFmYTczZWE3Mjcw
OGYzMjk0NmJkZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jh
c2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAtMTQxLDYg
KzE0MSw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2Vic2l0ZURhdGFDb25maWd1
cmF0aW9uU3RvcmUqIFdLV2Vic2l0ZURhdGFTdG9yZUNvCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBP
cGFxdWVXS1dlYnNpdGVEYXRhU3RvcmUqIFdLV2Vic2l0ZURhdGFTdG9yZVJlZjsKIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLV2Vic2l0ZVBvbGljaWVzKiBXS1dlYnNpdGVQb2xpY2llc1Jl
ZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2luZG93RmVhdHVyZXMqIFdLV2luZG93
RmVhdHVyZXNSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrUmVmOwogCiAvKiBXZWJLaXQyIEJ1bmRsZSB0eXBlcyAqLwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAz
NTFhZjQyNzhjOTg1OTU5YWVjZmIxNWRiZjBhYjdjYjVlMjA0Yjc1Li5lODY0MTMxMmZhYjRhMjZl
OTRlMDVkOGUxMmUyYjM3ZTIxZDFmYTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI5MCw2ICsyOTAsNyBA
QCBVSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKIFVJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblNlcnZlci5jcHAKIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCiBVSVBy
b2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuY3BwCitVSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKIFVJUHJvY2Vzcy9UZXh0Q2hlY2tlci5jcHAKIFVJ
UHJvY2Vzcy9UZXh0Q2hlY2tlckNvbXBsZXRpb24uY3BwCiBVSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvbkNoZWNrUHJveHkuY3BwCkBAIC00MDMsNiArNDA0LDcgQEAgVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXMuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuY3Bw
CiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKIFVJUHJvY2Vzcy9B
UEkvQy9XS1Nlc3Npb25TdGF0ZVJlZi5jcHAKK1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLVGV4dENoZWNr
ZXIuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCiBV
SVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUmVmLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IDVkOWI5M2QxN2FmMjRiZWFhMDIwZTI4NTI5ODU2OTA5YmNiNmVh
ZjIuLmVjMTEyNjU4ZTBiZWEwNTU4ZmI4OGUxZDIzM2NlZDcxYjgyOTIzOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKQEAgLTM4MCw2ICszODAsNyBAQCBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5Lm1tCiBVSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdh
dGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KIFVJUHJv
Y2Vzcy9Db2NvYS9TZXNzaW9uU3RhdGVDb2RpbmcubW0KK1VJUHJvY2Vzcy9Db2NvYS9TcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9TeXN0
ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvVGV4dENoZWNraW5n
Q29udHJvbGxlci5tbQogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggYWE3ZDg5YzAxZTczNTIwY2UzZWUw
NDIyNmI5YWU4NTk3MGJmYWE2ZS4uYjJkZmYyOTgzZWUwOThhZGJjOTI3MTgxNWM0MmFiNmFkNmQ0
MDQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTIw
Miw2ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBBUEk6Okluc3BlY3RvckNvbmZp
Z3VyYXRpb246OmNyZWF0ZSgpOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCmluZGV4IGI1MmM0NGJhZWE5YWNmOWZjMDMzMmQ1
YTlmMzczNTZlOWQyMzg2MjkuLjE4Y2JmZDViNzRlYjg3NzBhNTc4ZjE1YzhhMDE2MTQ5OTAyMTQ1
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC03OSw2
ICs3OSw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjsKIGNsYXNzIERv
d25sb2FkUHJveHk7CiBjbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OwogY2xhc3Mg
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjazsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Owog
Y2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTsKIGNsYXNzIFdlYkJhY2tGb3J3
YXJkTGlzdDsKQEAgLTE1Miw2ICsxNTMsNyBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tQcmVmZXJl
bmNlc1JlZiwgV2ViUHJlZmVyZW5jZXMpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQcm90ZWN0aW9u
U3BhY2VSZWYsIFdlYlByb3RlY3Rpb25TcGFjZSkKIFdLX0FERF9BUElfTUFQUElORyhXS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyUmVmLCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlcikKIFdLX0FERF9BUElfTUFQUElORyhXS1Nlc3Npb25TdGF0ZVJlZiwgQVBJOjpTZXNzaW9u
U3RhdGUpCitXS19BRERfQVBJX01BUFBJTkcoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFja1JlZiwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2spCiBXS19BRERf
QVBJX01BUFBJTkcoV0tUZXh0Q2hlY2tlclJlZiwgV2ViVGV4dENoZWNrZXIpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYsIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9y
ZVJlZiwgQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwCmluZGV4IDQzNjljZGQ4MjViNTE1N2ZiMDEwYzNmODFhZTc4ZTY2MGRh
YTc0ZmMuLjExYzY2YmY0Mjg0OTMyODE1ZDdlZmFhNGJhZTM5MDZlZjcyMzQ1MTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtNjMsNiArNjMsNyBAQAogI2lu
Y2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlvbi5oIgogI2lu
Y2x1ZGUgIlByaW50SW5mby5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3QuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS1BhZ2VQb2xp
Y3lDbGllbnRJbnRlcm5hbC5oIgogI2luY2x1ZGUgIldLUGFnZVJlbmRlcmluZ1Byb2dyZXNzRXZl
bnRzSW50ZXJuYWwuaCIKQEAgLTExNSw3ICsxMTYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGll
bnRUcmFpdHM8V0tQYWdlUG9saWN5Q2xpZW50QmFzZT4gewogfTsKIAogdGVtcGxhdGU8PiBzdHJ1
Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVVJQ2xpZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTxXS1BhZ2VVSUNsaWVudFYwLCBXS1BhZ2VVSUNsaWVudFYxLCBXS1BhZ2VVSUNsaWVudFYy
LCBXS1BhZ2VVSUNsaWVudFYzLCBXS1BhZ2VVSUNsaWVudFY0LCBXS1BhZ2VVSUNsaWVudFY1LCBX
S1BhZ2VVSUNsaWVudFY2LCBXS1BhZ2VVSUNsaWVudFY3LCBXS1BhZ2VVSUNsaWVudFY4LCBXS1Bh
Z2VVSUNsaWVudFY5LCBXS1BhZ2VVSUNsaWVudFYxMCwgV0tQYWdlVUlDbGllbnRWMTEsIFdLUGFn
ZVVJQ2xpZW50VjEyLCBXS1BhZ2VVSUNsaWVudFYxMywgV0tQYWdlVUlDbGllbnRWMTQ+IFZlcnNp
b25zOworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1BhZ2VVSUNsaWVudFYwLCBXS1BhZ2VVSUNs
aWVudFYxLCBXS1BhZ2VVSUNsaWVudFYyLCBXS1BhZ2VVSUNsaWVudFYzLCBXS1BhZ2VVSUNsaWVu
dFY0LCBXS1BhZ2VVSUNsaWVudFY1LCBXS1BhZ2VVSUNsaWVudFY2LCBXS1BhZ2VVSUNsaWVudFY3
LCBXS1BhZ2VVSUNsaWVudFY4LCBXS1BhZ2VVSUNsaWVudFY5LCBXS1BhZ2VVSUNsaWVudFYxMCwg
V0tQYWdlVUlDbGllbnRWMTEsIFdLUGFnZVVJQ2xpZW50VjEyLCBXS1BhZ2VVSUNsaWVudFYxMywg
V0tQYWdlVUlDbGllbnRWMTQsIFdLUGFnZVVJQ2xpZW50VjE1PiBWZXJzaW9uczsKIH07CiAKICNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTIxMTAsNiArMjExMSwxMyBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRC
YXNlKiB3a0NsaWVudAogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpQcmVzZW50ZWQpOwogICAgICAgICB9CiAjZW5kaWYK
KyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgcmVxdWVzdGlu
Z09yaWdpbiwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3QpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBt
X2NsaWVudC5kZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
KHRvQVBJKCZwYWdlKSwgdG9BUEkoJnJlcXVlc3RpbmdPcmlnaW4pLCB0b0FQSSgmdG9wT3JpZ2lu
KSwgdG9BUEkoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OmNyZWF0ZShXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkucHRyKCkpKTsKKyAgICAgICAgfQogICAgIH07CiAKICAg
ICB0b0ltcGwocGFnZVJlZiktPnNldFVJQ2xpZW50KG1ha2VVbmlxdWU8VUlDbGllbnQ+KHdrQ2xp
ZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VV
SUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQu
aAppbmRleCBiNjM4ODE1NWNkMzAzNmU2NjYxMTBmMTkyNTYxNmFmZDM3ZTg2OGJhLi43Y2Q4ZmQw
ZDk4NGNmZDlmNGQ0NGJmZTgzZDg1ZGIxYjU2MTc1OThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKQEAgLTEzNiw2ICsxMzYsNyBAQCB0eXBl
ZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVh
cmFuY2VDYWxsYmFjaykoV0tQYQogdHlwZWRlZiBib29sICgqV0tQYWdlU2hvdWxkQWxsb3dEZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tT
ZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7
CiAKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYWxsYmFj
aykoKTsKK3R5cGVkZWYgdm9pZCAoKldLUGFnZURlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlP
cmlnaW5SZWYgcmVxdWVzdGluZ09yaWdpbiwgV0tTZWN1cml0eU9yaWdpblJlZiB0b3BPcmlnaW4s
IFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgY2FsbGJhY2spOwogCiAv
LyBEZXByZWNhdGVkCiB0eXBlZGVmIFdLUGFnZVJlZiAoKldLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwKShXS1BhZ2VSZWYgcGFnZSwgV0tEaWN0aW9uYXJ5
UmVmIGZlYXR1cmVzLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0
dG9uIG1vdXNlQnV0dG9uLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKQEAgLTEzNTMsNiArMTM1
NCwxMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMTQgewogICAgIFdLUGFnZVJ1
bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDsKIH0gV0tQYWdlVUlDbGllbnRWMTQ7CiAKK3R5
cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjE1IHsKKyAgICBXS1BhZ2VVSUNsaWVudEJhc2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7CisK
KyAgICAvLyBWZXJzaW9uIDAuCisgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrX2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93UGFnZTsKKyAgICBXS1BhZ2VVSUNs
aWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNsb3NlOworICAgIFdLUGFnZVRha2VGb2N1c0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGFrZUZvY3VzOworICAgIFdLUGFnZUZvY3VzQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXM7
CisgICAgV0tQYWdlVW5mb2N1c0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bmZvY3VzOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENh
bGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFs
ZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZp
cm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICAgICBydW5KYXZhU2NyaXB0
Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQ
cm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICAgICAgcnVuSmF2YVNj
cmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZVNldFN0YXR1c1Rl
eHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3Rh
dHVzVGV4dDsKKyAgICBXS1BhZ2VNb3VzZURpZE1vdmVPdmVyRWxlbWVudENhbGxiYWNrX2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50X2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlTWlzc2luZ1BsdWdpbkJ1dHRvbkNsaWNrZWRDYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICBtaXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tl
ZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZURpZE5vdEhhbmRsZUtleUV2ZW50
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkTm90SGFuZGxlS2V5
RXZlbnQ7CisgICAgV0tQYWdlRGlkTm90SGFuZGxlV2hlZWxFdmVudENhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkaWROb3RIYW5kbGVXaGVlbEV2ZW50OworICAgIFdLUGFn
ZUdldFRvb2xiYXJzQXJlVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdG9vbGJhcnNBcmVWaXNpYmxlOworICAgIFdLUGFnZVNldFRvb2xiYXJzQXJlVmlzaWJs
ZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG9vbGJhcnNBcmVW
aXNpYmxlOworICAgIFdLUGFnZUdldE1lbnVCYXJJc1Zpc2libGVDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWVudUJhcklzVmlzaWJsZTsKKyAgICBXS1BhZ2VTZXRN
ZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldE1lbnVCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlR2V0U3RhdHVzQmFySXNWaXNpYmxlQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNCYXJJc1Zpc2libGU7
CisgICAgV0tQYWdlU2V0U3RhdHVzQmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRTdGF0dXNCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlR2V0SXNS
ZXNpemFibGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
c1Jlc2l6YWJsZTsKKyAgICBXS1BhZ2VTZXRJc1Jlc2l6YWJsZUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzUmVzaXphYmxlOworICAgIFdLUGFnZUdl
dFdpbmRvd0ZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2V0V2luZG93RnJhbWU7CisgICAgV0tQYWdlU2V0V2luZG93RnJhbWVDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRXaW5kb3dGcmFtZTsKKyAgICBX
S1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxDYWxsYmFja19kZXByZWNhdGVkRm9yVXNl
V2l0aFY2ICAgIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXByZWNhdGVkRm9yVXNlV2l0
aFY2OworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlkRHJhdzsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VEaWRTY3Jv
bGw7CisgICAgV0tQYWdlRXhjZWVkZWREYXRhYmFzZVF1b3RhQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlZWRlZERhdGFiYXNlUXVvdGE7CisgICAgV0tQYWdlUnVu
T3BlblBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBydW5PcGVuUGFuZWw7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZUhlYWRlckhlaWdodENhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVySGVpZ2h0OworICAgIFdL
UGFnZUZvb3RlckhlaWdodENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm9vdGVySGVpZ2h0OworICAgIFdLUGFnZURyYXdIZWFkZXJDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0hlYWRlcjsKKyAgICBX
S1BhZ2VEcmF3Rm9vdGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRyYXdGb290ZXI7CisgICAgV0tQYWdlUHJpbnRGcmFtZUNhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludEZyYW1lOworICAgIFdL
UGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcnVuTW9kYWw7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQxOyAvLyBVc2VkIHRvIGJl
IGRpZENvbXBsZXRlUnViYmVyQmFuZEZvck1haW5GcmFtZQorICAgIFdLUGFnZVNhdmVEYXRhVG9G
aWxlSW5Eb3dubG9hZHNGb2xkZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgc2F2ZURh
dGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcjsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEludGVycnVw
dEphdmFTY3JpcHRfdW5hdmFpbGFibGU7CisKKyAgICAvLyBWZXJzaW9uIDEuCisgICAgV0tQYWdl
Q3JlYXRlTmV3UGFnZUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEgICAgICAgICAgICAg
ICAgICBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjE7CisgICAgV0tQYWdlTW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDsKKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgIGRlY2lkZVBvbGljeUZv
ck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZVVuYXZhaWxhYmxlUGx1
Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEgdW5hdmFpbGFi
bGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjE7CisKKyAgICAvLyBW
ZXJzaW9uIDIuCisgICAgV0tQYWdlU2hvd0NvbG9yUGlja2VyQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q29sb3JQaWNrZXI7CisgICAgV0tQYWdlSGlk
ZUNvbG9yUGlja2VyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoaWRlQ29sb3JQaWNrZXI7CisgICAgV0tQYWdlVW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlj
a2VkQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRv
bkNsaWNrZWQ7CisKKyAgICAvLyBWZXJzaW9uIDMuCisgICAgV0tQYWdlUGlubmVkU3RhdGVEaWRD
aGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWRTdGF0
ZURpZENoYW5nZTsKKworICAgIC8vIFZlcnNpb24gNC4KKyAgICB2b2lkKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDI7
IC8vIFVzZWQgdG8gYmUgZGlkQmVnaW5UcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzLgor
ICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW51c2VkMzsgLy8gVXNlZCB0byBiZSBkaWRSZWNvZ25pemVMb25nTW91
c2VQcmVzcy4KKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDQ7IC8vIFVzZWQgdG8gYmUgZGlkQ2FuY2Vs
VHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcy4KKyAgICBXS1BhZ2VJc1BsYXlpbmdBdWRp
b0RpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUGxheWlu
Z0F1ZGlvRGlkQ2hhbmdlOworCisgICAgLy8gVmVyc2lvbiA1LgorICAgIFdLUGFnZURlY2lkZVBv
bGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgICAgZGVj
aWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQYWdlRGlkQ2xp
Y2tBdXRvRmlsbEJ1dHRvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWRDbGlja0F1dG9GaWxsQnV0dG9uOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxi
YWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1D
YWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29u
ZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9t
cHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgcnVuSmF2YVNjcmlw
dFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OworICAgIHZvaWQqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNTsg
Ly8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4KKworICAgIC8vIFZl
cnNpb24gNi4KKyAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CisgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdEFsZXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dW5KYXZhU2NyaXB0QWxlcnQ7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybTsK
KyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHQ7CisgICAgV0tDaGVja1VzZXJNZWRp
YVBlcm1pc3Npb25DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVj
a1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW47CisKKyAgICAvLyBWZXJzaW9uIDcuCisgICAg
V0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CisgICAgV0tGdWxsc2NyZWVu
TWF5UmV0dXJuVG9JbmxpbmVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
dWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmU7CisKKyAgICAvLyBWZXJzaW9uIDguCisgICAgV0tS
ZXF1ZXN0UG9pbnRlckxvY2tDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0UG9pbnRlckxvY2s7CisgICAgV0tEaWRMb3NlUG9pbnRlckxvY2tDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRMb3NlUG9pbnRl
ckxvY2s7CisKKyAgICAvLyBWZXJzaW9uIDkuCisgICAgV0tIYW5kbGVBdXRvcGxheUV2ZW50Q2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVBdXRvcGxh
eUV2ZW50OworCisgICAgLy8gVmVyc2lvbiAxMC4KKyAgICBXS0hhc1ZpZGVvSW5QaWN0dXJlSW5Q
aWN0dXJlRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIGhhc1ZpZGVvSW5Q
aWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlOworICAgIFdLRGlkRXhjZWVkQmFja2dyb3VuZFJlc291
cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZENhbGxiYWNrICAgICAgICAgZGlkRXhjZWVkQmFja2dy
b3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDsKKworICAgIC8vIFZlcnNpb24gMTEu
CisgICAgV0tQYWdlRGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNl
Q2FsbGJhY2sgICAgICAgICBkaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVh
cmFuY2U7CisKKyAgICAvLyBWZXJzaW9uIDEyLgorICAgIFdLUGFnZVJlcXVlc3RTdG9yYWdlQWNj
ZXNzQ29uZmlybUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NDb25maXJtOworCisgICAgLy8gVmVyc2lvbiAxMy4KKyAgICBXS1BhZ2VTaG91bGRB
bGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ2FsbGJhY2sgICAgICAgICAgIHNo
b3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3M7CisKKyAgICAvLyBWZXJz
aW9uIDE0LgorICAgIFdLUGFnZVJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDsKKworICAg
IC8vIFZlcnNpb24gMTUuCisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIAorfSBXS1BhZ2VVSUNsaWVudFYxNTsKKwog
I2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNjOGY5YTM1ZGI4NDExZTAzODVhN2FlMTU0
OWEzOWFmODEzMmVkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwCkBAIC0wLDAg
KzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIgorCisjaW5jbHVkZSAiU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OkFQSVR5cGUpOworfQorCit2b2lkIFdLU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tDb21wbGV0ZShXS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIHNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrLCBib29sIGdyYW50ZWQpCit7CisgICAgcmV0dXJuIHRvSW1wbChzcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFjayktPmNvbXBsZXRlKGdyYW50ZWQpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25DYWxsYmFjay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4YWVhZmM2OTg0YmE5NmY1
NDg5MmU3MzJhZmVhM2EwNjNjOWM3MmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgK
QEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
V2ViS2l0L1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2Vu
ZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrR2V0VHlwZUlEKHZvaWQpOworCitXS19FWFBPUlQgdm9pZCBXS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25DYWxsYmFja1JlZiBzcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaywgYm9vbCBn
cmFudGVkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCmlu
ZGV4IGQxZWFlMjAxZTY1NDJmNGZhYjYwMTk4MGRjNjYxMjQ5MTMxOTc5M2YuLjVlYWI0NjU3OWY5
OWZhNmY2MzMxNmE0YzA1NDQyMmQ2M2E2ZmQ5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTUyLDYg
KzE1Miw4IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgd2lsbFNoYXJlQWN0aXZpdHlJdGVtczooTlNBcnJheSAqKWFjdGl2aXR5
SXRlbXMgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilyZXF1ZXN0aW5nT3JpZ2luIHRvcE9yaWdp
bjooV0tTZWN1cml0eU9yaWdpbiAqKXRvcE9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4p
KEJPT0wgYXV0aG9yaXplZCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAK
IC0gKEJPT0wpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2hvdWxkSW5jbHVkZUFwcExp
bmtBY3Rpb25zRm9yRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKillbGVtZW50IFdL
X0FQSV9BVkFJTEFCTEUoaW9zKDkuMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlckNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhZDYxM2U1ZTQyNmE4MTNmOWZjZmIwZmIwNjNi
OWZjZjZiN2FmMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTAsMCAr
MSwyNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIKKworI2ltcG9ydCAiQVBJU2VjdXJpdHlP
cmlnaW4uaCIKKyNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCisjaW1wb3J0ICJTYW5kYm94VXRpbGl0
aWVzLmgiCisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CisKKyNpZiBIQVZF
KFNQRUVDSFJFQ09HTklaRVIpCisjaW1wb3J0IDxTcGVlY2gvU3BlZWNoLmg+CisKK1NPRlRfTElO
S19GUkFNRVdPUksoU3BlZWNoKQorU09GVF9MSU5LX0NMQVNTKFNwZWVjaCwgU0ZTcGVlY2hSZWNv
Z25pemVyKQorI2VuZGlmCisKKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGlu
ay5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIGJvb2wgcGVyZm9ybVNhbmRib3hD
aGVjaygpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChjdXJyZW50UHJvY2Vzc0lzU2Fu
ZGJveGVkKCkgJiYgISFzYW5kYm94X2NoZWNrKGdldHBpZCgpLCAiZGV2aWNlLW1pY3JvcGhvbmUi
LCBTQU5EQk9YX0ZJTFRFUl9OT05FKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpyZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb250SGFuZGxlcikKK3sKKyAgICBt
X3JlcXVlc3RzLmFwcGVuZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVh
dGUob3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb250SGFuZGxlcikpKTsKKyAgICBpZiAobV9yZXF1
ZXN0cy5zaXplKCkgPT0gMSkKKyAgICAgICAgc3RhcnROZXh0UmVxdWVzdCgpOworfQorCit2b2lk
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0TmV4dFJlcXVlc3QoKQor
eworICAgIGlmIChtX3JlcXVlc3RzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnQoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uIGRlY2lzaW9uKQoreworICAgIEFTU0VSVCghbV9y
ZXF1ZXN0cy5pc0VtcHR5KCkpOworICAgIGF1dG8gY3VycmVudFJlcXVlc3QgPSBtX3JlcXVlc3Rz
LnRha2VGaXJzdCgpOworICAgIGN1cnJlbnRSZXF1ZXN0LT5jb21wbGV0ZShkZWNpc2lvbik7CisK
KyAgICBzdGFydE5leHRSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcjo6Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnQoKQoreworICAgIGlmICghbV9p
c1NhbmRib3hDaGVja1Bhc3NlZC5oYXNWYWx1ZSgpKQorICAgICAgICBtX2lzU2FuZGJveENoZWNr
UGFzc2VkID0gcGVyZm9ybVNhbmRib3hDaGVjaygpOworCisgICAgaWYgKCFtX2lzU2FuZGJveENo
ZWNrUGFzc2VkKSB7CisgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgY2hlY2tNaWNyb3Bob25lQWNjZXNzKCk7Cit9CisKK3ZvaWQgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKCkKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzTWljcm9waG9uZUFjY2Vz
c0F1dGhvcml6ZWQuaGFzVmFsdWUoKSAmJiBtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQu
dmFsdWUoKSkgeworICAgICAgICBjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcygp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1faXNNaWNyb3Bob25lQWNjZXNz
QXV0aG9yaXplZC5oYXNWYWx1ZSgpICYmICFtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQu
dmFsdWUoKSkgeworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIC8vIE5vIHByb21wdCBmb3IgbWljcm9waG9uZSBvciBzcGVlY2ggcmVjb2du
aXRpb24gc2VydmljZS4KKyAgICBpZiAobV9wYWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVE
ZXZpY2VzRW5hYmxlZCgpKSB7CisgICAgICAgIGNoZWNrVXNlclBlcm1pc3Npb25Gb3JPcmlnaW4o
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikg
JiYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBib29sIGhhc0Rlc2NyaXB0aW9uU3RyaW5nID0gZHlu
YW1pY19vYmpjX2Nhc3Q8TlNTdHJpbmc+KE5TQnVuZGxlLm1haW5CdW5kbGUuaW5mb0RpY3Rpb25h
cnlbQCJOU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uIl0pLmxlbmd0aDsKKyAgICBpZiAoIWhh
c0Rlc2NyaXB0aW9uU3RyaW5nKSB7CisgICAgICAgIG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9y
aXplZCA9IGZhbHNlOworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGF1dG8gbWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPSBbUEFM
OjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5
cGU6QVZNZWRpYVR5cGVBdWRpb107CisgICAgaWYgKG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3Rh
dHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQpIHsKKyAgICAgICAgbV9pc01p
Y3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkID0gdHJ1ZTsKKyAgICAgICAgY2hlY2tTcGVlY2hSZWNv
Z25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBpZiAobWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3Rh
dHVzRGVuaWVkIHx8IG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXph
dGlvblN0YXR1c1Jlc3RyaWN0ZWQpIHsKKyAgICAgICAgbV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRo
b3JpemVkID0gZmFsc2U7CisgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgQVNTRVJUKG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09
IEFWQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQpOworICAgIGF1dG8gbWFpblRocmVh
ZEhhbmRsZXIgPSAoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKEJPT0wgaXNB
dXRob3JpemVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBpZiAoIWlzQXV0aG9yaXplZCkgeworICAgICAgICAgICAgbV9p
c01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkID0gZmFsc2U7CisgICAgICAgICAgICBjb21wbGV0
ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lz
aW9uOjpEZW55KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1f
aXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZCA9IHRydWU7CisgICAgICAgIGNoZWNrU3BlZWNo
UmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7CisgICAgfSk7CisgICAgYXV0byBkZWNpc2lvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoW21haW5UaHJlYWRIYW5kbGVyID0gV1RGTW92ZShtYWluVGhy
ZWFkSGFuZGxlcildKEJPT0wgaXNBdXRob3JpemVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFp
c01haW5UaHJlYWQoKSkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbbWFpblRocmVh
ZEhhbmRsZXIgPSBXVEZNb3ZlKG1haW5UaHJlYWRIYW5kbGVyKSwgaXNBdXRob3JpemVkXSgpIG11
dGFibGUgeworICAgICAgICAgICAgICAgIG1haW5UaHJlYWRIYW5kbGVyKGlzQXV0aG9yaXplZCk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBtYWluVGhyZWFkSGFuZGxlcihpc0F1dGhvcml6ZWQpOworICAgIH0pOworICAgIFtQQUw6Omdl
dEFWQ2FwdHVyZURldmljZUNsYXNzKCkgcmVxdWVzdEFjY2Vzc0Zvck1lZGlhVHlwZTpBVk1lZGlh
VHlwZUF1ZGlvIGNvbXBsZXRpb25IYW5kbGVyOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07CisjZWxz
ZQorICAgIG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZCA9IHRydWU7CisgICAgY2hlY2tT
cGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKKyNlbmRpZiAvLyBIQVZFKFNQRUVDSFJF
Q09HTklaRVIpICYmIFVTRShBVkZPVU5EQVRJT04pCit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3Mo
KQoreworICAgIGlmIChtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXpl
ZC5oYXNWYWx1ZSgpICYmIG1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3Jp
emVkLnZhbHVlKCkpIHsKKyAgICAgICAgY2hlY2tVc2VyUGVybWlzc2lvbkZvck9yaWdpbigpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1faXNTcGVlY2hSZWNvZ25pdGlvblNl
cnZpY2VBY2Nlc3NBdXRob3JpemVkLmhhc1ZhbHVlKCkgJiYgIW1faXNTcGVlY2hSZWNvZ25pdGlv
blNlcnZpY2VBY2Nlc3NBdXRob3JpemVkLnZhbHVlKCkpIHsKKyAgICAgICAgY29tcGxldGVDdXJy
ZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6
RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTkla
RVIpCisgICAgYm9vbCBoYXNEZXNjcmlwdGlvblN0cmluZyA9IGR5bmFtaWNfb2JqY19jYXN0PE5T
U3RyaW5nPihOU0J1bmRsZS5tYWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNTcGVlY2hSZWNv
Z25pdGlvblVzYWdlRGVzY3JpcHRpb24iXSkubGVuZ3RoOworICAgIGlmICghaGFzRGVzY3JpcHRp
b25TdHJpbmcpIHsKKyAgICAgICAgbV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1
dGhvcml6ZWQgPSBmYWxzZTsKKyAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBhdXRvIHNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3Rh
dHVzID0gW2dldFNGU3BlZWNoUmVjb2duaXplckNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c107
CisgICAgaWYgKHNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzID09IFNGU3BlZWNo
UmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkKSB7CisgICAgICAgIG1faXNT
cGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkID0gdHJ1ZTsKKyAgICAgICAg
Y2hlY2tVc2VyUGVybWlzc2lvbkZvck9yaWdpbigpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKHNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzID09IFNGU3BlZWNo
UmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkIHx8IHNwZWVjaFJlY29nbml6
ZXJBdXRob3JpemF0aW9uU3RhdHVzID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25T
dGF0dXNEZW5pZWQpIHsKKyAgICAgICAgbV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vz
c0F1dGhvcml6ZWQgPSBmYWxzZTsKKyAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoc3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRp
b25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVy
bWluZWQpOworICAgIGF1dG8gbWFpblRocmVhZEhhbmRsZXIgPSAoW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyldKFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXMg
c3RhdHVzKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBpZiAoc3RhdHVzICE9IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6
YXRpb25TdGF0dXNBdXRob3JpemVkKSB7CisgICAgICAgICAgICBtX2lzU3BlZWNoUmVjb2duaXRp
b25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCA9IGZhbHNlOworICAgICAgICAgICAgY29tcGxldGVD
dXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lv
bjo6RGVueSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX2lz
U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCA9IHRydWU7CisgICAgICAg
IGNoZWNrVXNlclBlcm1pc3Npb25Gb3JPcmlnaW4oKTsKKyAgICB9KTsKKyAgICBhdXRvIGRlY2lz
aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbbWFpblRocmVhZEhhbmRsZXIgPSBXVEZNb3ZlKG1h
aW5UaHJlYWRIYW5kbGVyKV0oU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1cyBz
dGF0dXMpIG11dGFibGUgeworICAgICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFttYWluVGhyZWFkSGFuZGxlciA9IFdURk1vdmUobWFpblRo
cmVhZEhhbmRsZXIpLCBzdGF0dXNdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgbWFpblRo
cmVhZEhhbmRsZXIoc3RhdHVzKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIG1haW5UaHJlYWRIYW5kbGVyKHN0YXR1cyk7CisgICAgfSk7
CisgICAgW2dldFNGU3BlZWNoUmVjb2duaXplckNsYXNzKCkgcmVxdWVzdEF1dGhvcml6YXRpb246
ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKKyNlbHNlCisgICAgbV9pc1NwZWVjaFJlY29nbml0aW9u
U2VydmljZUFjY2Vzc0F1dGhvcml6ZWQgPSB0cnVlOworICAgIGNoZWNrVXNlclBlcm1pc3Npb25G
b3JPcmlnaW4oKTsKKyNlbmRpZiAvLyBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCit9CisKK3ZvaWQg
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tVc2VyUGVybWlzc2lvbkZv
ck9yaWdpbigpCit7CisgICAgQVNTRVJUKCFtX3JlcXVlc3RzLmlzRW1wdHkoKSk7CisgICAgYXV0
byYgY3VycmVudFJlcXVlc3QgPSBtX3JlcXVlc3RzLmZpcnN0KCk7CisKKyAgICBhdXRvIGNsaWVu
dE9yaWdpbiA9IGN1cnJlbnRSZXF1ZXN0LT5vcmlnaW4oKTsKKyAgICBpZiAobV9vcmlnaW5QZXJt
aXNzaW9uTWFwLmNvbnRhaW5zKGNsaWVudE9yaWdpbikpIHsKKyAgICAgICAgYm9vbCBncmFudGVk
ID0gbV9vcmlnaW5QZXJtaXNzaW9uTWFwLmdldChjbGllbnRPcmlnaW4pOworICAgICAgICBjb21w
bGV0ZUN1cnJlbnRSZXF1ZXN0KGdyYW50ZWQgPyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0OjpEZWNpc2lvbjo6QWxsb3cgOiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0OjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IGRlY2lzaW9uSGFuZGxlciA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oYm9vbCBp
c1Blcm1pdHRlZCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIEFTU0VSVCghd2Vha1RoaXMtPm1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKyAg
ICAgICAgd2Vha1RoaXMtPm1fb3JpZ2luUGVybWlzc2lvbk1hcC5zZXQod2Vha1RoaXMtPm1fcmVx
dWVzdHMuZmlyc3QoKS0+b3JpZ2luKCksIGlzUGVybWl0dGVkKTsKKyAgICAgICAgd2Vha1RoaXMt
PmNvbXBsZXRlQ3VycmVudFJlcXVlc3QoaXNQZXJtaXR0ZWQgPyBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6QWxsb3cgOiBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6RGVueSk7CisgICAgfTsKKworICAgIGF1dG8gcmVxdWVz
dGluZ09yaWdpbiA9IGNsaWVudE9yaWdpbi5jbGllbnRPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsK
KyAgICBhdXRvIHRvcE9yaWdpbiA9Y2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdp
bigpOworICAgIG1fcGFnZS51aUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QobV9wYWdlLCBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
cmVxdWVzdGluZ09yaWdpbi5nZXQoKSkuZ2V0KCksIEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0
ZSh0b3BPcmlnaW4uZ2V0KCkpLmdldCgpLCBXVEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5oCmluZGV4IDhhMDk0NzQ1YzFmMjRiZTEwNWRiYjAyYWI5MWUzMDdiMzFkNDg2
YjEuLmVhZDRkNTdlZTBhMzNhNmIzZWViYmRlYzQzZjhiNzM5NTVkOTc2MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKQEAgLTE2MSw2ICsxNjEsNyBAQCBw
cml2YXRlOgogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgICAgIHZvaWQgcnVuV2ViQXV0aGVu
dGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwm
LCBXZWJGcmFtZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmKSBmaW5hbDsKICNlbmRpZgorICAgICAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Qo
V2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIEFQSTo6U2VjdXJpdHlPcmlnaW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKIAogICAgICAgICBVSURl
bGVnYXRlJiBtX3VpRGVsZWdhdGU7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGQwMzM4ZjhkNmUzYjlhMTNkZjJhZjE1M2FjYjVkZWIz
OGUxZmNkOWIuLjE5MzQ1NmIxYzA3ODY3OTY5NjE5NGIzNTMxYmM2NWRjNDE1NTE5ZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMTMzMiw0ICsx
MzMyLDI2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmltYWdlT3JNZWRpYURvY3VtZW50
U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6CiAgICAgW3N0YXRpY19jYXN0PGlkIDxX
S1VJRGVsZWdhdGVQcml2YXRlPj4oZGVsZWdhdGUpIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dl
YlZpZXcgaW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZDpuZXdTaXplXTsKIH0KIAordm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpTZWN1cml0
eU9yaWdpbiYgcmVxdWVzdGluZ09yaWdpbiwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2lu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGF1dG8gZGVsZWdhdGUgPSAoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KW1fdWlEZWxlZ2F0
ZS5tX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOnRvcE9yaWdpbjpkZWNpc2lvbkhhbmRs
ZXI6KV0pIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hl
Y2tlcjo6Y3JlYXRlKGRlbGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkZvck9yaWdpbjp0b3BPcmlnaW46ZGVjaXNpb25IYW5kbGVyOikp
OworICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJlcXVlc3RT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46d3JhcHBlcihyZXF1ZXN0aW5nT3Jp
Z2luKSB0b3BPcmlnaW46d3JhcHBlcih0b3BPcmlnaW4pIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxv
Y2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShjb21wbGV0aW9uSGFuZGxl
ciwgeyB9KSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09MIGdyYW50ZWQpIG11dGFi
bGUgeworICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVk
KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihncmFudGVkKTsKKyAgICB9
KS5nZXQoKV07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lMjViZGMzNDVkZDEwMGUwZTkxYjFjNzNlYTUzYmNlOWYxNzNi
MmIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKFdl
YlBhZ2VQcm94eSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCitTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcigpCit7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9yZXF1ZXN0cykKKyAgICAgICAg
cmVxdWVzdC0+Y29tcGxldGUoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVj
aXNpb246OkRlbnkpOworfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQorCit2b2lkIFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QoY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKK30KKwordm9pZCBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydE5leHRSZXF1ZXN0KCkKK3sKK30KKwordm9p
ZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1
ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uKQoreworfQor
Cit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU2FuZGJveFJl
cXVpcmVtZW50KCkKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyOjpjaGVja01pY3JvcGhvbmVBY2Nlc3MoKQoreworfQorCit2b2lkIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNz
KCkKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVj
a1VzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKCkKK3sKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY4OWM1ZGQ1
ODg3ODk4YjU3ZGMyYzlmNDZjYTIzNDQyYWQ3ZTU4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaApA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoV2ViUGFnZVBy
b3h5Jik7CisgICAgflNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoKTsKKyAgICB2
b2lkIHJlcXVlc3QoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzdGFydE5leHRSZXF1ZXN0
KCk7CisgICAgdm9pZCBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uKTsKKyAgICB2b2lkIGNoZWNrU2FuZGJveFJlcXVpcmVt
ZW50KCk7CisgICAgdm9pZCBjaGVja01pY3JvcGhvbmVBY2Nlc3MoKTsKKyAgICB2b2lkIGNoZWNr
U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7CisgICAgdm9pZCBjaGVja1VzZXJQZXJt
aXNzaW9uRm9yT3JpZ2luKCk7CisKKyAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKKyAgICBEZXF1
ZTxSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4+IG1fcmVxdWVzdHM7Cisg
ICAgT3B0aW9uYWw8Ym9vbD4gbV9pc1NhbmRib3hDaGVja1Bhc3NlZDsKKyAgICBPcHRpb25hbDxi
b29sPiBtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQ7CisgICAgT3B0aW9uYWw8Ym9vbD4g
bV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQ7CisgICAgSGFzaE1h
cDxDbGllbnRPcmlnaW4sIGJvb2w+IG1fb3JpZ2luUGVybWlzc2lvbk1hcDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwYTNj
MzBiOGY1MWMxY2JlMWVjZjZlMWFjYmY4ZDdmNGFiNTQ4MjkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KKyNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0PiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0PiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KG9yaWdpbiwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICB9CisKKyAgICBlbnVtIGNsYXNzIERlY2lzaW9uIHsg
RGVueSwgQWxsb3cgfTsKKyAgICB2b2lkIGNvbXBsZXRlKERlY2lzaW9uIGRlY2lzaW9uKQorICAg
IHsKKyAgICAgICAgYm9vbCBpc0FsbG93ZWQgPSBkZWNpc2lvbiA9PSBEZWNpc2lvbjo6QWxsb3c7
CisgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxl
dGlvbkhhbmRsZXIsIHsgfSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGlzQWxsb3dlZCk7
CisgICAgfQorCisgICAgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25z
dCB7IHJldHVybiBtX29yaWdpbjsgfQorCitwcml2YXRlOgorICAgIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3QoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAg
IDogbV9vcmlnaW4ob3JpZ2luKQorICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgeyB9CisKKyAgICBXZWJDb3JlOjpDbGllbnRPcmln
aW4gbV9vcmlnaW47CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9jb21wbGV0
aW9uSGFuZGxlcjsKK307CisKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiBjcmVhdGUoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgfQorCisgICAgdm9pZCBjb21wbGV0ZShib29s
IGdyYW50ZWQpIHsgbV9jb21wbGV0aW9uSGFuZGxlcihncmFudGVkKTsgfQorCitwcml2YXRlOgor
ICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogbV9jb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICB7IH0KKworICAgIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IG1fY29tcGxldGlvbkhhbmRsZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVj
aFJlY29nbml0aW9uU2VydmVyLmNwcAppbmRleCA5Y2U5NzRjZjlkYWE1NjU4MmVlYmNmYTAzMDY3
MGI3YTM3NWJlNzFlLi41ZTIwNjlmNjZhMzU3MzA5MjMxODIwNWI3NTFmZDBhYzgwNTljMzNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIuY3BwCkBAIC0zMiw5ICszMiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCitTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUGVybWlzc2lvbkNoZWNrZXImJiBwZXJtaXNzaW9u
Q2hlY2tlcikKICAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwg
bV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX3Blcm1pc3Npb25DaGVja2VyKFdURk1v
dmUocGVybWlzc2lvbkNoZWNrZXIpKQogewogfQogCkBAIC03Miw4ICs3Myw3IEBAIHZvaWQgU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkCiB7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QgJiYgbV9jdXJyZW50
UmVxdWVzdC0+Y2xpZW50SWRlbnRpZmllcigpID09IGNsaWVudElkZW50aWZpZXIpIHsKICAgICAg
ICAgbV9jdXJyZW50UmVxdWVzdCA9IG51bGxwdHI7Ci0gICAgICAgIGF1dG8gdXBkYXRlID0gV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7Ci0gICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6RGlkUmVjZWl2ZVVwZGF0
ZSh1cGRhdGUpLCBtX2lkZW50aWZpZXIpOworICAgICAgICBzZW5kVXBkYXRlKGNsaWVudElkZW50
aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKTsKIAogICAg
ICAgICBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtODksOCArODksNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpyZW1vdmVQ
ZW5kaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbgogICAgIHdoaWxlICgh
cGVuZGluZ1JlcXVlc3RzLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIHJlcXVlc3QgPSBwZW5k
aW5nUmVxdWVzdHMudGFrZUZpcnN0KCk7CiAgICAgICAgIGlmIChyZXF1ZXN0LT5jbGllbnRJZGVu
dGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikgewotICAgICAgICAgICAgYXV0byB1cGRhdGUg
PSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZp
ZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKTsKLSAgICAgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6RGlkUmVj
ZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50aWZpZXIpOworICAgICAgICAgICAgc2VuZFVwZGF0
ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6
OkVuZCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBtX3BlbmRp
bmdSZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShyZXF1ZXN0KSk7CkBAIC0xMDUsMTIgKzEwNCw2NSBA
QCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjppbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaQogICAgIH0KIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25p
dGlvblNlcnZlcjo6c3RhcnRQb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdCYpCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydFBvY2Vzc2lu
Z1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JiByZXF1ZXN0KQogewor
ICAgIHJlcXVlc3Quc2V0SXNXYWl0aW5nRm9yUGVybWlzc2lvbkNoZWNrKHRydWUpOworICAgIG1f
cGVybWlzc2lvbkNoZWNrZXIocmVxdWVzdC5jbGllbnRPcmlnaW4oKSwgW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYWtSZXF1ZXN0ID0gbWFrZVdlYWtQdHIocmVxdWVzdCld
KGJvb2wgZ3JhbnRlZCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGlmICghd2Vha1JlcXVlc3QpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgQVNTRVJUKG1fY3VycmVudFJlcXVlc3QgPT0gd2Vha1JlcXVlc3QuZ2V0KCkpOwor
ICAgICAgICBBU1NFUlQod2Vha1JlcXVlc3QtPmlzV2FpdGluZ0ZvclBlcm1pc3Npb25DaGVjaygp
KTsKKyAgICAgICAgd2Vha1JlcXVlc3QtPnNldElzV2FpdGluZ0ZvclBlcm1pc3Npb25DaGVjayhm
YWxzZSk7CisKKyAgICAgICAgaWYgKCFncmFudGVkKSB7CisgICAgICAgICAgICBhdXRvIGVycm9y
ID0gU3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpO
b3RBbGxvd2VkLCAicGVybWlzc2lvbiBjaGVjayBmYWlscyJfcyB9OworICAgICAgICAgICAgc2Vu
ZFVwZGF0ZSh3ZWFrUmVxdWVzdC0+Y2xpZW50SWRlbnRpZmllcigpLCBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yLCBlcnJvcik7CisgICAgICAgICAgICBtX2N1cnJl
bnRSZXF1ZXN0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHByb2Nlc3NOZXh0UGVuZGluZ1JlcXVl
c3RJZk5lZWRlZCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
Y29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgqd2Vha1JlcXVlc3QpOworICAgIH0pOworfQorCit2
b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpCit7CisgICAgLy8gVE9ETzogc3RhcnQg
Y2FwdHVyaW5nIGF1ZGlvIGFuZCByZWNvZ25pemluZy4KK30KKwordm9pZCBTcGVlY2hSZWNvZ25p
dGlvblNlcnZlcjo6c2VuZFVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSB0
eXBlLCBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiBlcnJvciwgT3B0aW9uYWw8VmVj
dG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+IHJlc3VsdCkKK3sKKyAgICBhdXRvIHVw
ZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoY2xpZW50SWRl
bnRpZmllciwgdHlwZSk7CisgICAgaWYgKHR5cGUgPT0gU3BlZWNoUmVjb2duaXRpb25VcGRhdGVU
eXBlOjpFcnJvcikKKyAgICAgICAgdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25V
cGRhdGU6OmNyZWF0ZUVycm9yKGNsaWVudElkZW50aWZpZXIsICplcnJvcik7CisgICAgaWYgKHR5
cGUgPT0gU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpSZXN1bHQpCisgICAgICAgIHVwZGF0
ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVSZXN1bHQoY2xpZW50
SWRlbnRpZmllciwgKnJlc3VsdCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uOjpEaWRSZWNlaXZlVXBkYXRlKHVwZGF0ZSksIG1faWRlbnRpZmllcik7
CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0b3BQcm9jZXNzaW5nUmVxdWVz
dChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKQordm9pZCBTcGVlY2hSZWNvZ25p
dGlvblNlcnZlcjo6c3RvcFByb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdCYgcmVxdWVzdCkKIHsKKyAgICBpZiAocmVxdWVzdC5pc1dhaXRpbmdGb3JQZXJt
aXNzaW9uQ2hlY2soKSkgeworICAgICAgICBzZW5kVXBkYXRlKHJlcXVlc3QuY2xpZW50SWRlbnRp
ZmllcigpLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6Ok5vTWF0Y2gpOwor
ICAgICAgICBzZW5kVXBkYXRlKHJlcXVlc3QuY2xpZW50SWRlbnRpZmllcigpLCBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7CisKKyAgICAgICAgQVNTRVJUKG1fY3Vy
cmVudFJlcXVlc3QgPT0gJnJlcXVlc3QpOworICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbnVs
bHB0cjsKKyAgICAgICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBUT0RPOiBzdG9wIGNhcHR1cmluZyBhdWRpbyBh
bmQgZmluYWxpemluZyByZWNvZ25pdGlvbiByZXN1bHQgd2l0aCBjYXB0dXJlZCBhdWRpby4KKyAg
ICBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiByZXN1bHREYXRhczsKKyAgICBz
ZW5kVXBkYXRlKHJlcXVlc3QuY2xpZW50SWRlbnRpZmllcigpLCBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OlJlc3VsdCwgV1RGOjpudWxsb3B0LCByZXN1bHREYXRhcyk7Cisg
ICAgc2VuZFVwZGF0ZShyZXF1ZXN0LmNsaWVudElkZW50aWZpZXIoKSwgV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOworICAgIG1fY3VycmVudFJlcXVlc3QgPSBudWxs
cHRyOworICAgIHByb2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJZk5lZWRlZCgpOwogfQogCiBJUEM6
OkNvbm5lY3Rpb24qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjptZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaAppbmRleCA3YWEyNDE2MzhiOWMzNTE0OTY2OTg0NDMyZGJjNTMwZGY4NDg0
YTM3Li4yMTljMDM5YmM3NjM3OGZlNWFiNzVjYjVkNWI5ZjY2N2VhMzA1MDFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKQEAgLTI4
LDE5ICsyOCwyNiBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TcGVlY2hSZWNvZ25pdGlvbkVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NwZWVjaFJl
Y29nbml0aW9uUmVzdWx0RGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitlbnVtIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTsKK30K
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIAogdXNpbmcg
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyID0gV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI7Cit1c2luZyBQZXJtaXNzaW9uQ2hlY2tlciA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik+OwogCiBj
bGFzcyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0
ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYs
IFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllcik7CisgICAgU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJ
ZGVudGlmaWVyLCBQZXJtaXNzaW9uQ2hlY2tlciYmKTsKIAogICAgIHZvaWQgc3RhcnQoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsKICAgICB2b2lkIHN0b3AoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CkBAIC01Myw3
ICs2MCw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBUT0RPOiBpbXBsZW1lbnQgdGhlc2UuCiAgICAg
dm9pZCBzdGFydFBvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0Jik7CisgICAgdm9pZCBjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdCYpOwogICAgIHZvaWQgc3RvcFByb2Nlc3NpbmdSZXF1ZXN0KFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOworICAgIHZvaWQgc2VuZFVwZGF0ZShX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uRXJyb3I+ID0gV1RGOjpudWxsb3B0LCBPcHRpb25hbDxWZWN0b3I8V2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gPSBXVEY6Om51bGxvcHQpOwogCiAgICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKQEAgLTY2LDYgKzc1LDcgQEAg
cHJpdmF0ZToKICAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgbV9pZGVudGlm
aWVyOwogICAgIERlcXVlPFJlZjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+PiBt
X3BlbmRpbmdSZXF1ZXN0czsKICAgICBSZWZQdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0PiBtX2N1cnJlbnRSZXF1ZXN0OworICAgIFBlcm1pc3Npb25DaGVja2VyIG1fcGVybWlz
c2lvbkNoZWNrZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGM2NjBlNTY2YjA4ZGQzNjc5MTNkMjI0NTA2
YmRmMWVkZjAwZDVkODcuLmExYTc1NDAxMmMxNWM2YjFkNDU4Mzg3MTc2NTI3NmJkZDgwZDgzMzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODYsNiArODYs
NyBAQAogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiU2FmZUJy
b3dzaW5nV2FybmluZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIK
KyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIu
aCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCkBAIC0xMDE3Myw2ICsxMDE3NCwxNCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGlu
ZygpCiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2lu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGlmICghbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKQorICAgICAgICBt
X3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI+KCp0aGlzKTsKKworICAgIG1fc3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci0+cmVxdWVzdChjbGllbnRPcmlnaW4sIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBS
RUxFQVNFX0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDdjZWZiZmM2OTQ1ZWRmZTQzYWU1NmMyZDU2NGMwZTgxZTk1YmI0YTYuLjhlYTE0NjA0
Nzg4OWNlNzM4MmZiNmUwNjkyMGE0YWE5YTRmZDcxM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0zMDUsNiArMzA1LDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVl
U2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhOwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b247CiBjbGFzcyBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OwogY2xhc3MgU2VjS2V5
UHJveHlTdG9yZTsKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI7CiBj
bGFzcyBVc2VyRGF0YTsKIGNsYXNzIFZpZXdTbmFwc2hvdDsKIGNsYXNzIFZpc2l0ZWRMaW5rU3Rv
cmU7CkBAIC0xODE5LDYgKzE4MjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNZWRpYUNhcHR1
cmVSZXBvcnRpbmdEZWxheShTZWNvbmRzIGNhcHR1cmVSZXBvcnRpbmdEZWxheSkgeyBtX21lZGlh
Q2FwdHVyZVJlcG9ydGluZ0RlbGF5ID0gY2FwdHVyZVJlcG9ydGluZ0RlbGF5OyB9CiAgICAgc2l6
ZV90IHN1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlcigpIHsgcmV0dXJuIG1fc3VzcGVuZE1lZGlh
UGxheWJhY2tDb3VudGVyOyB9CiAKKyAgICB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb24oY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQm
LCBXZWJQcm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAg
dm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTI4ODgsNiArMjg5MSw4IEBAIHByaXZhdGU6
CiAgICAgc2l6ZV90IG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyIHsgMCB9OwogCiAgICAg
T3B0aW9uYWw8V2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uPiBtX25ld1BhZ2VOYXZpZ2F0aW9u
QWRDbGlja0F0dHJpYnV0aW9uOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXI+IG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZjZiODY3YmQ1NjRkZmQxNzJlYmEzZGI4MzMyNWNj
MzczY2QyMDA2OS4uOGIzMDI5YzQwOTgyNjA5NjA5NGFhNjg3NTk3YTI0ZTQyMzA3MzgwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNzEyLDcg
KzE3MTIsMTkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9u
U2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnQKIHsKICAgICBhdXRvIHNwZWVjaFJl
Y29nbml0aW9uU2VydmVyID0gbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZlck1hcC5hZGQoaWRlbnRp
ZmllciwgbnVsbHB0cik7CiAgICAgQVNTRVJUKHNwZWVjaFJlY29nbml0aW9uU2VydmVyLmlzTmV3
RW50cnkpOwotICAgIHNwZWVjaFJlY29nbml0aW9uU2VydmVyLml0ZXJhdG9yLT52YWx1ZSA9IG1h
a2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24oKSks
IGlkZW50aWZpZXIpOworICAgIHNwZWVjaFJlY29nbml0aW9uU2VydmVyLml0ZXJhdG9yLT52YWx1
ZSA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rp
b24oKSksIGlkZW50aWZpZXIsIFtpZGVudGlmaWVyLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpXShjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAoYXV0byogcGFnZSA6IHdlYWtUaGlzLT5w
YWdlcygpKSB7CisgICAgICAgICAgICBpZiAocGFnZSAmJiBwYWdlLT53ZWJQYWdlSUQoKSA9PSBp
ZGVudGlmaWVyKSB7CisgICAgICAgICAgICAgICAgcGFnZS0+cmVxdWVzdFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbihvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgfSk7CiAgICAgYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBpZGVudGlmaWVyLCAqc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggOGFjYTYwNTI1ZmIzYjkzMzkwYmU3MjI0N2Y5MmVkNmIyMjljZWY3ZC4uYzY0YjNkNzgw
YzJmYmFhOWRjZmFjZmNmOGNmNTU0OTJiZWVhNjM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDA3LDYgKzE0MDcsOSBAQAogCQk5
M0Q2Qjc4NzI1NENDRDhDMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzRDZCNzg2MjU0Q0NEOEIwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25NZXNzYWdlcy5oICovOyB9OwogCQk5M0Q2Qjc4ODI1NENDRDk0MDA1OEREM0EgLyogV2ViU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc3RTI1NENDQUJCMDA1OEREM0Eg
LyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggKi87IH07
CiAJCTkzRDZCNzhBMjU0Q0Q0M0UwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNENkI3N0QyNTRDQ0FCQjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTkzRDZCN0I0MjU1
MjY4RDUwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdBRjI1NTI2
OEExMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oICovOyB9
OworCQk5M0Q2QjdCNTI1NTI2OEQ3MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNENkI3QjIyNTUyNjhBMjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIuaCAqLzsgfTsKKwkJOTNENkI3QjkyNTUzNEExNzAwNThERDNBIC8qIFdLU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0I3MjU1MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNFNkE0RUUxQkM1REQzOTAwRjhBMEU3IC8qIF9X
S0hpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzRTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGNTQ5QjQx
RTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y1NDlCMzFFMzE3NEI3MDAwRTcy
MzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQdWJsaWMsICk7IH07IH07CiAJCTk1MEYyODgwMjUyNDE0RUEwMEI3NEYxQyAvKiBXS01v
dXNlRGV2aWNlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk1MEYyODdFMjUyNDE0RTkwMEI3NEYxQyAvKiBXS01vdXNlRGV2aWNlT2JzZXJ2
ZXIuaCAqLzsgfTsKQEAgLTQ1MzIsNiArNDUzNSwxMiBAQAogCQk5M0Q2Qjc4MDI1NENDQUJDMDA1
OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCNzgxMjU0Q0NBQkMwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VSZWNl
aXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCNzg2MjU0Q0NEOEIw
MDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdBRjI1NTI2
OEExMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0IwMjU1MjY4QTEw
MDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdCMjI1NTI2
OEEyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0IzMjU1MjY4QkYw
MDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkz
RDZCN0I3MjU1MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTNENkI3QjgyNTUzNEExMjAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzRTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0hpdFRlc3RSZXN1bHQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdL
U25hcHNob3RDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLU25hcHNob3RDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzRjU0OUI1MUUzMTc0REEwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU25hcHNob3RDb25maWd1
cmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQ4OCw2ICs2NDk3LDcg
QEAKIAkJCQk1Q0E5ODU0QjIxMEJFQjczMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2FybmluZ0Nv
Y29hLm1tICovLAogCQkJCTFBMDAyRDQ3MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVD
b2RpbmcuaCAqLywKIAkJCQkxQTAwMkQ0NjE5NkIzNDVEMDBCOUFENDQgLyogU2Vzc2lvblN0YXRl
Q29kaW5nLm1tICovLAorCQkJCTkzRDZCN0IzMjU1MjY4QkYwMDU4REQzQSAvKiBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW0gKi8sCiAJCQkJMzE1NzEzNUMyMDQwQTlC
MjAwODRGOUNGIC8qIFN5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gKi8sCiAJCQkJMkQw
Q0Y2NEMyMUYyQTgwMzAwNzg3NTY2IC8qIFRleHRDaGVja2luZ0NvbnRyb2xsZXIuaCAqLywKIAkJ
CQkyRDBDRjY0QjIxRjJBODAzMDA3ODc1NjYgLyogVGV4dENoZWNraW5nQ29udHJvbGxlci5tbSAq
LywKQEAgLTkyMjgsNiArOTIzOCw5IEBACiAJCQkJQkMxMTFCMDgxMTJGNUUzQzAwMzM3QkFCIC8q
IFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovLAogCQkJCTFBMzAwNjZDMTExMEY0RjcwMDMxOTM3
QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8sCiAJCQkJNUNBOTg1NDkyMTBCRUI1QTAwNTdF
QjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmcuaCAqLywKKwkJCQk5M0Q2QjdCMDI1NTI2OEExMDA1
OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAgKi8sCisJCQkJ
OTNENkI3QjIyNTUyNjhBMjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIuaCAqLywKKwkJCQk5M0Q2QjdBRjI1NTI2OEExMDA1OEREM0EgLyogU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oICovLAogCQkJCTkzRDZCNzZCMjU0Qjg5NTgwMDU4REQz
QSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAgKi8sCiAJCQkJOTNENkI3NkMyNTRCODk1
ODAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmggKi8sCiAJCQkJOTNENkI3N0Ey
NTRDOTg0RDAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluICov
LApAQCAtOTU2OSw2ICs5NTgyLDggQEAKIAkJCQkzMzM2NzYzOTEzMEM5OURDMDA2QzlERTIgLyog
V0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oICovLAogCQkJCTFBREU0NkIwMTk1NEVDNjEwMDBGNzk4
NSAvKiBXS1Nlc3Npb25TdGF0ZVJlZi5jcHAgKi8sCiAJCQkJMUFERTQ2QjExOTU0RUM2MTAwMEY3
OTg1IC8qIFdLU2Vzc2lvblN0YXRlUmVmLmggKi8sCisJCQkJOTNENkI3QjgyNTUzNEExMjAwNThE
RDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwICovLAorCQkJ
CTkzRDZCN0I3MjU1MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmggKi8sCiAJCQkJNTFGODg2QTMxRjJDMjE0QTAwQzE5M0VGIC8qIFdLVGVzdGlu
Z1N1cHBvcnQuY3BwICovLAogCQkJCTUxRjg4NkE0MUYyQzIxNEEwMEMxOTNFRiAvKiBXS1Rlc3Rp
bmdTdXBwb3J0LmggKi8sCiAJCQkJMzE0ODg4RkUxRDkxQjExRDAwMzc3MDQyIC8qIFdLVGV4dENo
ZWNrZXIuY3BwICovLApAQCAtMTE0MTEsNiArMTE0MjYsOCBAQAogCQkJCTU3QkJFQTZEMjJCQzBC
RkUwMDI3Mzk5NSAvKiBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1NzZDQTlENzIyQjg2MjE4MDAzMDE0M0MgLyogU09BdXRob3JpemF0aW9uTlNVUkxFeHRy
YXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTg1MjJCMzUxNjkwMDhEMEU4QiAvKiBTT0F1
dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q2QjdCNTI1NTI2OEQ3
MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOTNENkI3QjQyNTUyNjhENTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzcyMjU0QkI1MTkw
MDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTNENkI3ODQyNTRDQ0QwRTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzg1MjU0Q0NENDMwMDU4REQzQSAvKiBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MjAyNyw2ICsxMjA0NCw3IEBACiAJCQkJNTEzRTQ2MkQxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hh
cmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGNTQ5QjQx
RTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1N0ZEMzE4NzIyQjM1MTcwMDA4RDBFOEIgLyogV0tTT0F1dGhvcml6YXRpb25EZWxl
Z2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENkI3QjkyNTUzNEExNzAwNThERDNBIC8qIFdL
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdBNzhGRjMyMjI0MTkxOTYwMDk2NDgzRSAvKiBXS1N0b3JhZ2VBY2Nlc3NBbGVydC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM0MDc2MDYxMjRGRjAyNzAwNjhGMjBBIC8qIFdLU3RyaW5nLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzQwNzYxQTEyNEZGMDM3MDA2OEYyMEEgLyogV0tTdHJpbmdDRi5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb24uY3BwCmluZGV4IGVhMTZiMmVkNzY2NWIzMmJkMzljYWM0NjMyYjRiOWE1MWE3NWQ2YjEu
LjE4Yzc0NTk1MmFkNzJlOWFkNjBiZWI3MzgwOTUzNzEyYWUzMzhiNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCkBAIC01OSw5ICs1OSw5IEBA
IHZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpyZWdpc3RlckNsaWVudChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvCiAgICAgbV9jbGllbnRNYXAuYWRkKGNsaWVudC5pZGVu
dGlmaWVyKCksIG1ha2VXZWFrUHRyKGNsaWVudCkpOwogfQogCi12b2lkIFdlYlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcs
IGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJu
YXRpdmVzKQordm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0YXJ0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJp
bVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiYgY2xpZW50T3JpZ2luKQogewotICAgIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dEluZm8gaW5mbyB7IGNsaWVudElkZW50aWZpZXIsIGxhbmcsIGNvbnRpbnVvdXMsIGludGVyaW1S
ZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMgfTsKKyAgICBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3RJbmZvIGluZm8geyBjbGllbnRJZGVudGlmaWVyLCBsYW5nLCBjb250aW51b3VzLCBp
bnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzLCBXVEZNb3ZlKGNsaWVudE9yaWdpbikgfTsK
ICAgICBzZW5kKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3RhcnQoaW5mbykp
OwogfQogCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uOjppbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjCiAgICAgc2Vu
ZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OkludmFsaWRhdGUoY2xpZW50SWRl
bnRpZmllcikpOwogfQogCi12b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6ZGlk
UmVjZWl2ZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYgdXBk
YXRlKQordm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OmRpZFJlY2VpdmVVcGRh
dGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmJiB1cGRhdGUpCiB7CiAgICAgYXV0
byBjbGllbnRJZGVudGlmaWVyID0gdXBkYXRlLmNsaWVudElkZW50aWZpZXIoKTsKICAgICBpZiAo
IW1fY2xpZW50TWFwLmNvbnRhaW5zKGNsaWVudElkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCmluZGV4IDI4ZGJkMTk3Y2IzZjc5OGZjNzYz
MTk5ZWJiMTJkZTEzYWVkNzUxYjEuLjQ0M2IwNGYxY2NhYWIwYTBlNmFhNTM4MzFlOTg1ZDEwYTZh
NTMzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgK
QEAgLTQzLDExICs0MywxMSBAQCBjbGFzcyBXZWJQYWdlOwogCiB1c2luZyBTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25JZGVudGlmaWVyID0gV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI7CiAKLWNs
YXNzIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHBy
aXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKK2NsYXNzIFdlYlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b24sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2Vu
ZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbj4gY3JlYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0g
ICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRl
cmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKSBmaW5hbDsKKyAgICB2b2lkIHN0
YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRz
LCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmKSBmaW5h
bDsKICAgICB2b2lkIHN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBhYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbDsKIApAQCAtNTYsNyArNTYs
NyBAQCBwcml2YXRlOgogICAgIH5XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24oKTsKIAog
ICAgIHZvaWQgcmVnaXN0ZXJDbGllbnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
VXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYpIGZpbmFsOwogICAgIHZv
aWQgaW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVlNmZhNmQ0NzFlM2E0MjZh
YmQwOWYyMDc5YzQ0MDlmMzlkZThlMzUuLmYwY2U4MWNiOTc4Mzc2OTMzYjhmYjk3ZTA4ZjcwYjNk
ZTU0NzAwMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMC0xMS0wNiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFw
cGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3Ig
U3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxODQ3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3Q6CisgICAgICAgICogTW9iaWxl
TWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5mby5wbGlzdDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
R3JhbnRlZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXVFI6OmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y29tcGxldGVTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DaGVjayk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQpOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKToKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAy
MDIwLTExLTA1ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFBDTTogU3dpdGNoIHRvIEpTT04gcmVwb3J0IGZvcm1hdApkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL0luZm8ucGxpc3QgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlz
dAppbmRleCA0ZTJiMWY0ODE5YWQ1MTAzZTRjZjE3MDliN2M1M2E2NmU4YjM5NWU1Li4zM2EzY2Ex
YmU3MzUwOGUxZmZjYjAyOTU3Yzg2NGU4NTkyZGFhYTRlIDEwMDY0NAotLS0gYS9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvSW5mby5wbGlzdAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5mby5w
bGlzdApAQCAtNTIsOSArNTIsMTEgQEAKIAkJCTxzdHJpbmc+RWRpdG9yPC9zdHJpbmc+CiAJCTwv
ZGljdD4KIAk8L2FycmF5PgotICAgIDxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uPC9rZXk+
Ci0gICAgPHN0cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJp
bmc+Ci0gICAgPGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+Ci0gICAgPHN0
cmluZz5SZWNvcmRpbmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtl
eT5OU0NhbWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyB2aWRl
byBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TTWljcm9waG9uZVVzYWdl
RGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBiZWhhbGYgb2Yg
d2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TU3BlZWNoUmVjb2duaXRpb25Vc2FnZURlc2NyaXB0
aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvZ25pemluZyBjYXB0dXJlZCBhdWRpbyBvbiBiZWhhbGYg
b2Ygd2Vic2l0ZXM8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29s
cy9Nb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBsaXN0IGIvVG9vbHMv
TW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5mby5wbGlzdAppbmRleCAyZDFi
YzU4MmZiZTc2NWNmZGM0MTA1ZWZlOWVjYzFkODMyMGNjOTU5Li41Mzg3YjM3NDlhNDc0ZmUwYjNk
OWM2MDk1Y2IyODgxN2I4ZjkyMzBhIDEwMDY0NAotLS0gYS9Ub29scy9Nb2JpbGVNaW5pQnJvd3Nl
ci9Nb2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBsaXN0CisrKyBiL1Rvb2xzL01vYmlsZU1pbmlCcm93
c2VyL01vYmlsZU1pbmlCcm93c2VyL0luZm8ucGxpc3QKQEAgLTU0LDkgKzU0LDExIEBACiAJCTxr
ZXk+TlNBbGxvd3NBcmJpdHJhcnlMb2Fkc0luV2ViQ29udGVudDwva2V5PgogCQk8dHJ1ZS8+CiAJ
PC9kaWN0PgotICAgIDxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uPC9rZXk+Ci0gICAgPHN0
cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+Ci0gICAg
PGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+Ci0gICAgPHN0cmluZz5SZWNv
cmRpbmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5OU0NhbWVy
YVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyB2aWRlbyBvbiBiZWhh
bGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRp
b248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8
L3N0cmluZz4KKwk8a2V5Pk5TU3BlZWNoUmVjb2duaXRpb25Vc2FnZURlc2NyaXB0aW9uPC9rZXk+
CisJPHN0cmluZz5SZWNvZ25pemluZyBjYXB0dXJlZCBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vic2l0
ZXM8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApp
bmRleCA5Njk2MTRlNjcyODg2Mjk2MzMwN2M5OWVjNDc4NDE1MjRmZjAxMjliLi45ODI5N2FmNzBk
YjUxMWRhZDBhNzc5NzVlYTM4ZWQ1YzhkYjZiZDdjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5p
ZGwKQEAgLTQwMSw0ICs0MDEsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdW5kZWZp
bmVkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbk92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2xlYW4g
dmFsdWUpOwogICAgIHVuZGVmaW5lZCBzZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJM
Rm9yVGVzdGluZyhET01TdHJpbmcgdXJsKTsKICAgICB1bmRlZmluZWQgbWFya0FkQ2xpY2tBdHRy
aWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CisKKyAgICAvLyBTcGVlY2hSZWNvZ25pdGlv
bgorICAgIHVuZGVmaW5lZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQo
Ym9vbGVhbiB2YWx1ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZTVjNWY5OWFkMWRjOWMyODZlMDk0NzM0
NmM5YmQ3NWZjYTJmOTNjMy4uMjViNDE3Njc2MzAxMTJjNTE1Y2EzMTQxZDhkOTM1ZWFiNGJhMjU3
OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCkBAIC0yMDQ3LDYgKzIwNDcsMTEgQEAgdm9pZCBUZXN0UnVubmVyOjpkaWRT
ZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFjaygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhE
aWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFja0lEKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpz
ZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCBncmFudGVkKQorewor
ICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkdyYW50ZWQiLCBncmFudGVkKTsKK30KKwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCBhYWE1MjE2ZjkyNjBkYjRk
OTg4MWNkMGRkYmIxOWY1MDg1Mjk3ZmQ4Li45MThhYTk2NDI2NzJlZmFhMGNlNDYzNGIxNjhiMDAw
ZDM0MzNlZWU1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaApAQCAtNTExLDYgKzUxMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKEpTU3RyaW5nUmVmKTsK
ICAgICB2b2lkIG1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZygpOwog
CisgICAgdm9pZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCk7
CisKIHByaXZhdGU6CiAgICAgVGVzdFJ1bm5lcigpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDZkYmM2ODRlODg1MGFmZTA0NTkxMzlmYmUxOWQ1ZTVj
Y2RiNzI2ZTcuLjE4NmVmZjlhMTRjNzEwODlmMDZhZjI5NGFlZWUyNDIzMGQ3ZmMxZTMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC02Miw2ICs2Miw3IEBA
CiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViS2l0
L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW5SZWYuaD4K
KyNpbmNsdWRlIDxXZWJLaXQvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5o
PgogI2luY2x1ZGUgPFdlYktpdC9XS1RleHRDaGVja2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dL
VVJMLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmg+CkBA
IC0yOTcsNiArMjk4LDIxIEBAIHN0YXRpYyB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwo
KQogewogfQogCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tTZWN1cml0
eU9yaWdpblJlZiwgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBjYWxs
YmFjaykKK3sKKyAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29tcGxldGVTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DaGVjayhjYWxsYmFjayk7Cit9CisKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OmNvbXBsZXRlU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2soV0tTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBjYWxsYmFjaykKK3sKKyAgICBXS1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUoY2FsbGJhY2ssIG1faXNTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxl
cjo6c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wgZ3JhbnRlZCkK
K3sKKyAgICBtX2lzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCA9IGdyYW50ZWQ7
Cit9CisKIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFdLUGFnZVJl
ZiwgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS05hdmlnYXRpb25BY3Rp
b25SZWYgbmF2aWdhdGlvbkFjdGlvbiwgV0tXaW5kb3dGZWF0dXJlc1JlZiB3aW5kb3dGZWF0dXJl
cywgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBQbGF0Zm9ybVdlYlZpZXcqIHBhcmVu
dFZpZXcgPSBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdlYlZpZXcqPihjb25zdF9jYXN0PHZvaWQqPihj
bGllbnRJbmZvKSk7CkBAIC02NTAsOCArNjY2LDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3Jl
YXRlV2ViVmlld1dpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogICAgIFdL
SFRUUENvb2tpZVN0b3JlRGVsZXRlQWxsQ29va2llcyhXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQ
Q29va2llU3RvcmUod2Vic2l0ZURhdGFTdG9yZSgpKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAKICAg
ICBwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoY29uZmlndXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7Ci0g
ICAgV0tQYWdlVUlDbGllbnRWMTQgcGFnZVVJQ2xpZW50ID0gewotICAgICAgICB7IDE0LCBtX21h
aW5XZWJWaWV3LmdldCgpIH0sCisgICAgV0tQYWdlVUlDbGllbnRWMTUgcGFnZVVJQ2xpZW50ID0g
eworICAgICAgICB7IDE1LCBtX21haW5XZWJWaWV3LmdldCgpIH0sCiAgICAgICAgIDAsIC8vIGNy
ZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAogICAgICAgICAwLCAvLyBzaG93UGFn
ZQogICAgICAgICAwLCAvLyBjbG9zZQpAQCAtNzI0LDcgKzc0MCw4IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9u
cykKICAgICAgICAgMCwgLy8gZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBl
YXJhbmNlCiAgICAgICAgIDAsIC8vIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybQogICAgICAg
ICBzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzLAotICAgICAgICBy
dW5XZWJBdXRoZW50aWNhdGlvblBhbmVsCisgICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwsCisgICAgICAgIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3QKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChtX21haW5XZWJWaWV3LT5w
YWdlKCksICZwYWdlVUlDbGllbnQuYmFzZSk7CiAKQEAgLTEwNTMsNiArMTA3MCw4IEBAIGJvb2wg
VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9w
dGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgbV9zZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0Nh
bGxzQ291bnQgPSAwOwogICAgIG1fc2hvdWxkRGlzbWlzc0phdmFTY3JpcHRBbGVydHNBc3luY2hy
b25vdXNseSA9IGZhbHNlOwogCisgICAgc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25H
cmFudGVkKHRydWUpOworCiAgICAgYXV0byBsb2FkQWJvdXRCbGFuayA9IFt0aGlzXSB7CiAgICAg
ICAgIG1fZG9uZVJlc2V0dGluZyA9IGZhbHNlOwogICAgICAgICBXS1BhZ2VMb2FkVVJMKG1fbWFp
bldlYlZpZXctPnBhZ2UoKSwgYmxhbmtVUkwoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmgKaW5kZXggMzNiNjQ5NGFjNjI0NGI5MmZjYjc4MDlhNThkNzIwM2M3YzEyNThh
OC4uMDVjOGY4YmRhYTk1YWQ4N2U0MzllMzA5M2I4YTRmMzRmNWY4MmM1NiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMzUxLDYgKzM1MSw5IEBAIHB1YmxpYzoK
IAogICAgIFdLVVJMUmVmIGN1cnJlbnRUZXN0VVJMKCkgY29uc3Q7CiAKKyAgICB2b2lkIGNvbXBs
ZXRlU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2soV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFja1JlZik7CisgICAgdm9pZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkdyYW50ZWQoYm9vbCk7CisKIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdl
Q29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjb25zdCBUZXN0T3B0
aW9ucyYpOwogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IGdlbmVy
YXRlQ29udGV4dENvbmZpZ3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnMmKSBjb25zdDsKQEAgLTY0
MCw2ICs2NDMsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgbV9o
YXNTZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgeyBmYWxzZSB9OwogI2VuZGlmCisKKyAg
ICBib29sIG1faXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkIHsgZmFsc2UgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAppbmRleCAxNGMwNGVkMWZhOTM5NGY1NzJmNjQ5YTkxYjQ3ZWZiMjA2ZWY4NTRl
Li41YjY2NjE3YmVlMDE2YjY3NTFjN2JiMmJjZTZiYjhiYWU0NGViMGEwIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTM0NSw2ICsxMzQ1LDExIEBAIFdL
UmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91
c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAor
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAic2V0SXNT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkIikpIHsKKyAgICAgICAgVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRl
ZChib29sZWFuVmFsdWUobWVzc2FnZUJvZHkpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggNjc1N2I4ZTA4N2M3ZjY5N2QzOTc1MzZkMTBjNjk1ZDk3OTIzNTlkOS4uNjFkMGJk
MmUwOGIyMGRkNGVjZDU5NDJjNWE0NjdhNDI0M2Y4N2RhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTExLTA2ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBiYXNpYyBwZXJtaXNzaW9uIGNoZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3Nw
ZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbDogQWRk
ZWQuCisKIDIwMjAtMTEtMDYgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4K
IAogICAgICAgICBbV1BFXSBVbnJldmlld2VkIHRlc3QgZ2FyZGVuaW5nLiBHYXJkZW5lZCBzZXZl
cmFsIGZsYWt5IGZhaWx1cmVzIHJlcG9ydGVkIGJ5IHRoZSBib3QuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3ItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9y
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjliOGFiMDRkMDgzZmEyN2EwODQ1ODVkYWE5OGZk
N2I2MDZiNDY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNv
Z25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitW
ZXJpZnkgdGhhdCBlcnJvciBldmVudCBpcyBmaXJlZCB3aGVuIHBlcm1pc3Npb24gaXMgZGVuaWVk
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyByZWNvZ25pdGlvbiA9IG5l
dyBTcGVlY2hSZWNvZ25pdGlvbigpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyByZWNv
Z25pdGlvbi5zdGFydCgpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBldmVudC5lcnJv
ciBpcyAibm90LWFsbG93ZWQiCitQQVNTIGV2ZW50Lm1lc3NhZ2UgaXMgInBlcm1pc3Npb24gY2hl
Y2sgZmFpbHMiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJt
aXNzaW9uLWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Bl
cm1pc3Npb24tZXJyb3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDZlOWYzYTc3NjQwOWFhM2RmNDE5MmJm
YmM1ODc1OTAxNWUzNmNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVl
Y2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVmVyaWZ5IHRo
YXQgZXJyb3IgZXZlbnQgaXMgZmlyZWQgd2hlbiBwZXJtaXNzaW9uIGlzIGRlbmllZC4iKTsKKwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAg
dGVzdFJ1bm5lci5zZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoZmFsc2Up
OworfQorCitzaG91bGROb3RUaHJvdygicmVjb2duaXRpb24gPSBuZXcgU3BlZWNoUmVjb2duaXRp
b24oKSIpOworc2hvdWxkTm90VGhyb3coInJlY29nbml0aW9uLnN0YXJ0KCkiKTsKK3JlY29nbml0
aW9uLm9uZXJyb3IgPSAoZXZlbnQpID0+IHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2
ZW50LmVycm9yIiwgIm5vdC1hbGxvd2VkIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
dmVudC5tZXNzYWdlIiwgInBlcm1pc3Npb24gY2hlY2sgZmFpbHMiKTsKKworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413509</attachid>
            <date>2020-11-06 20:37:25 -0800</date>
            <delta_ts>2020-11-06 20:48:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201106203724.patch</filename>
            <type>text/plain</type>
            <size>118063</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQwYjNmYTMyYjRlOGM1MmRkNmFjZmQ5
YjVmYjcwZDgwOGE2YTE3OGEuLmFjYmJhNTI2YjdiZWM4YTI2MzllNzZhODcwMDFhYTg3Y2I0MTQw
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTEtMDYgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMC0xMS0wNSAgU2FhbSBC
YXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYmFjayBzd2FwKCkgZnJl
ZSBmdW5jdGlvbiBmb3IgUmVmUHRyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNkM2M4YTE3NTNhMzc2N2Q1MDA5
ZGM0ZjIyMzQwMWU0NzNkYTM2My4uMjI1ZjUyMjJjYjZkODgyNGZhMjMyZWY2YTQ0NGUwOTExMzE1
MWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTExLTA2ICBTaWh1aSBMaXUg
IDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyBwZXJtaXNz
aW9uIGNoZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnRSZWNvZ25p
dGlvbik6IAorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OmNyZWF0
ZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OmNs
aWVudE9yaWdpbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0SW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mbzo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uUmVxdWVzdEluZm86OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZTo6ZXJyb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGU6OnJlc3VsdCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25VcGRhdGUuaDoKKyAgICAgICAgKiBwYWdlL0R1bW15U3BlZWNoUmVjb2duaXRp
b25Qcm92aWRlci5oOgorCiAyMDIwLTExLTA2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gbG9jYWxDYXJldE9mZnNldCBzaG91
bGQgdXNlIGl0ZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRiYWQxYWEyYzkzYTk2MTI2YzU1MWUxN2M1YTcw
ZWZlMDMzZjVmOTUuLjRmNDhmZjc3YTJjM2VjODUxMWU0ZTNhN2Q4NGI1Y2RhMjU5YWMzMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTAzIEBACisyMDIwLTExLTA2ICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyBwZXJtaXNzaW9uIGNoZWNr
IGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4NDc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW50cm9kdWNlIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXIsIHdoaWNoIGNoZWNrcyBhbmQgcmVxdWVzdHMgc3BlZWNoIHJlY29nbml0aW9uIHBlcm1pc3Np
b25zIGJlZm9yZSAKKyAgICAgICAgd2UgYWN0dWFsbHkgc3RhcnQgY2FwdHVyaW5nIGF1ZGlvIGFu
ZCBwZXJmb3JtIHJlY29nbml0aW9uLiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
IGlzIHBlci1wYWdlLCBsaWtlCisgICAgICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLiBUaGUg
Y2hlY2tzIGFyZToKKyAgICAgICAgMS4gU2FuZGJveCByZXF1aXJlbWVudCBmb3IgbWljcm9waG9u
ZQorICAgICAgICAyLiBUQ0MgZm9yIG1pY3JvcGhvbmUKKyAgICAgICAgMy4gVENDIGZvciBTRlNw
ZWVjaFJlY29nbml6ZXIKKyAgICAgICAgNC4gVXNlciBwZXJtaXNzaW9uIG9uIHNwZWVjaCByZWNv
Z25pdGlvbiBmb3Igb3JpZ2lucworCisgICAgICAgIEFkZCBhIGRlbGVnYXRlIGZ1bmN0aW9uIGZv
ciByZXF1ZXN0aW5nIHVzZXIgcGVybWlzc2lvbiwgd2hpY2ggaXMgZGVuaWVkIGJ5IGRlZmF1bHQu
CisKKyAgICAgICAgVGVzdDogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9y
Lmh0bWwKKworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hh
cmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNv
dXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgor
ICAgICAgICAoQVBJOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdl
U2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFja0dldFR5cGVJRCk6CisgICAgICAgIChXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbTogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OnJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUpOgorICAg
ICAgICAoV2ViS2l0OjpyZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlcyk6CisgICAg
ICAgIChXZWJLaXQ6OmNoZWNrQVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlc0FuZEZpbHRlcik6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXJDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydE5leHRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y29tcGxldGVDdXJyZW50
UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OnBlcmZvcm1TYW5kYm94Q2hlY2spOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1NhbmRi
b3hSZXF1aXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI6OmNoZWNrTWljcm9waG9uZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU3BlZWNoUmVjb2duaXRpb25T
ZXJ2aWNlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6Y2hlY2tBbmRSZXF1ZXN0VXNlclBlcm1pc3Npb25Gb3JPcmlnaW4pOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0
TWljcm9waG9uZUFjY2Vzc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uU2VydmljZUFj
Y2Vzc0lmTmVlZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0
OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cmVxdWVzdFN5c3RlbVZhbGlkYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpyZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2Eu
bW06CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAg
IChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6On5TcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0TmV4dFJlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1
cnJlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja01pY3JvcGhvbmVBY2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpj
aGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNjZXNz
SWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzSWZOZWVkZWQpOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVj
a0FuZFJlcXVlc3RVc2VyUGVybWlzc2lvbkZvck9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6
OmNvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdDo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uUmVxdWVzdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjazo6Y29tcGxldGUpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjazo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2spOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcik6
CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydCk6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjphYm9ydCk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpyZW1vdmVQZW5kaW5nUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydFBvY2Vzc2luZ1Jl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6Y29udGlu
dWVQcm9jZXNzaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
U2VydmVyOjpzZW5kVXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6OnN0b3BQcm9jZXNzaW5nUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVj
aFJlY29nbml0aW9uU2VydmVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcik6CisgICAgICAg
ICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpkaWRSZWNlaXZl
VXBkYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbi5oOgorCiAyMDIwLTExLTA2ICBNaWxhbiBDcmhhICA8bWNyaGFA
cmVkaGF0LmNvbT4KIAogICAgICAgICBbR1RLXSBBcHBsaWNhdGlvbiBjYW5ub3Qgb3ZlcnJpZGUg
ZHJhZyZkcm9wIGNhbGxiYWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1I
YXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCAyMDNlOGVjN2Q2MTVl
ODc1ZjNiMzE0NWYyZjhiZGQxZTViN2IwODNkLi44YWE2MDU3OTM3MzM3YTUxYjEyMWVkMDhjZjUz
ZTQyNjA2MjliNzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtNzU1LDMgKzc1NSw3IEBACiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9S
TShBUFBMRVRWKQogI2RlZmluZSBIQVZFX0NOQ09OVEFDVFBJQ0tFUlZJRVdDT05UUk9MTEVSIDEK
ICNlbmRpZgorCisjaWYgKFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMAorI2RlZmluZSBIQVZF
X1NQRUVDSFJFQ09HTklaRVIgMQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKaW5kZXggNTFhMzJjZGFhY2FhMWVkMDEx
NDI3NjdkMjJlMzAyNTI2ZGViZjU5NS4uZjExN2MxZmIxYjViZDA0YWU3NTUyNTY1ZmJhYTg4OTFj
NWMxYWViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uLmgiCiAKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4u
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNs
dWRlICJQYWdlLmgiCkBAIC02OSw3ICs3MCw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNwZWVjaFJl
Y29nbml0aW9uOjpzdGFydFJlY29nbml0aW9uKCkKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIlJlY29nbml0aW9uIGRvZXMg
bm90IGhhdmUgYSB2YWxpZCBjb25uZWN0aW9uIl9zIH07CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnN0
YXJ0KGlkZW50aWZpZXIoKSwgbV9sYW5nLCBtX2NvbnRpbnVvdXMsIG1faW50ZXJpbVJlc3VsdHMs
IG1fbWF4QWx0ZXJuYXRpdmVzKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnN0YXJ0
KGlkZW50aWZpZXIoKSwgbV9sYW5nLCBtX2NvbnRpbnVvdXMsIG1faW50ZXJpbVJlc3VsdHMsIG1f
bWF4QWx0ZXJuYXRpdmVzLCBDbGllbnRPcmlnaW4geyBkb2N1bWVudC50b3BPcmlnaW4oKS5kYXRh
KCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpIH0pOwogICAgIG1fc3RhdGUgPSBT
dGF0ZTo6U3RhcnRpbmc7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgK
aW5kZXggM2ZkMmQzM2FjYTAyMDUyNjM0MDU4ZDBmYjU2NTJlYjcwMDdmYTUyYS4uNjllZWJjMjkz
ZDViN2RlMWUzOGNlZWFkMmEzZWUzOGYwMGQxY2E1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgK
QEAgLTMxLDE1ICszMSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudDsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
Oworc3RydWN0IENsaWVudE9yaWdpbjsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uPiB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRp
bnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcykgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBp
bnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBDbGllbnRPcmlnaW4mJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlVXBkYXRlKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYp
ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuY3BwCmlu
ZGV4IDRhNWU4YzE2MzAzYzE4NjVjMmIxZmZjZTliNTZlZTI2MjAzYTdmYzUuLmQzYmQ3YTk0YTQy
YjlkNWUwNTkyMGM1YmZlN2RiYzQ0YTkxODg3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmNwcApAQCAt
MjgsMTEgKzI4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0PiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OmNyZWF0ZShTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvJiYgcmVxdWVzdEluZm8pCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KFdURk1vdmUocmVxdWVzdEluZm8pKSk7Ci19
Ci0KIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KFNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8mJiByZXF1ZXN0SW5mbykKICAgICA6IG1faW5mbyhX
VEZNb3ZlKHJlcXVlc3RJbmZvKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKaW5kZXggNWNlZWEwMWM3Mzg2
NTU2ZDQyNTFmOGM4Yjk1YzMxMjRiYWZjNjAxMi4uMzk2ZGIyNjk4NGY5MTI0NjgyNGIwNjU4NjY1
Y2E3M2U3YmM0Y2NkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCA6IHB1
YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4geworY2xhc3MgU3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiBjcmVh
dGUoU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
SW5mbyYmKTsKIAogICAgIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIgY2xpZW50SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5jbGllbnRJZGVudGlm
aWVyOyB9CiAgICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmxh
bmc7IH0KICAgICBib29sIGNvbnRpbnVvdXMoKSBjb25zdCB7IHJldHVybiBtX2luZm8uY29udGlu
dW91czs7IH0KICAgICBib29sIGludGVyaW1SZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9pbmZv
LmludGVyaW1SZXN1bHRzOyB9CiAgICAgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKCkgY29uc3Qg
eyByZXR1cm4gbV9pbmZvLm1heEFsdGVybmF0aXZlczsgfQorICAgIENsaWVudE9yaWdpbiBjbGll
bnRPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2luZm8uY2xpZW50T3JpZ2luOyB9CiAKIHByaXZh
dGU6Ci0gICAgZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KFNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdEluZm8mJik7Ci0KICAgICBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIG1f
aW5mbzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaAppbmRleCBhYjFlMWFlNmVmMzg4OThj
MjFhMmE5ZGY3YWYxZjAwN2UyNGIxN2QwLi4xZWZlOWUwNjQ2ZTc0N2NiNTVkN2NjYjBmN2IxOGZm
NWUwYjNjNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCkBAIC0yNSw2ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVkZSAiU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0zNSw2ICszNiw3IEBAIHN0cnVjdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3RJbmZvIHsKICAgICBib29sIGNvbnRpbnVvdXMgeyBmYWxzZSB9OwogICAgIGJvb2wgaW50ZXJp
bVJlc3VsdHMgeyBmYWxzZSB9OwogICAgIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcyB7IDEgfTsK
KyAgICBDbGllbnRPcmlnaW4gY2xpZW50T3JpZ2luOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBkZWNv
ZGUoRGVjb2RlciYpOwpAQCAtNDMsNyArNDUsNyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mbyB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3RJbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBl
bmNvZGVyIDw8IGNsaWVudElkZW50aWZpZXIgPDwgbGFuZyA8PCBjb250aW51b3VzIDw8IGludGVy
aW1SZXN1bHRzIDw8IG1heEFsdGVybmF0aXZlczsKKyAgICBlbmNvZGVyIDw8IGNsaWVudElkZW50
aWZpZXIgPDwgbGFuZyA8PCBjb250aW51b3VzIDw8IGludGVyaW1SZXN1bHRzIDw8IG1heEFsdGVy
bmF0aXZlcyA8PCBjbGllbnRPcmlnaW47CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBA
IC03NCwxMiArNzYsMTggQEAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbz4g
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2RlKERlY28KICAgICBpZiAoIW1heEFs
dGVybmF0aXZlcykKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIE9wdGlvbmFs
PENsaWVudE9yaWdpbj4gY2xpZW50T3JpZ2luOworICAgIGRlY29kZXIgPj4gY2xpZW50T3JpZ2lu
OworICAgIGlmICghY2xpZW50T3JpZ2luKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CiAgICAgcmV0dXJuIHt7CiAgICAgICAgIFdURk1vdmUoKmNsaWVudElkZW50aWZpZXIpLAogICAg
ICAgICBXVEZNb3ZlKCpsYW5nKSwKICAgICAgICAgV1RGTW92ZSgqY29udGludW91cyksCiAgICAg
ICAgIFdURk1vdmUoKmludGVyaW1SZXN1bHRzKSwKLSAgICAgICAgV1RGTW92ZSgqbWF4QWx0ZXJu
YXRpdmVzKQorICAgICAgICBXVEZNb3ZlKCptYXhBbHRlcm5hdGl2ZXMpLAorICAgICAgICBXVEZN
b3ZlKCpjbGllbnRPcmlnaW4pCiAgICAgfX07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcAppbmRleCA1
MzRlZGEzZDI0NzdlZTFjNmYxN2VjNmFmMTc5MzI2YmI3OWYwMjA3Li45YTlhN2Q5MjA2OTY1NWM0
NTcxNjA3ZGRhMThjNGU2YjMzMGY3MmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwCkBAIC02MCw3ICs2
MCw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGUgZW51bWVyYXRpb25WYWx1ZSkKIAogU3BlZWNoUmVjb2duaXRpb25VcGRhdGUg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlVHlwZSB0eXBlKQogewotICAgIHJldHVybiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7IGNs
aWVudElkZW50aWZpZXIsIHR5cGUgfTsKKyAgICByZXR1cm4gU3BlZWNoUmVjb2duaXRpb25VcGRh
dGUgeyBjbGllbnRJZGVudGlmaWVyLCB0eXBlLCBXVEY6Ok1vbm9zdGF0ZSgpIH07CiB9CiAKIFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJv
cihTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50
aWZpZXIsIGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXJyb3ImIGVycm9yKQpAQCAtODMsNyArODMs
NyBAQCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUoU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZQogU3BlZWNoUmVjb2duaXRpb25FcnJvciBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZTo6ZXJyb3IoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKG1fY29udGVudCwKLSAgICAgICAgW10gKFNwZWVjaFJlY29nbml0aW9uRXJyb3ImIGVy
cm9yKSB7IHJldHVybiBlcnJvcjsgfSwKKyAgICAgICAgW10gKGNvbnN0IFNwZWVjaFJlY29nbml0
aW9uRXJyb3ImIGVycm9yKSB7IHJldHVybiBlcnJvcjsgfSwKICAgICAgICAgW10gKGNvbnN0IGF1
dG8mKSB7IHJldHVybiBTcGVlY2hSZWNvZ25pdGlvbkVycm9yKCk7IH0KICAgICApOwogfQpAQCAt
OTEsNyArOTEsNyBAQCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlOjplcnJvcigpIGNvbnN0CiBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiBT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6cmVzdWx0KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihtX2NvbnRlbnQsCi0gICAgICAgIFtdIChWZWN0b3I8U3BlZWNoUmVjb2duaXRp
b25SZXN1bHREYXRhPiYgZGF0YSkgeyByZXR1cm4gZGF0YTsgfSwKKyAgICAgICAgW10gKGNvbnN0
IFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+JiBkYXRhKSB7IHJldHVybiBkYXRh
OyB9LAogICAgICAgICBbXSAoY29uc3QgYXV0byYpIHsgcmV0dXJuIFZlY3RvcjxTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdERhdGE+IHsgfTsgfQogICAgICk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAppbmRleCAz
YTgyYmY2YmFmNTRjZTBjNGIxMzM0ZWY2ZjhiNTg5M2YzYjg5ODJlLi44OTE0OTE3OTNmNGUwMWVj
MmZmNjAxMDdjYjQ4NWY0ODhmYTQzZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKQEAgLTUyLDggKzUyLDgg
QEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlVHlwZSk7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7CiBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIGNyZWF0ZShTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGUpOwotICAgIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVF
cnJvcihTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBT
cGVlY2hSZWNvZ25pdGlvbkVycm9yJik7Ci0gICAgc3RhdGljIFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlIGNyZWF0ZVJlc3VsdChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyLCBjb25zdCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVFcnJvcihT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTcGVlY2hS
ZWNvZ25pdGlvbkVycm9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlIGNyZWF0ZVJlc3VsdChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYp
OwogCiAgICAgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGll
bnRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyOyB9CiAgICAg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHVzaW5nIENvbnRl
bnQgPSBWYXJpYW50PFdURjo6TW9ub3N0YXRlLCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yLCBWZWN0
b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj47Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlLCBDb250ZW50ID0g
V1RGOjpNb25vc3RhdGUoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3BlZWNoUmVjb2duaXRpb25V
cGRhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3BlZWNo
UmVjb2duaXRpb25VcGRhdGVUeXBlLCBDb250ZW50KTsKIAogICAgIFNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgbV9jbGllbnRJZGVudGlmaWVyOwogICAgIFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlVHlwZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaAppbmRleCBjZjllNzJiOTNjMDY0
YTU1ZGRkZmFiN2IzY2FmYjQ4OTBlMDM1ZjQ2Li4yNDBhYTNkNDg0YTk3M2I0NDExMmFlZjYxZThl
YWFhODQ3YjU4ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNo
UmVjb2duaXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVl
Y2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKQEAgLTM5LDEwICszOSwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEdW1teVNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbigpKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIHJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpIGZpbmFsIHsgfQotICAgICAgICB2b2lkIHN0YXJ0
KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYsIGJvb2wsIGJvb2wsIHVpbnQ2NF90KSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBzdGFydChT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
LCBib29sLCBib29sLCB1aW50NjRfdCwgQ2xpZW50T3JpZ2luJiYpIGZpbmFsIHsgfQogICAgICAg
ICB2b2lkIHN0b3AoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikg
ZmluYWwgeyB9CiAgICAgICAgIHZvaWQgYWJvcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllcikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZVVwZGF0
ZShjb25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpIGZpbmFsIHsgfQorICAgICAgICB2b2lk
IGRpZFJlY2VpdmVVcGRhdGUoU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmJikgZmluYWwgeyB9CiAg
ICAgfTsKICAgICBEdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAg
ICAgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uJiBzcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IGI3YjdlZTY4OGFhNmZm
ODkwNWEyMWI3NzhkNGQ5NjM1MjI1MTYzOTcuLjA1NTY5MzQzYTBkYzNhYWQ2YzJkMzM0MDNlOGUy
OWJhODZmZTRjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTE2OCw2
ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJ1bkphdmFTY3JpcHRBbGVydFJlc3VsdExpc3Rl
bmVyLAogICAgICAgICBSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVyLAogICAgICAg
ICBSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXIsCisgICAgICAgIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLAogICAgICAgICBUZXh0Q2hlY2tlciwKICAgICAgICAg
VVJMU2NoZW1lVGFzaywKICAgICAgICAgVXNlckNvbnRlbnRDb250cm9sbGVyLApAQCAtNDE2LDYg
KzQxNyw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8QVBJOjpPYmplY3Q6OlR5cGU+
IHsKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlJ1bkphdmFTY3JpcHRBbGVydFJlc3VsdExp
c3RlbmVyLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6UnVuSmF2YVNjcmlwdENvbmZpcm1S
ZXN1bHRMaXN0ZW5lciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlJ1bkphdmFTY3JpcHRQ
cm9tcHRSZXN1bHRMaXN0ZW5lciwKKyAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6
VGV4dENoZWNrZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpVUkxTY2hlbWVUYXNrLAog
ICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6VXNlckNvbnRlbnRDb250cm9sbGVyLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAppbmRleCA5ZTgyZTU2MDAxODdlYzFjZjhhZjliZWU3OWU3
MWQwZThkN2ZkMTVhLi44NGVlNmMyODhmNmQyZWJkNTFmYTczZWE3MjcwOGYzMjk0NmJkZDg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAtMTQxLDYgKzE0MSw3IEBAIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2Vic2l0ZURhdGFDb25maWd1cmF0aW9uU3RvcmUqIFdL
V2Vic2l0ZURhdGFTdG9yZUNvCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNpdGVE
YXRhU3RvcmUqIFdLV2Vic2l0ZURhdGFTdG9yZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLV2Vic2l0ZVBvbGljaWVzKiBXS1dlYnNpdGVQb2xpY2llc1JlZjsKIHR5cGVkZWYgY29u
c3Qgc3RydWN0IE9wYXF1ZVdLV2luZG93RmVhdHVyZXMqIFdLV2luZG93RmVhdHVyZXNSZWY7Cit0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmOwogCiAvKiBX
ZWJLaXQyIEJ1bmRsZSB0eXBlcyAqLwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAzNTFhZjQyNzhjOTg1OTU5
YWVjZmIxNWRiZjBhYjdjYjVlMjA0Yjc1Li5lODY0MTMxMmZhYjRhMjZlOTRlMDVkOGUxMmUyYjM3
ZTIxZDFmYTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI5MCw2ICsyOTAsNyBAQCBVSVByb2Nlc3MvUmVz
cG9uc2l2ZW5lc3NUaW1lci5jcHAKIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5j
cHAKIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCiBVSVByb2Nlc3MvU3lzdGVtUHJl
dmlld0NvbnRyb2xsZXIuY3BwCitVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlci5jcHAKIFVJUHJvY2Vzcy9UZXh0Q2hlY2tlci5jcHAKIFVJUHJvY2Vzcy9UZXh0Q2hl
Y2tlckNvbXBsZXRpb24uY3BwCiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJv
eHkuY3BwCkBAIC00MDMsNiArNDA0LDcgQEAgVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMu
Y3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuY3BwCiBVSVByb2Nlc3MvQVBJ
L0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25T
dGF0ZVJlZi5jcHAKK1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLVGV4dENoZWNrZXIuY3BwCiBVSVByb2Nl
c3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCiBVSVByb2Nlc3MvQVBJL0Mv
V0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUmVmLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDVkOWI5M2QxN2FmMjRiZWFhMDIwZTI4NTI5ODU2OTA5YmNiNmVhZjIuLjBhNTM5YTVkZmY2
YzU5YjYzNGIzNjBjMDg5NTBhNGJhYjM3ZmQ5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAg
LTM3NCwxMiArMzc0LDE0IEBAIFVJUHJvY2Vzcy9Db2NvYS9HbG9iYWxGaW5kSW5QYWdlU3RhdGUu
bW0KIFVJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCiBVSVByb2Nlc3MvQ29j
b2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tCiBVSVByb2Nlc3MvQ29jb2Ev
TWVkaWFVdGlsaXRpZXMubW0KK1VJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRp
ZXMubW0KIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KIFVJUHJvY2Vzcy9Db2Nv
YS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5Lm1tCiBVSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0K
IFVJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KIFVJUHJvY2Vzcy9D
b2NvYS9TZXNzaW9uU3RhdGVDb2RpbmcubW0KK1VJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvVGV4dENoZWNraW5nQ29udHJv
bGxlci5tbQogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggYWE3ZDg5YzAxZTczNTIwY2UzZWUwNDIyNmI5
YWU4NTk3MGJmYWE2ZS4uYjJkZmYyOTgzZWUwOThhZGJjOTI3MTgxNWM0MmFiNmFkNmQ0MDQ5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTIwMiw2ICsy
MDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRp
b246OmNyZWF0ZSgpOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5Jiwg
QVBJOjpTZWN1cml0eU9yaWdpbiYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCmluZGV4IGI1MmM0NGJhZWE5YWNmOWZjMDMzMmQ1YTlmMzcz
NTZlOWQyMzg2MjkuLjE4Y2JmZDViNzRlYjg3NzBhNTc4ZjE1YzhhMDE2MTQ5OTAyMTQ1NDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC03OSw2ICs3OSw3
IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjsKIGNsYXNzIERvd25sb2Fk
UHJveHk7CiBjbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OwogY2xhc3MgTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25DYWxsYmFjazsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OwogY2xhc3Mg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlz
dDsKQEAgLTE1Miw2ICsxNTMsNyBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tQcmVmZXJlbmNlc1Jl
ZiwgV2ViUHJlZmVyZW5jZXMpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQcm90ZWN0aW9uU3BhY2VS
ZWYsIFdlYlByb3RlY3Rpb25TcGFjZSkKIFdLX0FERF9BUElfTUFQUElORyhXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNYW5hZ2VyUmVmLCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcikK
IFdLX0FERF9BUElfTUFQUElORyhXS1Nlc3Npb25TdGF0ZVJlZiwgQVBJOjpTZXNzaW9uU3RhdGUp
CitXS19BRERfQVBJX01BUFBJTkcoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
a1JlZiwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2spCiBXS19BRERfQVBJX01B
UFBJTkcoV0tUZXh0Q2hlY2tlclJlZiwgV2ViVGV4dENoZWNrZXIpCiBXS19BRERfQVBJX01BUFBJ
TkcoV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYsIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlZiwg
QVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCmluZGV4IDQzNjljZGQ4MjViNTE1N2ZiMDEwYzNmODFhZTc4ZTY2MGRhYTc0ZmMu
LjExYzY2YmY0Mjg0OTMyODE1ZDdlZmFhNGJhZTM5MDZlZjcyMzQ1MTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUg
IlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUg
IlByaW50SW5mby5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3QuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS1BhZ2VQb2xpY3lDbGll
bnRJbnRlcm5hbC5oIgogI2luY2x1ZGUgIldLUGFnZVJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzSW50
ZXJuYWwuaCIKQEAgLTExNSw3ICsxMTYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFp
dHM8V0tQYWdlUG9saWN5Q2xpZW50QmFzZT4gewogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xp
ZW50VHJhaXRzPFdLUGFnZVVJQ2xpZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxX
S1BhZ2VVSUNsaWVudFYwLCBXS1BhZ2VVSUNsaWVudFYxLCBXS1BhZ2VVSUNsaWVudFYyLCBXS1Bh
Z2VVSUNsaWVudFYzLCBXS1BhZ2VVSUNsaWVudFY0LCBXS1BhZ2VVSUNsaWVudFY1LCBXS1BhZ2VV
SUNsaWVudFY2LCBXS1BhZ2VVSUNsaWVudFY3LCBXS1BhZ2VVSUNsaWVudFY4LCBXS1BhZ2VVSUNs
aWVudFY5LCBXS1BhZ2VVSUNsaWVudFYxMCwgV0tQYWdlVUlDbGllbnRWMTEsIFdLUGFnZVVJQ2xp
ZW50VjEyLCBXS1BhZ2VVSUNsaWVudFYxMywgV0tQYWdlVUlDbGllbnRWMTQ+IFZlcnNpb25zOwor
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1BhZ2VVSUNsaWVudFYwLCBXS1BhZ2VVSUNsaWVudFYx
LCBXS1BhZ2VVSUNsaWVudFYyLCBXS1BhZ2VVSUNsaWVudFYzLCBXS1BhZ2VVSUNsaWVudFY0LCBX
S1BhZ2VVSUNsaWVudFY1LCBXS1BhZ2VVSUNsaWVudFY2LCBXS1BhZ2VVSUNsaWVudFY3LCBXS1Bh
Z2VVSUNsaWVudFY4LCBXS1BhZ2VVSUNsaWVudFY5LCBXS1BhZ2VVSUNsaWVudFYxMCwgV0tQYWdl
VUlDbGllbnRWMTEsIFdLUGFnZVVJQ2xpZW50VjEyLCBXS1BhZ2VVSUNsaWVudFYxMywgV0tQYWdl
VUlDbGllbnRWMTQsIFdLUGFnZVVJQ2xpZW50VjE1PiBWZXJzaW9uczsKIH07CiAKICNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKQEAgLTIxMTAsNiArMjExMSwxMyBAQCB2b2lkIFdLUGFnZVNldFBh
Z2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3
a0NsaWVudAogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpXZWJBdXRoZW50
aWNhdGlvblBhbmVsUmVzdWx0OjpQcmVzZW50ZWQpOwogICAgICAgICB9CiAjZW5kaWYKKyAgICAg
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
KFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgcmVxdWVzdGluZ09yaWdp
biwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3QpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVu
dC5kZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KHRvQVBJ
KCZwYWdlKSwgdG9BUEkoJnJlcXVlc3RpbmdPcmlnaW4pLCB0b0FQSSgmdG9wT3JpZ2luKSwgdG9B
UEkoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkucHRyKCkpKTsKKyAgICAgICAgfQogICAgIH07CiAKICAgICB0b0lt
cGwocGFnZVJlZiktPnNldFVJQ2xpZW50KG1ha2VVbmlxdWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaAppbmRl
eCBiNjM4ODE1NWNkMzAzNmU2NjYxMTBmMTkyNTYxNmFmZDM3ZTg2OGJhLi43Y2Q4ZmQwZDk4NGNm
ZDlmNGQ0NGJmZTgzZDg1ZGIxYjU2MTc1OThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKQEAgLTEzNiw2ICsxMzYsNyBAQCB0eXBlZGVmIHZv
aWQgKCpXS1BhZ2VEaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2VD
YWxsYmFjaykoV0tQYQogdHlwZWRlZiBib29sICgqV0tQYWdlU2hvdWxkQWxsb3dEZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTZWN1cml0
eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiAKIHR5
cGVkZWYgdm9pZCAoKldLUGFnZVJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYWxsYmFjaykoKTsK
K3R5cGVkZWYgdm9pZCAoKldLUGFnZURlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3RDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5S
ZWYgcmVxdWVzdGluZ09yaWdpbiwgV0tTZWN1cml0eU9yaWdpblJlZiB0b3BPcmlnaW4sIFdLU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgY2FsbGJhY2spOwogCiAvLyBEZXBy
ZWNhdGVkCiB0eXBlZGVmIFdLUGFnZVJlZiAoKldLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFja19k
ZXByZWNhdGVkRm9yVXNlV2l0aFYwKShXS1BhZ2VSZWYgcGFnZSwgV0tEaWN0aW9uYXJ5UmVmIGZl
YXR1cmVzLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1v
dXNlQnV0dG9uLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKQEAgLTEzNTMsNiArMTM1NCwxMTcg
QEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMTQgewogICAgIFdLUGFnZVJ1bldlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVu
V2ViQXV0aGVudGljYXRpb25QYW5lbDsKIH0gV0tQYWdlVUlDbGllbnRWMTQ7CiAKK3R5cGVkZWYg
c3RydWN0IFdLUGFnZVVJQ2xpZW50VjE1IHsKKyAgICBXS1BhZ2VVSUNsaWVudEJhc2UgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7CisKKyAgICAv
LyBWZXJzaW9uIDAuCisgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrX2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjA7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93UGFnZTsKKyAgICBXS1BhZ2VVSUNsaWVudENh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3Nl
OworICAgIFdLUGFnZVRha2VGb2N1c0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGFrZUZvY3VzOworICAgIFdLUGFnZUZvY3VzQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXM7CisgICAg
V0tQYWdlVW5mb2N1c0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bmZvY3VzOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNr
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmly
bV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRD
YWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFBy
b21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZVNldFN0YXR1c1RleHRDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdHVzVGV4
dDsKKyAgICBXS1BhZ2VNb3VzZURpZE1vdmVPdmVyRWxlbWVudENhbGxiYWNrX2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjAgICAgICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50X2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjA7CisgICAgV0tQYWdlTWlzc2luZ1BsdWdpbkJ1dHRvbkNsaWNrZWRDYWxsYmFja19k
ZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICBtaXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZURpZE5vdEhhbmRsZUtleUV2ZW50Q2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkTm90SGFuZGxlS2V5RXZlbnQ7
CisgICAgV0tQYWdlRGlkTm90SGFuZGxlV2hlZWxFdmVudENhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaWROb3RIYW5kbGVXaGVlbEV2ZW50OworICAgIFdLUGFnZUdldFRv
b2xiYXJzQXJlVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG9vbGJhcnNBcmVWaXNpYmxlOworICAgIFdLUGFnZVNldFRvb2xiYXJzQXJlVmlzaWJsZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG9vbGJhcnNBcmVWaXNpYmxl
OworICAgIFdLUGFnZUdldE1lbnVCYXJJc1Zpc2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVudUJhcklzVmlzaWJsZTsKKyAgICBXS1BhZ2VTZXRNZW51QmFy
SXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1l
bnVCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlR2V0U3RhdHVzQmFySXNWaXNpYmxlQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNCYXJJc1Zpc2libGU7CisgICAg
V0tQYWdlU2V0U3RhdHVzQmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRTdGF0dXNCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlR2V0SXNSZXNpemFi
bGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Jlc2l6
YWJsZTsKKyAgICBXS1BhZ2VTZXRJc1Jlc2l6YWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldElzUmVzaXphYmxlOworICAgIFdLUGFnZUdldFdpbmRv
d0ZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0
V2luZG93RnJhbWU7CisgICAgV0tQYWdlU2V0V2luZG93RnJhbWVDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRXaW5kb3dGcmFtZTsKKyAgICBXS1BhZ2VS
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY2
ICAgIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXByZWNhdGVkRm9yVXNlV2l0aFY2Owor
ICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkRHJhdzsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VEaWRTY3JvbGw7Cisg
ICAgV0tQYWdlRXhjZWVkZWREYXRhYmFzZVF1b3RhQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlZWRlZERhdGFiYXNlUXVvdGE7CisgICAgV0tQYWdlUnVuT3BlblBh
bmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5P
cGVuUGFuZWw7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdENhbGxiYWNrICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0OworICAgIFdLUGFnZUhlYWRlckhlaWdodENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVySGVpZ2h0OworICAgIFdLUGFnZUZv
b3RlckhlaWdodENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9vdGVySGVpZ2h0OworICAgIFdLUGFnZURyYXdIZWFkZXJDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0hlYWRlcjsKKyAgICBXS1BhZ2VE
cmF3Rm9vdGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRyYXdGb290ZXI7CisgICAgV0tQYWdlUHJpbnRGcmFtZUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludEZyYW1lOworICAgIFdLUGFnZVVJ
Q2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnVuTW9kYWw7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQxOyAvLyBVc2VkIHRvIGJlIGRpZENv
bXBsZXRlUnViYmVyQmFuZEZvck1haW5GcmFtZQorICAgIFdLUGFnZVNhdmVEYXRhVG9GaWxlSW5E
b3dubG9hZHNGb2xkZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgc2F2ZURhdGFUb0Zp
bGVJbkRvd25sb2Fkc0ZvbGRlcjsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEludGVycnVwdEphdmFT
Y3JpcHRfdW5hdmFpbGFibGU7CisKKyAgICAvLyBWZXJzaW9uIDEuCisgICAgV0tQYWdlQ3JlYXRl
TmV3UGFnZUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEgICAgICAgICAgICAgICAgICBj
cmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjE7CisgICAgV0tQYWdlTW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudDsKKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgIGRlY2lkZVBvbGljeUZvck5vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0
dG9uQ2xpY2tlZENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEgdW5hdmFpbGFibGVQbHVn
aW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjE7CisKKyAgICAvLyBWZXJzaW9u
IDIuCisgICAgV0tQYWdlU2hvd0NvbG9yUGlja2VyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaG93Q29sb3JQaWNrZXI7CisgICAgV0tQYWdlSGlkZUNvbG9y
UGlja2VyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRl
Q29sb3JQaWNrZXI7CisgICAgV0tQYWdlVW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNr
ZWQ7CisKKyAgICAvLyBWZXJzaW9uIDMuCisgICAgV0tQYWdlUGlubmVkU3RhdGVEaWRDaGFuZ2VD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWRTdGF0ZURpZENo
YW5nZTsKKworICAgIC8vIFZlcnNpb24gNC4KKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDI7IC8vIFVz
ZWQgdG8gYmUgZGlkQmVnaW5UcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzLgorICAgIHZv
aWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW51c2VkMzsgLy8gVXNlZCB0byBiZSBkaWRSZWNvZ25pemVMb25nTW91c2VQcmVz
cy4KKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVudXNlZDQ7IC8vIFVzZWQgdG8gYmUgZGlkQ2FuY2VsVHJhY2tp
bmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcy4KKyAgICBXS1BhZ2VJc1BsYXlpbmdBdWRpb0RpZENo
YW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUGxheWluZ0F1ZGlv
RGlkQ2hhbmdlOworCisgICAgLy8gVmVyc2lvbiA1LgorICAgIFdLUGFnZURlY2lkZVBvbGljeUZv
clVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgICAgZGVjaWRlUG9s
aWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQYWdlRGlkQ2xpY2tBdXRv
RmlsbEJ1dHRvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRDbGlj
a0F1dG9GaWxsQnV0dG9uOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjU7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFj
a19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybV9k
ZXByZWNhdGVkRm9yVXNlV2l0aFY1OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21w
dF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNl
ZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4KKworICAgIC8vIFZlcnNpb24g
Ni4KKyAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlw
dEFsZXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5KYXZh
U2NyaXB0QWxlcnQ7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybTsKKyAgICBX
S1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHQ7CisgICAgV0tDaGVja1VzZXJNZWRpYVBlcm1p
c3Npb25DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1VzZXJN
ZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW47CisKKyAgICAvLyBWZXJzaW9uIDcuCisgICAgV0tQYWdl
UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CisgICAgV0tGdWxsc2NyZWVuTWF5UmV0
dXJuVG9JbmxpbmVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsc2Ny
ZWVuTWF5UmV0dXJuVG9JbmxpbmU7CisKKyAgICAvLyBWZXJzaW9uIDguCisgICAgV0tSZXF1ZXN0
UG9pbnRlckxvY2tDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0UG9pbnRlckxvY2s7CisgICAgV0tEaWRMb3NlUG9pbnRlckxvY2tDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRMb3NlUG9pbnRlckxvY2s7
CisKKyAgICAvLyBWZXJzaW9uIDkuCisgICAgV0tIYW5kbGVBdXRvcGxheUV2ZW50Q2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVBdXRvcGxheUV2ZW50
OworCisgICAgLy8gVmVyc2lvbiAxMC4KKyAgICBXS0hhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJl
RGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIGhhc1ZpZGVvSW5QaWN0dXJl
SW5QaWN0dXJlRGlkQ2hhbmdlOworICAgIFdLRGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGlt
aXRXaGlsZUluRm9yZWdyb3VuZENhbGxiYWNrICAgICAgICAgZGlkRXhjZWVkQmFja2dyb3VuZFJl
c291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDsKKworICAgIC8vIFZlcnNpb24gMTEuCisgICAg
V0tQYWdlRGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlQ2FsbGJh
Y2sgICAgICAgICBkaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2U7
CisKKyAgICAvLyBWZXJzaW9uIDEyLgorICAgIFdLUGFnZVJlcXVlc3RTdG9yYWdlQWNjZXNzQ29u
ZmlybUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3NDb25maXJtOworCisgICAgLy8gVmVyc2lvbiAxMy4KKyAgICBXS1BhZ2VTaG91bGRBbGxvd0Rl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ2FsbGJhY2sgICAgICAgICAgIHNob3VsZEFs
bG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3M7CisKKyAgICAvLyBWZXJzaW9uIDE0
LgorICAgIFdLUGFnZVJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDsKKworICAgIC8vIFZl
cnNpb24gMTUuCisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0OworICAgIAorfSBXS1BhZ2VVSUNsaWVudFYxNTsKKwogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNjOGY5YTM1ZGI4NDExZTAzODVhN2FlMTU0OWEzOWFm
ODEzMmVkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwCkBAIC0wLDAgKzEsNDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIgorCisjaW5jbHVkZSAiU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNhbGxiYWNrR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OkFQSVR5cGUpOworfQorCit2b2lkIFdLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tDb21wbGV0ZShXS1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrUmVmIHNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLCBi
b29sIGdyYW50ZWQpCit7CisgICAgcmV0dXJuIHRvSW1wbChzcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjayktPmNvbXBsZXRlKGdyYW50ZWQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4YWVhZmM2OTg0YmE5NmY1NDg5MmU3
MzJhZmVhM2EwNjNjOWM3MmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgKQEAgLTAs
MCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViS2l0
L1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisK
K1dLX0VYUE9SVCBXS1R5cGVJRCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
R2V0VHlwZUlEKHZvaWQpOworCitXS19FWFBPUlQgdm9pZCBXS1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrQ29tcGxldGUoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFja1JlZiBzcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaywgYm9vbCBncmFudGVk
KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IGQx
ZWFlMjAxZTY1NDJmNGZhYjYwMTk4MGRjNjYxMjQ5MTMxOTc5M2YuLjVlYWI0NjU3OWY5OWZhNmY2
MzMxNmE0YzA1NDQyMmQ2M2E2ZmQ5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTUyLDYgKzE1Miw4
IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgd2lsbFNoYXJlQWN0aXZpdHlJdGVtczooTlNBcnJheSAqKWFjdGl2aXR5SXRlbXMg
V0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKV93ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JP
cmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilyZXF1ZXN0aW5nT3JpZ2luIHRvcE9yaWdpbjooV0tT
ZWN1cml0eU9yaWdpbiAqKXRvcE9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wg
YXV0aG9yaXplZCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAKIC0gKEJP
T0wpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rp
b25zRm9yRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKillbGVtZW50IFdLX0FQSV9B
VkFJTEFCTEUoaW9zKDkuMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzVjNTIyZmM0
MzQwMzU4MjEyNGRjYWMzMWFlOTI2ZWY1ODQ1YzkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgKQEAgLTAs
MCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZNZWRpYUZvcm1hdC5oPgorI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CisjaW1wb3J0IDx3dGYvRGVxdWUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgcmVx
dWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZShBVk1lZGlhVHlwZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQpPiYmKTsKK3ZvaWQgcmVxdWVzdEFWQ2FwdHVyZUFj
Y2Vzc0Zvck1lZGlhVHlwZXMoRGVxdWU8QVZNZWRpYVR5cGU+JiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sIGF1dGhvcml6ZWQpPiYmKTsKK2Jvb2wgY2hlY2tBVkNhcHR1cmVBY2Nlc3NGb3JN
ZWRpYVR5cGVzQW5kRmlsdGVyKERlcXVlPEFWTWVkaWFUeXBlPiYgdHlwZXMpOworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZmM0YWJiN2E3Mzg3
MzQyYjFkMzg4NjFhODM4Y2U2OWIxMTlkOTk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCkBAIC0wLDAg
KzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1lZGlh
UGVybWlzc2lvblV0aWxpdGllcy5oIgorCisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBv
cnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKwordm9pZCByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlKEFWTWVkaWFUeXBl
IHR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhdXRob3JpemVkKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBk
ZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAg
IGlmIChpc01haW5UaHJlYWQoKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0
aG9yaXplZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBhdXRob3JpemVkXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoYXV0aG9yaXplZCk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIFtQQUw6OmdldEFWQ2Fw
dHVyZURldmljZUNsYXNzKCkgcmVxdWVzdEFjY2Vzc0Zvck1lZGlhVHlwZTp0eXBlIGNvbXBsZXRp
b25IYW5kbGVyOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07Cit9CisKK3ZvaWQgcmVxdWVzdEFWQ2Fw
dHVyZUFjY2Vzc0Zvck1lZGlhVHlwZXMoRGVxdWU8QVZNZWRpYVR5cGU+JiB0eXBlcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmICh0eXBlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
dHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHR5cGUgPSB0eXBlcy50
YWtlRmlyc3QoKTsKKyAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlKHR5cGUs
IFt0eXBlcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
Qk9PTCBhdXRob3JpemVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFhdXRob3JpemVkKSB7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBl
cyh0eXBlcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCitib29s
IGNoZWNrQVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlc0FuZEZpbHRlcihEZXF1ZTxBVk1lZGlh
VHlwZT4mIHR5cGVzKQoreworICAgIERlcXVlPEFWTWVkaWFUeXBlPiBwZW5kaW5nVHlwZXM7Cisg
ICAgd2hpbGUgKCF0eXBlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byB0eXBlID0gdHlwZXMu
dGFrZUZpcnN0KCk7CisgICAgICAgIGF1dG8gYXV0aG9yaXphdGlvblN0YXR1cyA9IFtQQUw6Omdl
dEFWQ2FwdHVyZURldmljZUNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c0Zvck1lZGlhVHlwZTp0
eXBlXTsKKyAgICAgICAgaWYgKGF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9u
U3RhdHVzRGVuaWVkIHx8IGF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3Rh
dHVzUmVzdHJpY3RlZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGF1
dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZCkK
KyAgICAgICAgICAgIHBlbmRpbmdUeXBlcy5hcHBlbmQodHlwZSk7CisgICAgfQorCisgICAgdHlw
ZXMgPSBwZW5kaW5nVHlwZXM7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM4MjkyMDk4MmI1MDljNDg3MGQwZDQ2MTRhZWQ5NDM0YTQ1MzEzZWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTAsMCArMSwyNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXIuaCIKKworI2ltcG9ydCAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKKyNpbXBvcnQg
IkFQSVVJQ2xpZW50LmgiCisjaW1wb3J0ICJNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCIKKyNp
bXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94
U1BJLmg+CisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisjaW1wb3J0IDxTcGVlY2gvU3Bl
ZWNoLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUksoU3BlZWNoKQorU09GVF9MSU5LX0NMQVNTKFNw
ZWVjaCwgU0ZTcGVlY2hSZWNvZ25pemVyKQorI2VuZGlmCisKKyNpbXBvcnQgPHBhbC9jb2NvYS9B
VkZvdW5kYXRpb25Tb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
dEhhbmRsZXIpCit7CisgICAgbV9yZXF1ZXN0cy5hcHBlbmQoU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdDo6Y3JlYXRlKFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9u
dEhhbmRsZXIpKSk7CisgICAgaWYgKG1fcmVxdWVzdHMuc2l6ZSgpID09IDEpCisgICAgICAgIHN0
YXJ0TmV4dFJlcXVlc3QoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpzdGFydE5leHRSZXF1ZXN0KCkKK3sKKyAgICBpZiAobV9yZXF1ZXN0cy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNoZWNrU2FuZGJveFJlcXVpcmVtZW50KCk7Cit9
CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y29tcGxldGVDdXJy
ZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbiBk
ZWNpc2lvbikKK3sKKyAgICBBU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKyAgICBhdXRv
IGN1cnJlbnRSZXF1ZXN0ID0gbV9yZXF1ZXN0cy50YWtlRmlyc3QoKTsKKyAgICBjdXJyZW50UmVx
dWVzdC0+Y29tcGxldGUoZGVjaXNpb24pOworCisgICAgc3RhcnROZXh0UmVxdWVzdCgpOworfQor
CitzdGF0aWMgYm9vbCBwZXJmb3JtU2FuZGJveENoZWNrKCkKK3sKKyNpZiBQTEFURk9STShNQUMp
CisgICAgaWYgKGN1cnJlbnRQcm9jZXNzSXNTYW5kYm94ZWQoKSAmJiAhIXNhbmRib3hfY2hlY2so
Z2V0cGlkKCksICJkZXZpY2UtbWljcm9waG9uZSIsIFNBTkRCT1hfRklMVEVSX05PTkUpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lk
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU2FuZGJveFJlcXVpcmVt
ZW50KCkKK3sKKyAgICBpZiAoIW1faXNTYW5kYm94Q2hlY2tQYXNzZWQuaGFzVmFsdWUoKSkKKyAg
ICAgICAgbV9pc1NhbmRib3hDaGVja1Bhc3NlZCA9IHBlcmZvcm1TYW5kYm94Q2hlY2soKTsKKwor
ICAgIGlmICghbV9pc1NhbmRib3hDaGVja1Bhc3NlZCkgeworICAgICAgICBjb21wbGV0ZUN1cnJl
bnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpE
ZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNoZWNrTWljcm9waG9uZUFjY2Vz
cygpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNr
TWljcm9waG9uZUFjY2VzcygpCit7CisgICAgaWYgKG1fcGFnZS5wcmVmZXJlbmNlcygpLm1vY2tD
YXB0dXJlRGV2aWNlc0VuYWJsZWQoKSkgeworICAgICAgICBjaGVja0FuZFJlcXVlc3RVc2VyUGVy
bWlzc2lvbkZvck9yaWdpbigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFt
X2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQuaGFzVmFsdWUoKSkgeworI2lmIEhBVkUoU1BF
RUNIUkVDT0dOSVpFUikgJiYgVVNFKEFWRk9VTkRBVElPTikKKyAgICAgICAgYXV0byBtaWNyb3Bo
b25lQXV0aG9yaXphdGlvblN0YXR1cyA9IFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkg
YXV0aG9yaXphdGlvblN0YXR1c0Zvck1lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvXTsKKyAgICAg
ICAgaWYgKG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0
YXR1c0F1dGhvcml6ZWQpCisgICAgICAgICAgICBtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6
ZWQgPSB0cnVlOworICAgICAgICBpZiAobWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPT0g
QVZBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3Rh
dHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpCisgICAgICAgICAgICBtX2lz
TWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKG1pY3JvcGhv
bmVBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWlu
ZWQpIHsKKyAgICAgICAgICAgIGJvb2wgaGFzRGVzY3JpcHRpb25TdHJpbmcgPSBkeW5hbWljX29i
amNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5T
TWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb24iXSkubGVuZ3RoOworICAgICAgICAgICAgaWYgKCFo
YXNEZXNjcmlwdGlvblN0cmluZykKKyAgICAgICAgICAgICAgICBtX2lzTWljcm9waG9uZUFjY2Vz
c0F1dGhvcml6ZWQgPSBmYWxzZTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgbV9pc01pY3Jv
cGhvbmVBY2Nlc3NBdXRob3JpemVkID0gdHJ1ZTsKKyNlbmRpZgorICAgIH0KKworICAgIGlmICht
X2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQuaGFzVmFsdWUoKSAmJiAhbV9pc01pY3JvcGhv
bmVBY2Nlc3NBdXRob3JpemVkLnZhbHVlKCkpIHsKKyAgICAgICAgY29tcGxldGVDdXJyZW50UmVx
dWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6RGVueSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjaGVja1NwZWVjaFJlY29nbml0aW9uU2Vy
dmljZUFjY2VzcygpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI6OmNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCkKK3sKKyAgICBpZiAoIW1f
aXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkLmhhc1ZhbHVlKCkpIHsK
KyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAgICAg
IGF1dG8gc3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXMgPSBbZ2V0U0ZTcGVlY2hS
ZWNvZ25pemVyQ2xhc3MoKSBhdXRob3JpemF0aW9uU3RhdHVzXTsKKyAgICAgICAgaWYgKHNwZWVj
aFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhv
cml6YXRpb25TdGF0dXNBdXRob3JpemVkKQorICAgICAgICAgICAgbV9pc1NwZWVjaFJlY29nbml0
aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQgPSB0cnVlOworICAgICAgICBpZiAoc3BlZWNoUmVj
b2duaXplckF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXph
dGlvblN0YXR1c1Jlc3RyaWN0ZWQgfHwgc3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0
dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCkKKyAgICAg
ICAgICAgIG1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkID0gZmFs
c2U7CisgICAgICAgIGlmIChzcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1cyA9PSBT
RlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZCkgeworICAg
ICAgICAgICAgYm9vbCBoYXNEZXNjcmlwdGlvblN0cmluZyA9IGR5bmFtaWNfb2JqY19jYXN0PE5T
U3RyaW5nPihOU0J1bmRsZS5tYWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNTcGVlY2hSZWNv
Z25pdGlvblVzYWdlRGVzY3JpcHRpb24iXSkubGVuZ3RoOworICAgICAgICAgICAgaWYgKCFoYXNE
ZXNjcmlwdGlvblN0cmluZykKKyAgICAgICAgICAgICAgICBtX2lzU3BlZWNoUmVjb2duaXRpb25T
ZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCA9IGZhbHNlOworICAgICAgICB9CisjZWxzZQorICAgICAg
ICBtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCA9IHRydWU7Cisj
ZW5kaWYKKyAgICB9CisKKyAgICBpZiAobV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkLmhh
c1ZhbHVlKCkgJiYgIW1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZC52YWx1ZSgpKSB7Cisg
ICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Y2hlY2tBbmRSZXF1ZXN0VXNlclBlcm1pc3Npb25Gb3JPcmlnaW4oKTsKK30KKwordm9pZCBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja0FuZFJlcXVlc3RVc2VyUGVybWlz
c2lvbkZvck9yaWdpbigpCit7CisgICAgQVNTRVJUKCFtX3JlcXVlc3RzLmlzRW1wdHkoKSk7Cisg
ICAgYXV0byYgY3VycmVudFJlcXVlc3QgPSBtX3JlcXVlc3RzLmZpcnN0KCk7CisKKyAgICBhdXRv
IGNsaWVudE9yaWdpbiA9IGN1cnJlbnRSZXF1ZXN0LT5vcmlnaW4oKTsKKyAgICBpZiAobV9vcmln
aW5QZXJtaXNzaW9uTWFwLmNvbnRhaW5zKGNsaWVudE9yaWdpbi50b3BPcmlnaW4pKSB7CisgICAg
ICAgIGJvb2wgZ3JhbnRlZCA9IG1fb3JpZ2luUGVybWlzc2lvbk1hcC5nZXQoY2xpZW50T3JpZ2lu
LnRvcE9yaWdpbik7CisgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoZ3JhbnRlZCA/IFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpBbGxvdyA6IFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShib29sIGdyYW50ZWQpIHsKKyAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX29yaWdpblBlcm1pc3Np
b25NYXAuc2V0KG1fcmVxdWVzdHMuZmlyc3QoKS0+b3JpZ2luKCkudG9wT3JpZ2luLCBncmFudGVk
KTsKKyAgICAgICAgaWYgKCFncmFudGVkKSB7CisgICAgICAgICAgICBjb21wbGV0ZUN1cnJlbnRS
ZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHJlcXVlc3RNaWNy
b3Bob25lQWNjZXNzSWZOZWVkZWQoKTsKKyAgICB9OworCisgICAgYXV0byByZXF1ZXN0aW5nT3Jp
Z2luID0gY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOworICAgIGF1
dG8gdG9wT3JpZ2luID1jbGllbnRPcmlnaW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7Cisg
ICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdChtX3BhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXF1ZXN0
aW5nT3JpZ2luLmdldCgpKS5nZXQoKSwgQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRvcE9y
aWdpbi5nZXQoKSkuZ2V0KCksIFdURk1vdmUoZGVjaXNpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQg
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdE1pY3JvcGhvbmVBY2Nl
c3NJZk5lZWRlZCgpCit7CisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKSAmJiBVU0UoQVZGT1VO
REFUSU9OKQorICAgIGlmICghbV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkLmhhc1ZhbHVl
KCkpIHsKKyAgICAgICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZShBVk1lZGlh
VHlwZUF1ZGlvLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYm9vbCBhdXRo
b3JpemVkKSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgaWYgKCFhdXRob3JpemVkKSB7CisgICAgICAgICAgICAgICAg
bV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
Y29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
OjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQgPSB0cnVlOwor
ICAgICAgICAgICAgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0lmTmVlZGVk
KCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBB
U1NFUlQobV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkLmhhc1ZhbHVlKCkpOworICAgIEFT
U0VSVChtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQudmFsdWUoKSk7CisKKyAgICByZXF1
ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzSWZOZWVkZWQoKTsKK30KKwordm9pZCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRp
b25TZXJ2aWNlQWNjZXNzSWZOZWVkZWQoKQoreworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikK
KyAgICBpZiAoIW1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkLmhh
c1ZhbHVlKCkpIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgYXV0
byBtYWluVGhyZWFkSGFuZGxlciA9IChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KV0oU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMpIG11dGFibGUg
eworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlv
blN0YXR1c0F1dGhvcml6ZWQpIHsKKyAgICAgICAgICAgICAgICBtX2lzU3BlZWNoUmVjb2duaXRp
b25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGNvbXBs
ZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVj
aXNpb246OkRlbnkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgbV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQg
PSB0cnVlOworICAgICAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6QWxsb3cpOworICAgICAgICB9KTsKKyAg
ICAgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW21haW5UaHJlYWRIYW5k
bGVyID0gV1RGTW92ZShtYWluVGhyZWFkSGFuZGxlcildKFNGU3BlZWNoUmVjb2duaXplckF1dGhv
cml6YXRpb25TdGF0dXMgc3RhdHVzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghaXNNYWlu
VGhyZWFkKCkpIHsKKyAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFttYWluVGhyZWFk
SGFuZGxlciA9IFdURk1vdmUobWFpblRocmVhZEhhbmRsZXIpLCBzdGF0dXNdKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICAgICAgICAgIG1haW5UaHJlYWRIYW5kbGVyKHN0YXR1cyk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbWFpblRocmVhZEhhbmRsZXIoc3RhdHVzKTsKKyAgICAgICAgfSk7CisgICAgICAg
IFtnZXRTRlNwZWVjaFJlY29nbml6ZXJDbGFzcygpIHJlcXVlc3RBdXRob3JpemF0aW9uOmRlY2lz
aW9uSGFuZGxlci5nZXQoKV07CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAg
IEFTU0VSVChtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZC5oYXNW
YWx1ZSgpKTsKKyAgICBBU1NFUlQobV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1
dGhvcml6ZWQudmFsdWUoKSk7CisKKyAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpBbGxvdyk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLmgKaW5kZXggOGEwOTQ3NDVjMWYyNGJlMTA1ZGJiMDJhYjkxZTMwN2IzMWQ0ODZiMS4uZWFk
NGQ1N2VlMGEzM2E2YjNlZWJiZGVjNDNmOGI3Mzk1NWQ5NzYwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtMTYxLDYgKzE2MSw3IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICAgICAgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlv
blBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYkZy
YW1lUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0
aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYpIGZpbmFsOwogI2VuZGlmCisgICAgICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdl
UHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogCiAgICAgICAgIFVJRGVsZWdhdGUm
IG1fdWlEZWxlZ2F0ZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW0KaW5kZXggZDAzMzhmOGQ2ZTNiOWExM2RmMmFmMTUzYWNiNWRlYjM4ZTFmY2Q5
Yi4uMTkzNDU2YjFjMDc4Njc5Njk2MTk0YjM1MzFiYzY1ZGM0MTU1MTllOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMzMyLDQgKzEzMzIsMjYg
QEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6aW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hh
bmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXoKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLVUlEZWxl
Z2F0ZVByaXZhdGU+PihkZWxlZ2F0ZSkgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBp
bWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkOm5ld1NpemVdOwogfQogCit2b2lkIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6OlNlY3VyaXR5T3JpZ2lu
JiByZXF1ZXN0aW5nT3JpZ2luLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IChpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pbV91aURlbGVnYXRlLm1fZGVs
ZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIVtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46dG9wT3JpZ2luOmRlY2lzaW9uSGFuZGxlcjopXSkg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpj
cmVhdGUoZGVsZWdhdGUsIEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uRm9yT3JpZ2luOnRvcE9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAg
W2RlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcmVxdWVzdFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkZvck9yaWdpbjp3cmFwcGVyKHJlcXVlc3RpbmdPcmlnaW4pIHRv
cE9yaWdpbjp3cmFwcGVyKHRvcE9yaWdpbikgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihb
Y29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGNvbXBsZXRpb25IYW5kbGVyLCB7IH0p
LCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wgZ3JhbnRlZCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGdyYW50ZWQpOworICAgIH0pLmdldCgp
XTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5Lm1tCmluZGV4IDk5NzU3NWRlMDIxNmE5YzBjZDc2YWZjYjQxYzc2NDFk
YjEzMTVhZmIuLjgxYjUxMGIyMjE1N2UzY2I5NzE2M2Y0MDhhM2MwNDE3MjM4ZDQ2YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5LmgiCiAKKyNpbXBvcnQgIk1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5o
IgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVENDU1BJLmgiCiAjaW1w
b3J0ICJXZWJQYWdlUHJveHkuaCIKQEAgLTEwOCwyMCArMTA5LDYgQEAgYm9vbCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cGVybWl0dGVkVG9DYXB0dXJlVmlkZW8oKQog
fQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLXN0YXRpYyB2b2lkIHJlcXVlc3RBVkNhcHR1
cmVBY2Nlc3NGb3JNZWRpYVR5cGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChCT09MIGF1dGhvcml6
ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBVk1lZGlhVHlwZSB0eXBlKQotewotICAgIGF1dG8g
ZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShCT09MIGF1dGhvcml6ZWQpIG11dGFibGUgewotICAgICAg
ICBpZiAoIWlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBhdXRob3JpemVk
XSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6
ZWQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7Ci0gICAgfSk7Ci0gICAgW1BBTDo6
Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSByZXF1ZXN0QWNjZXNzRm9yTWVkaWFUeXBlOnR5cGUg
Y29tcGxldGlvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKLX0KLQogdm9pZCBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cmVxdWVzdFN5c3RlbVZhbGlkYXRp
b24oY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFBy
b3h5JiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQog
ewogICAgIGlmIChwYWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgp
KSB7CkBAIC0xMzAsMzYgKzExNywxNSBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lzdGVtVmFsaWRhdGlvbihjb25zdCBXZWJQYQogICAgIH0K
IAogICAgIC8vIEZJWE1FOiBBZGQgVENDIGVudGl0bGVtZW50IGNoZWNrIGZvciBzY3JlZW5zaGFy
aW5nLgotICAgIGJvb2wgcmVxdWlyZXNBdWRpb0NhcHR1cmUgPSByZXF1ZXN0LnJlcXVpcmVzQXVk
aW9DYXB0dXJlKCk7Ci0gICAgYm9vbCByZXF1aXJlc1ZpZGVvQ2FwdHVyZSA9IHJlcXVlc3QucmVx
dWlyZXNWaWRlb0NhcHR1cmUoKTsKLQotICAgIGF1dG8gbWljcm9waG9uZUF1dGhvcml6YXRpb25T
dGF0dXMgPSAhcmVxdWlyZXNBdWRpb0NhcHR1cmUgPyBBVkF1dGhvcml6YXRpb25TdGF0dXNBdXRo
b3JpemVkIDogW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0aW9uU3Rh
dHVzRm9yTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW9dOwotICAgIGlmIChtaWNyb3Bob25lQXV0
aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQgfHwgbWljcm9w
aG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3Rl
ZCkgewotICAgICAgICBjYWxsYmFjayhmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBhdXRvIGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPSAhcmVxdWlyZXNWaWRlb0NhcHR1
cmUgPyBBVkF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkIDogW1BBTDo6Z2V0QVZDYXB0dXJl
RGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOkFWTWVkaWFUeXBl
VmlkZW9dOwotICAgIGlmIChjYW1lcmFBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXph
dGlvblN0YXR1c0RlbmllZCB8fCBjYW1lcmFBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9y
aXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpIHsKKyAgICBEZXF1ZTxBVk1lZGlhVHlwZT4gdHlwZXM7
CisgICAgaWYgKHJlcXVlc3QucmVxdWlyZXNBdWRpb0NhcHR1cmUoKSkKKyAgICAgICAgdHlwZXMu
YXBwZW5kKEFWTWVkaWFUeXBlQXVkaW8pOworICAgIGlmIChyZXF1ZXN0LnJlcXVpcmVzVmlkZW9D
YXB0dXJlKCkpCisgICAgICAgIHR5cGVzLmFwcGVuZChBVk1lZGlhVHlwZVZpZGVvKTsKKyAgICBp
ZiAoIWNoZWNrQVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlc0FuZEZpbHRlcih0eXBlcykpCiAg
ICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIGJv
b2wgcmVxdWlyZXNWaWRlb1RDQ1Byb21wdCA9IHJlcXVpcmVzVmlkZW9DYXB0dXJlICYmIGNhbWVy
YUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5l
ZDsKLSAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gcmVxdWlyZXNWaWRlb1RDQ1Byb21wdCA/
IFtyZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYm9vbCBpc09LKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFpc09LKSB7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZShXVEZNb3ZlKGNhbGxiYWNrKSwg
QVZNZWRpYVR5cGVWaWRlbyk7Ci0gICAgfSA6IFdURk1vdmUoY2FsbGJhY2spOwotCi0gICAgYm9v
bCByZXF1aXJlc0F1ZGlvVENDUHJvbXB0ID0gcmVxdWlyZXNBdWRpb0NhcHR1cmUgJiYgbWljcm9w
aG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJt
aW5lZDsKLSAgICBpZiAoIXJlcXVpcmVzQXVkaW9UQ0NQcm9tcHQpIHsKLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIodHJ1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgcmVxdWVzdEFW
Q2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgQVZN
ZWRpYVR5cGVBdWRpbyk7CisgICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZXMo
dHlwZXMsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tCmluZGV4IDg2NjIzOGJhZmU4ZjA1YzE3YTIzZDZmOWNjOTlhMjEwMTRk
ZDkzMTAuLmNkMzAxNDFmY2VhNjIyMmRlNWJhN2NmMWM2N2E5YTJmNjRkMDIwZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29h
Lm1tCkBAIC00MSw2ICs0MSwxMCBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+
CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CiAKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCIKKyNlbmRpZgor
CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9S
ZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaD4KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45MmFmZDdmNzg5ZmI3YTMxMWQ4YTBiOTllMDYyYjlkYzUwNzFkZjNl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKFdlYlBh
Z2VQcm94eSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCitTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cigpCit7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9yZXF1ZXN0cykKKyAgICAgICAgcmVx
dWVzdC0+Y29tcGxldGUoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNp
b246OkRlbnkpOworfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQorCit2b2lkIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnROZXh0UmVxdWVzdCgpCit7Cit9CisKK3ZvaWQgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbikKK3sKK30KKwordm9pZCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1NhbmRib3hSZXF1aXJlbWVu
dCgpCit7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hl
Y2tNaWNyb3Bob25lQWNjZXNzKCkKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyOjpjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpCit7Cit9
CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdE1pY3Jv
cGhvbmVBY2Nlc3NJZk5lZWRlZCgpCit7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcjo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0lmTmVl
ZGVkKCkKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpj
aGVja0FuZFJlcXVlc3RVc2VyUGVybWlzc2lvbkZvck9yaWdpbigpCit7Cit9CisKKyNlbmRpZgor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU3NDQ0YTAyZDBjZjE5OWVhMGVlOWRhODFkZDA4ZmY4NzVlY2M2YTAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoV2Vi
UGFnZVByb3h5Jik7CisgICAgflNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoKTsK
KyAgICB2b2lkIHJlcXVlc3QoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworCitwcml2YXRlOgorICAgIHZvaWQgc3RhcnROZXh0UmVxdWVz
dCgpOworICAgIHZvaWQgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbik7CisgICAgdm9pZCBwcmVjaGVjaygpOworICAgIHZv
aWQgY2hlY2tTYW5kYm94UmVxdWlyZW1lbnQoKTsKKyAgICB2b2lkIGNoZWNrTWljcm9waG9uZUFj
Y2VzcygpOworICAgIHZvaWQgY2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsK
KyAgICB2b2lkIHJlcXVlc3RNaWNyb3Bob25lQWNjZXNzSWZOZWVkZWQoKTsKKyAgICB2b2lkIHJl
cXVlc3RTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NJZk5lZWRlZCgpOworICAgIHZvaWQg
Y2hlY2tBbmRSZXF1ZXN0VXNlclBlcm1pc3Npb25Gb3JPcmlnaW4oKTsKKworICAgIFdlYlBhZ2VQ
cm94eSYgbV9wYWdlOworICAgIERlcXVlPFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0Pj4gbV9yZXF1ZXN0czsKKyAgICBPcHRpb25hbDxib29sPiBtX2lzU2FuZGJveENoZWNr
UGFzc2VkOworICAgIE9wdGlvbmFsPGJvb2w+IG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXpl
ZDsKKyAgICBPcHRpb25hbDxib29sPiBtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNz
QXV0aG9yaXplZDsKKyAgICAvLyBUb3Agb3JpZ2luIHRvIHBlcm1pc3Npb24uCisgICAgSGFzaE1h
cDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEsIGJvb2w+IG1fb3JpZ2luUGVybWlzc2lvbk1h
cDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmI2MjE5YmM1ZTk4MGQ0ODJmZmM1NTQ1YmQ2NGQ0YWM4ZTk2MWZiNzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRP
cmlnaW4uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QgOiBw
dWJsaWMgUmVmQ291bnRlZDxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0PiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
PiBjcmVhdGUoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXVEZNb3Zl
KG9yaWdpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgfQorCisgICAgZW51
bSBjbGFzcyBEZWNpc2lvbiB7IERlbnksIEFsbG93IH07CisgICAgdm9pZCBjb21wbGV0ZShEZWNp
c2lvbiBkZWNpc2lvbikKKyAgICB7CisgICAgICAgIGJvb2wgaXNBbGxvd2VkID0gZGVjaXNpb24g
PT0gRGVjaXNpb246OkFsbG93OworICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3Rk
OjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihpc0FsbG93ZWQpOworICAgIH0KKworICAgIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KKworcHJpdmF0ZToKKyAg
ICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6OkNsaWVudE9yaWdp
biYmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICAgICAgOiBtX29yaWdpbihvcmlnaW4pCisgICAgICAgICwgbV9jb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICB7IH0KKworICAgIFdlYkNv
cmU6OkNsaWVudE9yaWdpbiBtX29yaWdpbjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworfTsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2sgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaz4geworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+IGNyZWF0ZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICB9CisKKyAgICB2b2lk
IGNvbXBsZXRlKGJvb2wgZ3JhbnRlZCkgeyBtX2NvbXBsZXRpb25IYW5kbGVyKGdyYW50ZWQpOyB9
CisKK3ByaXZhdGU6CisgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2soQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAg
OiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgIHsg
fQorCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9jb21wbGV0aW9uSGFuZGxl
cjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCmluZGV4IDljZTk3NGNmOWRhYTU2
NTgyZWViY2ZhMDMwNjcwYjdhMzc1YmU3MWUuLmU2NjljOTEzZjRkNDgyMDFkNzdkNzgxNWU0M2Ni
YmU5YTgxZDhkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5jcHAKQEAgLTMyLDE1ICszMiwxNiBAQAogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVy
KFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCitTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2hlY2tlciYmIHBlcm1pc3Npb25DaGVja2VyKQogICAgIDogbV9jb25uZWN0
aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikK
KyAgICAsIG1fcGVybWlzc2lvbkNoZWNrZXIoV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlcikpCiB7
CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdEluZm8mJiByZXF1ZXN0SW5mbykKK3ZvaWQgU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250
aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbikKIHsKLSAgICBhdXRvIHJlcXVlc3QgPSBXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OmNyZWF0ZShXVEZNb3ZlKHJlcXVlc3RJbmZv
KSk7CisgICAgYXV0byByZXF1ZXN0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3Q+KFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8geyBjbGllbnRJZGVudGlm
aWVyLCBXVEZNb3ZlKGxhbmcpLCBjb250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJu
YXRpdmVzLCBXVEZNb3ZlKG9yaWdpbikgfSk7CiAgICAgbV9wZW5kaW5nUmVxdWVzdHMuYXBwZW5k
KFdURk1vdmUocmVxdWVzdCkpOwogCiAgICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVl
ZGVkKCk7CkBAIC03Miw4ICs3Myw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFi
b3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkCiB7CiAgICAg
aWYgKG1fY3VycmVudFJlcXVlc3QgJiYgbV9jdXJyZW50UmVxdWVzdC0+Y2xpZW50SWRlbnRpZmll
cigpID09IGNsaWVudElkZW50aWZpZXIpIHsKICAgICAgICAgbV9jdXJyZW50UmVxdWVzdCA9IG51
bGxwdHI7Ci0gICAgICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25V
cGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OkVuZCk7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbjo6RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50aWZpZXIp
OworICAgICAgICBzZW5kVXBkYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKTsKIAogICAgICAgICBwcm9jZXNzTmV4dFBlbmRpbmdS
ZXF1ZXN0SWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODQsMTMgKzg0LDEyIEBAIHZv
aWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkCiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJl
bW92ZVBlbmRpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiB0YWtlblJlcXVlc3Q7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gdGFrZW5SZXF1ZXN0OwogICAg
IGF1dG8gcGVuZGluZ1JlcXVlc3RzID0gc3RkOjpleGNoYW5nZShtX3BlbmRpbmdSZXF1ZXN0cywg
eyB9KTsKICAgICB3aGlsZSAoIXBlbmRpbmdSZXF1ZXN0cy5pc0VtcHR5KCkpIHsKICAgICAgICAg
YXV0byByZXF1ZXN0ID0gcGVuZGluZ1JlcXVlc3RzLnRha2VGaXJzdCgpOwogICAgICAgICBpZiAo
cmVxdWVzdC0+Y2xpZW50SWRlbnRpZmllcigpID09IGNsaWVudElkZW50aWZpZXIpIHsKLSAgICAg
ICAgICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNy
ZWF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5
cGU6OkVuZCk7Ci0gICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb246OkRpZFJlY2VpdmVVcGRhdGUodXBkYXRlKSwgbV9pZGVudGlmaWVyKTsKKyAg
ICAgICAgICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICAgICAgbV9wZW5kaW5nUmVxdWVzdHMuYXBwZW5kKFdURk1vdmUocmVxdWVzdCkpOwpA
QCAtMTA1LDEyICsxMDQsNTEgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aW52YWxp
ZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGkKICAgICB9CiB9CiAK
LXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0UG9jZXNzaW5nUmVxdWVzdChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6c3RhcnRQb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdCYgcmVxdWVzdCkKIHsKKyAgICBtX3Blcm1pc3Npb25DaGVja2VyKHJlcXVlc3QuY2xpZW50
T3JpZ2luKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWFrUmVxdWVz
dCA9IG1ha2VXZWFrUHRyKHJlcXVlc3QpXShib29sIGdyYW50ZWQpIHsKKyAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIXdlYWtSZXF1ZXN0
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEFTU0VSVChtX2N1cnJlbnRSZXF1ZXN0
LmdldCgpID09IHdlYWtSZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgaWYgKCFncmFudGVkKSB7Cisg
ICAgICAgICAgICBhdXRvIGVycm9yID0gU3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJl
Y29nbml0aW9uRXJyb3JUeXBlOjpOb3RBbGxvd2VkLCAicGVybWlzc2lvbiBjaGVjayBmYWlscyJf
cyB9OworICAgICAgICAgICAgc2VuZFVwZGF0ZSh3ZWFrUmVxdWVzdC0+Y2xpZW50SWRlbnRpZmll
cigpLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yLCBlcnJvcik7
CisgICAgICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHBy
b2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJZk5lZWRlZCgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgqd2Vha1JlcXVl
c3QpOworICAgIH0pOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpjb250aW51
ZVByb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpCit7
CisgICAgLy8gVE9ETzogc3RhcnQgY2FwdHVyaW5nIGF1ZGlvIGFuZCByZWNvZ25pemluZy4KIH0K
IAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RvcFByb2Nlc3NpbmdSZXF1ZXN0KFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpCit2b2lkIFNwZWVjaFJlY29nbml0aW9u
U2VydmVyOjpzZW5kVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIHR5cGUs
IE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+IGVycm9yLCBPcHRpb25hbDxWZWN0b3I8
U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gcmVzdWx0KQogeworICAgIGF1dG8gdXBkYXRl
ID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlm
aWVyLCB0eXBlKTsKKyAgICBpZiAodHlwZSA9PSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6
OkVycm9yKQorICAgICAgICB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRlbnRpZmllciwgKmVycm9yKTsKKyAgICBpZiAodHlwZSA9
PSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlJlc3VsdCkKKyAgICAgICAgdXBkYXRlID0g
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZVJlc3VsdChjbGllbnRJZGVu
dGlmaWVyLCAqcmVzdWx0KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb246OkRpZFJlY2VpdmVVcGRhdGUodXBkYXRlKSwgbV9pZGVudGlmaWVyKTsKK30K
Kwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RvcFByb2Nlc3NpbmdSZXF1ZXN0KFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICAvLyBUT0RP
OiBzdG9wIGNhcHR1cmluZyBhdWRpbyBhbmQgZmluYWxpemluZyByZWNvZ25pdGlvbiByZXN1bHQg
d2l0aCBjYXB0dXJlZCBhdWRpby4KKyAgICBzZW5kVXBkYXRlKHJlcXVlc3QuY2xpZW50SWRlbnRp
ZmllcigpLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6Ok5vTWF0Y2gpOwor
ICAgIHNlbmRVcGRhdGUocmVxdWVzdC5jbGllbnRJZGVudGlmaWVyKCksIFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKTsKKyAgICBBU1NFUlQobV9jdXJyZW50UmVxdWVz
dC5nZXQoKSA9PSAmcmVxdWVzdCk7CisgICAgbV9jdXJyZW50UmVxdWVzdCA9IG51bGxwdHI7Cisg
ICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7CiB9CiAKIElQQzo6Q29ubmVj
dGlvbiogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNl
cnZlci5oCmluZGV4IDdhYTI0MTYzOGI5YzM1MTQ5NjY5ODQ0MzJkYmM1MzBkZjg0ODRhMzcuLjMz
ODRlMGIwZDZhZWEzMmJlNDhkN2VjNmViNzFkNGVjMDQzMDExNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaApAQCAtMjgsMjEgKzI4
LDI5IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNl
bmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NwZWVjaFJlY29nbml0aW9uRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NwZWVj
aFJlY29nbml0aW9uUmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2duaXRp
b25SZXN1bHREYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2VudW0gY2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOworc3RydWN0IENs
aWVudE9yaWdpbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlByb2Nlc3NQ
cm94eTsKIAogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyID0gV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI7Cit1c2luZyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVj
a2VyID0gRnVuY3Rpb248dm9pZChXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik+OwogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlciA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRp
Zmllcik7CisgICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4m
JiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DaGVja2VyJiYpOwogCi0gICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvJiYpOworICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBj
b250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMs
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmKTsKICAgICB2b2lkIHN0b3AoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CiAgICAgdm9pZCBhYm9ydChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKICAg
ICB2b2lkIGludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcik7CkBAIC01MSw5ICs1OSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJv
Y2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7CiAgICAgdm9pZCByZW1vdmVQZW5kaW5n
UmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyKTsKIAotICAgIC8vIFRPRE86IGltcGxlbWVudCB0aGVzZS4KICAgICB2b2lkIHN0YXJ0UG9j
ZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKKyAgICB2
b2lkIGNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0Jik7CiAgICAgdm9pZCBzdG9wUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0Jik7CisgICAgdm9pZCBzZW5kVXBkYXRlKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25F
cnJvcj4gPSBXVEY6Om51bGxvcHQsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdERhdGE+PiA9IFdURjo6bnVsbG9wdCk7CiAKICAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwpAQCAtNjQsOCArNzMsOSBAQCBwcml2YXRlOgogCiAg
ICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFNwZWVjaFJlY29nbml0
aW9uU2VydmVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAgRGVxdWU8UmVmPFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4+IG1fcGVuZGluZ1JlcXVlc3RzOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IG1fY3VycmVudFJlcXVlc3Q7Cisg
ICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dD4+IG1fcGVuZGluZ1JlcXVlc3RzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3Q+IG1fY3VycmVudFJlcXVlc3Q7CisgICAgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2hlY2tlciBtX3Blcm1pc3Npb25DaGVja2VyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblNlcnZlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluCmluZGV4IGUzMWJlZmIwOTVhZDg4
ZGFkYzMwZjA5OTVjNTdlNDE1MzczZjEyZjQuLmEyOGI5MjFjYjk2NGFmYWYyZmYyMmM5MTZiYmU0
NmU4Mjk5MTMyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAg
Ki8KICAKICBtZXNzYWdlcyAtPiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlciBOb3RSZWZDb3VudGVk
IHsKLSAgICBTdGFydChzdHJ1Y3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5m
byBpbmZvKQorICAgIFN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIGxhbmcsIGJvb2wgY29udGludW91cywg
Ym9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBzdHJ1Y3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbikKICAgICBTdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBBYm9ydChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAgICAgSW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCBjNjYwZTU2NmIwOGRkMzY3OTEzZDIyNDUwNmJkZjFlZGYwMGQ1
ZDg3Li5hNzQ0MGQ1MzRmNzJjM2FjMWI1ZjBmZTllNjg1MTY3ZTQxYmVjNDY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg2LDYgKzg2LDcgQEAKICNpbmNs
dWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIlNhZmVCcm93c2luZ1dhcm5p
bmcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAi
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kVHlwZS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVk
ZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgpAQCAtMTAxNzMsNiArMTAxNzQsMTQgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoKQogICAgIH0p
OwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX3NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIpCisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcj4oKnRoaXMpOworCisgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyLT5yZXF1ZXN0KFdURk1vdmUoY2xpZW50T3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
N2NlZmJmYzY5NDVlZGZlNDNhZTU2YzJkNTY0YzBlODFlOTViYjRhNi4uY2UxMjAxMjgwYTJjNTZj
ODU0NWUxZjJkMzZiODk5ODZhNDJhMzY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTMwNSw2ICszMDUsNyBAQCBjbGFzcyBSZW1vdGVMYXllclRyZWVTY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGE7CiBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNs
YXNzIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk7CiBjbGFzcyBTZWNLZXlQcm94eVN0
b3JlOworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjsKIGNsYXNzIFVz
ZXJEYXRhOwogY2xhc3MgVmlld1NuYXBzaG90OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKQEAg
LTE4MTksNiArMTgyMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1lZGlhQ2FwdHVyZVJlcG9y
dGluZ0RlbGF5KFNlY29uZHMgY2FwdHVyZVJlcG9ydGluZ0RlbGF5KSB7IG1fbWVkaWFDYXB0dXJl
UmVwb3J0aW5nRGVsYXkgPSBjYXB0dXJlUmVwb3J0aW5nRGVsYXk7IH0KICAgICBzaXplX3Qgc3Vz
cGVuZE1lZGlhUGxheWJhY2tDb3VudGVyKCkgeyByZXR1cm4gbV9zdXNwZW5kTWVkaWFQbGF5YmFj
a0NvdW50ZXI7IH0KIAorICAgIHZvaWQgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNz
UHJveHkmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9y
bUluaXRpYWxpemUoKTsKQEAgLTI4ODgsNiArMjg5MSw4IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90
IG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyIHsgMCB9OwogCiAgICAgT3B0aW9uYWw8V2Vi
Q29yZTo6QWRDbGlja0F0dHJpYnV0aW9uPiBtX25ld1BhZ2VOYXZpZ2F0aW9uQWRDbGlja0F0dHJp
YnV0aW9uOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI+IG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggZjZiODY3YmQ1NjRkZmQxNzJlYmEzZGI4MzMyNWNjMzczY2QyMDA2OS4u
NTgwYmQ2YTEwODAzMDBmM2JiNzU2OWUxZGRlMGUyMDAwYzAxZWYxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNzEyLDcgKzE3MTIsMTkgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKFNwZWVj
aFJlY29nbml0aW9uU2VydmVySWRlbnQKIHsKICAgICBhdXRvIHNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyID0gbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZlck1hcC5hZGQoaWRlbnRpZmllciwgbnVsbHB0
cik7CiAgICAgQVNTRVJUKHNwZWVjaFJlY29nbml0aW9uU2VydmVyLmlzTmV3RW50cnkpOwotICAg
IHNwZWVjaFJlY29nbml0aW9uU2VydmVyLml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8U3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24oKSksIGlkZW50aWZpZXIp
OworICAgIHNwZWVjaFJlY29nbml0aW9uU2VydmVyLml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlx
dWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24oKSksIGlkZW50
aWZpZXIsIFtpZGVudGlmaWVyLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShDbGllbnRP
cmlnaW4mJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBmb3IgKGF1dG8qIHBhZ2UgOiB3ZWFrVGhpcy0+cGFnZXMoKSkgeworICAgICAg
ICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+d2ViUGFnZUlEKCkgPT0gaWRlbnRpZmllcikgeworICAg
ICAgICAgICAgICAgIHBhZ2UtPnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24oV1RG
TW92ZShvcmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOworICAgIH0pOwogICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRp
ZmllciwgKnNwZWVjaFJlY29nbml0aW9uU2VydmVyLml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhh
Y2E2MDUyNWZiM2I5MzM5MGJlNzIyNDdmOTJlZDZiMjI5Y2VmN2QuLmYxMmRhZGVjMjdiOWZlNGQ5
ODc1MDVhZGI2MjZmNzIyNDZmYmE5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM3Myw2ICsxMzczLDcgQEAKIAkJOTMzRTgzNTUy
M0EwN0MwNjAwREVGMjg5IC8qIFdlYklEQlNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzRTgzNTMyM0EwN0JGODAwREVGMjg5IC8qIFdlYklE
QlNlcnZlci5oICovOyB9OwogCQk5MzNFODM1QTIzQTFBRTI4MDBERUYyODkgLyogV2ViSURCU2Vy
dmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzM0U4MzU5MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlcy5oICov
OyB9OwogCQk5MzNFODM1QjIzQTFCNzUwMDBERUYyODkgLyogV2ViSURCU2VydmVyTWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzM0U4MzU4MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OworCQk5MzQyNTg5MDI1NTVEREM2MDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9u
VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzQyNTg4RTI1NTVEQzQ3MDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgg
Ki87IH07CiAJCTkzNEI3MjQ0MTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlw
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEI3
MjQzMTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzU2RjJEQzIxNTJCNkI1
MDBFNkQ1REYgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTMwMjFGNDc5M0IyMDBEQ0RDMEEgLyogV2Vi
U1dDbGllbnRDb25uZWN0aW9uLmggKi87IH07CiAJCTkzNTZGMkREMjE1MkI2RjYwMEU2RDVERiAv
KiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzQkEwNEUwMjE1MUFERjQwMDdGNDU1RiAvKiBXZWJTV1NlcnZlckNv
bm5lY3Rpb24uaCAqLzsgfTsKQEAgLTE0MDcsNiArMTQwOCw5IEBACiAJCTkzRDZCNzg3MjU0Q0NE
OEMwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3ODYyNTRD
Q0Q4QjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmgg
Ki87IH07CiAJCTkzRDZCNzg4MjU0Q0NEOTQwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzdFMjU0Q0NBQkIwMDU4REQzQSAvKiBXZWJTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKIAkJOTNENkI3OEEy
NTRDRDQzRTAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0Q2Qjc3RDI1NENDQUJCMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTNENkI3QjQyNTUyNjhENTAwNThERDNB
IC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAv
KiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi87IH07CisJCTkzRDZCN0I1
MjU1MjY4RDcwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdCMjI1
NTI2OEEyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICov
OyB9OworCQk5M0Q2QjdCOTI1NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3Vs
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNkE0
RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y1NDlCNDFFMzE3NEI3MDAwRTcy
MzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBz
aG90Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywg
KTsgfTsgfTsKIAkJOTUwRjI4ODAyNTI0MTRFQTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNl
cnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUw
RjI4N0UyNTI0MTRFOTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oICovOyB9OwpA
QCAtNDQ3Miw2ICs0NDc2LDggQEAKIAkJOTMzRTgzNTcyM0ExQTg3MjAwREVGMjg5IC8qIFdlYklE
QlNlcnZlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJREJTZXJ2ZXIu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzM0U4MzU4MjNBMUFE
RjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSURCU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNw
cDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSURCU2VydmVyTWVzc2FnZVJlY2Vp
dmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTMzRTgzNTky
M0ExQURGNTAwREVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFdlYklEQlNlcnZlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVk
U291cmNlcy9XZWJLaXQyL1dlYklEQlNlcnZlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CisJCTkzNDI1ODhFMjU1NURDNDcwMDU5RUVERCAvKiBNZWRpYVBl
cm1pc3Npb25VdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQZXJtaXNzaW9uVXRpbGl0
aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNDI1ODhGMjU1NURDQTUwMDU5
RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzNEI3MjQzMTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tBY3Rpb25NZW51SXRlbVR5cGVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUVFQjk1MTI3NzYxNkQwMDMzMjJCOCAv
KiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzNUVFQjk2MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3
YXJkTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZUJhY2tG
b3J3YXJkTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDUzMiw2ICs0NTM4
LDEyIEBACiAJCTkzRDZCNzgwMjU0Q0NBQkMwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNENkI3ODEyNTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWVj
aFJlY29nbml0aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNENkI3ODYyNTRDQ0Q4QjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNENkI3QjAyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNENkI3QjMyNTUyNjhCRjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdL
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdCODI1NTM0QTEyMDA1OEREM0EgLyog
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNkE0RUQxQkM1REQzOTAw
RjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gX1dLSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjUxRTMxNzREQTAwMEU3MjM5IC8q
IFdLU25hcHNob3RDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02NDcyLDYgKzY0ODQsOCBAQAogCQkJCTdBODIxRjREMUUyRjY3OUUwMDYw
NDU3NyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0gKi8sCiAJCQkJQTFE
RjYzMTExOEUwQjdDODAwM0EzRTJBIC8qIExlZ2FjeURvd25sb2FkQ2xpZW50LmggKi8sCiAJCQkJ
QTFERjYzMTAxOEUwQjdDODAwM0EzRTJBIC8qIExlZ2FjeURvd25sb2FkQ2xpZW50Lm1tICovLAor
CQkJCTkzNDI1ODhFMjU1NURDNDcwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMu
aCAqLywKKwkJCQk5MzQyNTg4RjI1NTVEQ0E1MDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRp
bGl0aWVzLm1tICovLAogCQkJCTQxMTI4NkVGMjFDOEE5MEMwMDNBODU1MCAvKiBNZWRpYVV0aWxp
dGllcy5oICovLAogCQkJCTQxMTI4NkYwMjFDOEE5MEQwMDNBODU1MCAvKiBNZWRpYVV0aWxpdGll
cy5tbSAqLywKIAkJCQkxQUJDM0RGNDE4OTlFNDM3MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRl
LmggKi8sCkBAIC02NDg4LDYgKzY1MDIsNyBAQAogCQkJCTVDQTk4NTRCMjEwQkVCNzMwMDU3RUI2
QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gKi8sCiAJCQkJMUEwMDJENDcxOTZCMzQ1
RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oICovLAogCQkJCTFBMDAyRDQ2MTk2QjM0
NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcubW0gKi8sCisJCQkJOTNENkI3QjMyNTUy
NjhCRjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5t
bSAqLywKIAkJCQkzMTU3MTM1QzIwNDBBOUIyMDA4NEY5Q0YgLyogU3lzdGVtUHJldmlld0NvbnRy
b2xsZXJDb2NvYS5tbSAqLywKIAkJCQkyRDBDRjY0QzIxRjJBODAzMDA3ODc1NjYgLyogVGV4dENo
ZWNraW5nQ29udHJvbGxlci5oICovLAogCQkJCTJEMENGNjRCMjFGMkE4MDMwMDc4NzU2NiAvKiBU
ZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tICovLApAQCAtOTIyOCw2ICs5MjQzLDkgQEAKIAkJCQlC
QzExMUIwODExMkY1RTNDMDAzMzdCQUIgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8sCiAJ
CQkJMUEzMDA2NkMxMTEwRjRGNzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLywK
IAkJCQk1Q0E5ODU0OTIxMEJFQjVBMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2FybmluZy5oICov
LAorCQkJCTkzRDZCN0IwMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyLmNwcCAqLywKKwkJCQk5M0Q2QjdCMjI1NTI2OEEyMDA1OEREM0EgLyogU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovLAorCQkJCTkzRDZCN0FGMjU1MjY4
QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi8sCiAJ
CQkJOTNENkI3NkIyNTRCODk1ODAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmNw
cCAqLywKIAkJCQk5M0Q2Qjc2QzI1NEI4OTU4MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIuaCAqLywKIAkJCQk5M0Q2Qjc3QTI1NEM5ODREMDA1OEREM0EgLyogU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4gKi8sCkBAIC05NTY5LDYgKzk1ODcsOCBAQAogCQkJCTMz
MzY3NjM5MTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmggKi8sCiAJ
CQkJMUFERTQ2QjAxOTU0RUM2MTAwMEY3OTg1IC8qIFdLU2Vzc2lvblN0YXRlUmVmLmNwcCAqLywK
IAkJCQkxQURFNDZCMTE5NTRFQzYxMDAwRjc5ODUgLyogV0tTZXNzaW9uU3RhdGVSZWYuaCAqLywK
KwkJCQk5M0Q2QjdCODI1NTM0QTEyMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjay5jcHAgKi8sCisJCQkJOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdL
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLywKIAkJCQk1MUY4ODZBMzFG
MkMyMTRBMDBDMTkzRUYgLyogV0tUZXN0aW5nU3VwcG9ydC5jcHAgKi8sCiAJCQkJNTFGODg2QTQx
RjJDMjE0QTAwQzE5M0VGIC8qIFdLVGVzdGluZ1N1cHBvcnQuaCAqLywKIAkJCQkzMTQ4ODhGRTFE
OTFCMTFEMDAzNzcwNDIgLyogV0tUZXh0Q2hlY2tlci5jcHAgKi8sCkBAIC0xMTE3MSw2ICsxMTE5
MSw3IEBACiAJCQkJMUE2RDg2QzIxREY3NTI2NTAwNzc0NUU4IC8qIE1hY2hNZXNzYWdlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0M1NkY3OTExNTk5NTdEMDAxQ0NBRjkgLyogTWFjaFBvcnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMjRCNUYzMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzQyNTg5MDI1NTVEREM2MDA1OUVFREQgLyogTWVk
aWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0UxOUVGQzIzRDQw
MUYxMDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA3RTE5RUZEMjNENDAxRjEwMDk0RkZCNCAvKiBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOTMzREVGMTk2
NUVCMzEwMDhBQzNFQSAvKiBNZW51VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTExNDEx
LDYgKzExNDMyLDggQEAKIAkJCQk1N0JCRUE2RDIyQkMwQkZFMDAyNzM5OTUgLyogU09BdXRob3Jp
emF0aW9uTG9hZFBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc2Q0E5RDcyMkI4NjIxODAw
MzAxNDNDIC8qIFNPQXV0aG9yaXphdGlvbk5TVVJMRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1N0ZEMzE4NTIyQjM1MTY5MDA4RDBFOEIgLyogU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTNENkI3QjUyNTUyNjhENzAwNThERDNBIC8qIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDZCN0I0MjU1
MjY4RDUwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyogU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzg0MjU0Q0NEMEUwMDU4REQz
QSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5M0Q2Qjc4NTI1NENDRDQzMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNz
YWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTIwMjcsNiArMTIwNTAsNyBAQAogCQkJ
CTUxM0U0NjJEMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjU0OUI0MUUzMTc0QjcwMDBFNzIzOSAvKiBXS1Nu
YXBzaG90Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODcyMkIzNTE3
MDAwOEQwRThCIC8qIFdLU09BdXRob3JpemF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTkzRDZCN0I5MjU1MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTc4RkYzMjIyNDE5MTk2MDA5NjQ4
M0UgLyogV0tTdG9yYWdlQWNjZXNzQWxlcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjA2
MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2
MUExMjRGRjAzNzAwNjhGMjBBIC8qIFdLU3RyaW5nQ0YuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcAppbmRleCBlYTE2YjJl
ZDc2NjViMzJiZDM5Y2FjNDYzMmI0YjlhNTFhNzVkNmIxLi4zZjM1MzE5NGEzMmMzZTY3OWJjYTI5
ZmJlYTg1MDMxYzkyMWU0ZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uLmNwcApAQCAtNTksMTAgKzU5LDkgQEAgdm9pZCBXZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb246OnJlZ2lzdGVyQ2xpZW50KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q28KICAgICBtX2NsaWVudE1hcC5hZGQoY2xpZW50LmlkZW50aWZpZXIoKSwgbWFrZVdlYWtQdHIo
Y2xpZW50KSk7CiB9CiAKLXZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpzdGFy
dChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNs
aWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29s
IGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpCit2b2lkIFdlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4
QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4pCiB7Ci0g
ICAgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyBpbmZvIHsgY2xpZW50SWRl
bnRpZmllciwgbGFuZywgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVybmF0aXZl
cyB9OwotICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTdGFydChp
bmZvKSk7CisgICAgc2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlN0YXJ0
KGNsaWVudElkZW50aWZpZXIsIGxhbmcsIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhB
bHRlcm5hdGl2ZXMsIFdURk1vdmUoY2xpZW50T3JpZ2luKSkpOwogfQogCiB2b2lkIFdlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCkBAIC04MCw3ICs3OSw3
IEBAIHZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjppbnZhbGlkYXRlKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjCiAgICAgc2VuZChNZXNzYWdlczo6U3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXI6OkludmFsaWRhdGUoY2xpZW50SWRlbnRpZmllcikpOwogfQogCi12b2lk
IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVVwZGF0ZShjb25zdCBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYgdXBkYXRlKQordm9pZCBXZWJTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb246OmRpZFJlY2VpdmVVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25VcGRhdGUmJiB1cGRhdGUpCiB7CiAgICAgYXV0byBjbGllbnRJZGVudGlmaWVyID0g
dXBkYXRlLmNsaWVudElkZW50aWZpZXIoKTsKICAgICBpZiAoIW1fY2xpZW50TWFwLmNvbnRhaW5z
KGNsaWVudElkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbi5oCmluZGV4IDI4ZGJkMTk3Y2IzZjc5OGZjNzYzMTk5ZWJiMTJkZTEzYWVkNzUxYjEu
LjQ0M2IwNGYxY2NhYWIwYTBlNmFhNTM4MzFlOTg1ZDEwYTZhNTMzMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKQEAgLTQzLDExICs0MywxMSBAQCBj
bGFzcyBXZWJQYWdlOwogCiB1c2luZyBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25JZGVudGlm
aWVyID0gV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI7CiAKLWNsYXNzIFdlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b24sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2Vu
ZGVyIHsKK2NsYXNzIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbj4gY3JlYXRlKFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgdm9pZCBzdGFydChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3Qg
bWF4QWx0ZXJuYXRpdmVzKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywg
Ym9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5h
dGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmKSBmaW5hbDsKICAgICB2b2lkIHN0b3AoV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmluYWw7
CiAgICAgdm9pZCBhYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyKSBmaW5hbDsKIApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIH5X
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJDbGll
bnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50JikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
VXBkYXRlJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uVXBkYXRlJiYpIGZpbmFsOwogICAgIHZvaWQgaW52YWxpZGF0ZShXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKIAogICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyLgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGVlNmZhNmQ0NzFlM2E0MjZhYmQwOWYyMDc5YzQ0MDlmMzlkZThl
MzUuLmYwY2U4MWNiOTc4Mzc2OTMzYjhmYjk3ZTA4ZjcwYjNkZTU0NzAwMmUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAor
MjAyMC0xMS0wNiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQ3NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dz
ZXIvbWFjL0luZm8ucGxpc3Q6CisgICAgICAgICogTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWlu
aUJyb3dzZXIvSW5mby5wbGlzdDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5u
ZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OmRlY2lk
ZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6Y29tcGxldGVTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
aGVjayk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRJc1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkdyYW50ZWQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3Jl
YXRlV2ViVmlld1dpdGhPcHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJl
c2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJv
bm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDIwLTExLTA1ICBKb2huIFdpbGFu
ZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBDTTogU3dpdGNoIHRvIEpTT04g
cmVwb3J0IGZvcm1hdApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxp
c3QgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdAppbmRleCA0ZTJiMWY0ODE5YWQ1
MTAzZTRjZjE3MDliN2M1M2E2NmU4YjM5NWU1Li4zM2EzY2ExYmU3MzUwOGUxZmZjYjAyOTU3Yzg2
NGU4NTkyZGFhYTRlIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlz
dAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdApAQCAtNTIsOSArNTIsMTEg
QEAKIAkJCTxzdHJpbmc+RWRpdG9yPC9zdHJpbmc+CiAJCTwvZGljdD4KIAk8L2FycmF5PgotICAg
IDxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uPC9rZXk+Ci0gICAgPHN0cmluZz5SZWNvcmRp
bmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+Ci0gICAgPGtleT5OU01pY3Jv
cGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+Ci0gICAgPHN0cmluZz5SZWNvcmRpbmcgYXVkaW8g
b24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5OU0NhbWVyYVVzYWdlRGVzY3Jp
cHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyB2aWRlbyBvbiBiZWhhbGYgb2Ygd2Vic2l0
ZXM8L3N0cmluZz4KKwk8a2V5Pk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8
c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8
a2V5Pk5TU3BlZWNoUmVjb2duaXRpb25Vc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5S
ZWNvZ25pemluZyBjYXB0dXJlZCBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4K
IDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9Nb2JpbGVNaW5pQnJvd3Nlci9N
b2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBsaXN0IGIvVG9vbHMvTW9iaWxlTWluaUJyb3dzZXIvTW9i
aWxlTWluaUJyb3dzZXIvSW5mby5wbGlzdAppbmRleCAyZDFiYzU4MmZiZTc2NWNmZGM0MTA1ZWZl
OWVjYzFkODMyMGNjOTU5Li41Mzg3YjM3NDlhNDc0ZmUwYjNkOWM2MDk1Y2IyODgxN2I4ZjkyMzBh
IDEwMDY0NAotLS0gYS9Ub29scy9Nb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9J
bmZvLnBsaXN0CisrKyBiL1Rvb2xzL01vYmlsZU1pbmlCcm93c2VyL01vYmlsZU1pbmlCcm93c2Vy
L0luZm8ucGxpc3QKQEAgLTU0LDkgKzU0LDExIEBACiAJCTxrZXk+TlNBbGxvd3NBcmJpdHJhcnlM
b2Fkc0luV2ViQ29udGVudDwva2V5PgogCQk8dHJ1ZS8+CiAJPC9kaWN0PgotICAgIDxrZXk+TlND
YW1lcmFVc2FnZURlc2NyaXB0aW9uPC9rZXk+Ci0gICAgPHN0cmluZz5SZWNvcmRpbmcgdmlkZW8g
b24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+Ci0gICAgPGtleT5OU01pY3JvcGhvbmVVc2Fn
ZURlc2NyaXB0aW9uPC9rZXk+Ci0gICAgPHN0cmluZz5SZWNvcmRpbmcgYXVkaW8gb24gYmVoYWxm
IG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5OU0NhbWVyYVVzYWdlRGVzY3JpcHRpb248L2tl
eT4KKwk8c3RyaW5nPlJlY29yZGluZyB2aWRlbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmlu
Zz4KKwk8a2V5Pk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJl
Y29yZGluZyBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TU3Bl
ZWNoUmVjb2duaXRpb25Vc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvZ25pemlu
ZyBjYXB0dXJlZCBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KIDwvZGljdD4K
IDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA5Njk2MTRlNjcyODg2Mjk2
MzMwN2M5OWVjNDc4NDE1MjRmZjAxMjliLi45ODI5N2FmNzBkYjUxMWRhZDBhNzc5NzVlYTM4ZWQ1
YzhkYjZiZDdjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTQwMSw0ICs0MDEsNyBA
QCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdW5kZWZpbmVkIHNldEFkQ2xpY2tBdHRyaWJ1
dGlvbk92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2xlYW4gdmFsdWUpOwogICAgIHVuZGVmaW5l
ZCBzZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZyhET01TdHJpbmcg
dXJsKTsKICAgICB1bmRlZmluZWQgbWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JU
ZXN0aW5nKCk7CisKKyAgICAvLyBTcGVlY2hSZWNvZ25pdGlvbgorICAgIHVuZGVmaW5lZCBzZXRJ
c1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbGVhbiB2YWx1ZSk7CiB9Owpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHAKaW5kZXggZTVjNWY5OWFkMWRjOWMyODZlMDk0NzM0NmM5YmQ3NWZjYTJmOTNjMy4uMjVi
NDE3Njc2MzAxMTJjNTE1Y2EzMTQxZDhkOTM1ZWFiNGJhMjU3OSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yMDQ3
LDYgKzIwNDcsMTEgQEAgdm9pZCBUZXN0UnVubmVyOjpkaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxs
YmFjaygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhEaWRTZXRBcHBCb3VuZERvbWFpbnND
YWxsYmFja0lEKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkdyYW50ZWQoYm9vbCBncmFudGVkKQoreworICAgIHBvc3RTeW5jaHJvbm91c1Bh
Z2VNZXNzYWdlKCJzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQiLCBncmFu
dGVkKTsKK30KKwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIH0gLy8gbmFt
ZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaAppbmRleCBhYWE1MjE2ZjkyNjBkYjRkOTg4MWNkMGRkYmIxOWY1MDg1Mjk3
ZmQ4Li45MThhYTk2NDI2NzJlZmFhMGNlNDYzNGIxNjhiMDAwZDM0MzNlZWU1IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAt
NTExLDYgKzUxMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNv
bnZlcnNpb25VUkxGb3JUZXN0aW5nKEpTU3RyaW5nUmVmKTsKICAgICB2b2lkIG1hcmtBZENsaWNr
QXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZygpOwogCisgICAgdm9pZCBzZXRJc1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCk7CisKIHByaXZhdGU6CiAgICAgVGVz
dFJ1bm5lcigpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDZkYmM2ODRlODg1MGFmZTA0NTkxMzlmYmUxOWQ1ZTVjY2RiNzI2ZTcuLjE4NmVmZjlhMTRj
NzEwODlmMDZhZjI5NGFlZWUyNDIzMGQ3ZmMxZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dL
UHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5j
bHVkZSA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW5SZWYuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oPgogI2luY2x1ZGUgPFdlYktpdC9X
S1RleHRDaGVja2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVVJMLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmg+CkBAIC0yOTcsNiArMjk4LDIxIEBAIHN0
YXRpYyB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoKQogewogfQogCitzdGF0aWMgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFn
ZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBjYWxsYmFjaykKK3sKKyAgICBUZXN0Q29u
dHJvbGxlcjo6c2luZ2xldG9uKCkuY29tcGxldGVTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
aGVjayhjYWxsYmFjayk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNvbXBsZXRlU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2soV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFja1JlZiBjYWxsYmFjaykKK3sKKyAgICBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrQ29tcGxldGUoY2FsbGJhY2ssIG1faXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25HcmFudGVkKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0SXNTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wgZ3JhbnRlZCkKK3sKKyAgICBtX2lzU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCA9IGdyYW50ZWQ7Cit9CisKIFdLUGFnZVJlZiBUZXN0
Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFdLUGFnZVJlZiwgV0tQYWdlQ29uZmlndXJhdGlv
blJlZiBjb25maWd1cmF0aW9uLCBXS05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlv
biwgV0tXaW5kb3dGZWF0dXJlc1JlZiB3aW5kb3dGZWF0dXJlcywgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbykKIHsKICAgICBQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcgPSBzdGF0aWNfY2FzdDxQ
bGF0Zm9ybVdlYlZpZXcqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CkBAIC02NTAs
OCArNjY2LDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25z
KGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogICAgIFdLSFRUUENvb2tpZVN0b3JlRGVsZXRl
QWxsQ29va2llcyhXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29va2llU3RvcmUod2Vic2l0ZURh
dGFTdG9yZSgpKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAKICAgICBwbGF0Zm9ybUNyZWF0ZVdlYlZp
ZXcoY29uZmlndXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7Ci0gICAgV0tQYWdlVUlDbGllbnRWMTQg
cGFnZVVJQ2xpZW50ID0gewotICAgICAgICB7IDE0LCBtX21haW5XZWJWaWV3LmdldCgpIH0sCisg
ICAgV0tQYWdlVUlDbGllbnRWMTUgcGFnZVVJQ2xpZW50ID0geworICAgICAgICB7IDE1LCBtX21h
aW5XZWJWaWV3LmdldCgpIH0sCiAgICAgICAgIDAsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMAogICAgICAgICAwLCAvLyBzaG93UGFnZQogICAgICAgICAwLCAvLyBjbG9z
ZQpAQCAtNzI0LDcgKzc0MCw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdX
aXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKICAgICAgICAgMCwgLy8gZGlk
UmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlCiAgICAgICAgIDAsIC8v
IHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybQogICAgICAgICBzaG91bGRBbGxvd0RldmljZU9y
aWVudGF0aW9uQW5kTW90aW9uQWNjZXNzLAotICAgICAgICBydW5XZWJBdXRoZW50aWNhdGlvblBh
bmVsCisgICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwsCisgICAgICAgIGRlY2lkZVBv
bGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QKICAgICB9OwogICAgIFdL
UGFnZVNldFBhZ2VVSUNsaWVudChtX21haW5XZWJWaWV3LT5wYWdlKCksICZwYWdlVUlDbGllbnQu
YmFzZSk7CiAKQEAgLTEwNTMsNiArMTA3MCw4IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0
U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAg
ICAgbV9zZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQgPSAwOwogICAgIG1f
c2hvdWxkRGlzbWlzc0phdmFTY3JpcHRBbGVydHNBc3luY2hyb25vdXNseSA9IGZhbHNlOwogCisg
ICAgc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKHRydWUpOworCiAgICAg
YXV0byBsb2FkQWJvdXRCbGFuayA9IFt0aGlzXSB7CiAgICAgICAgIG1fZG9uZVJlc2V0dGluZyA9
IGZhbHNlOwogICAgICAgICBXS1BhZ2VMb2FkVVJMKG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgYmxh
bmtVUkwoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggMzNi
NjQ5NGFjNjI0NGI5MmZjYjc4MDlhNThkNzIwM2M3YzEyNThhOC4uMDVjOGY4YmRhYTk1YWQ4N2U0
MzllMzA5M2I4YTRmMzRmNWY4MmM1NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaApAQCAtMzUxLDYgKzM1MSw5IEBAIHB1YmxpYzoKIAogICAgIFdLVVJMUmVmIGN1cnJl
bnRUZXN0VVJMKCkgY29uc3Q7CiAKKyAgICB2b2lkIGNvbXBsZXRlU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2hlY2soV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZik7
CisgICAgdm9pZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCk7
CisKIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gZ2Vu
ZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9ucyYpOwogICAgIFdLUmV0YWlu
UHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlQ29udGV4dENvbmZpZ3VyYXRp
b24oY29uc3QgVGVzdE9wdGlvbnMmKSBjb25zdDsKQEAgLTY0MCw2ICs2NDMsOCBAQCBwcml2YXRl
OgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgbV9oYXNTZXRBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIgeyBmYWxzZSB9OwogI2VuZGlmCisKKyAgICBib29sIG1faXNTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25HcmFudGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAxNGMw
NGVkMWZhOTM5NGY1NzJmNjQ5YTkxYjQ3ZWZiMjA2ZWY4NTRlLi41YjY2NjE3YmVlMDE2YjY3NTFj
N2JiMmJjZTZiYjhiYWU0NGViMGEwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcApAQCAtMTM0NSw2ICsxMzQ1LDExIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4g
VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRC
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAic2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25HcmFudGVkIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNl
dElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChib29sZWFuVmFsdWUobWVzc2Fn
ZUJvZHkpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjc1N2I4ZTA4N2M3
ZjY5N2QzOTc1MzZkMTBjNjk1ZDk3OTIzNTlkOS4uM2QwYzlmNTBlNzk3OTZiNDM5Y2EzYzExYmYy
YWU4ZWYwNGM0YWEwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTExLTA2ICBTaWh1aSBM
aXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyBwZXJt
aXNzaW9uIGNoZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAq
IGZhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9uczoKKwor
MjAyMC0xMS0wNiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQ3NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9zcGVl
Y2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWw6IEFkZGVk
LgorCiAyMDIwLTExLTA2ICBEaWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW1dQRV0gVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZy4gR2FyZGVuZWQgc2V2ZXJh
bCBmbGFreSBmYWlsdXJlcyByZXBvcnRlZCBieSB0aGUgYm90LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggZTc4MGZjN2JkMWVmNmZiYjA2YTBmNDE5Y2QwMmVhOGJmNjM5M2IyNC4uNmIxYWJlZDMzNjhj
OTdlZjkwZWZiOTIxYjM4YWEwMGEyOWZmNDY2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNzcs
NiArMTc3LDcgQEAgc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1hZnRlci1z
dG9yYWdlLWNyYXNoLmh0bWwgWyBTa2lwIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL0lEQk9iamVjdC1s
ZWFrLmh0bWwgWyBTa2lwIF0KIGZhc3QvZm9ybXMvY2FsbC10ZXh0LWRpZC1jaGFuZ2UtaW4tdGV4
dC1maWVsZC13aGVuLXR5cGluZy5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL2luLWFwcC1icm93
c2VyLXByaXZhY3kvIFsgU2tpcCBdCitmYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24t
ZXJyb3IuaHRtbCBbIFNraXAgXQogCiAjIE9ubHkgcGFydGlhbCBzdXBwb3J0IG9uIENvY29hIHBs
YXRmb3Jtcy4KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3BlZWNoLWFwaS8gWyBT
a2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVy
bWlzc2lvbi1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29n
bml0aW9uL3Blcm1pc3Npb24tZXJyb3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyOWI4YWIw
NGQwODNmYTI3YTA4NDU4NWRhYTk4ZmQ3YjYwNmI0NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3ItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTMgQEAKK1ZlcmlmeSB0aGF0IGVycm9yIGV2ZW50IGlzIGZpcmVkIHdo
ZW4gcGVybWlzc2lvbiBpcyBkZW5pZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIHJlY29nbml0aW9uID0gbmV3IFNwZWVjaFJlY29nbml0aW9uKCkgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCitQQVNTIHJlY29nbml0aW9uLnN0YXJ0KCkgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCitQQVNTIGV2ZW50LmVycm9yIGlzICJub3QtYWxsb3dlZCIKK1BBU1MgZXZlbnQubWVz
c2FnZSBpcyAicGVybWlzc2lvbiBjaGVjayBmYWlscyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0
NmU5ZjNhNzc2NDA5YWEzZGY0MTkyYmZiYzU4NzU5MDE1ZTM2Y2EKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRt
bApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCBlcnJvciBldmVudCBpcyBmaXJlZCB3aGVuIHBlcm1p
c3Npb24gaXMgZGVuaWVkLiIpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKyAgICB0ZXN0UnVubmVyLnNldElzU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uR3JhbnRlZChmYWxzZSk7Cit9CisKK3Nob3VsZE5vdFRocm93KCJyZWNvZ25pdGlv
biA9IG5ldyBTcGVlY2hSZWNvZ25pdGlvbigpIik7CitzaG91bGROb3RUaHJvdygicmVjb2duaXRp
b24uc3RhcnQoKSIpOworcmVjb2duaXRpb24ub25lcnJvciA9IChldmVudCkgPT4geworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQuZXJyb3IiLCAibm90LWFsbG93ZWQiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50Lm1lc3NhZ2UiLCAicGVybWlzc2lvbiBjaGVjayBm
YWlscyIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYWRiM2IwYzcxZGI4YzI2MmNkNDZjOTg5ZDczN2Yz
NTNiYzdmMWI3YS4uYzZlZTQxM2NiMmQ1MWVkY2ZlNjZkNzVhZTE2YzBkNTBmYjRiYzdkMiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTgyMSwzICs4MjEs
NiBAQCBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlZC1wb3J0LWRlbGF5Lmh0
bWwgWyBQYXNzIF0KIAogIyBXZWJLaXQyIG9ubHkuCiBqcy90aHJvdy1sYXJnZS1zdHJpbmctb29t
Lmh0bWwgWyBQYXNzIF0KKworIyBTcGVlY2ggcmVjb2duaXRpb24gYmFja2VuZCBpcyBvbmx5IGlt
cGxlbWVudGVkIG9uIFdLMi4KK2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJv
ci5odG1sIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413512</attachid>
            <date>2020-11-06 20:48:35 -0800</date>
            <delta_ts>2020-11-06 21:21:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201106204834.patch</filename>
            <type>text/plain</type>
            <size>118234</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcwYzdkNjAxNDAyNjQxYTA4MTkwZTcz
N2FiMWEwZWRlNTA4NzZmNTIuLjQ5NWQ4MGM0ODAyMzg2MDhhZjEwYTg0MDQxNTE5N2Y0MGZmNjM1
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTEtMDYgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMC0xMS0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRnVydGhlciBwcm9ncmVzcyB0b3dh
cmRzIG1lcmdpbmcgU2V0dGluZ3MueWFtbCBpbnRvIFdlYlByZWZlcmVuY2VzLnlhbWwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAzYTI2YmE0ZDE1YTZjMGExNWUxZGMwYTQwZjJjNjA2ZTYwMWMyNDAzLi43MWZiOTYx
ZTYwYzE4Zjg0OGZmNmE3ZDAwMDE4NjVhNmY5NGQwNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjcgQEAKKzIwMjAtMTEtMDYgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0
NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uOjpzdGFydFJlY29nbml0aW9uKTogCisgICAgICAgICogTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6Y2xpZW50T3JpZ2luIGNvbnN0KToKKyAgICAgICAg
KiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmg6CisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2RlKToK
KyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjplcnJvciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6cmVzdWx0IGNvbnN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oOgorICAgICAg
ICAqIHBhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmg6CisKIDIwMjAtMTEtMDYg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IGBsb2NhbEJvdW5kc2AgYW5kIGBnbG9iYWxCb3VuZHNgIG1ldGhvZHMgZnJvbSBkaXNwbGF5IGxp
c3QgaXRlbXMgdGhhdCBhcmUgbm90IGRyYXdpbmcgaXRlbXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNGVhNGMzN2Rl
YjQ1MjkwOGQ1MTlhYjUwOGJjMDBkYWFkN2ZkMjY0Ni4uZDQxZDY4NTIzZTk2MTc4ODFhYzVkN2E1
MzYwZTk1NjQyYzU3YTFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDMgQEAKKzIwMjAtMTEtMDYg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJh
c2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlciwgd2hpY2ggY2hlY2tzIGFuZCByZXF1ZXN0cyBzcGVlY2gg
cmVjb2duaXRpb24gcGVybWlzc2lvbnMgYmVmb3JlIAorICAgICAgICB3ZSBhY3R1YWxseSBzdGFy
dCBjYXB0dXJpbmcgYXVkaW8gYW5kIHBlcmZvcm0gcmVjb2duaXRpb24uIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIgaXMgcGVyLXBhZ2UsIGxpa2UKKyAgICAgICAgU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIuIFRoZSBjaGVja3MgYXJlOgorICAgICAgICAxLiBTYW5kYm94IHJlcXVp
cmVtZW50IGZvciBtaWNyb3Bob25lCisgICAgICAgIDIuIFRDQyBmb3IgbWljcm9waG9uZQorICAg
ICAgICAzLiBUQ0MgZm9yIFNGU3BlZWNoUmVjb2duaXplcgorICAgICAgICA0LiBVc2VyIHBlcm1p
c3Npb24gb24gc3BlZWNoIHJlY29nbml0aW9uIGZvciBvcmlnaW5zCisKKyAgICAgICAgQWRkIGEg
ZGVsZWdhdGUgZnVuY3Rpb24gZm9yIHJlcXVlc3RpbmcgdXNlciBwZXJtaXNzaW9uLCB3aGljaCBp
cyBkZW5pZWQgYnkgZGVmYXVsdC4KKworICAgICAgICBUZXN0OiBmYXN0L3NwZWVjaHJlY29nbml0
aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbAorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmpl
Y3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lG
b3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcDogQWRkZWQuCisgICAgICAgIChX
S1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKToKKyAgICAgICAg
KFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tDb21wbGV0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGll
cy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRp
bGl0aWVzLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6cmVxdWVzdEFWQ2FwdHVyZUFjY2Vz
c0Zvck1lZGlhVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OnJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NG
b3JNZWRpYVR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6Y2hlY2tBVkNhcHR1cmVBY2Nlc3NGb3JN
ZWRpYVR5cGVzQW5kRmlsdGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0TmV4dFJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6cGVyZm9ybVNh
bmRib3hDaGVjayk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OmNoZWNrU2FuZGJveFJlcXVpcmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKToK
KyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hl
Y2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja0FuZFJlcXVlc3RVc2VyUGVybWlz
c2lvbkZvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNjZXNzSWZOZWVkZWQpOgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0U3BlZWNo
UmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzSWZOZWVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lG
b3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1
ZXN0U3lzdGVtVmFsaWRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OnJlcXVlc3RBVkNhcHR1cmVB
Y2Nlc3NGb3JNZWRpYVR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6flNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnRO
ZXh0UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVudFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1NhbmRib3hSZXF1aXJlbWVudCk6
CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNo
ZWNrTWljcm9waG9uZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKToK
KyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVx
dWVzdE1pY3JvcGhvbmVBY2Nlc3NJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNlcnZp
Y2VBY2Nlc3NJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXI6OmNoZWNrQW5kUmVxdWVzdFVzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uUmVxdWVzdDo6Y29tcGxldGUpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjb21wbGV0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVj
aFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6
OmFib3J0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlbW92
ZVBlbmRpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXI6OnN0YXJ0UG9jZXNzaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29n
bml0aW9uU2VydmVyOjpjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnNlbmRVcGRhdGUpOgorICAgICAgICAoV2ViS2l0
OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RvcFByb2Nlc3NpbmdSZXF1ZXN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0
aW9uU2VydmVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbjo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb246OmRpZFJlY2VpdmVVcGRhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisKIDIwMjAtMTEtMDYg
IEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5d
IFtpT1NdIFdlYkF1dGhuIHByb2Nlc3MgZG9lc24ndCBzdGFydCBvbiBpT1MgZGV2aWNlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUhhdmUuaAppbmRleCAyMDNlOGVjN2Q2MTVlODc1ZjNiMzE0NWYyZjhiZGQxZTViN2Iw
ODNkLi44YWE2MDU3OTM3MzM3YTUxYjEyMWVkMDhjZjUzZTQyNjA2MjliNzk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUhhdmUuaApAQCAtNzU1LDMgKzc1NSw3IEBACiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZF
X0NOQ09OVEFDVFBJQ0tFUlZJRVdDT05UUk9MTEVSIDEKICNlbmRpZgorCisjaWYgKFBMQVRGT1JN
KElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTUwMAorI2RlZmluZSBIQVZFX1NQRUVDSFJFQ09HTklaRVIgMQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbi5jcHAKaW5kZXggNTFhMzJjZGFhY2FhMWVkMDExNDI3NjdkMjJlMzAyNTI2ZGViZjU5NS4u
ZjExN2MxZmIxYjViZDA0YWU3NTUyNTY1ZmJhYTg4OTFjNWMxYWViYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcApAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0
aW9uLmgiCiAKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC02OSw3ICs3
MCw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNwZWVjaFJlY29nbml0aW9uOjpzdGFydFJlY29nbml0
aW9uKCkKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFVua25vd25FcnJvciwgIlJlY29nbml0aW9uIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBjb25uZWN0
aW9uIl9zIH07CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnN0YXJ0KGlkZW50aWZpZXIoKSwgbV9sYW5n
LCBtX2NvbnRpbnVvdXMsIG1faW50ZXJpbVJlc3VsdHMsIG1fbWF4QWx0ZXJuYXRpdmVzKTsKKyAg
ICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnN0YXJ0KGlkZW50aWZpZXIoKSwgbV9sYW5nLCBt
X2NvbnRpbnVvdXMsIG1faW50ZXJpbVJlc3VsdHMsIG1fbWF4QWx0ZXJuYXRpdmVzLCBDbGllbnRP
cmlnaW4geyBkb2N1bWVudC50b3BPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LnNlY3VyaXR5T3Jp
Z2luKCkuZGF0YSgpIH0pOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3RhcnRpbmc7CiAgICAgcmV0
dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKaW5kZXggM2ZkMmQzM2FjYTAyMDUyNjM0
MDU4ZDBmYjU2NTJlYjcwMDdmYTUyYS4uNjllZWJjMjkzZDViN2RlMWUzOGNlZWFkMmEzZWUzOGYw
MGQxY2E1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKQEAgLTMxLDE1ICszMSwxNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dDsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOworc3RydWN0IENsaWVudE9yaWdpbjsK
IAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
Q2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3Vs
dHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFy
dChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3Qg
bWF4QWx0ZXJuYXRpdmVzLCBDbGllbnRPcmlnaW4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
dG9wKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgYWJvcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
VXBkYXRlKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuY3BwCmluZGV4IDRhNWU4YzE2MzAzYzE4NjVjMmIx
ZmZjZTliNTZlZTI2MjAzYTdmYzUuLmQzYmQ3YTk0YTQyYjlkNWUwNTkyMGM1YmZlN2RiYzQ0YTkx
ODg3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmNwcApAQCAtMjgsMTEgKzI4LDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZWY8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiBTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3Q6OmNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYgcmVx
dWVzdEluZm8pCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0KFdURk1vdmUocmVxdWVzdEluZm8pKSk7Ci19Ci0KIFNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdDo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8mJiByZXF1ZXN0SW5mbykKICAgICA6IG1faW5mbyhXVEZNb3ZlKHJlcXVlc3RJbmZvKSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0LmgKaW5kZXggNWNlZWEwMWM3Mzg2NTU2ZDQyNTFmOGM4Yjk1YzMxMjRiYWZj
NjAxMi4uMzk2ZGIyNjk4NGY5MTI0NjgyNGIwNjU4NjY1Y2E3M2U3YmM0Y2NkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdD4geworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0IDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiBjcmVhdGUoU3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0SW5mbyYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsKIAogICAgIFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faW5mby5jbGllbnRJZGVudGlmaWVyOyB9CiAgICAgY29uc3QgU3RyaW5n
JiBsYW5nKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmxhbmc7IH0KICAgICBib29sIGNvbnRpbnVv
dXMoKSBjb25zdCB7IHJldHVybiBtX2luZm8uY29udGludW91czs7IH0KICAgICBib29sIGludGVy
aW1SZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmludGVyaW1SZXN1bHRzOyB9CiAgICAg
dWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLm1heEFsdGVy
bmF0aXZlczsgfQorICAgIENsaWVudE9yaWdpbiBjbGllbnRPcmlnaW4oKSBjb25zdCB7IHJldHVy
biBtX2luZm8uY2xpZW50T3JpZ2luOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8mJik7Ci0KICAg
ICBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIG1faW5mbzsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVx
dWVzdEluZm8uaAppbmRleCBhYjFlMWFlNmVmMzg4OThjMjFhMmE5ZGY3YWYxZjAwN2UyNGIxN2Qw
Li4xZWZlOWUwNjQ2ZTc0N2NiNTVkN2NjYjBmN2IxOGZmNWUwYjNjNGMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZv
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mby5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNSw2ICszNiw3
IEBAIHN0cnVjdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIHsKICAgICBib29sIGNvbnRp
bnVvdXMgeyBmYWxzZSB9OwogICAgIGJvb2wgaW50ZXJpbVJlc3VsdHMgeyBmYWxzZSB9OwogICAg
IHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcyB7IDEgfTsKKyAgICBDbGllbnRPcmlnaW4gY2xpZW50
T3JpZ2luOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtNDMsNyAr
NDUsNyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7CiB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGNsaWVudElkZW50aWZp
ZXIgPDwgbGFuZyA8PCBjb250aW51b3VzIDw8IGludGVyaW1SZXN1bHRzIDw8IG1heEFsdGVybmF0
aXZlczsKKyAgICBlbmNvZGVyIDw8IGNsaWVudElkZW50aWZpZXIgPDwgbGFuZyA8PCBjb250aW51
b3VzIDw8IGludGVyaW1SZXN1bHRzIDw8IG1heEFsdGVybmF0aXZlcyA8PCBjbGllbnRPcmlnaW47
CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC03NCwxMiArNzYsMTggQEAgT3B0aW9u
YWw8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbz4gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
SW5mbzo6ZGVjb2RlKERlY28KICAgICBpZiAoIW1heEFsdGVybmF0aXZlcykKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIE9wdGlvbmFsPENsaWVudE9yaWdpbj4gY2xpZW50T3Jp
Z2luOworICAgIGRlY29kZXIgPj4gY2xpZW50T3JpZ2luOworICAgIGlmICghY2xpZW50T3JpZ2lu
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgcmV0dXJuIHt7CiAgICAgICAg
IFdURk1vdmUoKmNsaWVudElkZW50aWZpZXIpLAogICAgICAgICBXVEZNb3ZlKCpsYW5nKSwKICAg
ICAgICAgV1RGTW92ZSgqY29udGludW91cyksCiAgICAgICAgIFdURk1vdmUoKmludGVyaW1SZXN1
bHRzKSwKLSAgICAgICAgV1RGTW92ZSgqbWF4QWx0ZXJuYXRpdmVzKQorICAgICAgICBXVEZNb3Zl
KCptYXhBbHRlcm5hdGl2ZXMpLAorICAgICAgICBXVEZNb3ZlKCpjbGllbnRPcmlnaW4pCiAgICAg
fX07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uVXBkYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcAppbmRleCA1MzRlZGEzZDI0NzdlZTFjNmYxN2VjNmFm
MTc5MzI2YmI3OWYwMjA3Li45YTlhN2Q5MjA2OTY1NWM0NTcxNjA3ZGRhMThjNGU2YjMzMGY3MmQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25VcGRhdGUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFN0cmluZyBjb252ZXJ0RW51
bWVyYXRpb25Ub1N0cmluZyhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUgZW51bWVyYXRpb25W
YWx1ZSkKIAogU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6
OmNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVu
dElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSB0eXBlKQogewotICAgIHJl
dHVybiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7IGNsaWVudElkZW50aWZpZXIsIHR5cGUgfTsK
KyAgICByZXR1cm4gU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgeyBjbGllbnRJZGVudGlmaWVyLCB0
eXBlLCBXVEY6Ok1vbm9zdGF0ZSgpIH07CiB9CiAKIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIGNvbnN0IFNwZWVjaFJlY29n
bml0aW9uRXJyb3ImIGVycm9yKQpAQCAtODMsNyArODMsNyBAQCBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZQogU3BlZWNoUmVjb2duaXRpb25FcnJvciBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6ZXJy
b3IoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fY29udGVudCwKLSAgICAg
ICAgW10gKFNwZWVjaFJlY29nbml0aW9uRXJyb3ImIGVycm9yKSB7IHJldHVybiBlcnJvcjsgfSwK
KyAgICAgICAgW10gKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXJyb3ImIGVycm9yKSB7IHJldHVy
biBlcnJvcjsgfSwKICAgICAgICAgW10gKGNvbnN0IGF1dG8mKSB7IHJldHVybiBTcGVlY2hSZWNv
Z25pdGlvbkVycm9yKCk7IH0KICAgICApOwogfQpAQCAtOTEsNyArOTEsNyBAQCBTcGVlY2hSZWNv
Z25pdGlvbkVycm9yIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjplcnJvcigpIGNvbnN0CiBWZWN0
b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6
cmVzdWx0KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2NvbnRlbnQsCi0g
ICAgICAgIFtdIChWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYgZGF0YSkgeyBy
ZXR1cm4gZGF0YTsgfSwKKyAgICAgICAgW10gKGNvbnN0IFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlv
blJlc3VsdERhdGE+JiBkYXRhKSB7IHJldHVybiBkYXRhOyB9LAogICAgICAgICBbXSAoY29uc3Qg
YXV0byYpIHsgcmV0dXJuIFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+IHsgfTsg
fQogICAgICk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAppbmRleCAzYTgyYmY2YmFmNTRjZTBjNGIxMzM0ZWY2
ZjhiNTg5M2YzYjg5ODJlLi44OTE0OTE3OTNmNGUwMWVjMmZmNjAxMDdjYjQ4NWY0ODhmYTQzZTg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uVXBkYXRlLmgKQEAgLTUyLDggKzUyLDggQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJh
dGlvblRvU3RyaW5nKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSk7CiBjbGFzcyBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlIGNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUpOwotICAgIHN0YXRp
YyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVFcnJvcihTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yJik7
Ci0gICAgc3RhdGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIGNyZWF0ZVJlc3VsdChTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3BlZWNo
UmVjb2duaXRpb25SZXN1bHREYXRhPiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVFcnJvcihTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIGNyZWF0ZVJlc3Vs
dChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBWZWN0
b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYpOwogCiAgICAgU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyOyB9CiAgICAgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KQEAgLTY1LDcgKzY1LDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIHVzaW5nIENvbnRlbnQgPSBWYXJpYW50PFdURjo6TW9ub3N0
YXRlLCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yLCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1
bHREYXRhPj47Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25V
cGRhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3BlZWNo
UmVjb2duaXRpb25VcGRhdGVUeXBlLCBDb250ZW50ID0gV1RGOjpNb25vc3RhdGUoKSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUoU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlLCBD
b250ZW50KTsKIAogICAgIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIgbV9jbGllbnRJZGVudGlmaWVyOwogICAgIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSBt
X3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2du
aXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0
aW9uUHJvdmlkZXIuaAppbmRleCBjZjllNzJiOTNjMDY0YTU1ZGRkZmFiN2IzY2FmYjQ4OTBlMDM1
ZjQ2Li4yNDBhYTNkNDg0YTk3M2I0NDExMmFlZjYxZThlYWFhODQ3YjU4ZDE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgK
QEAgLTM5LDEwICszOSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEdW1teVNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbigpKTsKICAgICAgICAgfQogICAg
ICAgICB2b2lkIHJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dCYpIGZpbmFsIHsgfQotICAgICAgICB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wsIHVpbnQ2NF90
KSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCwg
Q2xpZW50T3JpZ2luJiYpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIHN0b3AoU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmluYWwgeyB9CiAgICAgICAgIHZvaWQg
YWJvcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmluYWwg
eyB9Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShjb25zdCBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZSYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoU3BlZWNo
UmVjb2duaXRpb25VcGRhdGUmJikgZmluYWwgeyB9CiAgICAgfTsKICAgICBEdW1teVNwZWVjaFJl
Y29nbml0aW9uUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAgICAgU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uJiBzcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0FQSU9iamVjdC5oCmluZGV4IDZkMDY1NjQ1ZGNlZTYyZTU5ZDUwZGJlZjM3NDM1YTQ5YTgwZWI2
ODIuLmNkMWNhZDk2YjQwMzEyZGIzYjE4OGRlNzFmNjA4OGJmNzI4ZmQ4NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTE2NSw2ICsxNjUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFJ1bkphdmFTY3JpcHRBbGVydFJlc3VsdExpc3RlbmVyLAogICAgICAgICBSdW5KYXZhU2Ny
aXB0Q29uZmlybVJlc3VsdExpc3RlbmVyLAogICAgICAgICBSdW5KYXZhU2NyaXB0UHJvbXB0UmVz
dWx0TGlzdGVuZXIsCisgICAgICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
LAogICAgICAgICBUZXh0Q2hlY2tlciwKICAgICAgICAgVVJMU2NoZW1lVGFzaywKICAgICAgICAg
VXNlckNvbnRlbnRDb250cm9sbGVyLApAQCAtNDEwLDYgKzQxMSw3IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8QVBJOjpPYmplY3Q6OlR5cGU+IHsKICAgICAgICAgQVBJOjpPYmplY3Q6
OlR5cGU6OlJ1bkphdmFTY3JpcHRBbGVydFJlc3VsdExpc3RlbmVyLAogICAgICAgICBBUEk6Ok9i
amVjdDo6VHlwZTo6UnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5lciwKICAgICAgICAg
QVBJOjpPYmplY3Q6OlR5cGU6OlJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lciwKKyAg
ICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6VGV4dENoZWNrZXIsCiAgICAgICAgIEFQ
STo6T2JqZWN0OjpUeXBlOjpVUkxTY2hlbWVUYXNrLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlw
ZTo6VXNlckNvbnRlbnRDb250cm9sbGVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApp
bmRleCA5ZTgyZTU2MDAxODdlYzFjZjhhZjliZWU3OWU3MWQwZThkN2ZkMTVhLi44NGVlNmMyODhm
NmQyZWJkNTFmYTczZWE3MjcwOGYzMjk0NmJkZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9X
S0Jhc2UuaApAQCAtMTQxLDYgKzE0MSw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdL
V2Vic2l0ZURhdGFDb25maWd1cmF0aW9uU3RvcmUqIFdLV2Vic2l0ZURhdGFTdG9yZUNvCiB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNpdGVEYXRhU3RvcmUqIFdLV2Vic2l0ZURhdGFT
dG9yZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2Vic2l0ZVBvbGljaWVzKiBX
S1dlYnNpdGVQb2xpY2llc1JlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2luZG93
RmVhdHVyZXMqIFdLV2luZG93RmVhdHVyZXNSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKiBXS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmOwogCiAvKiBXZWJLaXQyIEJ1bmRsZSB0eXBlcyAqLwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAppbmRleCAzNDk5NzVjZWMxMDBhYTMyNWY4MmZjNjE1MGE2NzY5MWVhMTJlYzBi
Li4wODUxMWI2MThlYTQ3ZDFlMmIzMTVmZTVkOGQ0ODA0OGU1ODQyZjY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
QEAgLTI5MCw2ICsyOTAsNyBAQCBVSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKIFVJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKIFVJUHJvY2Vzcy9TdXNwZW5kZWRQ
YWdlUHJveHkuY3BwCiBVSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuY3BwCitVSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKIFVJUHJvY2Vzcy9U
ZXh0Q2hlY2tlci5jcHAKIFVJUHJvY2Vzcy9UZXh0Q2hlY2tlckNvbXBsZXRpb24uY3BwCiBVSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuY3BwCkBAIC00MDMsNiArNDA0LDcg
QEAgVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tQ
cm90ZWN0aW9uU3BhY2UuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdl
ci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25TdGF0ZVJlZi5jcHAKK1VJUHJvY2Vzcy9B
UEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcAogVUlQcm9jZXNz
L0FQSS9DL1dLVGV4dENoZWNrZXIuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENv
bnRyb2xsZXJSZWYuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudEV4dGVuc2lvblN0
b3JlUmVmLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDA4NGQ1MTM1MmQ0NGE0NTA5NDli
M2ZiZDFkMWQ3NjEzNWZiMmJlYjIuLjYzYmQ0MGMzZWY2MDFlZTE0OTRhMWI0NzE0YWNlMGUxZmEx
NzQ4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTM3MywxMiArMzczLDE0IEBAIFVJUHJv
Y2Vzcy9Db2NvYS9HbG9iYWxGaW5kSW5QYWdlU3RhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9JY29u
TG9hZGluZ0RlbGVnYXRlLm1tCiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50Lm1tCiBVSVByb2Nlc3MvQ29jb2EvTWVkaWFVdGlsaXRpZXMubW0KK1VJUHJv
Y2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KIFVJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1t
CiBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCiBVSVByb2Nl
c3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9TYWZlQnJv
d3NpbmdXYXJuaW5nQ29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9TZXNzaW9uU3RhdGVDb2Rpbmcu
bW0KK1VJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyQ29j
b2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCiBV
SVByb2Nlc3MvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlci5tbQogVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgK
aW5kZXggYWE3ZDg5YzAxZTczNTIwY2UzZWUwNDIyNmI5YWU4NTk3MGJmYWE2ZS4uYjJkZmYyOTgz
ZWUwOThhZGJjOTI3MTgxNWM0MmFiNmFkNmQ0MDQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTIwMiw2ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIH0KIAor
ICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIEFQ
STo6U2VjdXJpdHlPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQogfTsKIAogfSAvLyBu
YW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0FQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCmlu
ZGV4IGI1MmM0NGJhZWE5YWNmOWZjMDMzMmQ1YTlmMzczNTZlOWQyMzg2MjkuLjE4Y2JmZDViNzRl
Yjg3NzBhNTc4ZjE1YzhhMDE2MTQ5OTAyMTQ1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC03OSw2ICs3OSw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9u
RGVjaXNpb25MaXN0ZW5lcjsKIGNsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7
CitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazsKIGNsYXNzIFVzZXJN
ZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OwogY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eTsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKQEAgLTE1Miw2ICsxNTMsNyBAQCBX
S19BRERfQVBJX01BUFBJTkcoV0tQcmVmZXJlbmNlc1JlZiwgV2ViUHJlZmVyZW5jZXMpCiBXS19B
RERfQVBJX01BUFBJTkcoV0tQcm90ZWN0aW9uU3BhY2VSZWYsIFdlYlByb3RlY3Rpb25TcGFjZSkK
IFdLX0FERF9BUElfTUFQUElORyhXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyUmVmLCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcikKIFdLX0FERF9BUElfTUFQUElORyhXS1Nl
c3Npb25TdGF0ZVJlZiwgQVBJOjpTZXNzaW9uU3RhdGUpCitXS19BRERfQVBJX01BUFBJTkcoV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiwgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2spCiBXS19BRERfQVBJX01BUFBJTkcoV0tUZXh0Q2hlY2tlclJlZiwg
V2ViVGV4dENoZWNrZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyQ29udGVudENvbnRyb2xs
ZXJSZWYsIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlZiwgQVBJOjpDb250ZW50UnVsZUxpc3RTdG9y
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDQzNjljZGQ4
MjViNTE1N2ZiMDEwYzNmODFhZTc4ZTY2MGRhYTc0ZmMuLjExYzY2YmY0Mjg0OTMyODE1ZDdlZmFh
NGJhZTM5MDZlZjcyMzQ1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcApAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNsdWRl
ICJQbHVnaW5JbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIlByaW50SW5mby5oIgorI2luY2x1ZGUg
IlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKICNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKICNpbmNsdWRlICJXS1BhZ2VQb2xpY3lDbGllbnRJbnRlcm5hbC5oIgogI2luY2x1ZGUg
IldLUGFnZVJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzSW50ZXJuYWwuaCIKQEAgLTExNSw3ICsxMTYs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tQYWdlUG9saWN5Q2xpZW50QmFz
ZT4gewogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVVJQ2xpZW50
QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1BhZ2VVSUNsaWVudFYwLCBXS1BhZ2VV
SUNsaWVudFYxLCBXS1BhZ2VVSUNsaWVudFYyLCBXS1BhZ2VVSUNsaWVudFYzLCBXS1BhZ2VVSUNs
aWVudFY0LCBXS1BhZ2VVSUNsaWVudFY1LCBXS1BhZ2VVSUNsaWVudFY2LCBXS1BhZ2VVSUNsaWVu
dFY3LCBXS1BhZ2VVSUNsaWVudFY4LCBXS1BhZ2VVSUNsaWVudFY5LCBXS1BhZ2VVSUNsaWVudFYx
MCwgV0tQYWdlVUlDbGllbnRWMTEsIFdLUGFnZVVJQ2xpZW50VjEyLCBXS1BhZ2VVSUNsaWVudFYx
MywgV0tQYWdlVUlDbGllbnRWMTQ+IFZlcnNpb25zOworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxX
S1BhZ2VVSUNsaWVudFYwLCBXS1BhZ2VVSUNsaWVudFYxLCBXS1BhZ2VVSUNsaWVudFYyLCBXS1Bh
Z2VVSUNsaWVudFYzLCBXS1BhZ2VVSUNsaWVudFY0LCBXS1BhZ2VVSUNsaWVudFY1LCBXS1BhZ2VV
SUNsaWVudFY2LCBXS1BhZ2VVSUNsaWVudFY3LCBXS1BhZ2VVSUNsaWVudFY4LCBXS1BhZ2VVSUNs
aWVudFY5LCBXS1BhZ2VVSUNsaWVudFYxMCwgV0tQYWdlVUlDbGllbnRWMTEsIFdLUGFnZVVJQ2xp
ZW50VjEyLCBXS1BhZ2VVSUNsaWVudFYxMywgV0tQYWdlVUlDbGllbnRWMTQsIFdLUGFnZVVJQ2xp
ZW50VjE1PiBWZXJzaW9uczsKIH07CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTIx
MTAsNiArMjExMSwxMyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpQcmVz
ZW50ZWQpOwogICAgICAgICB9CiAjZW5kaWYKKyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJ
OjpTZWN1cml0eU9yaWdpbiYgcmVxdWVzdGluZ09yaWdpbiwgQVBJOjpTZWN1cml0eU9yaWdpbiYg
dG9wT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBv
bGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkoJnJlcXVlc3Rp
bmdPcmlnaW4pLCB0b0FQSSgmdG9wT3JpZ2luKSwgdG9BUEkoU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkucHRyKCkp
KTsKKyAgICAgICAgfQogICAgIH07CiAKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFVJQ2xpZW50
KG1ha2VVbmlxdWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaAppbmRleCBiNjM4ODE1NWNkMzAzNmU2NjYxMTBm
MTkyNTYxNmFmZDM3ZTg2OGJhLi43Y2Q4ZmQwZDk4NGNmZDlmNGQ0NGJmZTgzZDg1ZGIxYjU2MTc1
OThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50
LmgKQEAgLTEzNiw2ICsxMzYsNyBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZXNpZ25JbnB1
dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2VDYWxsYmFjaykoV0tQYQogdHlwZWRlZiBi
b29sICgqV0tQYWdlU2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0Nh
bGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdp
biwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiAKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVJ1bldl
YkF1dGhlbnRpY2F0aW9uUGFuZWxDYWxsYmFjaykoKTsKK3R5cGVkZWYgdm9pZCAoKldLUGFnZURl
Y2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayko
V0tQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYgcmVxdWVzdGluZ09yaWdpbiwgV0tT
ZWN1cml0eU9yaWdpblJlZiB0b3BPcmlnaW4sIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2tSZWYgY2FsbGJhY2spOwogCiAvLyBEZXByZWNhdGVkCiB0eXBlZGVmIFdLUGFnZVJl
ZiAoKldLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwKShX
S1BhZ2VSZWYgcGFnZSwgV0tEaWN0aW9uYXJ5UmVmIGZlYXR1cmVzLCBXS0V2ZW50TW9kaWZpZXJz
IG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKQEAgLTEzNTMsNiArMTM1NCwxMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdl
VUlDbGllbnRWMTQgewogICAgIFdLUGFnZVJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDsK
IH0gV0tQYWdlVUlDbGllbnRWMTQ7CiAKK3R5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjE1
IHsKKyAgICBXS1BhZ2VVSUNsaWVudEJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJhc2U7CisKKyAgICAvLyBWZXJzaW9uIDAuCisgICAgV0tQYWdl
Q3JlYXRlTmV3UGFnZUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgICAg
ICAgICBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlVUlD
bGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaG93UGFnZTsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlOworICAgIFdLUGFnZVRha2VGb2N1c0Nh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZUZv
Y3VzOworICAgIFdLUGFnZUZvY3VzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9jdXM7CisgICAgV0tQYWdlVW5mb2N1c0NhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmZvY3VzOworICAg
IFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAg
ICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7Cisg
ICAgV0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0
aFYwICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNl
V2l0aFYwICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0
aFYwOworICAgIFdLUGFnZVNldFN0YXR1c1RleHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdHVzVGV4dDsKKyAgICBXS1BhZ2VNb3VzZURpZE1v
dmVPdmVyRWxlbWVudENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgIG1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlTWlz
c2luZ1BsdWdpbkJ1dHRvbkNsaWNrZWRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAg
ICBtaXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAg
IFdLUGFnZURpZE5vdEhhbmRsZUtleUV2ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkTm90SGFuZGxlS2V5RXZlbnQ7CisgICAgV0tQYWdlRGlkTm90SGFuZGxl
V2hlZWxFdmVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWROb3RI
YW5kbGVXaGVlbEV2ZW50OworICAgIFdLUGFnZUdldFRvb2xiYXJzQXJlVmlzaWJsZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhcnNBcmVWaXNpYmxlOworICAg
IFdLUGFnZVNldFRvb2xiYXJzQXJlVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0VG9vbGJhcnNBcmVWaXNpYmxlOworICAgIFdLUGFnZUdldE1lbnVCYXJJ
c1Zpc2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudUJh
cklzVmlzaWJsZTsKKyAgICBXS1BhZ2VTZXRNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1lbnVCYXJJc1Zpc2libGU7CisgICAgV0tQ
YWdlR2V0U3RhdHVzQmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0dXNCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlU2V0U3RhdHVzQmFySXNWaXNp
YmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0dXNCYXJJ
c1Zpc2libGU7CisgICAgV0tQYWdlR2V0SXNSZXNpemFibGVDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Jlc2l6YWJsZTsKKyAgICBXS1BhZ2VTZXRJc1Jl
c2l6YWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dElzUmVzaXphYmxlOworICAgIFdLUGFnZUdldFdpbmRvd0ZyYW1lQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0V2luZG93RnJhbWU7CisgICAgV0tQYWdl
U2V0V2luZG93RnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRXaW5kb3dGcmFtZTsKKyAgICBXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWxDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY2ICAgIHJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbF9kZXByZWNhdGVkRm9yVXNlV2l0aFY2OworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRHJhdzsK
KyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhZ2VEaWRTY3JvbGw7CisgICAgV0tQYWdlRXhjZWVkZWREYXRhYmFz
ZVF1b3RhQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlZWRlZERh
dGFiYXNlUXVvdGE7CisgICAgV0tQYWdlUnVuT3BlblBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5PcGVuUGFuZWw7CisgICAgV0tQYWdlRGVj
aWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAg
ICBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFn
ZUhlYWRlckhlaWdodENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhZGVySGVpZ2h0OworICAgIFdLUGFnZUZvb3RlckhlaWdodENhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVySGVpZ2h0OworICAgIFdL
UGFnZURyYXdIZWFkZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZHJhd0hlYWRlcjsKKyAgICBXS1BhZ2VEcmF3Rm9vdGVyQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdGb290ZXI7CisgICAgV0tQ
YWdlUHJpbnRGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcmludEZyYW1lOworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuTW9kYWw7CisgICAgdm9pZCog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnVzZWQxOyAvLyBVc2VkIHRvIGJlIGRpZENvbXBsZXRlUnViYmVyQmFuZEZvck1haW5G
cmFtZQorICAgIFdLUGFnZVNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXJDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcjsKKyAg
ICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNob3VsZEludGVycnVwdEphdmFTY3JpcHRfdW5hdmFpbGFibGU7CisKKyAg
ICAvLyBWZXJzaW9uIDEuCisgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjEgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjE7CisgICAgV0tQYWdlTW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDsKKyAg
ICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxi
YWNrICAgICAgICAgIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
OworICAgIFdLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrX2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjEgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjE7CisKKyAgICAvLyBWZXJzaW9uIDIuCisgICAgV0tQYWdlU2hvd0NvbG9y
UGlja2VyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93
Q29sb3JQaWNrZXI7CisgICAgV0tQYWdlSGlkZUNvbG9yUGlja2VyQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlQ29sb3JQaWNrZXI7CisgICAgV0tQYWdl
VW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQ7CisKKyAgICAvLyBWZXJzaW9uIDMu
CisgICAgV0tQYWdlUGlubmVkU3RhdGVEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwaW5uZWRTdGF0ZURpZENoYW5nZTsKKworICAgIC8vIFZlcnNpb24g
NC4KKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVudXNlZDI7IC8vIFVzZWQgdG8gYmUgZGlkQmVnaW5UcmFja2lu
Z1BvdGVudGlhbExvbmdNb3VzZVByZXNzLgorICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkMzsgLy8gVXNl
ZCB0byBiZSBkaWRSZWNvZ25pemVMb25nTW91c2VQcmVzcy4KKyAgICB2b2lkKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNl
ZDQ7IC8vIFVzZWQgdG8gYmUgZGlkQ2FuY2VsVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVz
cy4KKyAgICBXS1BhZ2VJc1BsYXlpbmdBdWRpb0RpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlOworCisgICAgLy8gVmVy
c2lvbiA1LgorICAgIFdLUGFnZURlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0Q2FsbGJhY2sgICAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3Q7CisgICAgV0tQYWdlRGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbkNhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRDbGlja0F1dG9GaWxsQnV0dG9uOworICAgIFdL
UGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAg
ICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CisgICAg
V0tQYWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1
ICAgICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1Owor
ICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0
aFY1ICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1
OworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRh
ZGF0YURpZENoYW5nZS4KKworICAgIC8vIFZlcnNpb24gNi4KKyAgICBXS1BhZ2VDcmVhdGVOZXdQ
YWdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZU5ld1BhZ2U7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnQ7CisgICAgV0tQYWdl
UnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBydW5KYXZhU2NyaXB0Q29uZmlybTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQ
cm9tcHQ7CisgICAgV0tDaGVja1VzZXJNZWRpYVBlcm1pc3Npb25DYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW47
CisKKyAgICAvLyBWZXJzaW9uIDcuCisgICAgV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWw7CisgICAgV0tGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmVDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmU7CisK
KyAgICAvLyBWZXJzaW9uIDguCisgICAgV0tSZXF1ZXN0UG9pbnRlckxvY2tDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0UG9pbnRlckxvY2s7Cisg
ICAgV0tEaWRMb3NlUG9pbnRlckxvY2tDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWRMb3NlUG9pbnRlckxvY2s7CisKKyAgICAvLyBWZXJzaW9uIDkuCisg
ICAgV0tIYW5kbGVBdXRvcGxheUV2ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoYW5kbGVBdXRvcGxheUV2ZW50OworCisgICAgLy8gVmVyc2lvbiAxMC4K
KyAgICBXS0hhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgIGhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlOworICAg
IFdLRGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZENhbGxi
YWNrICAgICAgICAgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdy
b3VuZDsKKworICAgIC8vIFZlcnNpb24gMTEuCisgICAgV0tQYWdlRGlkUmVzaWduSW5wdXRFbGVt
ZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlQ2FsbGJhY2sgICAgICAgICBkaWRSZXNpZ25JbnB1
dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2U7CisKKyAgICAvLyBWZXJzaW9uIDEyLgor
ICAgIFdLUGFnZVJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtOworCisgICAgLy8gVmVy
c2lvbiAxMy4KKyAgICBXS1BhZ2VTaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9u
QWNjZXNzQ2FsbGJhY2sgICAgICAgICAgIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRN
b3Rpb25BY2Nlc3M7CisKKyAgICAvLyBWZXJzaW9uIDE0LgorICAgIFdLUGFnZVJ1bldlYkF1dGhl
bnRpY2F0aW9uUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuV2Vi
QXV0aGVudGljYXRpb25QYW5lbDsKKworICAgIC8vIFZlcnNpb24gMTUuCisgICAgV0tQYWdlRGVj
aWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAg
ICBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAg
IAorfSBXS1BhZ2VVSUNsaWVudFYxNTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGNjOGY5YTM1ZGI4NDExZTAzODVhN2FlMTU0OWEzOWFmODEzMmVkNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjay5oIgorCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5o
IgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitX
S1R5cGVJRCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKCkK
K3sKKyAgICByZXR1cm4gdG9BUEkoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6
OkFQSVR5cGUpOworfQorCit2b2lkIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2tDb21wbGV0ZShXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIHNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLCBib29sIGdyYW50ZWQpCit7CisgICAgcmV0
dXJuIHRvSW1wbChzcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayktPmNvbXBsZXRl
KGdyYW50ZWQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmI4YWVhZmM2OTg0YmE5NmY1NDg5MmU3MzJhZmVhM2EwNjNjOWM3MmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorCisjaWZkZWYgX19j
cGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKHZvaWQpOworCitXS19F
WFBPUlQgdm9pZCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUo
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBzcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFjaywgYm9vbCBncmFudGVkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVz
Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VJRGVsZWdhdGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IGQxZWFlMjAxZTY1NDJmNGZhYjYwMTk4MGRj
NjYxMjQ5MTMxOTc5M2YuLjVlYWI0NjU3OWY5OWZhNmY2MzMxNmE0YzA1NDQyMmQ2M2E2ZmQ5MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdh
dGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlE
ZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTUyLDYgKzE1Miw4IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7
CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2lsbFNoYXJlQWN0aXZp
dHlJdGVtczooTlNBcnJheSAqKWFjdGl2aXR5SXRlbXMgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tf
SU9TX1RCQSkpOwogCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVl
c3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4g
KilyZXF1ZXN0aW5nT3JpZ2luIHRvcE9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXRvcE9yaWdp
biBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgYXV0aG9yaXplZCkpZGVjaXNpb25IYW5k
bGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CisKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAKIC0gKEJPT0wpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgc2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9yRWxlbWVudDooX1dLQWN0aXZh
dGVkRWxlbWVudEluZm8gKillbGVtZW50IFdLX0FQSV9BVkFJTEFCTEUoaW9zKDkuMCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRp
bGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25V
dGlsaXRpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzVjNTIyZmM0MzQwMzU4MjEyNGRjYWMzMWFlOTI2ZWY1
ODQ1YzkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZNZWRpYUZvcm1hdC5oPgor
I2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW1wb3J0IDx3dGYvRGVxdWUuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1l
ZGlhVHlwZShBVk1lZGlhVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6
ZWQpPiYmKTsKK3ZvaWQgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZXMoRGVxdWU8
QVZNZWRpYVR5cGU+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQpPiYm
KTsKK2Jvb2wgY2hlY2tBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGVzQW5kRmlsdGVyKERlcXVl
PEFWTWVkaWFUeXBlPiYgdHlwZXMpOworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGll
cy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxp
dGllcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZmM0YWJiN2E3Mzg3MzQyYjFkMzg4NjFhODM4Y2U2OWIxMTlk
OTk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVk
aWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oIgor
CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRp
b25Tb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCByZXF1ZXN0QVZDYXB0
dXJlQWNjZXNzRm9yTWVkaWFUeXBlKEFWTWVkaWFUeXBlIHR5cGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCBhdXRob3JpemVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxv
Y2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJP
T0wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChpc01haW5UaHJlYWQoKSkgewor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBhdXRob3JpemVkXSgpIG11dGFi
bGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgICAg
IH0pOworICAgIH0pOworICAgIFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgcmVxdWVz
dEFjY2Vzc0Zvck1lZGlhVHlwZTp0eXBlIGNvbXBsZXRpb25IYW5kbGVyOmRlY2lzaW9uSGFuZGxl
ci5nZXQoKV07Cit9CisKK3ZvaWQgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZXMo
RGVxdWU8QVZNZWRpYVR5cGU+JiB0eXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1
dGhvcml6ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICh0eXBlcy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvIHR5cGUgPSB0eXBlcy50YWtlRmlyc3QoKTsKKyAgICByZXF1ZXN0
QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlKHR5cGUsIFt0eXBlcywgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQk9PTCBhdXRob3JpemVkKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKCFhdXRob3JpemVkKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBy
ZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlcyh0eXBlcywgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCitib29sIGNoZWNrQVZDYXB0dXJlQWNjZXNzRm9y
TWVkaWFUeXBlc0FuZEZpbHRlcihEZXF1ZTxBVk1lZGlhVHlwZT4mIHR5cGVzKQoreworICAgIERl
cXVlPEFWTWVkaWFUeXBlPiBwZW5kaW5nVHlwZXM7CisgICAgd2hpbGUgKCF0eXBlcy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgYXV0byB0eXBlID0gdHlwZXMudGFrZUZpcnN0KCk7CisgICAgICAgIGF1
dG8gYXV0aG9yaXphdGlvblN0YXR1cyA9IFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkg
YXV0aG9yaXphdGlvblN0YXR1c0Zvck1lZGlhVHlwZTp0eXBlXTsKKyAgICAgICAgaWYgKGF1dGhv
cml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IGF1dGhvcml6
YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZB
dXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZCkKKyAgICAgICAgICAgIHBlbmRpbmdUeXBl
cy5hcHBlbmQodHlwZSk7CisgICAgfQorCisgICAgdHlwZXMgPSBwZW5kaW5nVHlwZXM7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4MjkyMDk4MmI1MDlj
NDg3MGQwZDQ2MTRhZWQ5NDM0YTQ1MzEzZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyQ29j
b2EubW0KQEAgLTAsMCArMSwyNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIKKworI2ltcG9y
dCAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKKyNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCisjaW1wb3J0
ICJNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMu
aCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+
CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CisKKyNpZiBIQVZFKFNQRUVD
SFJFQ09HTklaRVIpCisjaW1wb3J0IDxTcGVlY2gvU3BlZWNoLmg+CisKK1NPRlRfTElOS19GUkFN
RVdPUksoU3BlZWNoKQorU09GVF9MSU5LX0NMQVNTKFNwZWVjaCwgU0ZTcGVlY2hSZWNvZ25pemVy
KQorI2VuZGlmCisKKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpyZXF1ZXN0KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9udEhhbmRsZXIpCit7CisgICAgbV9yZXF1
ZXN0cy5hcHBlbmQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKFdU
Rk1vdmUob3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9udEhhbmRsZXIpKSk7CisgICAgaWYgKG1f
cmVxdWVzdHMuc2l6ZSgpID09IDEpCisgICAgICAgIHN0YXJ0TmV4dFJlcXVlc3QoKTsKK30KKwor
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydE5leHRSZXF1ZXN0
KCkKK3sKKyAgICBpZiAobV9yZXF1ZXN0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGNoZWNrU2FuZGJveFJlcXVpcmVtZW50KCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcjo6Y29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbiBkZWNpc2lvbikKK3sKKyAgICBBU1NFUlQo
IW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKyAgICBhdXRvIGN1cnJlbnRSZXF1ZXN0ID0gbV9yZXF1
ZXN0cy50YWtlRmlyc3QoKTsKKyAgICBjdXJyZW50UmVxdWVzdC0+Y29tcGxldGUoZGVjaXNpb24p
OworCisgICAgc3RhcnROZXh0UmVxdWVzdCgpOworfQorCitzdGF0aWMgYm9vbCBwZXJmb3JtU2Fu
ZGJveENoZWNrKCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKGN1cnJlbnRQcm9jZXNz
SXNTYW5kYm94ZWQoKSAmJiAhIXNhbmRib3hfY2hlY2soZ2V0cGlkKCksICJkZXZpY2UtbWljcm9w
aG9uZSIsIFNBTkRCT1hfRklMVEVSX05PTkUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI6OmNoZWNrU2FuZGJveFJlcXVpcmVtZW50KCkKK3sKKyAgICBpZiAoIW1faXNT
YW5kYm94Q2hlY2tQYXNzZWQuaGFzVmFsdWUoKSkKKyAgICAgICAgbV9pc1NhbmRib3hDaGVja1Bh
c3NlZCA9IHBlcmZvcm1TYW5kYm94Q2hlY2soKTsKKworICAgIGlmICghbV9pc1NhbmRib3hDaGVj
a1Bhc3NlZCkgeworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGNoZWNrTWljcm9waG9uZUFjY2VzcygpOworfQorCit2b2lkIFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrTWljcm9waG9uZUFjY2VzcygpCit7Cisg
ICAgaWYgKG1fcGFnZS5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQoKSkg
eworICAgICAgICBjaGVja0FuZFJlcXVlc3RVc2VyUGVybWlzc2lvbkZvck9yaWdpbigpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhv
cml6ZWQuaGFzVmFsdWUoKSkgeworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikgJiYgVVNFKEFW
Rk9VTkRBVElPTikKKyAgICAgICAgYXV0byBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9
IFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c0Zvck1l
ZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvXTsKKyAgICAgICAgaWYgKG1pY3JvcGhvbmVBdXRob3Jp
emF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQpCisgICAgICAg
ICAgICBtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQgPSB0cnVlOworICAgICAgICBpZiAo
bWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzRGVu
aWVkIHx8IG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0
YXR1c1Jlc3RyaWN0ZWQpCisgICAgICAgICAgICBtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6
ZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09
IEFWQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQpIHsKKyAgICAgICAgICAgIGJvb2wg
aGFzRGVzY3JpcHRpb25TdHJpbmcgPSBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5k
bGUubWFpbkJ1bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRp
b24iXSkubGVuZ3RoOworICAgICAgICAgICAgaWYgKCFoYXNEZXNjcmlwdGlvblN0cmluZykKKyAg
ICAgICAgICAgICAgICBtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQgPSBmYWxzZTsKKyAg
ICAgICAgfQorI2Vsc2UKKyAgICAgICAgbV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkID0g
dHJ1ZTsKKyNlbmRpZgorICAgIH0KKworICAgIGlmIChtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhv
cml6ZWQuaGFzVmFsdWUoKSAmJiAhbV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkLnZhbHVl
KCkpIHsKKyAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpOworfQorCit2b2lk
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU3BlZWNoUmVjb2duaXRp
b25TZXJ2aWNlQWNjZXNzKCkKK3sKKyAgICBpZiAoIW1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZp
Y2VBY2Nlc3NBdXRob3JpemVkLmhhc1ZhbHVlKCkpIHsKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTkla
RVIpICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAgICAgIGF1dG8gc3BlZWNoUmVjb2duaXplckF1
dGhvcml6YXRpb25TdGF0dXMgPSBbZ2V0U0ZTcGVlY2hSZWNvZ25pemVyQ2xhc3MoKSBhdXRob3Jp
emF0aW9uU3RhdHVzXTsKKyAgICAgICAgaWYgKHNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9u
U3RhdHVzID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVk
KQorICAgICAgICAgICAgbV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6
ZWQgPSB0cnVlOworICAgICAgICBpZiAoc3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0
dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQgfHwg
c3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVy
QXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCkKKyAgICAgICAgICAgIG1faXNTcGVlY2hSZWNvZ25p
dGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkID0gZmFsc2U7CisgICAgICAgIGlmIChzcGVlY2hS
ZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1cyA9PSBTRlNwZWVjaFJlY29nbml6ZXJBdXRob3Jp
emF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZCkgeworICAgICAgICAgICAgYm9vbCBoYXNEZXNjcmlw
dGlvblN0cmluZyA9IGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihOU0J1bmRsZS5tYWluQnVu
ZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNTcGVlY2hSZWNvZ25pdGlvblVzYWdlRGVzY3JpcHRpb24i
XSkubGVuZ3RoOworICAgICAgICAgICAgaWYgKCFoYXNEZXNjcmlwdGlvblN0cmluZykKKyAgICAg
ICAgICAgICAgICBtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCA9
IGZhbHNlOworICAgICAgICB9CisjZWxzZQorICAgICAgICBtX2lzU3BlZWNoUmVjb2duaXRpb25T
ZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCA9IHRydWU7CisjZW5kaWYKKyAgICB9CisKKyAgICBpZiAo
bV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkLmhhc1ZhbHVlKCkgJiYgIW1faXNNaWNyb3Bo
b25lQWNjZXNzQXV0aG9yaXplZC52YWx1ZSgpKSB7CisgICAgICAgIGNvbXBsZXRlQ3VycmVudFJl
cXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2hlY2tBbmRSZXF1ZXN0VXNlclBlcm1p
c3Npb25Gb3JPcmlnaW4oKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpjaGVja0FuZFJlcXVlc3RVc2VyUGVybWlzc2lvbkZvck9yaWdpbigpCit7CisgICAg
QVNTRVJUKCFtX3JlcXVlc3RzLmlzRW1wdHkoKSk7CisgICAgYXV0byYgY3VycmVudFJlcXVlc3Qg
PSBtX3JlcXVlc3RzLmZpcnN0KCk7CisKKyAgICBhdXRvIGNsaWVudE9yaWdpbiA9IGN1cnJlbnRS
ZXF1ZXN0LT5vcmlnaW4oKTsKKyAgICBpZiAobV9vcmlnaW5QZXJtaXNzaW9uTWFwLmNvbnRhaW5z
KGNsaWVudE9yaWdpbi50b3BPcmlnaW4pKSB7CisgICAgICAgIGJvb2wgZ3JhbnRlZCA9IG1fb3Jp
Z2luUGVybWlzc2lvbk1hcC5nZXQoY2xpZW50T3JpZ2luLnRvcE9yaWdpbik7CisgICAgICAgIGNv
bXBsZXRlQ3VycmVudFJlcXVlc3QoZ3JhbnRlZCA/IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3Q6OkRlY2lzaW9uOjpBbGxvdyA6IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1
dG8gZGVjaXNpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
XShib29sIGdyYW50ZWQpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBtX29yaWdpblBlcm1pc3Npb25NYXAuc2V0KG1fcmVxdWVzdHMuZmly
c3QoKS0+b3JpZ2luKCkudG9wT3JpZ2luLCBncmFudGVkKTsKKyAgICAgICAgaWYgKCFncmFudGVk
KSB7CisgICAgICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIHJlcXVlc3RNaWNyb3Bob25lQWNjZXNzSWZOZWVkZWQoKTsK
KyAgICB9OworCisgICAgYXV0byByZXF1ZXN0aW5nT3JpZ2luID0gY2xpZW50T3JpZ2luLmNsaWVu
dE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8gdG9wT3JpZ2luID1jbGllbnRPcmln
aW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVj
aWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsIEFQ
STo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXF1ZXN0aW5nT3JpZ2luLmdldCgpKS5nZXQoKSwg
QVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRvcE9yaWdpbi5nZXQoKSkuZ2V0KCksIFdURk1v
dmUoZGVjaXNpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6cmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3NJZk5lZWRlZCgpCit7CisjaWYgSEFW
RShTUEVFQ0hSRUNPR05JWkVSKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAgIGlmICghbV9pc01p
Y3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkLmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgcmVxdWVzdEFW
Q2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZShBVk1lZGlhVHlwZUF1ZGlvLCBbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYm9vbCBhdXRob3JpemVkKSB7CisgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYg
KCFhdXRob3JpemVkKSB7CisgICAgICAgICAgICAgICAgbV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRo
b3JpemVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6RGVueSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2lzTWlj
cm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQgPSB0cnVlOworICAgICAgICAgICAgcmVxdWVzdFNwZWVj
aFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0lmTmVlZGVkKCk7CisgICAgICAgIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBBU1NFUlQobV9pc01pY3JvcGhvbmVBY2Nl
c3NBdXRob3JpemVkLmhhc1ZhbHVlKCkpOworICAgIEFTU0VSVChtX2lzTWljcm9waG9uZUFjY2Vz
c0F1dGhvcml6ZWQudmFsdWUoKSk7CisKKyAgICByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2
aWNlQWNjZXNzSWZOZWVkZWQoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyOjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzSWZOZWVkZWQo
KQoreworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKyAgICBpZiAoIW1faXNTcGVlY2hSZWNv
Z25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkLmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgYXV0byBtYWluVGhyZWFkSGFuZGxlciA9IChb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oU0ZTcGVlY2hSZWNvZ25pemVyQXV0
aG9yaXphdGlvblN0YXR1cyBzdGF0dXMpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChzdGF0dXMg
IT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQpIHsKKyAg
ICAgICAgICAgICAgICBtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXpl
ZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9pc1NwZWVjaFJl
Y29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQgPSB0cnVlOworICAgICAgICAgICAgY29t
cGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpE
ZWNpc2lvbjo6QWxsb3cpOworICAgICAgICB9KTsKKyAgICAgICAgYXV0byBkZWNpc2lvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoW21haW5UaHJlYWRIYW5kbGVyID0gV1RGTW92ZShtYWluVGhyZWFk
SGFuZGxlcildKFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFttYWluVGhyZWFkSGFuZGxlciA9IFdURk1vdmUobWFpblRo
cmVhZEhhbmRsZXIpLCBzdGF0dXNdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIG1h
aW5UaHJlYWRIYW5kbGVyKHN0YXR1cyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWFpblRocmVhZEhhbmRs
ZXIoc3RhdHVzKTsKKyAgICAgICAgfSk7CisgICAgICAgIFtnZXRTRlNwZWVjaFJlY29nbml6ZXJD
bGFzcygpIHJlcXVlc3RBdXRob3JpemF0aW9uOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIEFTU0VSVChtX2lzU3BlZWNoUmVjb2du
aXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZC5oYXNWYWx1ZSgpKTsKKyAgICBBU1NFUlQobV9p
c1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQudmFsdWUoKSk7CisKKyAg
ICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3Q6OkRlY2lzaW9uOjpBbGxvdyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggOGEwOTQ3NDVjMWYy
NGJlMTA1ZGJiMDJhYjkxZTMwN2IzMWQ0ODZiMS4uZWFkNGQ1N2VlMGEzM2E2YjNlZWJiZGVjNDNm
OGI3Mzk1NWQ5NzYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUuaApAQCAtMTYxLDYgKzE2MSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQl9BVVRITikK
ICAgICAgICAgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQ
STo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYkZyYW1lUHJveHkmLCBGcmFtZUluZm9EYXRh
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+
JiYpIGZpbmFsOwogI2VuZGlmCisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5T3Jp
Z2luJiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpIGZpbmFsOwogCiAgICAgICAgIFVJRGVsZWdhdGUmIG1fdWlEZWxlZ2F0ZTsKICAgICB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggZDAzMzhm
OGQ2ZTNiOWExM2RmMmFmMTUzYWNiNWRlYjM4ZTFmY2Q5Yi4uMTkzNDU2YjFjMDc4Njc5Njk2MTk0
YjM1MzFiYzY1ZGM0MTU1MTllOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLm1tCkBAIC0xMzMyLDQgKzEzMzIsMjYgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6aW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRT
aXoKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+PihkZWxlZ2F0ZSkg
X3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVD
aGFuZ2VkOm5ld1NpemVdOwogfQogCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQ
b2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFn
ZVByb3h5JiBwYWdlLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiByZXF1ZXN0aW5nT3JpZ2luLCBBUEk6
OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IChpZCA8V0tVSURl
bGVnYXRlUHJpdmF0ZT4pbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFk
ZWxlZ2F0ZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmln
aW46dG9wT3JpZ2luOmRlY2lzaW9uSGFuZGxlcjopXSkgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNoZWNrZXIg
PSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUsIEBzZWxlY3Rv
cihfd2ViVmlldzpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOnRv
cE9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgW2RlbGVnYXRlIF93ZWJWaWV3Om1fdWlE
ZWxlZ2F0ZS5tX3dlYlZpZXcgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkZvck9y
aWdpbjp3cmFwcGVyKHJlcXVlc3RpbmdPcmlnaW4pIHRvcE9yaWdpbjp3cmFwcGVyKHRvcE9yaWdp
bikgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6
OmV4Y2hhbmdlKGNvbXBsZXRpb25IYW5kbGVyLCB7IH0pLCBjaGVja2VyID0gV1RGTW92ZShjaGVj
a2VyKV0gKEJPT0wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChjaGVja2VyLT5jb21w
bGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGdyYW50ZWQpOworICAgIH0pLmdldCgpXTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tCmluZGV4
IDk5NzU3NWRlMDIxNmE5YzBjZDc2YWZjYjQxYzc2NDFkYjEzMTVhZmIuLjgxYjUxMGIyMjE1N2Uz
Y2I5NzE2M2Y0MDhhM2MwNDE3MjM4ZDQ2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5Lm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgiCiAKKyNp
bXBvcnQgIk1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxp
dGllcy5oIgogI2ltcG9ydCAiVENDU1BJLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKQEAg
LTEwOCwyMCArMTA5LDYgQEAgYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6cGVybWl0dGVkVG9DYXB0dXJlVmlkZW8oKQogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLXN0YXRpYyB2b2lkIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChCT09MIGF1dGhvcml6ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
LCBBVk1lZGlhVHlwZSB0eXBlKQotewotICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShC
T09MIGF1dGhvcml6ZWQpIG11dGFibGUgewotICAgICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7
Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBhdXRob3JpemVkXSgpIG11dGFibGUgewotICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQpOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
YXV0aG9yaXplZCk7Ci0gICAgfSk7Ci0gICAgW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3Mo
KSByZXF1ZXN0QWNjZXNzRm9yTWVkaWFUeXBlOnR5cGUgY29tcGxldGlvbkhhbmRsZXI6ZGVjaXNp
b25IYW5kbGVyLmdldCgpXTsKLX0KLQogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6cmVxdWVzdFN5c3RlbVZhbGlkYXRpb24oY29uc3QgV2ViUGFnZVByb3h5JiBw
YWdlLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JiByZXF1ZXN0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChwYWdlLnByZWZlcmVu
Y2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpKSB7CkBAIC0xMzAsMzYgKzExNywxNSBA
QCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lz
dGVtVmFsaWRhdGlvbihjb25zdCBXZWJQYQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBBZGQgVEND
IGVudGl0bGVtZW50IGNoZWNrIGZvciBzY3JlZW5zaGFyaW5nLgotICAgIGJvb2wgcmVxdWlyZXNB
dWRpb0NhcHR1cmUgPSByZXF1ZXN0LnJlcXVpcmVzQXVkaW9DYXB0dXJlKCk7Ci0gICAgYm9vbCBy
ZXF1aXJlc1ZpZGVvQ2FwdHVyZSA9IHJlcXVlc3QucmVxdWlyZXNWaWRlb0NhcHR1cmUoKTsKLQot
ICAgIGF1dG8gbWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPSAhcmVxdWlyZXNBdWRpb0Nh
cHR1cmUgPyBBVkF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkIDogW1BBTDo6Z2V0QVZDYXB0
dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOkFWTWVkaWFU
eXBlQXVkaW9dOwotICAgIGlmIChtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1
dGhvcml6YXRpb25TdGF0dXNEZW5pZWQgfHwgbWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMg
PT0gQVZBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkgewotICAgICAgICBjYWxsYmFjayhm
YWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIGNhbWVyYUF1dGhvcml6
YXRpb25TdGF0dXMgPSAhcmVxdWlyZXNWaWRlb0NhcHR1cmUgPyBBVkF1dGhvcml6YXRpb25TdGF0
dXNBdXRob3JpemVkIDogW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0
aW9uU3RhdHVzRm9yTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW9dOwotICAgIGlmIChjYW1lcmFB
dXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCB8fCBjYW1l
cmFBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQp
IHsKKyAgICBEZXF1ZTxBVk1lZGlhVHlwZT4gdHlwZXM7CisgICAgaWYgKHJlcXVlc3QucmVxdWly
ZXNBdWRpb0NhcHR1cmUoKSkKKyAgICAgICAgdHlwZXMuYXBwZW5kKEFWTWVkaWFUeXBlQXVkaW8p
OworICAgIGlmIChyZXF1ZXN0LnJlcXVpcmVzVmlkZW9DYXB0dXJlKCkpCisgICAgICAgIHR5cGVz
LmFwcGVuZChBVk1lZGlhVHlwZVZpZGVvKTsKKyAgICBpZiAoIWNoZWNrQVZDYXB0dXJlQWNjZXNz
Rm9yTWVkaWFUeXBlc0FuZEZpbHRlcih0eXBlcykpCiAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIGJvb2wgcmVxdWlyZXNWaWRlb1RDQ1Byb21w
dCA9IHJlcXVpcmVzVmlkZW9DYXB0dXJlICYmIGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPT0g
QVZBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDsKLSAgICBhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gcmVxdWlyZXNWaWRlb1RDQ1Byb21wdCA/IFtyZXF1ZXN0ID0gbWFrZVJlZihyZXF1
ZXN0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBpc09LKSBtdXRhYmxlIHsK
LSAgICAgICAgaWYgKCFpc09LKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vz
c0Zvck1lZGlhVHlwZShXVEZNb3ZlKGNhbGxiYWNrKSwgQVZNZWRpYVR5cGVWaWRlbyk7Ci0gICAg
fSA6IFdURk1vdmUoY2FsbGJhY2spOwotCi0gICAgYm9vbCByZXF1aXJlc0F1ZGlvVENDUHJvbXB0
ID0gcmVxdWlyZXNBdWRpb0NhcHR1cmUgJiYgbWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMg
PT0gQVZBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDsKLSAgICBpZiAoIXJlcXVpcmVz
QXVkaW9UQ0NQcm9tcHQpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlw
ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgQVZNZWRpYVR5cGVBdWRpbyk7CisgICAgcmVx
dWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZXModHlwZXMsIFdURk1vdmUoY2FsbGJhY2sp
KTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDg2
NjIzOGJhZmU4ZjA1YzE3YTIzZDZmOWNjOTlhMjEwMTRkZDkzMTAuLmNkMzAxNDFmY2VhNjIyMmRl
NWJhN2NmMWM2N2E5YTJmNjRkMDIwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC00MSw2ICs0MSwxMCBAQAog
I2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndp
bi9TYW5kYm94U1BJLmg+CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCAiQWNj
ZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMu
aD4KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmFmZDdm
Nzg5ZmI3YTMxMWQ4YTBiOTllMDYyYjlkYzUwNzFkZjNlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5j
cHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKFdlYlBhZ2VQcm94eSYgcGFnZSkKKyAgICA6IG1f
cGFnZShwYWdlKQoreworfQorCitTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcigpCit7CisgICAgZm9yIChhdXRvJiBy
ZXF1ZXN0IDogbV9yZXF1ZXN0cykKKyAgICAgICAgcmVxdWVzdC0+Y29tcGxldGUoU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOworfQorCisjaWYgIVBM
QVRGT1JNKENPQ09BKQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6
OnJlcXVlc3QoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1
ZSk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnRO
ZXh0UmVxdWVzdCgpCit7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcjo6Y29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0OjpEZWNpc2lvbikKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyOjpjaGVja1NhbmRib3hSZXF1aXJlbWVudCgpCit7Cit9CisKK3ZvaWQgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKCkKK3sK
K30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1NwZWVj
aFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpCit7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3NJZk5lZWRlZCgpCit7
Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdFNw
ZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0lmTmVlZGVkKCkKK3sKK30KKwordm9pZCBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja0FuZFJlcXVlc3RVc2VyUGVybWlz
c2lvbkZvck9yaWdpbigpCit7Cit9CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3NDQ0YTAyZDBjZjE5OWVhMGVl
OWRhODFkZDA4ZmY4NzVlY2M2YTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgKQEAgLTAsMCArMSw2
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdl
UHJveHk7CisKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcj4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoV2ViUGFnZVByb3h5Jik7CisgICAgflNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoKTsKKyAgICB2b2lkIHJlcXVlc3QoV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCitw
cml2YXRlOgorICAgIHZvaWQgc3RhcnROZXh0UmVxdWVzdCgpOworICAgIHZvaWQgY29tcGxldGVD
dXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lv
bik7CisgICAgdm9pZCBwcmVjaGVjaygpOworICAgIHZvaWQgY2hlY2tTYW5kYm94UmVxdWlyZW1l
bnQoKTsKKyAgICB2b2lkIGNoZWNrTWljcm9waG9uZUFjY2VzcygpOworICAgIHZvaWQgY2hlY2tT
cGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKKyAgICB2b2lkIHJlcXVlc3RNaWNyb3Bo
b25lQWNjZXNzSWZOZWVkZWQoKTsKKyAgICB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNl
cnZpY2VBY2Nlc3NJZk5lZWRlZCgpOworICAgIHZvaWQgY2hlY2tBbmRSZXF1ZXN0VXNlclBlcm1p
c3Npb25Gb3JPcmlnaW4oKTsKKworICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOworICAgIERlcXVl
PFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Pj4gbV9yZXF1ZXN0czsKKyAg
ICBPcHRpb25hbDxib29sPiBtX2lzU2FuZGJveENoZWNrUGFzc2VkOworICAgIE9wdGlvbmFsPGJv
b2w+IG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZDsKKyAgICBPcHRpb25hbDxib29sPiBt
X2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZDsKKyAgICAvLyBUb3Ag
b3JpZ2luIHRvIHBlcm1pc3Npb24uCisgICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEsIGJvb2w+IG1fb3JpZ2luUGVybWlzc2lvbk1hcDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MjE5YmM1ZTk4MGQ0
ODJmZmM1NTQ1YmQ2NGQ0YWM4ZTk2MWZiNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAs
MCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KKyNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0PiBjcmVhdGUoV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKSk7CisgICAgfQorCisgICAgZW51bSBjbGFzcyBEZWNpc2lvbiB7IERlbnks
IEFsbG93IH07CisgICAgdm9pZCBjb21wbGV0ZShEZWNpc2lvbiBkZWNpc2lvbikKKyAgICB7Cisg
ICAgICAgIGJvb2wgaXNBbGxvd2VkID0gZGVjaXNpb24gPT0gRGVjaXNpb246OkFsbG93OworICAg
ICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25I
YW5kbGVyLCB7IH0pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpc0FsbG93ZWQpOworICAg
IH0KKworICAgIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcmlnaW47IH0KKworcHJpdmF0ZToKKyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgOiBtX29yaWdp
bihvcmlnaW4pCisgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSkKKyAgICB7IH0KKworICAgIFdlYkNvcmU6OkNsaWVudE9yaWdpbiBtX29yaWdp
bjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX2NvbXBsZXRpb25IYW5kbGVy
OworfTsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sgOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjaz4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+IGNyZWF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2soV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBsZXRlKGJvb2wgZ3JhbnRlZCkg
eyBtX2NvbXBsZXRpb25IYW5kbGVyKGdyYW50ZWQpOyB9CisKK3ByaXZhdGU6CisgICAgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgIHsgfQorCisgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIuY3BwCmluZGV4IDljZTk3NGNmOWRhYTU2NTgyZWViY2ZhMDMwNjcwYjdhMzc1YmU3
MWUuLmU2NjljOTEzZjRkNDgyMDFkNzdkNzgxNWU0M2NiYmU5YTgxZDhkYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKQEAg
LTMyLDE1ICszMiwxNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYg
Y29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
CitTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmIHBl
cm1pc3Npb25DaGVja2VyKQogICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikp
CiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fcGVybWlzc2lvbkNoZWNr
ZXIoV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlcikpCiB7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8m
JiByZXF1ZXN0SW5mbykKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRl
bnRpZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1
bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9y
aWdpbikKIHsKLSAgICBhdXRvIHJlcXVlc3QgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3Q6OmNyZWF0ZShXVEZNb3ZlKHJlcXVlc3RJbmZvKSk7CisgICAgYXV0byByZXF1ZXN0ID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+KFNwZWVjaFJlY29n
bml0aW9uUmVxdWVzdEluZm8geyBjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGxhbmcpLCBjb250
aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzLCBXVEZNb3ZlKG9yaWdpbikg
fSk7CiAgICAgbV9wZW5kaW5nUmVxdWVzdHMuYXBwZW5kKFdURk1vdmUocmVxdWVzdCkpOwogCiAg
ICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7CkBAIC03Miw4ICs3Myw3IEBA
IHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkCiB7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QgJiYg
bV9jdXJyZW50UmVxdWVzdC0+Y2xpZW50SWRlbnRpZmllcigpID09IGNsaWVudElkZW50aWZpZXIp
IHsKICAgICAgICAgbV9jdXJyZW50UmVxdWVzdCA9IG51bGxwdHI7Ci0gICAgICAgIGF1dG8gdXBk
YXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7Ci0gICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6RGlkUmVj
ZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50aWZpZXIpOworICAgICAgICBzZW5kVXBkYXRlKGNs
aWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5k
KTsKIAogICAgICAgICBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtODQsMTMgKzg0LDEyIEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXI6OmFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkCiAK
IHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlbW92ZVBlbmRpbmdSZXF1ZXN0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRl
bnRpZmllcikKIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
PiB0YWtlblJlcXVlc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uUmVxdWVzdD4gdGFrZW5SZXF1ZXN0OwogICAgIGF1dG8gcGVuZGluZ1JlcXVlc3RzID0g
c3RkOjpleGNoYW5nZShtX3BlbmRpbmdSZXF1ZXN0cywgeyB9KTsKICAgICB3aGlsZSAoIXBlbmRp
bmdSZXF1ZXN0cy5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byByZXF1ZXN0ID0gcGVuZGluZ1Jl
cXVlc3RzLnRha2VGaXJzdCgpOwogICAgICAgICBpZiAocmVxdWVzdC0+Y2xpZW50SWRlbnRpZmll
cigpID09IGNsaWVudElkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGF1dG8gdXBkYXRlID0gV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7Ci0gICAgICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OkRpZFJlY2VpdmVV
cGRhdGUodXBkYXRlKSwgbV9pZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHNlbmRVcGRhdGUoY2xp
ZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQp
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgbV9wZW5kaW5nUmVx
dWVzdHMuYXBwZW5kKFdURk1vdmUocmVxdWVzdCkpOwpAQCAtMTA1LDEyICsxMDQsNTEgQEAgdm9p
ZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGkKICAgICB9CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6OnN0YXJ0UG9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3QmKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnRQb2Nlc3NpbmdSZXF1
ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkKIHsKKyAgICBt
X3Blcm1pc3Npb25DaGVja2VyKHJlcXVlc3QuY2xpZW50T3JpZ2luKCksIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWFrUmVxdWVzdCA9IG1ha2VXZWFrUHRyKHJlcXVlc3Qp
XShib29sIGdyYW50ZWQpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBpZiAoIXdlYWtSZXF1ZXN0KQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIEFTU0VSVChtX2N1cnJlbnRSZXF1ZXN0LmdldCgpID09IHdlYWtSZXF1ZXN0Lmdl
dCgpKTsKKyAgICAgICAgaWYgKCFncmFudGVkKSB7CisgICAgICAgICAgICBhdXRvIGVycm9yID0g
U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpOb3RB
bGxvd2VkLCAicGVybWlzc2lvbiBjaGVjayBmYWlscyJfcyB9OworICAgICAgICAgICAgc2VuZFVw
ZGF0ZSh3ZWFrUmVxdWVzdC0+Y2xpZW50SWRlbnRpZmllcigpLCBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OkVycm9yLCBlcnJvcik7CisgICAgICAgICAgICBtX2N1cnJlbnRS
ZXF1ZXN0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHByb2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJ
Zk5lZWRlZCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29u
dGludWVQcm9jZXNzaW5nUmVxdWVzdCgqd2Vha1JlcXVlc3QpOworICAgIH0pOworfQorCit2b2lk
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpCit7CisgICAgLy8gVE9ETzogc3RhcnQgY2Fw
dHVyaW5nIGF1ZGlvIGFuZCByZWNvZ25pemluZy4KIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6c3RvcFByb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdCYpCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzZW5kVXBkYXRlKFNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIHR5cGUsIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0
aW9uRXJyb3I+IGVycm9yLCBPcHRpb25hbDxWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRE
YXRhPj4gcmVzdWx0KQogeworICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlmaWVyLCB0eXBlKTsKKyAgICBpZiAodHlw
ZSA9PSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yKQorICAgICAgICB1cGRhdGUg
PSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRl
bnRpZmllciwgKmVycm9yKTsKKyAgICBpZiAodHlwZSA9PSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZVR5cGU6OlJlc3VsdCkKKyAgICAgICAgdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGU6OmNyZWF0ZVJlc3VsdChjbGllbnRJZGVudGlmaWVyLCAqcmVzdWx0KTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OkRpZFJlY2VpdmVV
cGRhdGUodXBkYXRlKSwgbV9pZGVudGlmaWVyKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6c3RvcFByb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICAvLyBUT0RPOiBzdG9wIGNhcHR1cmluZyBhdWRpbyBh
bmQgZmluYWxpemluZyByZWNvZ25pdGlvbiByZXN1bHQgd2l0aCBjYXB0dXJlZCBhdWRpby4KKyAg
ICBzZW5kVXBkYXRlKHJlcXVlc3QuY2xpZW50SWRlbnRpZmllcigpLCBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGU6Ok5vTWF0Y2gpOworICAgIHNlbmRVcGRhdGUocmVxdWVzdC5j
bGllbnRJZGVudGlmaWVyKCksIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6
RW5kKTsKKyAgICBBU1NFUlQobV9jdXJyZW50UmVxdWVzdC5nZXQoKSA9PSAmcmVxdWVzdCk7Cisg
ICAgbV9jdXJyZW50UmVxdWVzdCA9IG51bGxwdHI7CisgICAgcHJvY2Vzc05leHRQZW5kaW5nUmVx
dWVzdElmTmVlZGVkKCk7CiB9CiAKIElQQzo6Q29ubmVjdGlvbiogU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCmluZGV4IDdhYTI0MTYzOGI5
YzM1MTQ5NjY5ODQ0MzJkYmM1MzBkZjg0ODRhMzcuLjMzODRlMGIwZDZhZWEzMmJlNDhkN2VjNmVi
NzFkNGVjMDQzMDExNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVj
aFJlY29nbml0aW9uU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIuaApAQCAtMjgsMjEgKzI4LDI5IEBACiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NwZWVjaFJlY29nbml0aW9u
RXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhLmg+CiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2VudW0gY2xhc3MgU3BlZWNo
UmVjb2duaXRpb25VcGRhdGVUeXBlOworc3RydWN0IENsaWVudE9yaWdpbjsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIAogdXNpbmcgU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyID0gV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI7Cit1c2lu
ZyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyID0gRnVuY3Rpb248dm9pZChXZWJD
b3JlOjpDbGllbnRPcmlnaW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik+Owog
CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJp
dmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllcik7CisgICAgU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXJJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYpOwogCi0g
ICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYpOwor
ICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1S
ZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYm
KTsKICAgICB2b2lkIHN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcik7CiAgICAgdm9pZCBhYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKICAgICB2b2lkIGludmFsaWRhdGUoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CkBAIC01MSw5
ICs1OSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElm
TmVlZGVkKCk7CiAgICAgdm9pZCByZW1vdmVQZW5kaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKIAotICAgIC8vIFRPRE86IGlt
cGxlbWVudCB0aGVzZS4KICAgICB2b2lkIHN0YXJ0UG9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKKyAgICB2b2lkIGNvbnRpbnVlUHJvY2Vzc2luZ1Jl
cXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBzdG9w
UHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7Cisg
ICAgdm9pZCBzZW5kVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSwgT3B0
aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gPSBXVEY6Om51bGxvcHQsIE9w
dGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PiA9IFdU
Rjo6bnVsbG9wdCk7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRl
OwpAQCAtNjQsOCArNzMsOSBAQCBwcml2YXRlOgogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4g
bV9jb25uZWN0aW9uOwogICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7Ci0gICAgRGVxdWU8UmVmPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dD4+IG1fcGVuZGluZ1JlcXVlc3RzOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3Q+IG1fY3VycmVudFJlcXVlc3Q7CisgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4+IG1fcGVuZGluZ1JlcXVlc3RzOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IG1f
Y3VycmVudFJlcXVlc3Q7CisgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciBt
X3Blcm1pc3Npb25DaGVja2VyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVy
Lm1lc3NhZ2VzLmluCmluZGV4IGUzMWJlZmIwOTVhZDg4ZGFkYzMwZjA5OTVjNTdlNDE1MzczZjEy
ZjQuLmEyOGI5MjFjYjk2NGFmYWYyZmYyMmM5MTZiYmU0NmU4Mjk5MTMyOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVy
Lm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KICAKICBtZXNzYWdlcyAtPiBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlciBOb3RSZWZDb3VudGVkIHsKLSAgICBTdGFydChzdHJ1Y3QgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyBpbmZvKQorICAgIFN0YXJ0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmll
ciwgU3RyaW5nIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWlu
dDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdp
bikKICAgICBTdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBBYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgSW52YWxpZGF0ZShX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50
aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjNjYw
ZTU2NmIwOGRkMzY3OTEzZDIyNDUwNmJkZjFlZGYwMGQ1ZDg3Li5hNzQ0MGQ1MzRmNzJjM2FjMWI1
ZjBmZTllNjg1MTY3ZTQxYmVjNDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTg2LDYgKzg2LDcgQEAKICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94
eS5oIgogI2luY2x1ZGUgIlNhZmVCcm93c2luZ1dhcm5pbmcuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZS5oIgog
I2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgpA
QCAtMTAxNzMsNiArMTAxNzQsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZp
dHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoKQogICAgIH0pOwogfQogCit2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihXZWJDb3JlOjpDbGllbnRPcmln
aW4mJiBjbGllbnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIpCisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciA9IG1h
a2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcj4oKnRoaXMpOworCisg
ICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLT5yZXF1ZXN0KFdURk1vdmUo
Y2xpZW50T3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2NlZmJmYzY5NDVlZGZlNDNhZTU2YzJk
NTY0YzBlODFlOTViYjRhNi4uY2UxMjAxMjgwYTJjNTZjODU0NWUxZjJkMzZiODk5ODZhNDJhMzY2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTMwNSw2ICszMDUs
NyBAQCBjbGFzcyBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE7CiBjbGFz
cyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHk7CiBjbGFzcyBTZWNLZXlQcm94eVN0b3JlOworY2xhc3MgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjsKIGNsYXNzIFVzZXJEYXRhOwogY2xhc3MgVmlld1NuYXBz
aG90OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKQEAgLTE4MTksNiArMTgyMCw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5KFNlY29uZHMgY2FwdHVy
ZVJlcG9ydGluZ0RlbGF5KSB7IG1fbWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkgPSBjYXB0dXJl
UmVwb3J0aW5nRGVsYXk7IH0KICAgICBzaXplX3Qgc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVy
KCkgeyByZXR1cm4gbV9zdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXI7IH0KIAorICAgIHZvaWQg
cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihXZWJDb3JlOjpDbGllbnRPcmlnaW4m
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKIHByaXZhdGU6CiAgICAgV2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTI4ODgs
NiArMjg5MSw4IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fc3VzcGVuZE1lZGlhUGxheWJhY2tD
b3VudGVyIHsgMCB9OwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9u
PiBtX25ld1BhZ2VOYXZpZ2F0aW9uQWRDbGlja0F0dHJpYnV0aW9uOworCisgICAgc3RkOjp1bmlx
dWVfcHRyPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI+IG1fc3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZjZiODY3YmQ1
NjRkZmQxNzJlYmEzZGI4MzMyNWNjMzczY2QyMDA2OS4uNTgwYmQ2YTEwODAzMDBmM2JiNzU2OWUx
ZGRlMGUyMDAwYzAxZWYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCkBAIC0xNzEyLDcgKzE3MTIsMTkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNy
ZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnQK
IHsKICAgICBhdXRvIHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0gbV9zcGVlY2hSZWNvZ25pdGlv
blNlcnZlck1hcC5hZGQoaWRlbnRpZmllciwgbnVsbHB0cik7CiAgICAgQVNTRVJUKHNwZWVjaFJl
Y29nbml0aW9uU2VydmVyLmlzTmV3RW50cnkpOwotICAgIHNwZWVjaFJlY29nbml0aW9uU2VydmVy
Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1h
a2VSZWYoKmNvbm5lY3Rpb24oKSksIGlkZW50aWZpZXIpOworICAgIHNwZWVjaFJlY29nbml0aW9u
U2VydmVyLml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24oKSksIGlkZW50aWZpZXIsIFtpZGVudGlmaWVyLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShDbGllbnRPcmlnaW4mJiBvcmlnaW4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGF1dG8qIHBh
Z2UgOiB3ZWFrVGhpcy0+cGFnZXMoKSkgeworICAgICAgICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+
d2ViUGFnZUlEKCkgPT0gaWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgIHBhZ2UtPnJlcXVl
c3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24oV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgIH0p
OwogICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllciwgKnNwZWVjaFJlY29nbml0aW9u
U2VydmVyLml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVlMGQzY2Y4N2U3OWY0MTA5NmYxZDc4ZWYy
YjRjYzYxM2MyNjE3NDkuLmQ1NGMzMDg1ODYzOGQwYTMyYjY4N2RiZTJkODkxYWY3YzRlMzc0ZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTM3NCw2ICsxMzc0LDcgQEAKIAkJOTMzRTgzNTUyM0EwN0MwNjAwREVGMjg5IC8qIFdlYklE
QlNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTMzRTgzNTMyM0EwN0JGODAwREVGMjg5IC8qIFdlYklEQlNlcnZlci5oICovOyB9OwogCQk5MzNF
ODM1QTIzQTFBRTI4MDBERUYyODkgLyogV2ViSURCU2VydmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzM0U4MzU5MjNBMUFERjUwMERF
RjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlcy5oICovOyB9OwogCQk5MzNFODM1QjIzQTFCNzUw
MDBERUYyODkgLyogV2ViSURCU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzM0U4MzU4MjNBMUFERjUwMERFRjI4
OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQk5MzQyNTg5MDI1
NTVEREM2MDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQyNTg4RTI1NTVEQzQ3MDA1OUVF
REQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggKi87IH07CiAJCTkzNEI3MjQ0MTlGNUI5
QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEI3MjQzMTlGNUI5QkUwMEFFOTZENiAvKiBX
S0FjdGlvbk1lbnVJdGVtVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5MzU2RjJEQzIxNTJCNkI1MDBFNkQ1REYgLyogV2ViU1dDbGllbnRD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTdBNTMwMjFGNDc5M0IyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmggKi87
IH07CiAJCTkzNTZGMkREMjE1MkI2RjYwMEU2RDVERiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQkEwNEUw
MjE1MUFERjQwMDdGNDU1RiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCAqLzsgfTsKQEAgLTE0
MDgsNiArMTQwOSw5IEBACiAJCTkzRDZCNzg3MjU0Q0NEOEMwMDU4REQzQSAvKiBXZWJTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3ODYyNTRDQ0Q4QjAwNThERDNBIC8qIFdlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CiAJCTkzRDZCNzg4MjU0Q0NE
OTQwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlc1JlcGxp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZC
NzdFMjU0Q0NBQkIwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNz
YWdlc1JlcGxpZXMuaCAqLzsgfTsKIAkJOTNENkI3OEEyNTRDRDQzRTAwNThERDNBIC8qIFdlYlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc3RDI1NENDQUJCMDA1OERE
M0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LzsgfTsKKwkJOTNENkI3QjQyNTUyNjhENTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0LmggKi87IH07CisJCTkzRDZCN0I1MjU1MjY4RDcwMDU4REQzQSAvKiBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdCMjI1NTI2OEEyMDA1OEREM0EgLyogU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovOyB9OworCQk5M0Q2QjdCOTI1NTM0QTE3
MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3QjcyNTUzNEEx
MTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0U2QTRFRTFC
QzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9X
S0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5M0Y1NDlCNDFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3Vy
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJOTUwRjI4ODAyNTI0
MTRFQTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwRjI4N0UyNTI0MTRFOTAwQjc0RjFDIC8q
IFdLTW91c2VEZXZpY2VPYnNlcnZlci5oICovOyB9OwpAQCAtNDQ2OCw2ICs0NDcyLDggQEAKIAkJ
OTMzRTgzNTcyM0ExQTg3MjAwREVGMjg5IC8qIFdlYklEQlNlcnZlci5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJREJTZXJ2ZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzM0U4MzU4MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViSURCU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvV2ViSURCU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTMzRTgzNTkyM0ExQURGNTAwREVGMjg5IC8qIFdlYklE
QlNlcnZlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYklE
QlNlcnZlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklEQlNl
cnZlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTkz
NDI1ODhFMjU1NURDNDcwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzNDI1ODhGMjU1NURDQTUwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25V
dGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVBlcm1pc3Npb25VdGlsaXRp
ZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNEI3MjQzMTlGNUI5QkUwMEFF
OTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tBY3Rpb25NZW51SXRlbVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzNUVFQjk1MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlz
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0J1bmRsZUJhY2tG
b3J3YXJkTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUVFQjk2MTI3
NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDUyOCw2ICs0NTM0LDEyIEBACiAJCTkzRDZCNzgwMjU0Q0NB
QkMwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3ODEyNTRDQ0FCQzAwNThERDNB
IC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3ODYyNTRD
Q0Q4QjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0FG
MjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjAyNTUy
NjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0Iy
MjU1MjY4QTIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjMyNTUy
NjhCRjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5M0Q2QjdCODI1NTM0QTEyMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
S1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1
bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSGl0VGVzdFJlc3VsdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkg
LyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNGNTQ5QjUxRTMxNzREQTAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9u
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTbmFwc2hvdENv
bmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDU2LDYgKzY0
NjgsOCBAQAogCQkJCTdBODIxRjREMUUyRjY3OUUwMDYwNDU3NyAvKiBMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQubW0gKi8sCiAJCQkJQTFERjYzMTExOEUwQjdDODAwM0EzRTJBIC8q
IExlZ2FjeURvd25sb2FkQ2xpZW50LmggKi8sCiAJCQkJQTFERjYzMTAxOEUwQjdDODAwM0EzRTJB
IC8qIExlZ2FjeURvd25sb2FkQ2xpZW50Lm1tICovLAorCQkJCTkzNDI1ODhFMjU1NURDNDcwMDU5
RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCAqLywKKwkJCQk5MzQyNTg4RjI1NTVE
Q0E1MDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tICovLAogCQkJCTQxMTI4
NkVGMjFDOEE5MEMwMDNBODU1MCAvKiBNZWRpYVV0aWxpdGllcy5oICovLAogCQkJCTQxMTI4NkYw
MjFDOEE5MEQwMDNBODU1MCAvKiBNZWRpYVV0aWxpdGllcy5tbSAqLywKIAkJCQkxQUJDM0RGNDE4
OTlFNDM3MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRlLmggKi8sCkBAIC02NDcyLDYgKzY0ODYs
NyBAQAogCQkJCTVDQTk4NTRCMjEwQkVCNzMwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5n
Q29jb2EubW0gKi8sCiAJCQkJMUEwMDJENDcxOTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0
ZUNvZGluZy5oICovLAogCQkJCTFBMDAyRDQ2MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3Rh
dGVDb2RpbmcubW0gKi8sCisJCQkJOTNENkI3QjMyNTUyNjhCRjAwNThERDNBIC8qIFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbSAqLywKIAkJCQkzMTU3MTM1QzIwNDBB
OUIyMDA4NEY5Q0YgLyogU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbSAqLywKIAkJCQky
RDBDRjY0QzIxRjJBODAzMDA3ODc1NjYgLyogVGV4dENoZWNraW5nQ29udHJvbGxlci5oICovLAog
CQkJCTJEMENGNjRCMjFGMkE4MDMwMDc4NzU2NiAvKiBUZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1t
ICovLApAQCAtOTIwMyw2ICs5MjE4LDkgQEAKIAkJCQlCQzExMUIwODExMkY1RTNDMDAzMzdCQUIg
LyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8sCiAJCQkJMUEzMDA2NkMxMTEwRjRGNzAwMzE5
MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLywKIAkJCQk1Q0E5ODU0OTIxMEJFQjVBMDA1
N0VCNkIgLyogU2FmZUJyb3dzaW5nV2FybmluZy5oICovLAorCQkJCTkzRDZCN0IwMjU1MjY4QTEw
MDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcCAqLywKKwkJ
CQk5M0Q2QjdCMjI1NTI2OEEyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlci5oICovLAorCQkJCTkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi8sCiAJCQkJOTNENkI3NkIyNTRCODk1ODAwNThE
RDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcCAqLywKIAkJCQk5M0Q2Qjc2QzI1NEI4
OTU4MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCAqLywKIAkJCQk5M0Q2Qjc3
QTI1NEM5ODREMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4g
Ki8sCkBAIC05NTQzLDYgKzk1NjEsOCBAQAogCQkJCTMzMzY3NjM5MTMwQzk5REMwMDZDOURFMiAv
KiBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmggKi8sCiAJCQkJMUFERTQ2QjAxOTU0RUM2MTAwMEY3
OTg1IC8qIFdLU2Vzc2lvblN0YXRlUmVmLmNwcCAqLywKIAkJCQkxQURFNDZCMTE5NTRFQzYxMDAw
Rjc5ODUgLyogV0tTZXNzaW9uU3RhdGVSZWYuaCAqLywKKwkJCQk5M0Q2QjdCODI1NTM0QTEyMDA1
OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi8sCisJ
CQkJOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2suaCAqLywKIAkJCQk1MUY4ODZBMzFGMkMyMTRBMDBDMTkzRUYgLyogV0tUZXN0
aW5nU3VwcG9ydC5jcHAgKi8sCiAJCQkJNTFGODg2QTQxRjJDMjE0QTAwQzE5M0VGIC8qIFdLVGVz
dGluZ1N1cHBvcnQuaCAqLywKIAkJCQkzMTQ4ODhGRTFEOTFCMTFEMDAzNzcwNDIgLyogV0tUZXh0
Q2hlY2tlci5jcHAgKi8sCkBAIC0xMTE0MCw2ICsxMTE2MCw3IEBACiAJCQkJMUE2RDg2QzIxREY3
NTI2NTAwNzc0NUU4IC8qIE1hY2hNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0M1NkY3
OTExNTk5NTdEMDAxQ0NBRjkgLyogTWFjaFBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjRC
NUYzMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk5MzQyNTg5MDI1NTVEREM2MDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwN0UxOUVGQzIzRDQwMUYxMDA5NEZGQjQgLyogTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RTE5RUZEMjNE
NDAxRjEwMDk0RkZCNCAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlc1JlcGxpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxOTMzREVGMTk2NUVCMzEwMDhBQzNFQSAvKiBNZW51VXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTExMzgxLDYgKzExNDAyLDggQEAKIAkJCQk1N0JC
RUE2RDIyQkMwQkZFMDAyNzM5OTUgLyogU09BdXRob3JpemF0aW9uTG9hZFBvbGljeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTc2Q0E5RDcyMkI4NjIxODAwMzAxNDNDIC8qIFNPQXV0aG9yaXphdGlv
bk5TVVJMRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4NTIyQjM1MTY5MDA4RDBF
OEIgLyogU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENkI3
QjUyNTUyNjhENzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDZCN0I0MjU1MjY4RDUwMDU4REQzQSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc3
MjI1NEJCNTE5MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzRDZCNzg0MjU0Q0NEMEUwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4NTI1NENDRDQzMDA1OERE
M0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTE5OTQsNiArMTIwMTcsNyBAQAogCQkJCTUxM0U0NjJEMUFEODM3NTYwMDE2MjM0
QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzRjU0OUI0MUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODcyMkIzNTE3MDAwOEQwRThCIC8qIFdLU09BdXRob3Jp
emF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDZCN0I5MjU1MzRBMTcwMDU4
REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3QTc4RkYzMjIyNDE5MTk2MDA5NjQ4M0UgLyogV0tTdG9yYWdlQWNjZXNzQWxl
cnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjA2MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1N0
cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2MUExMjRGRjAzNzAwNjhGMjBBIC8qIFdL
U3RyaW5nQ0YuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uLmNwcAppbmRleCBlYTE2YjJlZDc2NjViMzJiZDM5Y2FjNDYzMmI0Yjlh
NTFhNzVkNmIxLi4zZjM1MzE5NGEzMmMzZTY3OWJjYTI5ZmJlYTg1MDMxYzkyMWU0ZmM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcApAQCAtNTks
MTAgKzU5LDkgQEAgdm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnJlZ2lzdGVy
Q2xpZW50KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ28KICAgICBtX2NsaWVudE1hcC5hZGQo
Y2xpZW50LmlkZW50aWZpZXIoKSwgbWFrZVdlYWtQdHIoY2xpZW50KSk7CiB9CiAKLXZvaWQgV2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRf
dCBtYXhBbHRlcm5hdGl2ZXMpCit2b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6
c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywg
Ym9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4pCiB7Ci0gICAgV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0SW5mbyBpbmZvIHsgY2xpZW50SWRlbnRpZmllciwgbGFuZywgY29udGludW91
cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVybmF0aXZlcyB9OwotICAgIHNlbmQoTWVzc2FnZXM6
OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTdGFydChpbmZvKSk7CisgICAgc2VuZChNZXNzYWdl
czo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlN0YXJ0KGNsaWVudElkZW50aWZpZXIsIGxhbmcs
IGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMsIFdURk1vdmUoY2xp
ZW50T3JpZ2luKSkpOwogfQogCiB2b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6
c3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
IGNsaWVudElkZW50aWZpZXIpCkBAIC04MCw3ICs3OSw3IEBAIHZvaWQgV2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uOjppbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjCiAgICAgc2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OkludmFsaWRh
dGUoY2xpZW50SWRlbnRpZmllcikpOwogfQogCi12b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbjo6ZGlkUmVjZWl2ZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZSYgdXBkYXRlKQordm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OmRp
ZFJlY2VpdmVVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmJiB1cGRhdGUp
CiB7CiAgICAgYXV0byBjbGllbnRJZGVudGlmaWVyID0gdXBkYXRlLmNsaWVudElkZW50aWZpZXIo
KTsKICAgICBpZiAoIW1fY2xpZW50TWFwLmNvbnRhaW5zKGNsaWVudElkZW50aWZpZXIpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCmluZGV4IDI4ZGJkMTk3
Y2IzZjc5OGZjNzYzMTk5ZWJiMTJkZTEzYWVkNzUxYjEuLjQ0M2IwNGYxY2NhYWIwYTBlNmFhNTM4
MzFlOTg1ZDEwYTZhNTMzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uLmgKQEAgLTQzLDExICs0MywxMSBAQCBjbGFzcyBXZWJQYWdlOwogCiB1c2luZyBT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25JZGVudGlmaWVyID0gV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI7CiAKLWNsYXNzIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiA6IHB1YmxpYyBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKK2NsYXNzIFdlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBD
OjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbj4gY3JlYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbklkZW50
aWZpZXIpOwogCi0gICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91
cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKSBmaW5hbDsK
KyAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGlu
dGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYmKSBmaW5hbDsKICAgICB2b2lkIHN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBhYm9ydChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbDsKIApA
QCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIH5XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb24oKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJDbGllbnQoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRl
KGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikgZmluYWw7CisgICAgdm9p
ZCBkaWRSZWNlaXZlVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYpIGZp
bmFsOwogICAgIHZvaWQgaW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU1MWEz
NDMxYTcxMWM1NGE0YmVjZmYzN2YxZWViNWMxZGQzYzNlMGMuLjc3MjA3ZDU2Y2UwMTVhOTk3Yjc5
NWM5YzVhMzY5Y2I4Yzg3MmIxMWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMC0xMS0wNiAgU2lodWkgTGl1ICA8
c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lv
biBjaGVjayBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQ3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3Q6CisgICAg
ICAgICogTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5mby5wbGlzdDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldElzU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uR3JhbnRlZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y29t
cGxldGVTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVjayk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQpOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1
ZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUpOgorCiAyMDIwLTExLTA2ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNv
bT4KIAogICAgICAgICBbZXdzXSBTcGVlZCB1cCBld3Mgc3RhdHVzIGJ1YmJsZSBsb2FkaW5nIHNw
ZWVkCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdCBiL1Rvb2xz
L01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0CmluZGV4IDRlMmIxZjQ4MTlhZDUxMDNlNGNmMTcw
OWI3YzUzYTY2ZThiMzk1ZTUuLjMzYTNjYTFiZTczNTA4ZTFmZmNiMDI5NTdjODY0ZTg1OTJkYWFh
NGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0CisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0CkBAIC01Miw5ICs1MiwxMSBAQAogCQkJPHN0
cmluZz5FZGl0b3I8L3N0cmluZz4KIAkJPC9kaWN0PgogCTwvYXJyYXk+Ci0gICAgPGtleT5OU0Nh
bWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJlY29yZGluZyB2aWRlbyBv
biBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KLSAgICA8a2V5Pk5TTWljcm9waG9uZVVzYWdl
RGVzY3JpcHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBiZWhhbGYg
b2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlvbjwva2V5
PgorCTxzdHJpbmc+UmVjb3JkaW5nIHZpZGVvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5n
PgorCTxrZXk+TlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVj
b3JkaW5nIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+TlNTcGVl
Y2hSZWNvZ25pdGlvblVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29nbml6aW5n
IGNhcHR1cmVkIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgogPC9kaWN0Pgog
PC9wbGlzdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL01vYmlsZU1pbmlCcm93c2VyL01vYmlsZU1pbmlC
cm93c2VyL0luZm8ucGxpc3QgYi9Ub29scy9Nb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJv
d3Nlci9JbmZvLnBsaXN0CmluZGV4IDJkMWJjNTgyZmJlNzY1Y2ZkYzQxMDVlZmU5ZWNjMWQ4MzIw
Y2M5NTkuLjUzODdiMzc0OWE0NzRmZTBiM2Q5YzYwOTVjYjI4ODE3YjhmOTIzMGEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01vYmlsZU1pbmlCcm93c2VyL01vYmlsZU1pbmlCcm93c2VyL0luZm8ucGxpc3QK
KysrIGIvVG9vbHMvTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5mby5wbGlz
dApAQCAtNTQsOSArNTQsMTEgQEAKIAkJPGtleT5OU0FsbG93c0FyYml0cmFyeUxvYWRzSW5XZWJD
b250ZW50PC9rZXk+CiAJCTx0cnVlLz4KIAk8L2RpY3Q+Ci0gICAgPGtleT5OU0NhbWVyYVVzYWdl
RGVzY3JpcHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJlY29yZGluZyB2aWRlbyBvbiBiZWhhbGYg
b2Ygd2Vic2l0ZXM8L3N0cmluZz4KLSAgICA8a2V5Pk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRp
b248L2tleT4KLSAgICA8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vic2l0
ZXM8L3N0cmluZz4KKwk8a2V5Pk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJp
bmc+UmVjb3JkaW5nIHZpZGVvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+
TlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVjb3JkaW5nIGF1
ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+TlNTcGVlY2hSZWNvZ25p
dGlvblVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29nbml6aW5nIGNhcHR1cmVk
IGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgogPC9kaWN0PgogPC9wbGlzdD4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDU1MTYyZmYzNDNkMjVmNjkwNmMzOTI3NmZk
NWE4OTFlZGYyOWI4NjkuLjZmZGNlMjNmYjg0ZDMwYmNjZDU5NzRhYjcyMDMzMWM5Mjk5ODRjY2Ig
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtNDAzLDQgKzQwMyw3IEBAIGludGVyZmFj
ZSBUZXN0UnVubmVyIHsKICAgICB1bmRlZmluZWQgc2V0QWRDbGlja0F0dHJpYnV0aW9uT3ZlcnJp
ZGVUaW1lckZvclRlc3RpbmcoYm9vbGVhbiB2YWx1ZSk7CiAgICAgdW5kZWZpbmVkIHNldEFkQ2xp
Y2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKERPTVN0cmluZyB1cmwpOwogICAg
IHVuZGVmaW5lZCBtYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcoKTsK
KworICAgIC8vIFNwZWVjaFJlY29nbml0aW9uCisgICAgdW5kZWZpbmVkIHNldElzU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChib29sZWFuIHZhbHVlKTsKIH07CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRl
eCBkZmQwMWEzMmYzMTFlMTI0NGFhNzg3OWI0Mzc1OTdhZmFjM2VmZDllLi5iMThhYjI3NjM3NjM2
MDJlZjdmNjZiMzkxYmE2MjM0ZTY0MjdhOTE0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTIwNjksNiArMjA2OSwx
MSBAQCB2b2lkIFRlc3RSdW5uZXI6OmRpZFNldEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKCkKICAg
ICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKERpZFNldEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrSUQp
OwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
R3JhbnRlZChib29sIGdyYW50ZWQpCit7CisgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2Uo
InNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCIsIGdyYW50ZWQpOworfQor
CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogfSAvLyBuYW1lc3BhY2UgV1RS
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oCmluZGV4IDBiZDNhMDllMzJkNzFiMzUxNmU0ZjhlMDViZWEyMmFmOTk0YjFkMjMuLjk3OTNj
Nzc3YWQzOGFhZDM0Y2Y1MjVkMTJjYTg3ZGVhMzE5YTJkM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC01MTUsNiArNTE1
LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVS
TEZvclRlc3RpbmcoSlNTdHJpbmdSZWYpOwogICAgIHZvaWQgbWFya0FkQ2xpY2tBdHRyaWJ1dGlv
bnNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CiAKKyAgICB2b2lkIHNldElzU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uR3JhbnRlZChib29sKTsKKwogcHJpdmF0ZToKICAgICBUZXN0UnVubmVyKCk7
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNmRiYzY4
NGU4ODUwYWZlMDQ1OTEzOWZiZTE5ZDVlNWNjZGI3MjZlNy4uMTg2ZWZmOWExNGM3MTA4OWYwNmFm
Mjk0YWVlZTI0MjMwZDdmYzFlMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tQcm90ZWN0aW9u
U3BhY2UuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJL
aXQvV0tTZWN1cml0eU9yaWdpblJlZi5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVGV4dENoZWNr
ZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tVUkwuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tVc2Vy
Q29udGVudENvbnRyb2xsZXJSZWYuaD4KQEAgLTI5Nyw2ICsyOTgsMjEgQEAgc3RhdGljIHZvaWQg
cnVuV2ViQXV0aGVudGljYXRpb25QYW5lbCgpCiB7CiB9CiAKK3N0YXRpYyB2b2lkIGRlY2lkZVBv
bGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmLCBXS1Nl
Y3VyaXR5T3JpZ2luUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrUmVmIGNhbGxiYWNrKQoreworICAgIFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS5jb21wbGV0ZVNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrKGNhbGxi
YWNrKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6Y29tcGxldGVTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DaGVjayhXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVm
IGNhbGxiYWNrKQoreworICAgIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tD
b21wbGV0ZShjYWxsYmFjaywgbV9pc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQp
OworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkdyYW50ZWQoYm9vbCBncmFudGVkKQoreworICAgIG1faXNTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25HcmFudGVkID0gZ3JhbnRlZDsKK30KKwogV0tQYWdlUmVmIFRlc3RDb250cm9sbGVy
OjpjcmVhdGVPdGhlclBhZ2UoV0tQYWdlUmVmLCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZp
Z3VyYXRpb24sIFdLTmF2aWdhdGlvbkFjdGlvblJlZiBuYXZpZ2F0aW9uQWN0aW9uLCBXS1dpbmRv
d0ZlYXR1cmVzUmVmIHdpbmRvd0ZlYXR1cmVzLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewog
ICAgIFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldyA9IHN0YXRpY19jYXN0PFBsYXRmb3JtV2Vi
Vmlldyo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKQEAgLTY1MCw4ICs2NjYsOCBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoY29uc3QgVGVz
dE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgV0tIVFRQQ29va2llU3RvcmVEZWxldGVBbGxDb29raWVz
KFdLV2Vic2l0ZURhdGFTdG9yZUdldEhUVFBDb29raWVTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKCkp
LCBudWxscHRyLCBudWxscHRyKTsKIAogICAgIHBsYXRmb3JtQ3JlYXRlV2ViVmlldyhjb25maWd1
cmF0aW9uLmdldCgpLCBvcHRpb25zKTsKLSAgICBXS1BhZ2VVSUNsaWVudFYxNCBwYWdlVUlDbGll
bnQgPSB7Ci0gICAgICAgIHsgMTQsIG1fbWFpbldlYlZpZXcuZ2V0KCkgfSwKKyAgICBXS1BhZ2VV
SUNsaWVudFYxNSBwYWdlVUlDbGllbnQgPSB7CisgICAgICAgIHsgMTUsIG1fbWFpbldlYlZpZXcu
Z2V0KCkgfSwKICAgICAgICAgMCwgLy8gY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0
aFYwCiAgICAgICAgIDAsIC8vIHNob3dQYWdlCiAgICAgICAgIDAsIC8vIGNsb3NlCkBAIC03MjQs
NyArNzQwLDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25z
KGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogICAgICAgICAwLCAvLyBkaWRSZXNpZ25JbnB1
dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UKICAgICAgICAgMCwgLy8gcmVxdWVzdFN0
b3JhZ2VBY2Nlc3NDb25maXJtCiAgICAgICAgIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25BY2Nlc3MsCi0gICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwKKyAgICAg
ICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbCwKKyAgICAgICAgZGVjaWRlUG9saWN5Rm9yU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdAogICAgIH07CiAgICAgV0tQYWdlU2V0UGFn
ZVVJQ2xpZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJnBhZ2VVSUNsaWVudC5iYXNlKTsKIApA
QCAtMTA1Myw2ICsxMDcwLDggQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29u
c2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmUKICAgICBtX3NlcnZl
clRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCA9IDA7CiAgICAgbV9zaG91bGREaXNt
aXNzSmF2YVNjcmlwdEFsZXJ0c0FzeW5jaHJvbm91c2x5ID0gZmFsc2U7CiAKKyAgICBzZXRJc1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQodHJ1ZSk7CisKICAgICBhdXRvIGxvYWRB
Ym91dEJsYW5rID0gW3RoaXNdIHsKICAgICAgICAgbV9kb25lUmVzZXR0aW5nID0gZmFsc2U7CiAg
ICAgICAgIFdLUGFnZUxvYWRVUkwobV9tYWluV2ViVmlldy0+cGFnZSgpLCBibGFua1VSTCgpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAzM2I2NDk0YWM2MjQ0
YjkyZmNiNzgwOWE1OGQ3MjAzYzdjMTI1OGE4Li4wNWM4ZjhiZGFhOTVhZDg3ZTQzOWUzMDkzYjhh
NGYzNGY1ZjgyYzU2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBA
IC0zNTEsNiArMzUxLDkgQEAgcHVibGljOgogCiAgICAgV0tVUkxSZWYgY3VycmVudFRlc3RVUkwo
KSBjb25zdDsKIAorICAgIHZvaWQgY29tcGxldGVTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
aGVjayhXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmKTsKKyAgICB2b2lk
IHNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChib29sKTsKKwogcHJpdmF0
ZToKICAgICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZVBhZ2VD
b25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJik7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbihjb25zdCBU
ZXN0T3B0aW9ucyYpIGNvbnN0OwpAQCAtNjQwLDYgKzY0Myw4IEBAIHByaXZhdGU6CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgYm9vbCBtX2hhc1NldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
ciB7IGZhbHNlIH07CiAjZW5kaWYKKworICAgIGJvb2wgbV9pc1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkdyYW50ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDE0YzA0ZWQxZmE5Mzk0
ZjU3MmY2NDlhOTFiNDdlZmIyMDZlZjg1NGUuLjViNjY2MTdiZWUwMTZiNjc1MWM3YmIyYmNlNmJi
OGJhZTQ0ZWIwYTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CkBAIC0xMzQ1LDYgKzEzNDUsMTEgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2Nh
dGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcobWVzc2FnZU5hbWUsICJzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50
ZWQiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0SXNTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2xlYW5WYWx1ZShtZXNzYWdlQm9keSkpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkOGQwMWYyOTZkMDYyMjg3ODVkM2Qw
ZWEyMTU0MmJiMjE3ZDUxMjY2Li5hYjJjZmM4YWI2MDkzOGVjZjE5ZDIwZTI0NGU0MzQ5ZmU3NDlk
MTUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMTEtMDYgIFNpaHVpIExpdSAgPHNpaHVp
X2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hl
Y2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC9zcGVl
Y2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorCisyMDIwLTExLTA2
ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBi
YXNpYyBwZXJtaXNzaW9uIGNoZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3NwZWVjaHJlY29nbml0
aW9uL3Blcm1pc3Npb24tZXJyb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbDogQWRkZWQuCisKIDIwMjAt
MTEtMDYgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCBmb3IgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9NYWMvYWNjZXNza2V5Lmh0bWwgaW4g
aXNvbGF0ZWQgdHJlZSBtb2RlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjc3ZmVlOWI0MDdhYmQz
ZjU1MjVkOGVhMmRlODAxN2E3MzMyNGNiNi4uMjdiNWZlOTA1NDgwNTU5YzdjOWMwZTVkOTc2N2Zl
MzNmMTcyNGEzNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNzcsNiArMTc3LDcgQEAgc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1hZnRlci1zdG9yYWdlLWNyYXNoLmh0bWwg
WyBTa2lwIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL0lEQk9iamVjdC1sZWFrLmh0bWwgWyBTa2lwIF0K
IGZhc3QvZm9ybXMvY2FsbC10ZXh0LWRpZC1jaGFuZ2UtaW4tdGV4dC1maWVsZC13aGVuLXR5cGlu
Zy5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvIFsgU2tp
cCBdCitmYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbCBbIFNraXAg
XQogCiAjIE9ubHkgcGFydGlhbCBzdXBwb3J0IG9uIENvY29hIHBsYXRmb3Jtcy4KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3BlZWNoLWFwaS8gWyBTa2lwIF0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24t
ZXJyb3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyOWI4YWIwNGQwODNmYTI3YTA4NDU4NWRh
YTk4ZmQ3YjYwNmI0NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVj
aHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMg
QEAKK1ZlcmlmeSB0aGF0IGVycm9yIGV2ZW50IGlzIGZpcmVkIHdoZW4gcGVybWlzc2lvbiBpcyBk
ZW5pZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHJlY29nbml0aW9u
ID0gbmV3IFNwZWVjaFJlY29nbml0aW9uKCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNT
IHJlY29nbml0aW9uLnN0YXJ0KCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGV2ZW50
LmVycm9yIGlzICJub3QtYWxsb3dlZCIKK1BBU1MgZXZlbnQubWVzc2FnZSBpcyAicGVybWlzc2lv
biBjaGVjayBmYWlscyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9u
L3Blcm1pc3Npb24tZXJyb3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRp
b24vcGVybWlzc2lvbi1lcnJvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0NmU5ZjNhNzc2NDA5YWEzZGY0
MTkyYmZiYzU4NzU5MDE1ZTM2Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbApAQCAtMCwwICsxLDI0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJWZXJp
ZnkgdGhhdCBlcnJvciBldmVudCBpcyBmaXJlZCB3aGVuIHBlcm1pc3Npb24gaXMgZGVuaWVkLiIp
OworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KyAgICB0ZXN0UnVubmVyLnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChm
YWxzZSk7Cit9CisKK3Nob3VsZE5vdFRocm93KCJyZWNvZ25pdGlvbiA9IG5ldyBTcGVlY2hSZWNv
Z25pdGlvbigpIik7CitzaG91bGROb3RUaHJvdygicmVjb2duaXRpb24uc3RhcnQoKSIpOworcmVj
b2duaXRpb24ub25lcnJvciA9IChldmVudCkgPT4geworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQuZXJyb3IiLCAibm90LWFsbG93ZWQiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImV2ZW50Lm1lc3NhZ2UiLCAicGVybWlzc2lvbiBjaGVjayBmYWlscyIpOworCisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggMGY4MGFjZjBhNmY2ZTQ0YjZmMGU0NTc4MzM5ZjY5ZDRhMmEwMmE3My4uMmYzYWE5
Yzg1YTMzZDE5MGJlN2NkMDlmODhkMTRjODA5NTgwOTg5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTgyMSw0ICs4MjEsNSBAQCBodHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlZC1wb3J0LWRlbGF5Lmh0bWwgWyBQYXNzIF0KIAogIyBX
ZWJLaXQyIG9ubHkuCiBqcy90aHJvdy1sYXJnZS1zdHJpbmctb29tLmh0bWwgWyBQYXNzIF0KLWZ1
bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW50ZXItd2hpbGUtZXhpdGluZy5odG1sIFsgUGFzcyBdClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbnRlci13
aGlsZS1leGl0aW5nLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlz
c2lvbi1lcnJvci5odG1sCg==
</data>
<flag name="commit-queue"
          id="430136"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413513</attachid>
            <date>2020-11-06 20:53:14 -0800</date>
            <delta_ts>2020-11-08 20:50:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201106205313.patch</filename>
            <type>text/plain</type>
            <size>118251</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcwYzdkNjAxNDAyNjQxYTA4MTkwZTcz
N2FiMWEwZWRlNTA4NzZmNTIuLjQ5NWQ4MGM0ODAyMzg2MDhhZjEwYTg0MDQxNTE5N2Y0MGZmNjM1
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTEtMDYgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMC0xMS0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRnVydGhlciBwcm9ncmVzcyB0b3dh
cmRzIG1lcmdpbmcgU2V0dGluZ3MueWFtbCBpbnRvIFdlYlByZWZlcmVuY2VzLnlhbWwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAzYTI2YmE0ZDE1YTZjMGExNWUxZGMwYTQwZjJjNjA2ZTYwMWMyNDAzLi43MWZiOTYx
ZTYwYzE4Zjg0OGZmNmE3ZDAwMDE4NjVhNmY5NGQwNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjcgQEAKKzIwMjAtMTEtMDYgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0
NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uOjpzdGFydFJlY29nbml0aW9uKTogCisgICAgICAgICogTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6Y2xpZW50T3JpZ2luIGNvbnN0KToKKyAgICAgICAg
KiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmg6CisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2RlKToK
KyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjplcnJvciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6cmVzdWx0IGNvbnN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oOgorICAgICAg
ICAqIHBhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmg6CisKIDIwMjAtMTEtMDYg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IGBsb2NhbEJvdW5kc2AgYW5kIGBnbG9iYWxCb3VuZHNgIG1ldGhvZHMgZnJvbSBkaXNwbGF5IGxp
c3QgaXRlbXMgdGhhdCBhcmUgbm90IGRyYXdpbmcgaXRlbXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNGVhNGMzN2Rl
YjQ1MjkwOGQ1MTlhYjUwOGJjMDBkYWFkN2ZkMjY0Ni4uZDQxZDY4NTIzZTk2MTc4ODFhYzVkN2E1
MzYwZTk1NjQyYzU3YTFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDMgQEAKKzIwMjAtMTEtMDYg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJh
c2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlciwgd2hpY2ggY2hlY2tzIGFuZCByZXF1ZXN0cyBzcGVlY2gg
cmVjb2duaXRpb24gcGVybWlzc2lvbnMgYmVmb3JlIAorICAgICAgICB3ZSBhY3R1YWxseSBzdGFy
dCBjYXB0dXJpbmcgYXVkaW8gYW5kIHBlcmZvcm0gcmVjb2duaXRpb24uIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIgaXMgcGVyLXBhZ2UsIGxpa2UKKyAgICAgICAgU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIuIFRoZSBjaGVja3MgYXJlOgorICAgICAgICAxLiBTYW5kYm94IHJlcXVp
cmVtZW50IGZvciBtaWNyb3Bob25lCisgICAgICAgIDIuIFRDQyBmb3IgbWljcm9waG9uZQorICAg
ICAgICAzLiBUQ0MgZm9yIFNGU3BlZWNoUmVjb2duaXplcgorICAgICAgICA0LiBVc2VyIHBlcm1p
c3Npb24gb24gc3BlZWNoIHJlY29nbml0aW9uIGZvciBvcmlnaW5zCisKKyAgICAgICAgQWRkIGEg
ZGVsZWdhdGUgZnVuY3Rpb24gZm9yIHJlcXVlc3RpbmcgdXNlciBwZXJtaXNzaW9uLCB3aGljaCBp
cyBkZW5pZWQgYnkgZGVmYXVsdC4KKworICAgICAgICBUZXN0OiBmYXN0L3NwZWVjaHJlY29nbml0
aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbAorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmpl
Y3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lG
b3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcDogQWRkZWQuCisgICAgICAgIChX
S1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKToKKyAgICAgICAg
KFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tDb21wbGV0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGll
cy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRp
bGl0aWVzLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6cmVxdWVzdEFWQ2FwdHVyZUFjY2Vz
c0Zvck1lZGlhVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OnJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NG
b3JNZWRpYVR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6Y2hlY2tBVkNhcHR1cmVBY2Nlc3NGb3JN
ZWRpYVR5cGVzQW5kRmlsdGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0TmV4dFJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6cGVyZm9ybVNh
bmRib3hDaGVjayk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OmNoZWNrU2FuZGJveFJlcXVpcmVtZW50KToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKToK
KyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hl
Y2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja0FuZFJlcXVlc3RVc2VyUGVybWlz
c2lvbkZvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNjZXNzSWZOZWVkZWQpOgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0U3BlZWNo
UmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzSWZOZWVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lG
b3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1
ZXN0U3lzdGVtVmFsaWRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OnJlcXVlc3RBVkNhcHR1cmVB
Y2Nlc3NGb3JNZWRpYVR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6flNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnRO
ZXh0UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVudFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1NhbmRib3hSZXF1aXJlbWVudCk6
CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNo
ZWNrTWljcm9waG9uZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKToK
KyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVx
dWVzdE1pY3JvcGhvbmVBY2Nlc3NJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNlcnZp
Y2VBY2Nlc3NJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXI6OmNoZWNrQW5kUmVxdWVzdFVzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uUmVxdWVzdDo6Y29tcGxldGUpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjb21wbGV0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVj
aFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6
OmFib3J0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlbW92
ZVBlbmRpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXI6OnN0YXJ0UG9jZXNzaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29n
bml0aW9uU2VydmVyOjpjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnNlbmRVcGRhdGUpOgorICAgICAgICAoV2ViS2l0
OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RvcFByb2Nlc3NpbmdSZXF1ZXN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0
aW9uU2VydmVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbjo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb246OmRpZFJlY2VpdmVVcGRhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisKIDIwMjAtMTEtMDYg
IEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5d
IFtpT1NdIFdlYkF1dGhuIHByb2Nlc3MgZG9lc24ndCBzdGFydCBvbiBpT1MgZGV2aWNlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUhhdmUuaAppbmRleCAyMDNlOGVjN2Q2MTVlODc1ZjNiMzE0NWYyZjhiZGQxZTViN2Iw
ODNkLi5kYjQ0MjllYWJlZTEwMGIzZGUwMWM5MjM0NzMxYzFlZGQxZmRjYzQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUhhdmUuaApAQCAtNzU1LDMgKzc1NSw3IEBACiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZF
X0NOQ09OVEFDVFBJQ0tFUlZJRVdDT05UUk9MTEVSIDEKICNlbmRpZgorCisjaWYgUExBVEZPUk0o
SU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApCisjZGVmaW5lIEhBVkVfU1BFRUNI
UkVDT0dOSVpFUiAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcAppbmRleCA1MWEzMmNkYWFjYWExZWQwMTE0Mjc2N2Qy
MmUzMDI1MjZkZWJmNTk1Li5mMTE3YzFmYjFiNWJkMDRhZTc1NTI1NjVmYmFhODg5MWM1YzFhZWJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiU3BlZWNoUmVjb2duaXRpb24uaCIKIAorI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKQEAgLTY5LDcgKzcwLDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gU3BlZWNoUmVjb2duaXRp
b246OnN0YXJ0UmVjb2duaXRpb24oKQogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiUmVjb2duaXRpb24gZG9lcyBub3QgaGF2
ZSBhIHZhbGlkIGNvbm5lY3Rpb24iX3MgfTsKIAotICAgIG1fY29ubmVjdGlvbi0+c3RhcnQoaWRl
bnRpZmllcigpLCBtX2xhbmcsIG1fY29udGludW91cywgbV9pbnRlcmltUmVzdWx0cywgbV9tYXhB
bHRlcm5hdGl2ZXMpOworICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c3RhcnQoaWRlbnRp
ZmllcigpLCBtX2xhbmcsIG1fY29udGludW91cywgbV9pbnRlcmltUmVzdWx0cywgbV9tYXhBbHRl
cm5hdGl2ZXMsIENsaWVudE9yaWdpbiB7IGRvY3VtZW50LnRvcE9yaWdpbigpLmRhdGEoKSwgZG9j
dW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkgfSk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpT
dGFydGluZzsKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAppbmRleCAz
ZmQyZDMzYWNhMDIwNTI2MzQwNThkMGZiNTY1MmViNzAwN2ZhNTJhLi42OWVlYmMyOTNkNWI3ZGUx
ZTM4Y2VlYWQyYTNlZTM4ZjAwZDFjYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaApAQCAtMzEs
MTUgKzMxLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50OwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU7CitzdHJ1
Y3QgQ2xpZW50T3JpZ2luOwogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gOiBw
dWJsaWMgUmVmQ291bnRlZDxTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24+IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24oKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJDbGllbnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywg
Ym9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1S
ZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIENsaWVudE9yaWdpbiYmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHN0b3AoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydChTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVVcGRhdGUoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmJikgPSAwOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5jcHAKaW5kZXggNGE1
ZThjMTYzMDNjMTg2NWMyYjFmZmNlOWI1NmVlMjYyMDNhN2ZjNS4uZDNiZDdhOTRhNDJiOWQ1ZTA1
OTIwYzViZmU3ZGJjNDRhOTE4ODdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuY3BwCkBAIC0yOCwxMSAr
MjgsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3Q+IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6Y3JlYXRlKFNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm8mJiByZXF1ZXN0SW5mbykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0SW5mbykpKTsKLX0KLQogU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QoU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0SW5mbyYmIHJlcXVlc3RJbmZvKQogICAgIDogbV9pbmZvKFdURk1vdmUo
cmVxdWVzdEluZm8pKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaAppbmRleCA1Y2VlYTAxYzczODY1NTZkNDI1
MWY4YzhiOTVjMzEyNGJhZmM2MDEyLi4zOTZkYjI2OTg0ZjkxMjQ2ODI0YjA2NTg2NjVjYTczZTdi
YzRjY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaApAQCAtMzAsMTkgKzMwLDE5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0IDogcHVibGljIFJl
ZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiB7CitjbGFzcyBTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3QgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IGNyZWF0ZShTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYp
OwogCiAgICAgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGll
bnRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmNsaWVudElkZW50aWZpZXI7IH0K
ICAgICBjb25zdCBTdHJpbmcmIGxhbmcoKSBjb25zdCB7IHJldHVybiBtX2luZm8ubGFuZzsgfQog
ICAgIGJvb2wgY29udGludW91cygpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5jb250aW51b3VzOzsg
fQogICAgIGJvb2wgaW50ZXJpbVJlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX2luZm8uaW50ZXJp
bVJlc3VsdHM7IH0KICAgICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMoKSBjb25zdCB7IHJldHVy
biBtX2luZm8ubWF4QWx0ZXJuYXRpdmVzOyB9CisgICAgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdp
bigpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5jbGllbnRPcmlnaW47IH0KIAogcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0SW5mbyYmKTsKLQogICAgIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gbV9pbmZvOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0SW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCmluZGV4IGFiMWUxYWU2ZWYzODg5OGMyMWEyYTlk
ZjdhZjFmMDA3ZTI0YjE3ZDAuLjFlZmU5ZTA2NDZlNzQ3Y2I1NWQ3Y2NiMGY3YjE4ZmY1ZTBiM2M0
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uUmVxdWVzdEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTM1LDYgKzM2LDcgQEAgc3RydWN0IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8g
ewogICAgIGJvb2wgY29udGludW91cyB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcmltUmVzdWx0
cyB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzIHsgMSB9OworICAgIENs
aWVudE9yaWdpbiBjbGllbnRPcmlnaW47CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8+IGRlY29kZShEZWNv
ZGVyJik7CkBAIC00Myw3ICs0NSw3IEBAIHN0cnVjdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJ
bmZvIHsKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdEluZm86OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIg
PDwgY2xpZW50SWRlbnRpZmllciA8PCBsYW5nIDw8IGNvbnRpbnVvdXMgPDwgaW50ZXJpbVJlc3Vs
dHMgPDwgbWF4QWx0ZXJuYXRpdmVzOworICAgIGVuY29kZXIgPDwgY2xpZW50SWRlbnRpZmllciA8
PCBsYW5nIDw8IGNvbnRpbnVvdXMgPDwgaW50ZXJpbVJlc3VsdHMgPDwgbWF4QWx0ZXJuYXRpdmVz
IDw8IGNsaWVudE9yaWdpbjsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTc0LDEy
ICs3NiwxOCBAQCBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUoRGVjbwogICAgIGlmICghbWF4QWx0ZXJuYXRp
dmVzKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgT3B0aW9uYWw8Q2xpZW50
T3JpZ2luPiBjbGllbnRPcmlnaW47CisgICAgZGVjb2RlciA+PiBjbGllbnRPcmlnaW47CisgICAg
aWYgKCFjbGllbnRPcmlnaW4pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBy
ZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqY2xpZW50SWRlbnRpZmllciksCiAgICAgICAgIFdU
Rk1vdmUoKmxhbmcpLAogICAgICAgICBXVEZNb3ZlKCpjb250aW51b3VzKSwKICAgICAgICAgV1RG
TW92ZSgqaW50ZXJpbVJlc3VsdHMpLAotICAgICAgICBXVEZNb3ZlKCptYXhBbHRlcm5hdGl2ZXMp
CisgICAgICAgIFdURk1vdmUoKm1heEFsdGVybmF0aXZlcyksCisgICAgICAgIFdURk1vdmUoKmNs
aWVudE9yaWdpbikKICAgICB9fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwCmluZGV4IDUzNGVkYTNk
MjQ3N2VlMWM2ZjE3ZWM2YWYxNzkzMjZiYjc5ZjAyMDcuLjlhOWE3ZDkyMDY5NjU1YzQ1NzE2MDdk
ZGExOGM0ZTZiMzMwZjcyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAg
U3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZSBlbnVtZXJhdGlvblZhbHVlKQogCiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
IHR5cGUpCiB7Ci0gICAgcmV0dXJuIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIHsgY2xpZW50SWRl
bnRpZmllciwgdHlwZSB9OworICAgIHJldHVybiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7IGNs
aWVudElkZW50aWZpZXIsIHR5cGUsIFdURjo6TW9ub3N0YXRlKCkgfTsKIH0KIAogU3BlZWNoUmVj
b2duaXRpb25VcGRhdGUgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKFNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwg
Y29uc3QgU3BlZWNoUmVjb2duaXRpb25FcnJvciYgZXJyb3IpCkBAIC04Myw3ICs4Myw3IEBAIFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZShTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllCiBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjplcnJvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
bV9jb250ZW50LAotICAgICAgICBbXSAoU3BlZWNoUmVjb2duaXRpb25FcnJvciYgZXJyb3IpIHsg
cmV0dXJuIGVycm9yOyB9LAorICAgICAgICBbXSAoY29uc3QgU3BlZWNoUmVjb2duaXRpb25FcnJv
ciYgZXJyb3IpIHsgcmV0dXJuIGVycm9yOyB9LAogICAgICAgICBbXSAoY29uc3QgYXV0byYpIHsg
cmV0dXJuIFNwZWVjaFJlY29nbml0aW9uRXJyb3IoKTsgfQogICAgICk7CiB9CkBAIC05MSw3ICs5
MSw3IEBAIFNwZWVjaFJlY29nbml0aW9uRXJyb3IgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmVy
cm9yKCkgY29uc3QKIFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+IFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlOjpyZXN1bHQoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKG1fY29udGVudCwKLSAgICAgICAgW10gKFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dERhdGE+JiBkYXRhKSB7IHJldHVybiBkYXRhOyB9LAorICAgICAgICBbXSAoY29uc3QgVmVjdG9y
PFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4mIGRhdGEpIHsgcmV0dXJuIGRhdGE7IH0sCiAg
ICAgICAgIFtdIChjb25zdCBhdXRvJikgeyByZXR1cm4gVmVjdG9yPFNwZWVjaFJlY29nbml0aW9u
UmVzdWx0RGF0YT4geyB9OyB9CiAgICAgKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCmluZGV4IDNhODJiZjZi
YWY1NGNlMGM0YjEzMzRlZjZmOGI1ODkzZjNiODk4MmUuLjg5MTQ5MTc5M2Y0ZTAxZWMyZmY2MDEw
N2NiNDg1ZjQ4OGZhNDNlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaApAQCAtNTIsOCArNTIsOCBAQCBTdHJp
bmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
KTsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIHsKIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlKFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZSk7Ci0gICAgc3RhdGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIGNyZWF0ZUVycm9yKFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFNwZWVjaFJl
Y29nbml0aW9uRXJyb3ImKTsKLSAgICBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3Jl
YXRlUmVzdWx0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNv
bnN0IFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+Jik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIGNyZWF0ZUVycm9yKFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFNwZWVjaFJlY29nbml0
aW9uRXJyb3ImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25V
cGRhdGUgY3JlYXRlUmVzdWx0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIsIGNvbnN0IFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+Jik7CiAKICAg
ICBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudElkZW50aWZpZXI7IH0KICAgICBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpAQCAt
NjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdXNpbmcgQ29udGVudCA9IFZh
cmlhbnQ8V1RGOjpNb25vc3RhdGUsIFNwZWVjaFJlY29nbml0aW9uRXJyb3IsIFZlY3RvcjxTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PjsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIENvbnRlbnQgPSBXVEY6Ok1v
bm9zdGF0ZSgpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZShT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZVR5cGUsIENvbnRlbnQpOwogCiAgICAgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllciBtX2NsaWVudElkZW50aWZpZXI7CiAgICAgU3BlZWNoUmVjb2du
aXRpb25VcGRhdGVUeXBlIG1fdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1
bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oCmluZGV4IGNmOWU3MmI5M2MwNjRhNTVkZGRm
YWI3YjNjYWZiNDg5MGUwMzVmNDYuLjI0MGFhM2Q0ODRhOTczYjQ0MTEyYWVmNjFlOGVhYWE4NDdi
NThkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25p
dGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29n
bml0aW9uUHJvdmlkZXIuaApAQCAtMzksMTAgKzM5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IER1bW15U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uKCkp
OwogICAgICAgICB9CiAgICAgICAgIHZvaWQgcmVnaXN0ZXJDbGllbnQoU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50JikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgc3RhcnQoU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgYm9v
bCwgYm9vbCwgdWludDY0X3QpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIHN0YXJ0KFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2ws
IGJvb2wsIHVpbnQ2NF90LCBDbGllbnRPcmlnaW4mJikgZmluYWwgeyB9CiAgICAgICAgIHZvaWQg
c3RvcChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbCB7
IH0KICAgICAgICAgdm9pZCBhYm9ydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyKSBmaW5hbCB7IH0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNvbnN0
IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYmKSBmaW5hbCB7IH0KICAgICB9Owog
ICAgIER1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcigpID0gZGVmYXVsdDsKICAgICBTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24mIHNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggNmQwNjU2NDVkY2VlNjJlNTlkNTBk
YmVmMzc0MzVhNDlhODBlYjY4Mi4uY2QxY2FkOTZiNDAzMTJkYjNiMTg4ZGU3MWY2MDg4YmY3Mjhm
ZDg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTY1LDYgKzE2NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgUnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXIsCiAg
ICAgICAgIFJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1bkph
dmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lciwKKyAgICAgICAgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2ssCiAgICAgICAgIFRleHRDaGVja2VyLAogICAgICAgICBVUkxTY2hl
bWVUYXNrLAogICAgICAgICBVc2VyQ29udGVudENvbnRyb2xsZXIsCkBAIC00MTAsNiArNDExLDcg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxBUEk6Ok9iamVjdDo6VHlwZT4gewogICAg
ICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6UnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXIs
CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExp
c3RlbmVyLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6UnVuSmF2YVNjcmlwdFByb21wdFJl
c3VsdExpc3RlbmVyLAorICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2ssCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpUZXh0Q2hl
Y2tlciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlVSTFNjaGVtZVRhc2ssCiAgICAgICAg
IEFQSTo6T2JqZWN0OjpUeXBlOjpVc2VyQ29udGVudENvbnRyb2xsZXIsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL1dLQmFzZS5oCmluZGV4IDllODJlNTYwMDE4N2VjMWNmOGFmOWJlZTc5ZTcxZDBlOGQ3
ZmQxNWEuLjg0ZWU2YzI4OGY2ZDJlYmQ1MWZhNzNlYTcyNzA4ZjMyOTQ2YmRkODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCkBAIC0xNDEsNiArMTQxLDcgQEAgdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tXZWJzaXRlRGF0YUNvbmZpZ3VyYXRpb25TdG9yZSogV0tXZWJzaXRl
RGF0YVN0b3JlQ28KIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2Vic2l0ZURhdGFTdG9y
ZSogV0tXZWJzaXRlRGF0YVN0b3JlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tX
ZWJzaXRlUG9saWNpZXMqIFdLV2Vic2l0ZVBvbGljaWVzUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tXaW5kb3dGZWF0dXJlcyogV0tXaW5kb3dGZWF0dXJlc1JlZjsKK3R5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sq
IFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWY7CiAKIC8qIFdlYktpdDIg
QnVuZGxlIHR5cGVzICovCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDM0OTk3NWNlYzEwMGFhMzI1ZjgyZmM2
MTUwYTY3NjkxZWExMmVjMGIuLjA4NTExYjYxOGVhNDdkMWUyYjMxNWZlNWQ4ZDQ4MDQ4ZTU4NDJm
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dApAQCAtMjkwLDYgKzI5MCw3IEBAIFVJUHJvY2Vzcy9SZXNwb25zaXZl
bmVzc1RpbWVyLmNwcAogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAogVUlQ
cm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKIFVJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlci5jcHAKK1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
LmNwcAogVUlQcm9jZXNzL1RleHRDaGVja2VyLmNwcAogVUlQcm9jZXNzL1RleHRDaGVja2VyQ29t
cGxldGlvbi5jcHAKIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAK
QEAgLTQwMyw2ICs0MDQsNyBAQCBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKIFVJ
UHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1Jl
c291cmNlQ2FjaGVNYW5hZ2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRlUmVm
LmNwcAorVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2suY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5jcHAKIFVJUHJvY2Vzcy9BUEkv
Qy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJD
b250ZW50RXh0ZW5zaW9uU3RvcmVSZWYuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMDg0
ZDUxMzUyZDQ0YTQ1MDk0OWIzZmJkMWQxZDc2MTM1ZmIyYmViMi4uNjNiZDQwYzNlZjYwMWVlMTQ5
NGExYjQ3MTRhY2UwZTFmYTE3NDhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMzczLDEy
ICszNzMsMTQgQEAgVUlQcm9jZXNzL0NvY29hL0dsb2JhbEZpbmRJblBhZ2VTdGF0ZS5tbQogVUlQ
cm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9MZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0KIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVV0
aWxpdGllcy5tbQorVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQog
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1BhZ2VD
bGllbnRJbXBsQ29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHkubW0KIFVJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQogVUlQcm9j
ZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1Nl
c3Npb25TdGF0ZUNvZGluZy5tbQorVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXJDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250
cm9sbGVyQ29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1t
CiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJVUlDbGllbnQuaAppbmRleCBhYTdkODljMDFlNzM1MjBjZTNlZTA0MjI2YjlhZTg1OTcw
YmZhYTZlLi5iMmRmZjI5ODNlZTA5OGFkYmM5MjcxODE1YzQyYWI2YWQ2ZDQwNDk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtMjAyLDYgKzIwMiw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCk7CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvclNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNl
Y3VyaXR5T3JpZ2luJiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2Up
OyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tBUElDYXN0LmgKaW5kZXggYjUyYzQ0YmFlYTlhY2Y5ZmMwMzMyZDVhOWYzNzM1NmU5ZDIz
ODYyOS4uMThjYmZkNWI3NGViODc3MGE1NzhmMTVjOGEwMTYxNDk5MDIxNDU0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKQEAgLTc5LDYgKzc5LDcgQEAgY2xh
c3MgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOwogY2xhc3MgRG93bmxvYWRQcm94eTsK
IGNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CiBjbGFzcyBOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdDsKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrOwogY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk7CiBjbGFzcyBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OwpAQCAt
MTUyLDYgKzE1Myw3IEBAIFdLX0FERF9BUElfTUFQUElORyhXS1ByZWZlcmVuY2VzUmVmLCBXZWJQ
cmVmZXJlbmNlcykKIFdLX0FERF9BUElfTUFQUElORyhXS1Byb3RlY3Rpb25TcGFjZVJlZiwgV2Vi
UHJvdGVjdGlvblNwYWNlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXJSZWYsIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyKQogV0tfQURE
X0FQSV9NQVBQSU5HKFdLU2Vzc2lvblN0YXRlUmVmLCBBUEk6OlNlc3Npb25TdGF0ZSkKK1dLX0FE
RF9BUElfTUFQUElORyhXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmLCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaykKIFdLX0FERF9BUElfTUFQUElORyhX
S1RleHRDaGVja2VyUmVmLCBXZWJUZXh0Q2hlY2tlcikKIFdLX0FERF9BUElfTUFQUElORyhXS1Vz
ZXJDb250ZW50Q29udHJvbGxlclJlZiwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpCiBX
S19BRERfQVBJX01BUFBJTkcoV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUmVmLCBBUEk6OkNv
bnRlbnRSdWxlTGlzdFN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAKaW5kZXggNDM2OWNkZDgyNWI1MTU3ZmIwMTBjM2Y4MWFlNzhlNjYwZGFhNzRmYy4uMTFjNjZi
ZjQyODQ5MzI4MTVkN2VmYWE0YmFlMzkwNmVmNzIzNDUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAiUGFnZUNs
aWVudC5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiUHJpbnRJ
bmZvLmgiCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLUGFnZVBvbGljeUNsaWVudEludGVy
bmFsLmgiCiAjaW5jbHVkZSAiV0tQYWdlUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNJbnRlcm5hbC5o
IgpAQCAtMTE1LDcgKzExNiw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1Bh
Z2VQb2xpY3lDbGllbnRCYXNlPiB7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFp
dHM8V0tQYWdlVUlDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZVVJ
Q2xpZW50VjAsIFdLUGFnZVVJQ2xpZW50VjEsIFdLUGFnZVVJQ2xpZW50VjIsIFdLUGFnZVVJQ2xp
ZW50VjMsIFdLUGFnZVVJQ2xpZW50VjQsIFdLUGFnZVVJQ2xpZW50VjUsIFdLUGFnZVVJQ2xpZW50
VjYsIFdLUGFnZVVJQ2xpZW50VjcsIFdLUGFnZVVJQ2xpZW50VjgsIFdLUGFnZVVJQ2xpZW50Vjks
IFdLUGFnZVVJQ2xpZW50VjEwLCBXS1BhZ2VVSUNsaWVudFYxMSwgV0tQYWdlVUlDbGllbnRWMTIs
IFdLUGFnZVVJQ2xpZW50VjEzLCBXS1BhZ2VVSUNsaWVudFYxND4gVmVyc2lvbnM7CisgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZVVJQ2xpZW50VjAsIFdLUGFnZVVJQ2xpZW50VjEsIFdLUGFn
ZVVJQ2xpZW50VjIsIFdLUGFnZVVJQ2xpZW50VjMsIFdLUGFnZVVJQ2xpZW50VjQsIFdLUGFnZVVJ
Q2xpZW50VjUsIFdLUGFnZVVJQ2xpZW50VjYsIFdLUGFnZVVJQ2xpZW50VjcsIFdLUGFnZVVJQ2xp
ZW50VjgsIFdLUGFnZVVJQ2xpZW50VjksIFdLUGFnZVVJQ2xpZW50VjEwLCBXS1BhZ2VVSUNsaWVu
dFYxMSwgV0tQYWdlVUlDbGllbnRWMTIsIFdLUGFnZVVJQ2xpZW50VjEzLCBXS1BhZ2VVSUNsaWVu
dFYxNCwgV0tQYWdlVUlDbGllbnRWMTU+IFZlcnNpb25zOwogfTsKIAogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQpAQCAtMjExMCw2ICsyMTExLDEzIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xp
ZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9u
UGFuZWxSZXN1bHQ6OlByZXNlbnRlZCk7CiAgICAgICAgIH0KICNlbmRpZgorICAgICAgICB2b2lk
IGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFn
ZVByb3h5JiBwYWdlLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiByZXF1ZXN0aW5nT3JpZ2luLCBBUEk6
OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVz
dCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50LmRlY2lk
ZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QodG9BUEkoJnBhZ2Up
LCB0b0FQSSgmcmVxdWVzdGluZ09yaWdpbiksIHRvQVBJKCZ0b3BPcmlnaW4pLCB0b0FQSShTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKS5wdHIoKSkpOworICAgICAgICB9CiAgICAgfTsKIAogICAgIHRvSW1wbChwYWdl
UmVmKS0+c2V0VUlDbGllbnQobWFrZVVuaXF1ZTxVSUNsaWVudD4od2tDbGllbnQpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCmluZGV4IGI2Mzg4
MTU1Y2QzMDM2ZTY2NjExMGYxOTI1NjE2YWZkMzdlODY4YmEuLjdjZDhmZDBkOTg0Y2ZkOWY0ZDQ0
YmZlODNkODVkYjFiNTYxNzU5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlVUlDbGllbnQuaApAQCAtMTM2LDYgKzEzNiw3IEBAIHR5cGVkZWYgdm9pZCAoKldL
UGFnZURpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZUNhbGxiYWNr
KShXS1BhCiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VTaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9u
QW5kTW90aW9uQWNjZXNzQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5T3JpZ2lu
UmVmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIAogdHlwZWRlZiB2
b2lkICgqV0tQYWdlUnVuV2ViQXV0aGVudGljYXRpb25QYW5lbENhbGxiYWNrKSgpOwordHlwZWRl
ZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTZWN1cml0eU9yaWdpblJlZiByZXF1
ZXN0aW5nT3JpZ2luLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHRvcE9yaWdpbiwgV0tTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBjYWxsYmFjayk7CiAKIC8vIERlcHJlY2F0ZWQK
IHR5cGVkZWYgV0tQYWdlUmVmICgqV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjApKFdLUGFnZVJlZiBwYWdlLCBXS0RpY3Rpb25hcnlSZWYgZmVhdHVyZXMs
IFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0
b24sIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwpAQCAtMTM1Myw2ICsxMzU0LDExNyBAQCB0eXBl
ZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFYxNCB7CiAgICAgV0tQYWdlUnVuV2ViQXV0aGVudGlj
YXRpb25QYW5lbENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5XZWJBdXRo
ZW50aWNhdGlvblBhbmVsOwogfSBXS1BhZ2VVSUNsaWVudFYxNDsKIAordHlwZWRlZiBzdHJ1Y3Qg
V0tQYWdlVUlDbGllbnRWMTUgeworICAgIFdLUGFnZVVJQ2xpZW50QmFzZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTsKKworICAgIC8vIFZlcnNp
b24gMC4KKyAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMCAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MDsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNob3dQYWdlOworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2U7CisgICAg
V0tQYWdlVGFrZUZvY3VzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0YWtlRm9jdXM7CisgICAgV0tQYWdlRm9jdXNDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1czsKKyAgICBXS1BhZ2VV
bmZvY3VzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuZm9jdXM7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNr
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0X2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlU2V0U3RhdHVzVGV4dENhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0dXNUZXh0OworICAg
IFdLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVtZW50Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMCAgICAgICAgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MDsKKyAgICBXS1BhZ2VNaXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjAgICAgIG1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjA7CisgICAgV0tQYWdlRGlkTm90SGFuZGxlS2V5RXZlbnRDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWROb3RIYW5kbGVLZXlFdmVudDsKKyAgICBX
S1BhZ2VEaWROb3RIYW5kbGVXaGVlbEV2ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQ7CisgICAgV0tQYWdlR2V0VG9vbGJhcnNB
cmVWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYmFy
c0FyZVZpc2libGU7CisgICAgV0tQYWdlU2V0VG9vbGJhcnNBcmVWaXNpYmxlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb29sYmFyc0FyZVZpc2libGU7CisgICAg
V0tQYWdlR2V0TWVudUJhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZW51QmFySXNWaXNpYmxlOworICAgIFdLUGFnZVNldE1lbnVCYXJJc1Zpc2li
bGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWVudUJhcklz
VmlzaWJsZTsKKyAgICBXS1BhZ2VHZXRTdGF0dXNCYXJJc1Zpc2libGVDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c0JhcklzVmlzaWJsZTsKKyAgICBXS1BhZ2VT
ZXRTdGF0dXNCYXJJc1Zpc2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldFN0YXR1c0JhcklzVmlzaWJsZTsKKyAgICBXS1BhZ2VHZXRJc1Jlc2l6YWJsZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVzaXphYmxlOwor
ICAgIFdLUGFnZVNldElzUmVzaXphYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0SXNSZXNpemFibGU7CisgICAgV0tQYWdlR2V0V2luZG93RnJhbWVD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRXaW5kb3dG
cmFtZTsKKyAgICBXS1BhZ2VTZXRXaW5kb3dGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFdpbmRvd0ZyYW1lOworICAgIFdLUGFnZVJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjYgICAgcnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjY7CisgICAgV0tQ
YWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWREcmF3OworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZURpZFNjcm9sbDsKKyAgICBXS1Bh
Z2VFeGNlZWRlZERhdGFiYXNlUXVvdGFDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VlZGVkRGF0YWJhc2VRdW90YTsKKyAgICBXS1BhZ2VSdW5PcGVuUGFuZWxDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bk9wZW5QYW5l
bDsKKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
Q2FsbGJhY2sgICAgICAgICAgIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3Q7CisgICAgV0tQYWdlSGVhZGVySGVpZ2h0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJIZWlnaHQ7CisgICAgV0tQYWdlRm9vdGVySGVp
Z2h0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290
ZXJIZWlnaHQ7CisgICAgV0tQYWdlRHJhd0hlYWRlckNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3SGVhZGVyOworICAgIFdLUGFnZURyYXdGb290
ZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJh
d0Zvb3RlcjsKKyAgICBXS1BhZ2VQcmludEZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50RnJhbWU7CisgICAgV0tQYWdlVUlDbGllbnRD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5N
b2RhbDsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDE7IC8vIFVzZWQgdG8gYmUgZGlkQ29tcGxldGVS
dWJiZXJCYW5kRm9yTWFpbkZyYW1lCisgICAgV0tQYWdlU2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fk
c0ZvbGRlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBzYXZlRGF0YVRvRmlsZUluRG93
bmxvYWRzRm9sZGVyOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdF91
bmF2YWlsYWJsZTsKKworICAgIC8vIFZlcnNpb24gMS4KKyAgICBXS1BhZ2VDcmVhdGVOZXdQYWdl
Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSAgICAgICAgICAgICAgICAgIGNyZWF0ZU5l
d1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTsKKyAgICBXS1BhZ2VNb3VzZURpZE1vdmVPdmVy
RWxlbWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50OworICAgIFdLUGFnZURlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQYWdlVW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlj
a2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRv
bkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTsKKworICAgIC8vIFZlcnNpb24gMi4KKyAg
ICBXS1BhZ2VTaG93Q29sb3JQaWNrZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNob3dDb2xvclBpY2tlcjsKKyAgICBXS1BhZ2VIaWRlQ29sb3JQaWNrZXJD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVDb2xvclBp
Y2tlcjsKKyAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZDsKKwor
ICAgIC8vIFZlcnNpb24gMy4KKyAgICBXS1BhZ2VQaW5uZWRTdGF0ZURpZENoYW5nZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZFN0YXRlRGlkQ2hhbmdlOwor
CisgICAgLy8gVmVyc2lvbiA0LgorICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkMjsgLy8gVXNlZCB0byBi
ZSBkaWRCZWdpblRyYWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MuCisgICAgdm9pZCogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnVzZWQzOyAvLyBVc2VkIHRvIGJlIGRpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzLgorICAg
IHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW51c2VkNDsgLy8gVXNlZCB0byBiZSBkaWRDYW5jZWxUcmFja2luZ1BvdGVu
dGlhbExvbmdNb3VzZVByZXNzLgorICAgIFdLUGFnZUlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQbGF5aW5nQXVkaW9EaWRDaGFu
Z2U7CisKKyAgICAvLyBWZXJzaW9uIDUuCisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VEaWRDbGlja0F1dG9GaWxsQnV0
dG9uQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZENsaWNrQXV0b0Zp
bGxCdXR0b247CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZv
clVzZVdpdGhWNTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjU7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjU7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQ1OyAvLyBVc2VkIHRvIGJl
IG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgorCisgICAgLy8gVmVyc2lvbiA2LgorICAg
IFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRB
bGVydDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtOworICAgIFdLUGFnZVJ1
bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnVuSmF2YVNjcmlwdFByb21wdDsKKyAgICBXS0NoZWNrVXNlck1lZGlhUGVybWlzc2lvbkNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrVXNlck1lZGlhUGVy
bWlzc2lvbkZvck9yaWdpbjsKKworICAgIC8vIFZlcnNpb24gNy4KKyAgICBXS1BhZ2VSdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDsKKyAgICBXS0Z1bGxzY3JlZW5NYXlSZXR1cm5Ub0lu
bGluZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5NYXlS
ZXR1cm5Ub0lubGluZTsKKworICAgIC8vIFZlcnNpb24gOC4KKyAgICBXS1JlcXVlc3RQb2ludGVy
TG9ja0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3RQb2ludGVyTG9jazsKKyAgICBXS0RpZExvc2VQb2ludGVyTG9ja0NhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZExvc2VQb2ludGVyTG9jazsKKworICAg
IC8vIFZlcnNpb24gOS4KKyAgICBXS0hhbmRsZUF1dG9wbGF5RXZlbnRDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUF1dG9wbGF5RXZlbnQ7CisKKyAg
ICAvLyBWZXJzaW9uIDEwLgorICAgIFdLSGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFu
Z2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgaGFzVmlkZW9JblBpY3R1cmVJblBpY3R1
cmVEaWRDaGFuZ2U7CisgICAgV0tEaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxl
SW5Gb3JlZ3JvdW5kQ2FsbGJhY2sgICAgICAgICBkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VM
aW1pdFdoaWxlSW5Gb3JlZ3JvdW5kOworCisgICAgLy8gVmVyc2lvbiAxMS4KKyAgICBXS1BhZ2VE
aWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2VDYWxsYmFjayAgICAg
ICAgIGRpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZTsKKworICAg
IC8vIFZlcnNpb24gMTIuCisgICAgV0tQYWdlUmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZp
cm07CisKKyAgICAvLyBWZXJzaW9uIDEzLgorICAgIFdLUGFnZVNob3VsZEFsbG93RGV2aWNlT3Jp
ZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDYWxsYmFjayAgICAgICAgICAgc2hvdWxkQWxsb3dEZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzczsKKworICAgIC8vIFZlcnNpb24gMTQuCisgICAg
V0tQYWdlUnVuV2ViQXV0aGVudGljYXRpb25QYW5lbENhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsOworCisgICAgLy8gVmVyc2lvbiAx
NS4KKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0Q2FsbGJhY2sgICAgIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3Q7CisgICAgCit9IFdLUGFnZVVJQ2xpZW50VjE1OworCiAjaWZkZWYgX19jcGx1
c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wY2M4ZjlhMzVkYjg0MTFlMDM4NWE3YWUxNTQ5YTM5YWY4MTMyZWQ2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgiCisKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2tHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjazo6QVBJVHlwZSk7Cit9CisKK3ZvaWQgV0tTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFja0NvbXBsZXRlKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2tSZWYgc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2ssIGJvb2wgZ3Jh
bnRlZCkKK3sKKyAgICByZXR1cm4gdG9JbXBsKHNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrKS0+Y29tcGxldGUoZ3JhbnRlZCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNhbGxiYWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhhZWFmYzY5ODRiYTk2ZjU0ODkyZTczMmFmZWEz
YTA2M2M5YzcyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaApAQCAtMCwwICsxLDQw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNl
Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQ
T1JUIFdLVHlwZUlEIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tHZXRUeXBl
SUQodm9pZCk7CisKK1dLX0VYUE9SVCB2b2lkIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2tDb21wbGV0ZShXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVm
IHNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLCBib29sIGdyYW50ZWQpOworCisj
aWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggZDFlYWUyMDFl
NjU0MmY0ZmFiNjAxOTgwZGM2NjEyNDkxMzE5NzkzZi4uNWVhYjQ2NTc5Zjk5ZmE2ZjYzMzE2YTRj
MDU0NDIyZDYzYTZmZDkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC0xNTIsNiArMTUyLDggQEAgc3Ry
dWN0IFVJRWRnZUluc2V0czsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyB3aWxsU2hhcmVBY3Rpdml0eUl0ZW1zOihOU0FycmF5ICopYWN0aXZpdHlJdGVtcyBXS19BUElf
QVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkZvck9yaWdpbjoo
V0tTZWN1cml0eU9yaWdpbiAqKXJlcXVlc3RpbmdPcmlnaW4gdG9wT3JpZ2luOihXS1NlY3VyaXR5
T3JpZ2luICopdG9wT3JpZ2luIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBhdXRob3Jp
emVkKSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKwogI2lmIFRBUkdFVF9PU19JUEhPTkUKIAogLSAoQk9PTClfd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzaG91bGRJbmNsdWRlQXBwTGlua0FjdGlvbnNGb3JF
bGVtZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQgV0tfQVBJX0FWQUlMQUJM
RShpb3MoOS4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9N
ZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzNWM1MjJmYzQzNDAzNTgy
MTI0ZGNhYzMxYWU5MjZlZjU4NDVjOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaApAQCAtMCwwICsxLDM4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
Vk1lZGlhRm9ybWF0Lmg+CisjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbXBv
cnQgPHd0Zi9EZXF1ZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCByZXF1ZXN0QVZD
YXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlKEFWTWVkaWFUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wgYXV0aG9yaXplZCk+JiYpOwordm9pZCByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9y
TWVkaWFUeXBlcyhEZXF1ZTxBVk1lZGlhVHlwZT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wgYXV0aG9yaXplZCk+JiYpOworYm9vbCBjaGVja0FWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlw
ZXNBbmRGaWx0ZXIoRGVxdWU8QVZNZWRpYVR5cGU+JiB0eXBlcyk7CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQ
ZXJtaXNzaW9uVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVk
aWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYzRhYmI3YTczODczNDJiMWQz
ODg2MWE4MzhjZTY5YjExOWQ5OTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KQEAgLTAsMCArMSw4NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTWVkaWFQZXJtaXNz
aW9uVXRpbGl0aWVzLmgiCisKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8cGFs
L2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2
b2lkIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUoQVZNZWRpYVR5cGUgdHlwZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIGRlY2lzaW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oQk9PTCBhdXRob3JpemVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGlz
TWFpblRocmVhZCgpKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVk
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGF1
dGhvcml6ZWRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRo
b3JpemVkKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisgICAgW1BBTDo6Z2V0QVZDYXB0dXJlRGV2
aWNlQ2xhc3MoKSByZXF1ZXN0QWNjZXNzRm9yTWVkaWFUeXBlOnR5cGUgY29tcGxldGlvbkhhbmRs
ZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKK30KKwordm9pZCByZXF1ZXN0QVZDYXB0dXJlQWNj
ZXNzRm9yTWVkaWFUeXBlcyhEZXF1ZTxBVk1lZGlhVHlwZT4mIHR5cGVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wgYXV0aG9yaXplZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
aWYgKHR5cGVzLmlzRW1wdHkoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gdHlwZSA9IHR5cGVzLnRha2VGaXJz
dCgpOworICAgIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUodHlwZSwgW3R5cGVz
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShCT09MIGF1
dGhvcml6ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoIWF1dGhvcml6ZWQpIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGVzKHR5cGVz
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKK2Jvb2wgY2hlY2tB
VkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGVzQW5kRmlsdGVyKERlcXVlPEFWTWVkaWFUeXBlPiYg
dHlwZXMpCit7CisgICAgRGVxdWU8QVZNZWRpYVR5cGU+IHBlbmRpbmdUeXBlczsKKyAgICB3aGls
ZSAoIXR5cGVzLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIHR5cGUgPSB0eXBlcy50YWtlRmly
c3QoKTsKKyAgICAgICAgYXV0byBhdXRob3JpemF0aW9uU3RhdHVzID0gW1BBTDo6Z2V0QVZDYXB0
dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOnR5cGVdOwor
ICAgICAgICBpZiAoYXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNE
ZW5pZWQgfHwgYXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNSZXN0
cmljdGVkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoYXV0aG9yaXph
dGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkKQorICAgICAg
ICAgICAgcGVuZGluZ1R5cGVzLmFwcGVuZCh0eXBlKTsKKyAgICB9CisKKyAgICB0eXBlcyA9IHBl
bmRpbmdUeXBlczsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzgyOTIwOTgyYjUwOWM0ODcwZDBkNDYxNGFlZDk0MzRhNDUzMTNlYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMCwwICsxLDI1MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlci5oIgorCisjaW1wb3J0ICJBUElTZWN1cml0eU9yaWdpbi5oIgorI2ltcG9ydCAiQVBJVUlD
bGllbnQuaCIKKyNpbXBvcnQgIk1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oIgorI2ltcG9ydCAi
U2FuZGJveFV0aWxpdGllcy5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3
dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4K
KworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKyNpbXBvcnQgPFNwZWVjaC9TcGVlY2guaD4K
KworU09GVF9MSU5LX0ZSQU1FV09SSyhTcGVlY2gpCitTT0ZUX0xJTktfQ0xBU1MoU3BlZWNoLCBT
RlNwZWVjaFJlY29nbml6ZXIpCisjZW5kaWYKKworI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRh
dGlvblNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYg
b3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb250SGFuZGxl
cikKK3sKKyAgICBtX3JlcXVlc3RzLmFwcGVuZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0OjpjcmVhdGUoV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRpb250SGFuZGxl
cikpKTsKKyAgICBpZiAobV9yZXF1ZXN0cy5zaXplKCkgPT0gMSkKKyAgICAgICAgc3RhcnROZXh0
UmVxdWVzdCgpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6
OnN0YXJ0TmV4dFJlcXVlc3QoKQoreworICAgIGlmIChtX3JlcXVlc3RzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgY2hlY2tTYW5kYm94UmVxdWlyZW1lbnQoKTsKK30KKwordm9p
ZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1
ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uIGRlY2lzaW9u
KQoreworICAgIEFTU0VSVCghbV9yZXF1ZXN0cy5pc0VtcHR5KCkpOworICAgIGF1dG8gY3VycmVu
dFJlcXVlc3QgPSBtX3JlcXVlc3RzLnRha2VGaXJzdCgpOworICAgIGN1cnJlbnRSZXF1ZXN0LT5j
b21wbGV0ZShkZWNpc2lvbik7CisKKyAgICBzdGFydE5leHRSZXF1ZXN0KCk7Cit9CisKK3N0YXRp
YyBib29sIHBlcmZvcm1TYW5kYm94Q2hlY2soKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBp
ZiAoY3VycmVudFByb2Nlc3NJc1NhbmRib3hlZCgpICYmICEhc2FuZGJveF9jaGVjayhnZXRwaWQo
KSwgImRldmljZS1taWNyb3Bob25lIiwgU0FOREJPWF9GSUxURVJfTk9ORSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnQoKQor
eworICAgIGlmICghbV9pc1NhbmRib3hDaGVja1Bhc3NlZC5oYXNWYWx1ZSgpKQorICAgICAgICBt
X2lzU2FuZGJveENoZWNrUGFzc2VkID0gcGVyZm9ybVNhbmRib3hDaGVjaygpOworCisgICAgaWYg
KCFtX2lzU2FuZGJveENoZWNrUGFzc2VkKSB7CisgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVl
c3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2hlY2tNaWNyb3Bob25lQWNjZXNzKCk7Cit9
CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tNaWNyb3Bo
b25lQWNjZXNzKCkKK3sKKyAgICBpZiAobV9wYWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVE
ZXZpY2VzRW5hYmxlZCgpKSB7CisgICAgICAgIGNoZWNrQW5kUmVxdWVzdFVzZXJQZXJtaXNzaW9u
Rm9yT3JpZ2luKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1faXNNaWNy
b3Bob25lQWNjZXNzQXV0aG9yaXplZC5oYXNWYWx1ZSgpKSB7CisjaWYgSEFWRShTUEVFQ0hSRUNP
R05JWkVSKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAgICAgICBhdXRvIG1pY3JvcGhvbmVBdXRo
b3JpemF0aW9uU3RhdHVzID0gW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3Jp
emF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW9dOworICAgICAgICBpZiAo
bWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzQXV0
aG9yaXplZCkKKyAgICAgICAgICAgIG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZCA9IHRy
dWU7CisgICAgICAgIGlmIChtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhv
cml6YXRpb25TdGF0dXNEZW5pZWQgfHwgbWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPT0g
QVZBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkKKyAgICAgICAgICAgIG1faXNNaWNyb3Bo
b25lQWNjZXNzQXV0aG9yaXplZCA9IGZhbHNlOworICAgICAgICBpZiAobWljcm9waG9uZUF1dGhv
cml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZCkgewor
ICAgICAgICAgICAgYm9vbCBoYXNEZXNjcmlwdGlvblN0cmluZyA9IGR5bmFtaWNfb2JqY19jYXN0
PE5TU3RyaW5nPihOU0J1bmRsZS5tYWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNNaWNyb3Bo
b25lVXNhZ2VEZXNjcmlwdGlvbiJdKS5sZW5ndGg7CisgICAgICAgICAgICBpZiAoIWhhc0Rlc2Ny
aXB0aW9uU3RyaW5nKQorICAgICAgICAgICAgICAgIG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9y
aXplZCA9IGZhbHNlOworICAgICAgICB9CisjZWxzZQorICAgICAgICBtX2lzTWljcm9waG9uZUFj
Y2Vzc0F1dGhvcml6ZWQgPSB0cnVlOworI2VuZGlmCisgICAgfQorCisgICAgaWYgKG1faXNNaWNy
b3Bob25lQWNjZXNzQXV0aG9yaXplZC5oYXNWYWx1ZSgpICYmICFtX2lzTWljcm9waG9uZUFjY2Vz
c0F1dGhvcml6ZWQudmFsdWUoKSkgeworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpEZW55KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNj
ZXNzKCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hl
Y2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKQoreworICAgIGlmICghbV9pc1NwZWVj
aFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQuaGFzVmFsdWUoKSkgeworI2lmIEhB
VkUoU1BFRUNIUkVDT0dOSVpFUikgJiYgVVNFKEFWRk9VTkRBVElPTikKKyAgICAgICAgYXV0byBz
cGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1cyA9IFtnZXRTRlNwZWVjaFJlY29nbml6
ZXJDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNdOworICAgICAgICBpZiAoc3BlZWNoUmVjb2du
aXplckF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlv
blN0YXR1c0F1dGhvcml6ZWQpCisgICAgICAgICAgICBtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2
aWNlQWNjZXNzQXV0aG9yaXplZCA9IHRydWU7CisgICAgICAgIGlmIChzcGVlY2hSZWNvZ25pemVy
QXV0aG9yaXphdGlvblN0YXR1cyA9PSBTRlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3Rh
dHVzUmVzdHJpY3RlZCB8fCBzcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1cyA9PSBT
RlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkKQorICAgICAgICAgICAg
bV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQgPSBmYWxzZTsKKyAg
ICAgICAgaWYgKHNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzID09IFNGU3BlZWNo
UmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkKSB7CisgICAgICAgICAg
ICBib29sIGhhc0Rlc2NyaXB0aW9uU3RyaW5nID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNTdHJpbmc+
KE5TQnVuZGxlLm1haW5CdW5kbGUuaW5mb0RpY3Rpb25hcnlbQCJOU1NwZWVjaFJlY29nbml0aW9u
VXNhZ2VEZXNjcmlwdGlvbiJdKS5sZW5ndGg7CisgICAgICAgICAgICBpZiAoIWhhc0Rlc2NyaXB0
aW9uU3RyaW5nKQorICAgICAgICAgICAgICAgIG1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VB
Y2Nlc3NBdXRob3JpemVkID0gZmFsc2U7CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIG1faXNT
cGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkID0gdHJ1ZTsKKyNlbmRpZgor
ICAgIH0KKworICAgIGlmIChtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQuaGFzVmFsdWUo
KSAmJiAhbV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkLnZhbHVlKCkpIHsKKyAgICAgICAg
Y29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
OjpEZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjaGVja0Fu
ZFJlcXVlc3RVc2VyUGVybWlzc2lvbkZvck9yaWdpbigpOworfQorCit2b2lkIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrQW5kUmVxdWVzdFVzZXJQZXJtaXNzaW9uRm9y
T3JpZ2luKCkKK3sKKyAgICBBU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKyAgICBhdXRv
JiBjdXJyZW50UmVxdWVzdCA9IG1fcmVxdWVzdHMuZmlyc3QoKTsKKworICAgIGF1dG8gY2xpZW50
T3JpZ2luID0gY3VycmVudFJlcXVlc3QtPm9yaWdpbigpOworICAgIGlmIChtX29yaWdpblBlcm1p
c3Npb25NYXAuY29udGFpbnMoY2xpZW50T3JpZ2luLnRvcE9yaWdpbikpIHsKKyAgICAgICAgYm9v
bCBncmFudGVkID0gbV9vcmlnaW5QZXJtaXNzaW9uTWFwLmdldChjbGllbnRPcmlnaW4udG9wT3Jp
Z2luKTsKKyAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChncmFudGVkID8gU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkFsbG93IDogU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyldKGJvb2wgZ3JhbnRlZCkgeworICAgICAgICBpZiAoIXdlYWtUaGlz
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fb3JpZ2luUGVybWlzc2lvbk1hcC5z
ZXQobV9yZXF1ZXN0cy5maXJzdCgpLT5vcmlnaW4oKS50b3BPcmlnaW4sIGdyYW50ZWQpOworICAg
ICAgICBpZiAoIWdyYW50ZWQpIHsKKyAgICAgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3Qo
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkRlbnkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgcmVxdWVzdE1pY3JvcGhvbmVB
Y2Nlc3NJZk5lZWRlZCgpOworICAgIH07CisKKyAgICBhdXRvIHJlcXVlc3RpbmdPcmlnaW4gPSBj
bGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0byB0b3BP
cmlnaW4gPWNsaWVudE9yaWdpbi50b3BPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBtX3Bh
Z2UudWlDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KG1fcGFnZSwgQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJlcXVlc3RpbmdPcmln
aW4uZ2V0KCkpLmdldCgpLCBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodG9wT3JpZ2luLmdl
dCgpKS5nZXQoKSwgV1RGTW92ZShkZWNpc2lvbkhhbmRsZXIpKTsKK30KKwordm9pZCBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0TWljcm9waG9uZUFjY2Vzc0lmTmVl
ZGVkKCkKK3sKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpICYmIFVTRShBVkZPVU5EQVRJT04p
CisgICAgaWYgKCFtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQuaGFzVmFsdWUoKSkgewor
ICAgICAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlKEFWTWVkaWFUeXBlQXVk
aW8sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShib29sIGF1dGhvcml6ZWQp
IHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICBpZiAoIWF1dGhvcml6ZWQpIHsKKyAgICAgICAgICAgICAgICBtX2lzTWlj
cm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBjb21wbGV0
ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lz
aW9uOjpEZW55KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZCA9IHRydWU7CisgICAgICAg
ICAgICByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzSWZOZWVkZWQoKTsKKyAg
ICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIEFTU0VSVCht
X2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQuaGFzVmFsdWUoKSk7CisgICAgQVNTRVJUKG1f
aXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZC52YWx1ZSgpKTsKKworICAgIHJlcXVlc3RTcGVl
Y2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NJZk5lZWRlZCgpOworfQorCit2b2lkIFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNlcnZp
Y2VBY2Nlc3NJZk5lZWRlZCgpCit7CisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorICAgIGlm
ICghbV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQuaGFzVmFsdWUo
KSkgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBhdXRvIG1haW5U
aHJlYWRIYW5kbGVyID0gKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShTRlNw
ZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cykgbXV0YWJsZSB7CisgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgaWYgKHN0YXR1cyAhPSBTRlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVz
QXV0aG9yaXplZCkgeworICAgICAgICAgICAgICAgIG1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZp
Y2VBY2Nlc3NBdXRob3JpemVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgY29tcGxldGVDdXJy
ZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6
RGVueSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCA9IHRydWU7
CisgICAgICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uOjpBbGxvdyk7CisgICAgICAgIH0pOworICAgICAgICBh
dXRvIGRlY2lzaW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbbWFpblRocmVhZEhhbmRsZXIgPSBX
VEZNb3ZlKG1haW5UaHJlYWRIYW5kbGVyKV0oU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlv
blN0YXR1cyBzdGF0dXMpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFpc01haW5UaHJlYWQo
KSkgeworICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW21haW5UaHJlYWRIYW5kbGVy
ID0gV1RGTW92ZShtYWluVGhyZWFkSGFuZGxlciksIHN0YXR1c10oKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICAgICAgbWFpblRocmVhZEhhbmRsZXIoc3RhdHVzKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBtYWluVGhyZWFkSGFuZGxlcihzdGF0dXMpOworICAgICAgICB9KTsKKyAgICAgICAgW2dldFNG
U3BlZWNoUmVjb2duaXplckNsYXNzKCkgcmVxdWVzdEF1dGhvcml6YXRpb246ZGVjaXNpb25IYW5k
bGVyLmdldCgpXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgQVNTRVJU
KG1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkLmhhc1ZhbHVlKCkp
OworICAgIEFTU0VSVChtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXpl
ZC52YWx1ZSgpKTsKKworICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uUmVxdWVzdDo6RGVjaXNpb246OkFsbG93KTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApp
bmRleCA4YTA5NDc0NWMxZjI0YmUxMDVkYmIwMmFiOTFlMzA3YjMxZDQ4NmIxLi5lYWQ0ZDU3ZWUw
YTMzYTZiM2VlYmJkZWM0M2Y4YjczOTU1ZDk3NjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCkBAIC0xNjEsNiArMTYxLDcgQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoV0VCX0FVVEhOKQogICAgICAgICB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwo
V2ViUGFnZVByb3h5JiwgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2ViRnJhbWVQcm94
eSYsIEZyYW1lSW5mb0RhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRoZW50aWNh
dGlvblBhbmVsUmVzdWx0KT4mJikgZmluYWw7CiAjZW5kaWYKKyAgICAgICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYs
IEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAKICAgICAgICAgVUlEZWxlZ2F0ZSYgbV91aURl
bGVnYXRlOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbQppbmRleCBkMDMzOGY4ZDZlM2I5YTEzZGYyYWYxNTNhY2I1ZGViMzhlMWZjZDliLi4xOTM0
NTZiMWMwNzg2Nzk2OTYxOTRiMzUzMWJjNjVkYzQxNTUxOWU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTEzMzIsNCArMTMzMiwyNiBAQCB2b2lk
IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjppbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKGNv
bnN0IFdlYkNvcmU6OkludFNpegogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVnYXRlUHJp
dmF0ZT4+KGRlbGVnYXRlKSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGltYWdlT3JN
ZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQ6bmV3U2l6ZV07CiB9CiAKK3ZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHJlcXVl
c3RpbmdPcmlnaW4sIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGRlbGVn
YXRlID0gKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPiltX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5n
ZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkZvck9yaWdpbjp0b3BPcmlnaW46ZGVjaXNpb25IYW5kbGVyOildKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShk
ZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25Gb3JPcmlnaW46dG9wT3JpZ2luOmRlY2lzaW9uSGFuZGxlcjopKTsKKyAgICBbZGVsZWdh
dGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyByZXF1ZXN0U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uRm9yT3JpZ2luOndyYXBwZXIocmVxdWVzdGluZ09yaWdpbikgdG9wT3JpZ2lu
OndyYXBwZXIodG9wT3JpZ2luKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0
aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UoY29tcGxldGlvbkhhbmRsZXIsIHsgfSksIGNoZWNr
ZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZ3JhbnRlZCk7CisgICAgfSkuZ2V0KCldOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkubW0KaW5kZXggOTk3NTc1ZGUwMjE2YTljMGNkNzZhZmNiNDFjNzY0MWRiMTMxNWFm
Yi4uODFiNTEwYjIyMTU3ZTNjYjk3MTYzZjQwOGEzYzA0MTcyMzhkNDZiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuaCIKIAorI2ltcG9ydCAiTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUQ0NTUEkuaCIKICNpbXBvcnQgIldl
YlBhZ2VQcm94eS5oIgpAQCAtMTA4LDIwICsxMDksNiBAQCBib29sIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OjpwZXJtaXR0ZWRUb0NhcHR1cmVWaWRlbygpCiB9CiAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotc3RhdGljIHZvaWQgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vz
c0Zvck1lZGlhVHlwZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEJPT0wgYXV0aG9yaXplZCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIsIEFWTWVkaWFUeXBlIHR5cGUpCi17Ci0gICAgYXV0byBkZWNpc2lv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKEJPT0wgYXV0aG9yaXplZCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICgh
aXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGF1dGhvcml6ZWRdKCkgbXV0
YWJsZSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKLSAgICB9KTsKLSAgICBbUEFMOjpnZXRBVkNh
cHR1cmVEZXZpY2VDbGFzcygpIHJlcXVlc3RBY2Nlc3NGb3JNZWRpYVR5cGU6dHlwZSBjb21wbGV0
aW9uSGFuZGxlcjpkZWNpc2lvbkhhbmRsZXIuZ2V0KCldOwotfQotCiB2b2lkIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lzdGVtVmFsaWRhdGlvbihjb25z
dCBXZWJQYWdlUHJveHkmIHBhZ2UsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHJl
cXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAgICAg
aWYgKHBhZ2UucHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCkpIHsKQEAg
LTEzMCwzNiArMTE3LDE1IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk6OnJlcXVlc3RTeXN0ZW1WYWxpZGF0aW9uKGNvbnN0IFdlYlBhCiAgICAgfQogCiAgICAg
Ly8gRklYTUU6IEFkZCBUQ0MgZW50aXRsZW1lbnQgY2hlY2sgZm9yIHNjcmVlbnNoYXJpbmcuCi0g
ICAgYm9vbCByZXF1aXJlc0F1ZGlvQ2FwdHVyZSA9IHJlcXVlc3QucmVxdWlyZXNBdWRpb0NhcHR1
cmUoKTsKLSAgICBib29sIHJlcXVpcmVzVmlkZW9DYXB0dXJlID0gcmVxdWVzdC5yZXF1aXJlc1Zp
ZGVvQ2FwdHVyZSgpOwotCi0gICAgYXV0byBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9
ICFyZXF1aXJlc0F1ZGlvQ2FwdHVyZSA/IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQg
OiBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JN
ZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpb107Ci0gICAgaWYgKG1pY3JvcGhvbmVBdXRob3JpemF0
aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCB8fCBtaWNyb3Bob25lQXV0
aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkKSB7Ci0g
ICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1
dG8gY2FtZXJhQXV0aG9yaXphdGlvblN0YXR1cyA9ICFyZXF1aXJlc1ZpZGVvQ2FwdHVyZSA/IEFW
QXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQgOiBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VD
bGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlb107
Ci0gICAgaWYgKGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3Rh
dHVzRGVuaWVkIHx8IGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9u
U3RhdHVzUmVzdHJpY3RlZCkgeworICAgIERlcXVlPEFWTWVkaWFUeXBlPiB0eXBlczsKKyAgICBp
ZiAocmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpKQorICAgICAgICB0eXBlcy5hcHBlbmQo
QVZNZWRpYVR5cGVBdWRpbyk7CisgICAgaWYgKHJlcXVlc3QucmVxdWlyZXNWaWRlb0NhcHR1cmUo
KSkKKyAgICAgICAgdHlwZXMuYXBwZW5kKEFWTWVkaWFUeXBlVmlkZW8pOworICAgIGlmICghY2hl
Y2tBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGVzQW5kRmlsdGVyKHR5cGVzKSkKICAgICAgICAg
Y2FsbGJhY2soZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgYm9vbCByZXF1
aXJlc1ZpZGVvVENDUHJvbXB0ID0gcmVxdWlyZXNWaWRlb0NhcHR1cmUgJiYgY2FtZXJhQXV0aG9y
aXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOwotICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSByZXF1aXJlc1ZpZGVvVENDUHJvbXB0ID8gW3JlcXVl
c3QgPSBtYWtlUmVmKHJlcXVlc3QpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29s
IGlzT0spIG11dGFibGUgewotICAgICAgICBpZiAoIWlzT0spIHsKLSAgICAgICAgICAgIGNhbGxi
YWNrKGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICByZXF1
ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlKFdURk1vdmUoY2FsbGJhY2spLCBBVk1lZGlh
VHlwZVZpZGVvKTsKLSAgICB9IDogV1RGTW92ZShjYWxsYmFjayk7Ci0KLSAgICBib29sIHJlcXVp
cmVzQXVkaW9UQ0NQcm9tcHQgPSByZXF1aXJlc0F1ZGlvQ2FwdHVyZSAmJiBtaWNyb3Bob25lQXV0
aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOwot
ICAgIGlmICghcmVxdWlyZXNBdWRpb1RDQ1Byb21wdCkgewotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih0cnVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICByZXF1ZXN0QVZDYXB0dXJl
QWNjZXNzRm9yTWVkaWFUeXBlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBBVk1lZGlhVHlw
ZUF1ZGlvKTsKKyAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlcyh0eXBlcywg
V1RGTW92ZShjYWxsYmFjaykpOwogfQogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94
eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0KaW5kZXggODY2MjM4YmFmZThmMDVjMTdhMjNkNmY5Y2M5OWEyMTAxNGRkOTMxMC4u
Y2QzMDE0MWZjZWE2MjIyZGU1YmE3Y2YxYzY3YTlhMmY2NGQwMjBmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAg
LTQxLDYgKzQxLDEwIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBv
cnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KIAorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5oIgorI2VuZGlmCisKICNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUlu
c3BlY3RvckNvbnN0YW50cy5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjkyYWZkN2Y3ODlmYjdhMzExZDhhMGI5OWUwNjJiOWRjNTA3MWRmM2UKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoV2ViUGFnZVByb3h5
JiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXI6On5TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKCkKK3sK
KyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3JlcXVlc3RzKQorICAgICAgICByZXF1ZXN0LT5j
b21wbGV0ZShTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpEZWNpc2lvbjo6RGVu
eSk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdChXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21w
bGV0aW9uSGFuZGxlcih0cnVlKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyOjpzdGFydE5leHRSZXF1ZXN0KCkKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OkRlY2lzaW9uKQoreworfQorCit2b2lkIFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU2FuZGJveFJlcXVpcmVtZW50KCkKK3sK
K30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja01pY3Jv
cGhvbmVBY2Nlc3MoKQoreworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXI6OmNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCkKK3sKK30KKwordm9p
ZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0TWljcm9waG9uZUFj
Y2Vzc0lmTmVlZGVkKCkKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzSWZOZWVkZWQoKQor
eworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrQW5k
UmVxdWVzdFVzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKCkKK3sKK30KKworI2VuZGlmCisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc0
NDRhMDJkMGNmMTk5ZWEwZWU5ZGE4MWRkMDhmZjg3NWVjYzZhMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXIuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcihXZWJQYWdlUHJv
eHkmKTsKKyAgICB+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcigpOworICAgIHZv
aWQgcmVxdWVzdChXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzdGFydE5leHRSZXF1ZXN0KCk7Cisg
ICAgdm9pZCBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3Q6OkRlY2lzaW9uKTsKKyAgICB2b2lkIHByZWNoZWNrKCk7CisgICAgdm9pZCBjaGVj
a1NhbmRib3hSZXF1aXJlbWVudCgpOworICAgIHZvaWQgY2hlY2tNaWNyb3Bob25lQWNjZXNzKCk7
CisgICAgdm9pZCBjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpOworICAgIHZv
aWQgcmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3NJZk5lZWRlZCgpOworICAgIHZvaWQgcmVxdWVzdFNw
ZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0lmTmVlZGVkKCk7CisgICAgdm9pZCBjaGVja0Fu
ZFJlcXVlc3RVc2VyUGVybWlzc2lvbkZvck9yaWdpbigpOworCisgICAgV2ViUGFnZVByb3h5JiBt
X3BhZ2U7CisgICAgRGVxdWU8UmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+
PiBtX3JlcXVlc3RzOworICAgIE9wdGlvbmFsPGJvb2w+IG1faXNTYW5kYm94Q2hlY2tQYXNzZWQ7
CisgICAgT3B0aW9uYWw8Ym9vbD4gbV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkOworICAg
IE9wdGlvbmFsPGJvb2w+IG1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3Jp
emVkOworICAgIC8vIFRvcCBvcmlnaW4gdG8gcGVybWlzc2lvbi4KKyAgICBIYXNoTWFwPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgYm9vbD4gbV9vcmlnaW5QZXJtaXNzaW9uTWFwOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjYyMTliYzVlOTgwZDQ4MmZmYzU1NDViZDY0ZDRhYzhlOTYxZmI3MwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3QuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5o
PgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+IGNyZWF0
ZShXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdURk1vdmUob3JpZ2lu
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICB9CisKKyAgICBlbnVtIGNsYXNz
IERlY2lzaW9uIHsgRGVueSwgQWxsb3cgfTsKKyAgICB2b2lkIGNvbXBsZXRlKERlY2lzaW9uIGRl
Y2lzaW9uKQorICAgIHsKKyAgICAgICAgYm9vbCBpc0FsbG93ZWQgPSBkZWNpc2lvbiA9PSBEZWNp
c2lvbjo6QWxsb3c7CisgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hh
bmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGlzQWxsb3dlZCk7CisgICAgfQorCisgICAgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQorCitwcml2YXRlOgorICAgIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3Jp
Z2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgICAgICA6IG1fb3JpZ2luKG9yaWdpbikKKyAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgIHsgfQorCisgICAgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luIG1fb3JpZ2luOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IG1f
Y29tcGxldGlvbkhhbmRsZXI7Cit9OworCitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25DYWxsYmFjayA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaz4gY3JlYXRlKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
ayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIH0KKworICAgIHZvaWQgY29tcGxl
dGUoYm9vbCBncmFudGVkKSB7IG1fY29tcGxldGlvbkhhbmRsZXIoZ3JhbnRlZCk7IH0KKworcHJp
dmF0ZToKKyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICA6IG1fY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgeyB9CisKKyAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKaW5kZXggOWNlOTc0Y2Y5ZGFhNTY1ODJlZWJj
ZmEwMzA2NzBiN2EzNzViZTcxZS4uZTY2OWM5MTNmNGQ0ODIwMWQ3N2Q3ODE1ZTQzY2JiZTlhODFk
OGRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLmNwcApAQCAtMzIsMTUgKzMyLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1TcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50
aWZpZXIgaWRlbnRpZmllcikKK1NwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25p
dGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNwZWVjaFJlY29n
bml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DaGVja2VyJiYgcGVybWlzc2lvbkNoZWNrZXIpCiAgICAgOiBtX2Nvbm5lY3Rpb24oV1RG
TW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwg
bV9wZXJtaXNzaW9uQ2hlY2tlcihXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSkKIHsKIH0KIAot
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0SW5mbyYmIHJlcXVlc3RJbmZvKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVvdXMs
IGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiYgb3JpZ2luKQogewotICAgIGF1dG8gcmVxdWVzdCA9IFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6Y3JlYXRlKFdURk1vdmUocmVxdWVzdEluZm8pKTsKKyAg
ICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdD4oU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7IGNsaWVudElkZW50aWZpZXIsIFdU
Rk1vdmUobGFuZyksIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMs
IFdURk1vdmUob3JpZ2luKSB9KTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hcHBlbmQoV1RGTW92
ZShyZXF1ZXN0KSk7CiAKICAgICBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsK
QEAgLTcyLDggKzczLDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQoV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWQKIHsKICAgICBpZiAobV9j
dXJyZW50UmVxdWVzdCAmJiBtX2N1cnJlbnRSZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCkgPT0g
Y2xpZW50SWRlbnRpZmllcikgewogICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbnVsbHB0cjsK
LSAgICAgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6
Y3JlYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZTo6RW5kKTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uOjpEaWRSZWNlaXZlVXBkYXRlKHVwZGF0ZSksIG1faWRlbnRpZmllcik7CisgICAg
ICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGVUeXBlOjpFbmQpOwogCiAgICAgICAgIHByb2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJ
Zk5lZWRlZCgpOwogICAgICAgICByZXR1cm47CkBAIC04NCwxMyArODQsMTIgQEAgdm9pZCBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWQKIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVtb3ZlUGVu
ZGluZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciBjbGllbnRJZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3Q+IHRha2VuUmVxdWVzdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiB0YWtlblJlcXVlc3Q7CiAgICAgYXV0byBw
ZW5kaW5nUmVxdWVzdHMgPSBzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1JlcXVlc3RzLCB7IH0pOwog
ICAgIHdoaWxlICghcGVuZGluZ1JlcXVlc3RzLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIHJl
cXVlc3QgPSBwZW5kaW5nUmVxdWVzdHMudGFrZUZpcnN0KCk7CiAgICAgICAgIGlmIChyZXF1ZXN0
LT5jbGllbnRJZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikgewotICAgICAgICAgICAg
YXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNs
aWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5k
KTsKLSAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbjo6RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50aWZpZXIpOworICAgICAgICAg
ICAgc2VuZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OkVuZCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAg
ICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShyZXF1ZXN0KSk7CkBAIC0xMDUs
MTIgKzEwNCw1MSBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjppbnZhbGlkYXRlKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaQogICAgIH0KIH0KIAotdm9pZCBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnRQb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpz
dGFydFBvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JiBy
ZXF1ZXN0KQogeworICAgIG1fcGVybWlzc2lvbkNoZWNrZXIocmVxdWVzdC5jbGllbnRPcmlnaW4o
KSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYWtSZXF1ZXN0ID0gbWFr
ZVdlYWtQdHIocmVxdWVzdCldKGJvb2wgZ3JhbnRlZCkgeworICAgICAgICBpZiAoIXdlYWtUaGlz
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghd2Vha1JlcXVlc3QpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgQVNTRVJUKG1fY3VycmVudFJlcXVlc3QuZ2V0KCkg
PT0gd2Vha1JlcXVlc3QuZ2V0KCkpOworICAgICAgICBpZiAoIWdyYW50ZWQpIHsKKyAgICAgICAg
ICAgIGF1dG8gZXJyb3IgPSBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRp
b25FcnJvclR5cGU6Ok5vdEFsbG93ZWQsICJwZXJtaXNzaW9uIGNoZWNrIGZhaWxzIl9zIH07Cisg
ICAgICAgICAgICBzZW5kVXBkYXRlKHdlYWtSZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCksIFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IsIGVycm9yKTsKKyAgICAg
ICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBudWxscHRyOworICAgICAgICAgICAgcHJvY2Vzc05l
eHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCp3ZWFrUmVxdWVzdCk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmNvbnRpbnVlUHJvY2Vz
c2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JikKK3sKKyAgICAv
LyBUT0RPOiBzdGFydCBjYXB0dXJpbmcgYXVkaW8gYW5kIHJlY29nbml6aW5nLgogfQogCi12b2lk
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdG9wUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JikKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6
OnNlbmRVcGRhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBj
bGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUgdHlwZSwgT3B0aW9u
YWw8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gZXJyb3IsIE9wdGlvbmFsPFZlY3RvcjxTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdERhdGE+PiByZXN1bHQpCiB7CisgICAgYXV0byB1cGRhdGUgPSBXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIsIHR5
cGUpOworICAgIGlmICh0eXBlID09IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3Ip
CisgICAgICAgIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVh
dGVFcnJvcihjbGllbnRJZGVudGlmaWVyLCAqZXJyb3IpOworICAgIGlmICh0eXBlID09IFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlVHlwZTo6UmVzdWx0KQorICAgICAgICB1cGRhdGUgPSBXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVzdWx0KGNsaWVudElkZW50aWZpZXIs
ICpyZXN1bHQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbjo6RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lk
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdG9wUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIC8vIFRPRE86IHN0b3Ag
Y2FwdHVyaW5nIGF1ZGlvIGFuZCBmaW5hbGl6aW5nIHJlY29nbml0aW9uIHJlc3VsdCB3aXRoIGNh
cHR1cmVkIGF1ZGlvLgorICAgIHNlbmRVcGRhdGUocmVxdWVzdC5jbGllbnRJZGVudGlmaWVyKCks
IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6Tm9NYXRjaCk7CisgICAgc2Vu
ZFVwZGF0ZShyZXF1ZXN0LmNsaWVudElkZW50aWZpZXIoKSwgV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25VcGRhdGVUeXBlOjpFbmQpOworICAgIEFTU0VSVChtX2N1cnJlbnRSZXF1ZXN0LmdldCgp
ID09ICZyZXF1ZXN0KTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbnVsbHB0cjsKKyAgICBwcm9j
ZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsKIH0KIAogSVBDOjpDb25uZWN0aW9uKiBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgK
aW5kZXggN2FhMjQxNjM4YjljMzUxNDk2Njk4NDQzMmRiYzUzMGRmODQ4NGEzNy4uMzM4NGUwYjBk
NmFlYTMyYmU0OGQ3ZWM2ZWI3MWQ0ZWMwNDMwMTE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC0yOCwyMSArMjgsMjkgQEAK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U3BlZWNoUmVjb2duaXRpb25FcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dERhdGEuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgewor
ZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU7CitzdHJ1Y3QgQ2xpZW50T3Jp
Z2luOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5Owog
CiB1c2luZyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgPSBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcjsKK3VzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXIgPSBG
dW5jdGlvbjx2b2lkKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKT47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmVyIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPiwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVm
PElQQzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyKTsK
KyAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNoZWNrZXImJik7CiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm8mJik7CisgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVv
dXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiYpOwogICAgIHZvaWQgc3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKICAgICB2b2lkIGFib3J0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogICAgIHZvaWQg
aW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyKTsKQEAgLTUxLDkgKzU5LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzTmV4
dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsKICAgICB2b2lkIHJlbW92ZVBlbmRpbmdSZXF1ZXN0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwog
Ci0gICAgLy8gVE9ETzogaW1wbGVtZW50IHRoZXNlLgogICAgIHZvaWQgc3RhcnRQb2Nlc3NpbmdS
ZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOworICAgIHZvaWQgY29u
dGludWVQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Qm
KTsKICAgICB2b2lkIHN0b3BQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3QmKTsKKyAgICB2b2lkIHNlbmRVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGVUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiA9
IFdURjo6bnVsbG9wdCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVzdWx0RGF0YT4+ID0gV1RGOjpudWxsb3B0KTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2Vp
dmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CkBAIC02NCw4ICs3Myw5IEBAIHByaXZhdGU6CiAKICAgICBSZWY8
SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBEZXF1ZTxSZWY8V2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0Pj4gbV9wZW5kaW5nUmVxdWVzdHM7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBEZXF1
ZTxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Pj4gbV9w
ZW5kaW5nUmVxdWVzdHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uUmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DaGVja2VyIG1fcGVybWlzc2lvbkNoZWNrZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uU2VydmVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KaW5kZXggZTMxYmVmYjA5NWFkODhkYWRjMzBm
MDk5NWM1N2U0MTUzNzNmMTJmNC4uYTI4YjkyMWNiOTY0YWZhZjJmZjIyYzkxNmJiZTQ2ZTgyOTkx
MzI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogIAog
IG1lc3NhZ2VzIC0+IFNwZWVjaFJlY29nbml0aW9uU2VydmVyIE5vdFJlZkNvdW50ZWQgewotICAg
IFN0YXJ0KHN0cnVjdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIGluZm8p
CisgICAgU3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGlu
dGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIHN0cnVjdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4gb3JpZ2luKQogICAgIFN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEFib3J0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICBJbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IGM2NjBlNTY2YjA4ZGQzNjc5MTNkMjI0NTA2YmRmMWVkZjAwZDVkODcuLmE3
NDQwZDUzNGY3MmMzYWMxYjVmMGZlOWU2ODUxNjdlNDFiZWM0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODYsNiArODYsNyBAQAogI2luY2x1ZGUgIlBy
b3Zpc2lvbmFsUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3ludGhldGljRWRpdGlu
Z0NvbW1hbmRUeXBlLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0
Q2hlY2tlclN0YXRlLmgiCkBAIC0xMDE3Myw2ICsxMDE3NCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZygpCiAgICAgfSk7CiB9CiAK
K3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fc3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcikKKyAgICAgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyPigqdGhpcyk7CisKKyAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIt
PnJlcXVlc3QoV1RGTW92ZShjbGllbnRPcmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3Y2VmYmZj
Njk0NWVkZmU0M2FlNTZjMmQ1NjRjMGU4MWU5NWJiNGE2Li5jZTEyMDEyODBhMmM1NmM4NTQ1ZTFm
MmQzNmI4OTk4NmE0MmEzNjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMzA1LDYgKzMwNSw3IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZv
cm1hbmNlRGF0YTsKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOwogY2xhc3MgUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTsKIGNsYXNzIFNlY0tleVByb3h5U3RvcmU7Citj
bGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOwogY2xhc3MgVXNlckRhdGE7
CiBjbGFzcyBWaWV3U25hcHNob3Q7CiBjbGFzcyBWaXNpdGVkTGlua1N0b3JlOwpAQCAtMTgxOSw2
ICsxODIwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVs
YXkoU2Vjb25kcyBjYXB0dXJlUmVwb3J0aW5nRGVsYXkpIHsgbV9tZWRpYUNhcHR1cmVSZXBvcnRp
bmdEZWxheSA9IGNhcHR1cmVSZXBvcnRpbmdEZWxheTsgfQogICAgIHNpemVfdCBzdXNwZW5kTWVk
aWFQbGF5YmFja0NvdW50ZXIoKSB7IHJldHVybiBtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRl
cjsgfQogCisgICAgdm9pZCByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKwog
cHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYs
IFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlh
bGl6ZSgpOwpAQCAtMjg4OCw2ICsyODkxLDggQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9zdXNw
ZW5kTWVkaWFQbGF5YmFja0NvdW50ZXIgeyAwIH07CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpB
ZENsaWNrQXR0cmlidXRpb24+IG1fbmV3UGFnZU5hdmlnYXRpb25BZENsaWNrQXR0cmlidXRpb247
CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cj4gbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCBmNmI4NjdiZDU2NGRmZDE3MmViYTNkYjgzMzI1Y2MzNzNjZDIwMDY5Li41ODBiZDZh
MTA4MDMwMGYzYmI3NTY5ZTFkZGUwZTIwMDBjMDFlZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE3MTIsNyArMTcxMiwxOSBAQCB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXJJZGVudAogewogICAgIGF1dG8gc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBt
X3NwZWVjaFJlY29nbml0aW9uU2VydmVyTWFwLmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsKICAg
ICBBU1NFUlQoc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXNOZXdFbnRyeSk7Ci0gICAgc3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmllcik7CisgICAg
c3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmllciwg
W2lkZW50aWZpZXIsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKENsaWVudE9yaWdpbiYm
IG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGZvciAoYXV0byogcGFnZSA6IHdlYWtUaGlzLT5wYWdlcygpKSB7CisgICAgICAgICAgICBp
ZiAocGFnZSAmJiBwYWdlLT53ZWJQYWdlSUQoKSA9PSBpZGVudGlmaWVyKSB7CisgICAgICAgICAg
ICAgICAgcGFnZS0+cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihXVEZNb3ZlKG9y
aWdpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7CisgICAgfSk7CiAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyLCAq
c3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWUwZDNjZjg3
ZTc5ZjQxMDk2ZjFkNzhlZjJiNGNjNjEzYzI2MTc0OS4uZDU0YzMwODU4NjM4ZDBhMzJiNjg3ZGJl
MmQ4OTFhZjdjNGUzNzRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMzc0LDYgKzEzNzQsNyBAQAogCQk5MzNFODM1NTIzQTA3QzA2
MDBERUYyODkgLyogV2ViSURCU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzNFODM1MzIzQTA3QkY4MDBERUYyODkgLyogV2ViSURCU2VydmVy
LmggKi87IH07CiAJCTkzM0U4MzVBMjNBMUFFMjgwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMz
RTgzNTkyM0ExQURGNTAwREVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VzLmggKi87IH07CiAJ
CTkzM0U4MzVCMjNBMUI3NTAwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzRTgz
NTgyM0ExQURGNTAwREVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87
IH07CisJCTkzNDI1ODkwMjU1NUREQzYwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDI1
ODhFMjU1NURDNDcwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCAqLzsgfTsK
IAkJOTM0QjcyNDQxOUY1QjlCRTAwQUU5NkQ2IC8qIFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0QjcyNDMxOUY1
QjlCRTAwQUU5NkQ2IC8qIFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNTZGMkRDMjE1MkI2QjUwMEU2RDVE
RiAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E1MzAyMUY0NzkzQjIwMERDREMwQSAvKiBXZWJTV0NsaWVu
dENvbm5lY3Rpb24uaCAqLzsgfTsKIAkJOTM1NkYyREQyMTUyQjZGNjAwRTZENURGIC8qIFdlYlNX
U2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNCQTA0RTAyMTUxQURGNDAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlv
bi5oICovOyB9OwpAQCAtMTQwOCw2ICsxNDA5LDkgQEAKIAkJOTNENkI3ODcyNTRDQ0Q4QzAwNThE
RDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc4NjI1NENDRDhCMDA1
OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXMuaCAqLzsgfTsK
IAkJOTNENkI3ODgyNTRDQ0Q5NDAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbk1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNENkI3N0UyNTRDQ0FCQjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oICovOyB9OwogCQk5M0Q2Qjc4QTI1NENENDNF
MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZC
NzdEMjU0Q0NBQkIwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQk5M0Q2QjdCNDI1NTI2OEQ1MDA1OEREM0EgLyogU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3QUYyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCAqLzsgfTsKKwkJOTNENkI3QjUyNTUyNjhE
NzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0IyMjU1MjY4QTIw
MDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi87IH07CisJ
CTkzRDZCN0I5MjU1MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25DYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTkzRTZBNEVFMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0U2QTRFRDFCQzVE
RDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjU0OUI0MUUzMTc0QjcwMDBFNzIzOSAvKiBX
S1NuYXBzaG90Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25m
aWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9
OwogCQk5NTBGMjg4MDI1MjQxNEVBMDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBGMjg3RTI1
MjQxNEU5MDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLmggKi87IH07CkBAIC00NDY4
LDYgKzQ0NzIsOCBAQAogCQk5MzNFODM1NzIzQTFBODcyMDBERUYyODkgLyogV2ViSURCU2VydmVy
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYklEQlNlcnZlci5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzRTgzNTgyM0ExQURGNTAwREVG
Mjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5MzNFODM1OTIzQTFBREY1
MDBERUYyODkgLyogV2ViSURCU2VydmVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV2ViSURCU2VydmVyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvV2ViSURCU2VydmVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKKwkJOTM0MjU4OEUyNTU1REM0NzAwNTlFRUREIC8qIE1lZGlhUGVybWlzc2lv
blV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM0MjU4OEYyNTU1RENBNTAwNTlFRUREIC8q
IE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlh
UGVybWlzc2lvblV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0
QjcyNDMxOUY1QjlCRTAwQUU5NkQ2IC8qIFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1RUVCOTUxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVu
ZGxlQmFja0ZvcndhcmRMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTM1RUVCOTYxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlQmFja0ZvcndhcmRM
aXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTI4LDYgKzQ1MzQsMTIgQEAK
IAkJOTNENkI3ODAyNTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2Qjc4
MTI1NENDQUJDMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0Q2Qjc4NjI1NENDRDhCMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNENkI3QUYyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5M0Q2QjdCMDI1NTI2OEExMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNENkI3QjIyNTUyNjhBMjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5M0Q2QjdCMzI1NTI2OEJGMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0I4MjU1MzRBMTIwMDU4REQzQSAvKiBXS1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcg
LyogX1dLSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBf
V0tIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjU0OUIz
MUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y1NDlCNTFFMzE3NERBMDAwRTcyMzkgLyogV0tTbmFw
c2hvdENvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTY0NTYsNiArNjQ2OCw4IEBACiAJCQkJN0E4MjFGNEQxRTJGNjc5RTAwNjA0NTc3IC8q
IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbSAqLywKIAkJCQlBMURGNjMxMTE4
RTBCN0M4MDAzQTNFMkEgLyogTGVnYWN5RG93bmxvYWRDbGllbnQuaCAqLywKIAkJCQlBMURGNjMx
MDE4RTBCN0M4MDAzQTNFMkEgLyogTGVnYWN5RG93bmxvYWRDbGllbnQubW0gKi8sCisJCQkJOTM0
MjU4OEUyNTU1REM0NzAwNTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oICovLAor
CQkJCTkzNDI1ODhGMjU1NURDQTUwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMu
bW0gKi8sCiAJCQkJNDExMjg2RUYyMUM4QTkwQzAwM0E4NTUwIC8qIE1lZGlhVXRpbGl0aWVzLmgg
Ki8sCiAJCQkJNDExMjg2RjAyMUM4QTkwRDAwM0E4NTUwIC8qIE1lZGlhVXRpbGl0aWVzLm1tICov
LAogCQkJCTFBQkMzREY0MTg5OUU0MzcwMDRGMDYyNiAvKiBOYXZpZ2F0aW9uU3RhdGUuaCAqLywK
QEAgLTY0NzIsNiArNjQ4Niw3IEBACiAJCQkJNUNBOTg1NEIyMTBCRUI3MzAwNTdFQjZCIC8qIFNh
ZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSAqLywKIAkJCQkxQTAwMkQ0NzE5NkIzNDVEMDBCOUFE
NDQgLyogU2Vzc2lvblN0YXRlQ29kaW5nLmggKi8sCiAJCQkJMUEwMDJENDYxOTZCMzQ1RDAwQjlB
RDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5tbSAqLywKKwkJCQk5M0Q2QjdCMzI1NTI2OEJGMDA1
OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tICovLAog
CQkJCTMxNTcxMzVDMjA0MEE5QjIwMDg0RjlDRiAvKiBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNv
Y29hLm1tICovLAogCQkJCTJEMENGNjRDMjFGMkE4MDMwMDc4NzU2NiAvKiBUZXh0Q2hlY2tpbmdD
b250cm9sbGVyLmggKi8sCiAJCQkJMkQwQ0Y2NEIyMUYyQTgwMzAwNzg3NTY2IC8qIFRleHRDaGVj
a2luZ0NvbnRyb2xsZXIubW0gKi8sCkBAIC05MjAzLDYgKzkyMTgsOSBAQAogCQkJCUJDMTExQjA4
MTEyRjVFM0MwMDMzN0JBQiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLywKIAkJCQkxQTMw
MDY2QzExMTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovLAogCQkJCTVD
QTk4NTQ5MjEwQkVCNUEwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nLmggKi8sCisJCQkJ
OTNENkI3QjAyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIuY3BwICovLAorCQkJCTkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi8sCisJCQkJOTNENkI3QUYyNTUyNjhBMTAwNThE
RDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCAqLywKIAkJCQk5M0Q2
Qjc2QjI1NEI4OTU4MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwICovLAog
CQkJCTkzRDZCNzZDMjU0Qjg5NTgwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5o
ICovLAogCQkJCTkzRDZCNzdBMjU0Qzk4NEQwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlci5tZXNzYWdlcy5pbiAqLywKQEAgLTk1NDMsNiArOTU2MSw4IEBACiAJCQkJMzMzNjc2Mzkx
MzBDOTlEQzAwNkM5REUyIC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCAqLywKIAkJCQkxQURF
NDZCMDE5NTRFQzYxMDAwRjc5ODUgLyogV0tTZXNzaW9uU3RhdGVSZWYuY3BwICovLAogCQkJCTFB
REU0NkIxMTk1NEVDNjEwMDBGNzk4NSAvKiBXS1Nlc3Npb25TdGF0ZVJlZi5oICovLAorCQkJCTkz
RDZCN0I4MjU1MzRBMTIwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrLmNwcCAqLywKKwkJCQk5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICovLAogCQkJCTUxRjg4NkEzMUYyQzIxNEEw
MEMxOTNFRiAvKiBXS1Rlc3RpbmdTdXBwb3J0LmNwcCAqLywKIAkJCQk1MUY4ODZBNDFGMkMyMTRB
MDBDMTkzRUYgLyogV0tUZXN0aW5nU3VwcG9ydC5oICovLAogCQkJCTMxNDg4OEZFMUQ5MUIxMUQw
MDM3NzA0MiAvKiBXS1RleHRDaGVja2VyLmNwcCAqLywKQEAgLTExMTQwLDYgKzExMTYwLDcgQEAK
IAkJCQkxQTZEODZDMjFERjc1MjY1MDA3NzQ1RTggLyogTWFjaE1lc3NhZ2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDQzU2Rjc5MTE1OTk1N0QwMDFDQ0FGOSAvKiBNYWNoUG9ydC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUEyNEI1RjMxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTkzNDI1ODkwMjU1NUREQzYwMDU5RUVERCAvKiBNZWRpYVBlcm1p
c3Npb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RTE5RUZDMjNENDAxRjEwMDk0
RkZCNCAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDdFMTlFRkQyM0Q0MDFGMTAwOTRGRkI0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5MzNERUYxOTY1RUIzMTAw
OEFDM0VBIC8qIE1lbnVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTEzODEsNiArMTE0
MDIsOCBAQAogCQkJCTU3QkJFQTZEMjJCQzBCRkUwMDI3Mzk5NSAvKiBTT0F1dGhvcml6YXRpb25M
b2FkUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzZDQTlENzIyQjg2MjE4MDAzMDE0M0Mg
LyogU09BdXRob3JpemF0aW9uTlNVUkxFeHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQz
MTg1MjJCMzUxNjkwMDhEMEU4QiAvKiBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5M0Q2QjdCNTI1NTI2OEQ3MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENkI3QjQyNTUyNjhENTAw
NThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzRDZCNzcyMjU0QkI1MTkwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3ODQyNTRDQ0QwRTAwNThERDNBIC8qIFNw
ZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZC
Nzg1MjU0Q0NENDMwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzUmVw
bGllcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTk5NCw2ICsxMjAxNyw3IEBACiAJCQkJNTEzRTQ2
MkQxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTNGNTQ5QjQxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RD
b25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4NzIyQjM1MTcwMDA4RDBF
OEIgLyogV0tTT0F1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNE
NkI3QjkyNTUzNEExNzAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTdBNzhGRjMyMjI0MTkxOTYwMDk2NDgzRSAvKiBX
S1N0b3JhZ2VBY2Nlc3NBbGVydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2MDYxMjRGRjAy
NzAwNjhGMjBBIC8qIFdLU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYxQTEyNEZG
MDM3MDA2OEYyMEEgLyogV0tTdHJpbmdDRi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCmluZGV4IGVhMTZiMmVkNzY2NWIz
MmJkMzljYWM0NjMyYjRiOWE1MWE3NWQ2YjEuLjNmMzUzMTk0YTMyYzNlNjc5YmNhMjlmYmVhODUw
MzFjOTIxZTRmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb24uY3BwCkBAIC01OSwxMCArNTksOSBAQCB2b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbjo6cmVnaXN0ZXJDbGllbnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25DbwogICAg
IG1fY2xpZW50TWFwLmFkZChjbGllbnQuaWRlbnRpZmllcigpLCBtYWtlV2Vha1B0cihjbGllbnQp
KTsKIH0KIAotdm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0YXJ0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJp
bVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcykKK3ZvaWQgV2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uOjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywg
Ym9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5h
dGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbikKIHsKLSAgICBXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIGluZm8geyBjbGllbnRJZGVudGlmaWVy
LCBsYW5nLCBjb250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzIH07Ci0g
ICAgc2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlN0YXJ0KGluZm8pKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3RhcnQoY2xpZW50
SWRlbnRpZmllciwgbGFuZywgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVybmF0
aXZlcywgV1RGTW92ZShjbGllbnRPcmlnaW4pKSk7CiB9CiAKIHZvaWQgV2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uOjpzdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKQEAgLTgwLDcgKzc5LDcgQEAgdm9p
ZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OmludmFsaWRhdGUoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWMKICAgICBzZW5kKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6SW52YWxpZGF0ZShjbGllbnRJZGVudGlmaWVyKSk7CiB9CiAKLXZvaWQgV2ViU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiB1cGRhdGUpCit2b2lkIFdlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZSYmIHVwZGF0ZSkKIHsKICAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSB1cGRhdGUu
Y2xpZW50SWRlbnRpZmllcigpOwogICAgIGlmICghbV9jbGllbnRNYXAuY29udGFpbnMoY2xpZW50
SWRlbnRpZmllcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
LmgKaW5kZXggMjhkYmQxOTdjYjNmNzk4ZmM3NjMxOTllYmIxMmRlMTNhZWQ3NTFiMS4uNDQzYjA0
ZjFjY2FhYjBhMGU2YWE1MzgzMWU5ODVkMTBhNmE1MzMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaApAQCAtNDMsMTEgKzQzLDExIEBAIGNsYXNzIFdl
YlBhZ2U7CiAKIHVzaW5nIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbklkZW50aWZpZXIgPSBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcjsKIAotY2xhc3MgV2ViU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiwgcHJp
dmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewor
Y2xhc3MgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uPiBjcmVhdGUoU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFu
ZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRl
cm5hdGl2ZXMpIGZpbmFsOworICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNv
bnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYpIGZpbmFsOwogICAgIHZvaWQgc3RvcChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2
b2lkIGFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIpIGZpbmFsOwogCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgfldlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbigpOwogCiAgICAgdm9pZCByZWdpc3RlckNsaWVudChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQmKSBmaW5hbDsKLSAgICB2b2lk
IGRpZFJlY2VpdmVVcGRhdGUoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUm
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25VcGRhdGUmJikgZmluYWw7CiAgICAgdm9pZCBpbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogCiAgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIuCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggNTUxYTM0MzFhNzExYzU0YTRiZWNmZjM3ZjFlZWI1YzFkZDNjM2UwYy4uNzcy
MDdkNTZjZTAxNWE5OTdiNzk1YzljNWEzNjljYjhjODcyYjExZCAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTEx
LTA2ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBiYXNpYyBwZXJtaXNzaW9uIGNoZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMv
SW5mby5wbGlzdDoKKyAgICAgICAgKiBNb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nl
ci9JbmZvLnBsaXN0OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0
SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6ZGVjaWRlUG9saWN5
Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpjb21wbGV0ZVNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrKToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uR3JhbnRlZCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJW
aWV3V2l0aE9wdGlvbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0
ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
OgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMjAtMTEtMDYgIEFha2FzaCBKYWluICA8YWFr
YXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtld3NdIFNwZWVkIHVwIGV3cyBzdGF0dXMg
YnViYmxlIGxvYWRpbmcgc3BlZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9J
bmZvLnBsaXN0IGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QKaW5kZXggNGUyYjFm
NDgxOWFkNTEwM2U0Y2YxNzA5YjdjNTNhNjZlOGIzOTVlNS4uMzNhM2NhMWJlNzM1MDhlMWZmY2Iw
Mjk1N2M4NjRlODU5MmRhYWE0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0lu
Zm8ucGxpc3QKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QKQEAgLTUyLDkg
KzUyLDExIEBACiAJCQk8c3RyaW5nPkVkaXRvcjwvc3RyaW5nPgogCQk8L2RpY3Q+CiAJPC9hcnJh
eT4KLSAgICA8a2V5Pk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgotICAgIDxzdHJpbmc+
UmVjb3JkaW5nIHZpZGVvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgotICAgIDxrZXk+
TlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5n
IGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+TlNDYW1lcmFVc2Fn
ZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9m
IHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9r
ZXk+CisJPHN0cmluZz5SZWNvcmRpbmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJp
bmc+CisJPGtleT5OU1NwZWVjaFJlY29nbml0aW9uVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxz
dHJpbmc+UmVjb2duaXppbmcgY2FwdHVyZWQgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9z
dHJpbmc+CiA8L2RpY3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvTW9iaWxlTWluaUJy
b3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5mby5wbGlzdCBiL1Rvb2xzL01vYmlsZU1pbmlCcm93
c2VyL01vYmlsZU1pbmlCcm93c2VyL0luZm8ucGxpc3QKaW5kZXggMmQxYmM1ODJmYmU3NjVjZmRj
NDEwNWVmZTllY2MxZDgzMjBjYzk1OS4uNTM4N2IzNzQ5YTQ3NGZlMGIzZDljNjA5NWNiMjg4MTdi
OGY5MjMwYSAxMDA2NDQKLS0tIGEvVG9vbHMvTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJy
b3dzZXIvSW5mby5wbGlzdAorKysgYi9Ub29scy9Nb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5p
QnJvd3Nlci9JbmZvLnBsaXN0CkBAIC01NCw5ICs1NCwxMSBAQAogCQk8a2V5Pk5TQWxsb3dzQXJi
aXRyYXJ5TG9hZHNJbldlYkNvbnRlbnQ8L2tleT4KIAkJPHRydWUvPgogCTwvZGljdD4KLSAgICA8
a2V5Pk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5n
IHZpZGVvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgotICAgIDxrZXk+TlNNaWNyb3Bo
b25lVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5nIGF1ZGlvIG9u
IGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0
aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVz
PC9zdHJpbmc+CisJPGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0
cmluZz5SZWNvcmRpbmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtl
eT5OU1NwZWVjaFJlY29nbml0aW9uVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVj
b2duaXppbmcgY2FwdHVyZWQgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CiA8
L2RpY3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggNTUxNjJmZjM0
M2QyNWY2OTA2YzM5Mjc2ZmQ1YTg5MWVkZjI5Yjg2OS4uNmZkY2UyM2ZiODRkMzBiY2NkNTk3NGFi
NzIwMzMxYzkyOTk4NGNjYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC00MDMsNCAr
NDAzLDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHVuZGVmaW5lZCBzZXRBZENsaWNr
QXR0cmlidXRpb25PdmVycmlkZVRpbWVyRm9yVGVzdGluZyhib29sZWFuIHZhbHVlKTsKICAgICB1
bmRlZmluZWQgc2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRlc3RpbmcoRE9N
U3RyaW5nIHVybCk7CiAgICAgdW5kZWZpbmVkIG1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBp
cmVkRm9yVGVzdGluZygpOworCisgICAgLy8gU3BlZWNoUmVjb2duaXRpb24KKyAgICB1bmRlZmlu
ZWQgc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2xlYW4gdmFsdWUp
OwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCmluZGV4IGRmZDAxYTMyZjMxMWUxMjQ0YWE3ODc5YjQzNzU5N2FmYWMzZWZk
OWUuLmIxOGFiMjc2Mzc2MzYwMmVmN2Y2NmIzOTFiYTYyMzRlNjQyN2E5MTQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApA
QCAtMjA2OSw2ICsyMDY5LDExIEBAIHZvaWQgVGVzdFJ1bm5lcjo6ZGlkU2V0QXBwQm91bmREb21h
aW5zQ2FsbGJhY2soKQogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soRGlkU2V0QXBwQm91bmRE
b21haW5zQ2FsbGJhY2tJRCk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0SXNTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wgZ3JhbnRlZCkKK3sKKyAgICBwb3N0U3luY2hy
b25vdXNQYWdlTWVzc2FnZSgic2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVk
IiwgZ3JhbnRlZCk7Cit9CisKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiB9
IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggMGJkM2EwOWUzMmQ3MWIzNTE2ZTRmOGUwNWJlYTIy
YWY5OTRiMWQyMy4uOTc5M2M3NzdhZDM4YWFkMzRjZjUyNWQxMmNhODdkZWEzMTlhMmQzZSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKQEAgLTUxNSw2ICs1MTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBZENsaWNrQXR0cmli
dXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZyhKU1N0cmluZ1JlZik7CiAgICAgdm9pZCBtYXJr
QWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKIAorICAgIHZvaWQgc2V0
SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wpOworCiBwcml2YXRlOgog
ICAgIFRlc3RSdW5uZXIoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAppbmRleCA2ZGJjNjg0ZTg4NTBhZmUwNDU5MTM5ZmJlMTlkNWU1Y2NkYjcyNmU3Li4xODZl
ZmY5YTE0YzcxMDg5ZjA2YWYyOTRhZWVlMjQyMzBkN2ZjMWUzIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgPFdl
YktpdC9XS1Byb3RlY3Rpb25TcGFjZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5o
PgogI2luY2x1ZGUgPFdlYktpdC9XS1NlY3VyaXR5T3JpZ2luUmVmLmg+CisjaW5jbHVkZSA8V2Vi
S2l0L1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tUZXh0Q2hlY2tlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1VSTC5oPgogI2luY2x1
ZGUgPFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5oPgpAQCAtMjk3LDYgKzI5OCwy
MSBAQCBzdGF0aWMgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKCkKIHsKIH0KIAorc3Rh
dGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVz
dChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdL
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgY2FsbGJhY2spCit7CisgICAg
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbXBsZXRlU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2hlY2soY2FsbGJhY2spOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpjb21wbGV0
ZVNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrKFdLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2tSZWYgY2FsbGJhY2spCit7CisgICAgV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFja0NvbXBsZXRlKGNhbGxiYWNrLCBtX2lzU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uR3JhbnRlZCk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldElzU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChib29sIGdyYW50ZWQpCit7CisgICAgbV9pc1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQgPSBncmFudGVkOworfQorCiBXS1BhZ2VS
ZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZShXS1BhZ2VSZWYsIFdLUGFnZUNvbmZp
Z3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmlnYXRp
b25BY3Rpb24sIFdLV2luZG93RmVhdHVyZXNSZWYgd2luZG93RmVhdHVyZXMsIGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pCiB7CiAgICAgUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3ID0gc3RhdGlj
X2Nhc3Q8UGxhdGZvcm1XZWJWaWV3Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwpA
QCAtNjUwLDggKzY2Niw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRo
T3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKICAgICBXS0hUVFBDb29raWVTdG9y
ZURlbGV0ZUFsbENvb2tpZXMoV0tXZWJzaXRlRGF0YVN0b3JlR2V0SFRUUENvb2tpZVN0b3JlKHdl
YnNpdGVEYXRhU3RvcmUoKSksIG51bGxwdHIsIG51bGxwdHIpOwogCiAgICAgcGxhdGZvcm1DcmVh
dGVXZWJWaWV3KGNvbmZpZ3VyYXRpb24uZ2V0KCksIG9wdGlvbnMpOwotICAgIFdLUGFnZVVJQ2xp
ZW50VjE0IHBhZ2VVSUNsaWVudCA9IHsKLSAgICAgICAgeyAxNCwgbV9tYWluV2ViVmlldy5nZXQo
KSB9LAorICAgIFdLUGFnZVVJQ2xpZW50VjE1IHBhZ2VVSUNsaWVudCA9IHsKKyAgICAgICAgeyAx
NSwgbV9tYWluV2ViVmlldy5nZXQoKSB9LAogICAgICAgICAwLCAvLyBjcmVhdGVOZXdQYWdlX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjAKICAgICAgICAgMCwgLy8gc2hvd1BhZ2UKICAgICAgICAgMCwg
Ly8gY2xvc2UKQEAgLTcyNCw3ICs3NDAsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVX
ZWJWaWV3V2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgICAgIDAs
IC8vIGRpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZQogICAgICAg
ICAwLCAvLyByZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0KICAgICAgICAgc2hvdWxkQWxsb3dE
ZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcywKLSAgICAgICAgcnVuV2ViQXV0aGVudGlj
YXRpb25QYW5lbAorICAgICAgICBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsLAorICAgICAgICBk
ZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0CiAgICAgfTsK
ICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAmcGFnZVVJ
Q2xpZW50LmJhc2UpOwogCkBAIC0xMDUzLDYgKzEwNzAsOCBAQCBib29sIFRlc3RDb250cm9sbGVy
OjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25z
LCBSZQogICAgIG1fc2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50ID0gMDsK
ICAgICBtX3Nob3VsZERpc21pc3NKYXZhU2NyaXB0QWxlcnRzQXN5bmNocm9ub3VzbHkgPSBmYWxz
ZTsKIAorICAgIHNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCh0cnVlKTsK
KwogICAgIGF1dG8gbG9hZEFib3V0QmxhbmsgPSBbdGhpc10gewogICAgICAgICBtX2RvbmVSZXNl
dHRpbmcgPSBmYWxzZTsKICAgICAgICAgV0tQYWdlTG9hZFVSTChtX21haW5XZWJWaWV3LT5wYWdl
KCksIGJsYW5rVVJMKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmlu
ZGV4IDMzYjY0OTRhYzYyNDRiOTJmY2I3ODA5YTU4ZDcyMDNjN2MxMjU4YTguLjA1YzhmOGJkYWE5
NWFkODdlNDM5ZTMwOTNiOGE0ZjM0ZjVmODJjNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgKQEAgLTM1MSw2ICszNTEsOSBAQCBwdWJsaWM6CiAKICAgICBXS1VSTFJl
ZiBjdXJyZW50VGVzdFVSTCgpIGNvbnN0OwogCisgICAgdm9pZCBjb21wbGV0ZVNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNoZWNrKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2tSZWYpOworICAgIHZvaWQgc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVk
KGJvb2wpOworCiBwcml2YXRlOgogICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25S
ZWY+IGdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnMmKTsKICAgICBX
S1JldGFpblB0cjxXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZUNvbnRleHRDb25m
aWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJikgY29uc3Q7CkBAIC02NDAsNiArNjQzLDggQEAg
cHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIG1faGFzU2V0QXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyIHsgZmFsc2UgfTsKICNlbmRpZgorCisgICAgYm9vbCBtX2lzU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5k
ZXggMTRjMDRlZDFmYTkzOTRmNTcyZjY0OWE5MWI0N2VmYjIwNmVmODU0ZS4uNWI2NjYxN2JlZTAx
NmI2NzUxYzdiYjJiY2U2YmI4YmFlNDRlYjBhMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAKQEAgLTEzNDUsNiArMTM0NSwxMSBAQCBXS1JldGFpblB0cjxXS1R5
cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUlu
amVjdGVkQgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgInNldElzU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uR3JhbnRlZCIpKSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5zZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbGVhblZhbHVl
KG1lc3NhZ2VCb2R5KSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ4ZDAx
ZjI5NmQwNjIyODc4NWQzZDBlYTIxNTQyYmIyMTdkNTEyNjYuLmFiMmNmYzhhYjYwOTM4ZWNmMTlk
MjBlMjQ0ZTQzNDlmZTc0OWQxNTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMC0xMS0wNiAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFz
aWMgcGVybWlzc2lvbiBjaGVjayBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQ3NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAg
ICAgICAgKiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3ItZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24t
ZXJyb3IuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlv
bnM6CisKKzIwMjAtMTEtMDYgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0
NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1s
OiBBZGRlZC4KKwogMjAyMC0xMS0wNiAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBs
ZS5jb20+CiAKICAgICAgICAgRml4IGZvciBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L01hYy9h
Y2Nlc3NrZXkuaHRtbCBpbiBpc29sYXRlZCB0cmVlIG1vZGUuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCBmNzdmZWU5YjQwN2FiZDNmNTUyNWQ4ZWEyZGU4MDE3YTczMzI0Y2I2Li4yN2I1ZmU5MDU0ODA1
NTljN2M5YzBlNWQ5NzY3ZmUzM2YxNzI0YTM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE3Nyw2
ICsxNzcsNyBAQCBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0
b3JhZ2UtY3Jhc2guaHRtbCBbIFNraXAgXQogc3RvcmFnZS9pbmRleGVkZGIvSURCT2JqZWN0LWxl
YWsuaHRtbCBbIFNraXAgXQogZmFzdC9mb3Jtcy9jYWxsLXRleHQtZGlkLWNoYW5nZS1pbi10ZXh0
LWZpZWxkLXdoZW4tdHlwaW5nLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS8gWyBTa2lwIF0KK2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1l
cnJvci5odG1sIFsgU2tpcCBdCiAKICMgT25seSBwYXJ0aWFsIHN1cHBvcnQgb24gQ29jb2EgcGxh
dGZvcm1zLgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zcGVlY2gtYXBpLyBbIFNr
aXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJt
aXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2du
aXRpb24vcGVybWlzc2lvbi1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDI5YjhhYjA0
ZDA4M2ZhMjdhMDg0NTg1ZGFhOThmZDdiNjA2YjQ2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMyBAQAorVmVyaWZ5IHRoYXQgZXJyb3IgZXZlbnQgaXMgZmlyZWQgd2hl
biBwZXJtaXNzaW9uIGlzIGRlbmllZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgcmVjb2duaXRpb24gPSBuZXcgU3BlZWNoUmVjb2duaXRpb24oKSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK1BBU1MgcmVjb2duaXRpb24uc3RhcnQoKSBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KK1BBU1MgZXZlbnQuZXJyb3IgaXMgIm5vdC1hbGxvd2VkIgorUEFTUyBldmVudC5tZXNz
YWdlIGlzICJwZXJtaXNzaW9uIGNoZWNrIGZhaWxzIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
c3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2
ZTlmM2E3NzY0MDlhYTNkZjQxOTJiZmJjNTg3NTkwMTVlMzZjYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1s
CkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
ZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IGVycm9yIGV2ZW50IGlzIGZpcmVkIHdoZW4gcGVybWlz
c2lvbiBpcyBkZW5pZWQuIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIGpzVGVz
dElzQXN5bmMgPSB0cnVlOworICAgIHRlc3RSdW5uZXIuc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25HcmFudGVkKGZhbHNlKTsKK30KKworc2hvdWxkTm90VGhyb3coInJlY29nbml0aW9u
ID0gbmV3IFNwZWVjaFJlY29nbml0aW9uKCkiKTsKK3Nob3VsZE5vdFRocm93KCJyZWNvZ25pdGlv
bi5zdGFydCgpIik7CityZWNvZ25pdGlvbi5vbmVycm9yID0gKGV2ZW50KSA9PiB7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC5lcnJvciIsICJub3QtYWxsb3dlZCIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQubWVzc2FnZSIsICJwZXJtaXNzaW9uIGNoZWNrIGZh
aWxzIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAwZjgwYWNmMGE2ZjZlNDRiNmYwZTQ1NzgzMzlmNjlk
NGEyYTAyYTczLi4yZjNhYTljODVhMzNkMTkwYmU3Y2QwOWY4OGQxNGM4MDk1ODA5ODlmIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtODIxLDQgKzgyMSw1
IEBAIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2VkLXBvcnQtZGVsYXkuaHRt
bCBbIFBhc3MgXQogCiAjIFdlYktpdDIgb25seS4KIGpzL3Rocm93LWxhcmdlLXN0cmluZy1vb20u
aHRtbCBbIFBhc3MgXQotZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbnRlci13aGlsZS1leGl0aW5n
Lmh0bWwgWyBQYXNzIF0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitmdWxsc2NyZWVuL2Z1
bGwtc2NyZWVuLWVudGVyLXdoaWxlLWV4aXRpbmcuaHRtbCBbIFBhc3MgXQorZmFzdC9zcGVlY2hy
ZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413555</attachid>
            <date>2020-11-08 20:50:45 -0800</date>
            <delta_ts>2020-11-09 13:48:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201108205044.patch</filename>
            <type>text/plain</type>
            <size>119512</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcwYzdkNjAxNDAyNjQxYTA4MTkwZTcz
N2FiMWEwZWRlNTA4NzZmNTIuLmQyNGQxNDBhOGFhYWJmZDY1NGM4NmM3ZThkMDBiNWVlOTVjOTcx
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTEtMDggIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMC0xMS0wNiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRnVydGhlciBwcm9ncmVzcyB0b3dh
cmRzIG1lcmdpbmcgU2V0dGluZ3MueWFtbCBpbnRvIFdlYlByZWZlcmVuY2VzLnlhbWwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAzMDI0OTcwMWVlOTY4YTY4MThiNDM1Yzg1ZTg0N2Q2OGY3OWE4MDYwLi4xMmMxYjE1
NzJkZDc5YjZhMGY3YWMyODRhZWNjNTdhMzBiMDRmMDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjcgQEAKKzIwMjAtMTEtMDggIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0
NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpjbGllbnRPcmlnaW4gY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmVycm9yIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpyZXN1bHQgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmg6CisgICAgICAg
ICogcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaDoKKwogMjAyMC0xMS0wOCAg
WmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0ludGVncmF0
aW9uXSBDbGVhbnVwIExheW91dEludGVncmF0aW9uOjpMaW5lIGludGVyZmFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA3YmM2YTIxZDE0ZThlOWU0OGZlZDM0MzFkYmZjNGU5N2MxNzM3MmU1Li4xZmMwODM2YjM3ZWY0
MTAyNWU2NWQyYjkwNmNkOGZiMDc1NzUwYzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAor
MjAyMC0xMS0wOCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQ3NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLCB3aGljaCBjaGVja3MgYW5kIHJlcXVl
c3RzIHNwZWVjaCByZWNvZ25pdGlvbiBwZXJtaXNzaW9ucyBiZWZvcmUgCisgICAgICAgIHdlIGFj
dHVhbGx5IHN0YXJ0IGNhcHR1cmluZyBhdWRpbyBhbmQgcGVyZm9ybSByZWNvZ25pdGlvbi4gU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciBpcyBwZXItcGFnZSwgbGlrZQorICAgICAg
ICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci4gVGhlIGNoZWNrcyBpbmNsdWRlOgorICAgICAgICAx
LiBTYW5kYm94IHJlcXVpcmVtZW50IGZvciBtaWNyb3Bob25lCisgICAgICAgIDIuIFRDQyBjaGVj
ayBmb3IgbWljcm9waG9uZQorICAgICAgICAzLiBUQ0MgY2hlY2sgZm9yIFNGU3BlZWNoUmVjb2du
aXplcgorICAgICAgICA0LiBVc2VyIHBlcm1pc3Npb24gb24gc3BlZWNoIHJlY29nbml0aW9uIGZv
ciBvcmlnaW5zCisKKyAgICAgICAgQWRkIGEgZGVsZWdhdGUgZnVuY3Rpb24gZm9yIHJlcXVlc3Rp
bmcgdXNlciBwZXJtaXNzaW9uLCB3aGljaCBpcyBkZW5pZWQgYnkgZGVmYXVsdC4KKworICAgICAg
ICBUZXN0OiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbAorCisg
ICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
V0tCYXNlLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29h
LnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAgIChB
UEk6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlD
bGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrLmNwcDogQWRkZWQuCisgICAgICAgIChXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrR2V0VHlwZUlEKToKKyAgICAgICAgKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2tDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6cmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZSk6CisgICAgICAgIChXZWJL
aXQ6OnJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGVzKToKKyAgICAgICAgKFdlYktp
dDo6Y2hlY2tBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGVzQW5kRmlsdGVyKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29h
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6cmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXI6OnN0YXJ0TmV4dFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6cGVyZm9ybVNhbmRib3hDaGVjayk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU2FuZGJveFJlcXVpcmVt
ZW50KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
OjpjaGVja0FuZFJlcXVlc3RVc2VyUGVybWlzc2lvbkZvck9yaWdpbik6CisgICAgICAgIChXZWJL
aXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RNaWNyb3Bob25l
QWNjZXNzSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyOjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzSWZOZWVk
ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lzdGVtVmFsaWRhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OnJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6flNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyOjpyZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnROZXh0UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVudFJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
OjpjaGVja1NhbmRib3hSZXF1aXJlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrTWljcm9waG9uZUFjY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU3BlZWNo
UmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3NJZk5lZWRlZCk6
CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJl
cXVlc3RTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrQW5kUmVxdWVz
dFVzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y29tcGxldGUp
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Ojpv
cmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjb21w
bGV0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayk6CisgICAgICAgICogVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAg
KFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFib3J0KToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlbW92ZVBlbmRpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0UG9jZXNzaW5nUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpjb250aW51ZVByb2Nlc3Np
bmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnNl
bmRVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3Rv
cFByb2Nlc3NpbmdSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
bWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OmRpZFJlY2VpdmVVcGRhdGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uLmg6CisKIDIwMjAtMTEtMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAgc29tZSBsb2dpYyBpbiBSZW1vdGVJbWFnZUJ1
ZmZlciBhbmQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCAy
MDNlOGVjN2Q2MTVlODc1ZjNiMzE0NWYyZjhiZGQxZTViN2IwODNkLi45M2U3YjQ1Mzg1YWU4ODcw
NThlZDZmNGQwNmVkNzUyZWYyYjE4MDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUhhdmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtNzU1LDMg
Kzc1NSwxMSBAQAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShXQVRDSE9T
KSAmJiAhUExBVEZPUk0oQVBQTEVUVikKICNkZWZpbmUgSEFWRV9DTkNPTlRBQ1RQSUNLRVJWSUVX
Q09OVFJPTExFUiAxCiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFD
Q0FUQUxZU1QpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxNTAwKQorI2RlZmluZSBIQVZFX1NQRUVDSFJFQ09HTklaRVIgMQorI2VuZGlm
CisKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSB8fCBQTEFURk9S
TShNQUMpCisjZGVmaW5lIEhBVkVfQVZDQVBUVVJFREVWSUNFIDEKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCmluZGV4
IDUxYTMyY2RhYWNhYTFlZDAxMTQyNzY3ZDIyZTMwMjUyNmRlYmY1OTUuLmYxMTdjMWZiMWI1YmQw
NGFlNzU1MjU2NWZiYWE4ODkxYzVjMWFlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbi5oIgogCisjaW5j
bHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNjksNyArNzAsOCBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnRSZWNvZ25pdGlvbigpCiAgICAgaWYg
KCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBVbmtub3duRXJyb3Is
ICJSZWNvZ25pdGlvbiBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgY29ubmVjdGlvbiJfcyB9OwogCi0g
ICAgbV9jb25uZWN0aW9uLT5zdGFydChpZGVudGlmaWVyKCksIG1fbGFuZywgbV9jb250aW51b3Vz
LCBtX2ludGVyaW1SZXN1bHRzLCBtX21heEFsdGVybmF0aXZlcyk7CisgICAgYXV0byYgZG9jdW1l
bnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAg
bV9jb25uZWN0aW9uLT5zdGFydChpZGVudGlmaWVyKCksIG1fbGFuZywgbV9jb250aW51b3VzLCBt
X2ludGVyaW1SZXN1bHRzLCBtX21heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2luIHsgZG9jdW1l
bnQudG9wT3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9
KTsKICAgICBtX3N0YXRlID0gU3RhdGU6OlN0YXJ0aW5nOwogICAgIHJldHVybiB7IH07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbi5oCmluZGV4IDNmZDJkMzNhY2EwMjA1MjYzNDA1OGQwZmI1NjUyZWI3
MDA3ZmE1MmEuLjY5ZWViYzI5M2Q1YjdkZTFlMzhjZWVhZDJhM2VlMzhmMDBkMWNhNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbi5oCkBAIC0zMSwxNSArMzEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQ7CiBjbGFzcyBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZTsKK3N0cnVjdCBDbGllbnRPcmlnaW47CiAKIGNsYXNzIFNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbj4gewogcHVibGljOgogICAgIHZpcnR1YWwgflNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNsaWVudChTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0
KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBt
YXhBbHRlcm5hdGl2ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29s
IGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZl
cywgQ2xpZW50T3JpZ2luJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcChTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGFib3J0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShjb25zdCBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZSYmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0LmNwcAppbmRleCA0YTVlOGMxNjMwM2MxODY1YzJiMWZmY2U5YjU2ZWUyNjIw
M2E3ZmM1Li5kM2JkN2E5NGE0MmI5ZDVlMDU5MjBjNWJmZTdkYmM0NGE5MTg4N2ZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uUmVxdWVzdC5jcHAKQEAgLTI4LDExICsyOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVmPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
OjpjcmVhdGUoU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmIHJlcXVlc3RJbmZvKQotewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdChXVEZNb3Zl
KHJlcXVlc3RJbmZvKSkpOwotfQotCiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OlNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYgcmVxdWVzdElu
Zm8pCiAgICAgOiBtX2luZm8oV1RGTW92ZShyZXF1ZXN0SW5mbykpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5o
CmluZGV4IDVjZWVhMDFjNzM4NjU1NmQ0MjUxZjhjOGI5NWMzMTI0YmFmYzYwMTIuLjM5NmRiMjY5
ODRmOTEyNDY4MjRiMDY1ODY2NWNhNzNlN2JjNGNjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCkBAIC0z
MCwxOSArMzAsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3Q+IHsKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNwZWVjaFJlY29n
bml0aW9uUmVxdWVzdD4gY3JlYXRlKFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8mJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KFNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdEluZm8mJik7CiAKICAgICBTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2luZm8uY2xpZW50SWRlbnRpZmllcjsgfQogICAgIGNvbnN0IFN0cmluZyYgbGFuZygpIGNvbnN0
IHsgcmV0dXJuIG1faW5mby5sYW5nOyB9CiAgICAgYm9vbCBjb250aW51b3VzKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmZvLmNvbnRpbnVvdXM7OyB9CiAgICAgYm9vbCBpbnRlcmltUmVzdWx0cygpIGNv
bnN0IHsgcmV0dXJuIG1faW5mby5pbnRlcmltUmVzdWx0czsgfQogICAgIHVpbnQ2NF90IG1heEFs
dGVybmF0aXZlcygpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5tYXhBbHRlcm5hdGl2ZXM7IH0KKyAg
ICBDbGllbnRPcmlnaW4gY2xpZW50T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmNsaWVu
dE9yaWdpbjsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdChTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYpOwotCiAgICAgU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0SW5mbyBtX2luZm87CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKaW5k
ZXggYWIxZTFhZTZlZjM4ODk4YzIxYTJhOWRmN2FmMWYwMDdlMjRiMTdkMC4uMWVmZTllMDY0NmU3
NDdjYjU1ZDdjY2IwZjdiMThmZjVlMGIzYzRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaApA
QCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNsaWVudE9yaWdp
bi5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsNiArMzYsNyBAQCBzdHJ1Y3QgU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7CiAgICAgYm9vbCBjb250aW51b3VzIHsgZmFsc2Ug
fTsKICAgICBib29sIGludGVyaW1SZXN1bHRzIHsgZmFsc2UgfTsKICAgICB1aW50NjRfdCBtYXhB
bHRlcm5hdGl2ZXMgeyAxIH07CisgICAgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbjsKIAogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0SW5mbz4gZGVjb2RlKERlY29kZXImKTsKQEAgLTQzLDcgKzQ1LDcgQEAgc3RydWN0
IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
IHZvaWQgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBjbGllbnRJZGVudGlmaWVyIDw8IGxhbmcgPDwg
Y29udGludW91cyA8PCBpbnRlcmltUmVzdWx0cyA8PCBtYXhBbHRlcm5hdGl2ZXM7CisgICAgZW5j
b2RlciA8PCBjbGllbnRJZGVudGlmaWVyIDw8IGxhbmcgPDwgY29udGludW91cyA8PCBpbnRlcmlt
UmVzdWx0cyA8PCBtYXhBbHRlcm5hdGl2ZXMgPDwgY2xpZW50T3JpZ2luOwogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgpAQCAtNzQsMTIgKzc2LDE4IEBAIE9wdGlvbmFsPFNwZWVjaFJlY29n
bml0aW9uUmVxdWVzdEluZm8+IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmRlY29kZShE
ZWNvCiAgICAgaWYgKCFtYXhBbHRlcm5hdGl2ZXMpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKKyAgICBPcHRpb25hbDxDbGllbnRPcmlnaW4+IGNsaWVudE9yaWdpbjsKKyAgICBkZWNv
ZGVyID4+IGNsaWVudE9yaWdpbjsKKyAgICBpZiAoIWNsaWVudE9yaWdpbikKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIHJldHVybiB7ewogICAgICAgICBXVEZNb3ZlKCpjbGll
bnRJZGVudGlmaWVyKSwKICAgICAgICAgV1RGTW92ZSgqbGFuZyksCiAgICAgICAgIFdURk1vdmUo
KmNvbnRpbnVvdXMpLAogICAgICAgICBXVEZNb3ZlKCppbnRlcmltUmVzdWx0cyksCi0gICAgICAg
IFdURk1vdmUoKm1heEFsdGVybmF0aXZlcykKKyAgICAgICAgV1RGTW92ZSgqbWF4QWx0ZXJuYXRp
dmVzKSwKKyAgICAgICAgV1RGTW92ZSgqY2xpZW50T3JpZ2luKQogICAgIH19OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZS5jcHAKaW5kZXggNTM0ZWRhM2QyNDc3ZWUxYzZmMTdlYzZhZjE3OTMyNmJiNzlmMDIw
Ny4uOWE5YTdkOTIwNjk2NTVjNDU3MTYwN2RkYTE4YzRlNmIzMzBmNzJkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBk
YXRlLmNwcApAQCAtNjAsNyArNjAsNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJp
bmcoU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIGVudW1lcmF0aW9uVmFsdWUpCiAKIFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gU3BlZWNoUmVj
b2duaXRpb25VcGRhdGUgeyBjbGllbnRJZGVudGlmaWVyLCB0eXBlIH07CisgICAgcmV0dXJuIFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlIHsgY2xpZW50SWRlbnRpZmllciwgdHlwZSwgV1RGOjpNb25v
c3RhdGUoKSB9OwogfQogCiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZTo6Y3JlYXRlRXJyb3IoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yJiBl
cnJvcikKQEAgLTgzLDcgKzgzLDcgQEAgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWUKIFNwZWVjaFJl
Y29nbml0aW9uRXJyb3IgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmVycm9yKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2NvbnRlbnQsCi0gICAgICAgIFtdIChTcGVlY2hS
ZWNvZ25pdGlvbkVycm9yJiBlcnJvcikgeyByZXR1cm4gZXJyb3I7IH0sCisgICAgICAgIFtdIChj
b25zdCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yJiBlcnJvcikgeyByZXR1cm4gZXJyb3I7IH0sCiAg
ICAgICAgIFtdIChjb25zdCBhdXRvJikgeyByZXR1cm4gU3BlZWNoUmVjb2duaXRpb25FcnJvcigp
OyB9CiAgICAgKTsKIH0KQEAgLTkxLDcgKzkxLDcgQEAgU3BlZWNoUmVjb2duaXRpb25FcnJvciBT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6ZXJyb3IoKSBjb25zdAogVmVjdG9yPFNwZWVjaFJlY29n
bml0aW9uUmVzdWx0RGF0YT4gU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OnJlc3VsdCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9jb250ZW50LAotICAgICAgICBbXSAoVmVj
dG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4mIGRhdGEpIHsgcmV0dXJuIGRhdGE7IH0s
CisgICAgICAgIFtdIChjb25zdCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYg
ZGF0YSkgeyByZXR1cm4gZGF0YTsgfSwKICAgICAgICAgW10gKGNvbnN0IGF1dG8mKSB7IHJldHVy
biBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiB7IH07IH0KICAgICApOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25VcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uVXBkYXRlLmgKaW5kZXggM2E4MmJmNmJhZjU0Y2UwYzRiMTMzNGVmNmY4YjU4OTNmM2I4OTgy
ZS4uODkxNDkxNzkzZjRlMDFlYzJmZjYwMTA3Y2I0ODVmNDg4ZmE0M2U4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZS5oCkBAIC01Miw4ICs1Miw4IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUpOwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRh
dGUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZSBjcmVhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlKTsKLSAgICBzdGF0aWMgU3BlZWNoUmVjb2du
aXRpb25VcGRhdGUgY3JlYXRlRXJyb3IoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciwgY29uc3QgU3BlZWNoUmVjb2duaXRpb25FcnJvciYpOwotICAgIHN0YXRpYyBT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVSZXN1bHQoU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVz
dWx0RGF0YT4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25V
cGRhdGUgY3JlYXRlRXJyb3IoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllciwgY29uc3QgU3BlZWNoUmVjb2duaXRpb25FcnJvciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVSZXN1bHQoU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFNwZWVjaFJlY29n
bml0aW9uUmVzdWx0RGF0YT4mKTsKIAogICAgIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50
SWRlbnRpZmllcjsgfQogICAgIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICB1c2luZyBDb250ZW50ID0gVmFyaWFudDxXVEY6Ok1vbm9zdGF0ZSwgU3BlZWNoUmVj
b2duaXRpb25FcnJvciwgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+OwotICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlKFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlVHlwZSwgQ29udGVudCA9IFdURjo6TW9ub3N0YXRlKCkpOworICAgIFdFQkNPUkVfRVhQT1JU
IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSwgQ29udGVudCk7CiAKICAg
ICBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIG1fY2xpZW50SWRl
bnRpZmllcjsKICAgICBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUgbV90eXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgK
aW5kZXggY2Y5ZTcyYjkzYzA2NGE1NWRkZGZhYjdiM2NhZmI0ODkwZTAzNWY0Ni4uMjQwYWEzZDQ4
NGE5NzNiNDQxMTJhZWY2MWU4ZWFhYTg0N2I1OGQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oCkBAIC0zOSwxMCArMzks
MTAgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHVtbXlTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24oKSk7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCByZWdp
c3RlckNsaWVudChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQmKSBmaW5hbCB7IH0K
LSAgICAgICAgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCkgZmluYWwgeyB9Cisg
ICAgICAgIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiwgYm9vbCwgYm9vbCwgdWludDY0X3QsIENsaWVudE9yaWdpbiYm
KSBmaW5hbCB7IH0KICAgICAgICAgdm9pZCBzdG9wKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudElkZW50aWZpZXIpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIGFib3J0KFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFsIHsgfQotICAgICAgICB2
b2lkIGRpZFJlY2VpdmVVcGRhdGUoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSBmaW5h
bCB7IH0KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlJiYpIGZpbmFsIHsgfQogICAgIH07CiAgICAgRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3Zp
ZGVyKCkgPSBkZWZhdWx0OwogICAgIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiYgc3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaApp
bmRleCA2ZDA2NTY0NWRjZWU2MmU1OWQ1MGRiZWYzNzQzNWE0OWE4MGViNjgyLi5jZDFjYWQ5NmI0
MDMxMmRiM2IxODhkZTcxZjYwODhiZjcyOGZkODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SU9iamVjdC5oCkBAIC0xNjUsNiArMTY1LDcgQEAgcHVibGljOgogICAgICAgICBSdW5KYXZhU2Ny
aXB0QWxlcnRSZXN1bHRMaXN0ZW5lciwKICAgICAgICAgUnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1
bHRMaXN0ZW5lciwKICAgICAgICAgUnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExpc3RlbmVyLAor
ICAgICAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaywKICAgICAgICAgVGV4
dENoZWNrZXIsCiAgICAgICAgIFVSTFNjaGVtZVRhc2ssCiAgICAgICAgIFVzZXJDb250ZW50Q29u
dHJvbGxlciwKQEAgLTQxMCw2ICs0MTEsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PEFQSTo6T2JqZWN0OjpUeXBlPiB7CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpSdW5KYXZh
U2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlJ1
bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpU
eXBlOjpSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXIsCisgICAgICAgIEFQSTo6T2Jq
ZWN0OjpUeXBlOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaywKICAgICAgICAg
QVBJOjpPYmplY3Q6OlR5cGU6OlRleHRDaGVja2VyLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlw
ZTo6VVJMU2NoZW1lVGFzaywKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250ZW50
Q29udHJvbGxlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXggOWU4MmU1NjAw
MTg3ZWMxY2Y4YWY5YmVlNzllNzFkMGU4ZDdmZDE1YS4uODRlZTZjMjg4ZjZkMmViZDUxZmE3M2Vh
NzI3MDhmMzI5NDZiZGQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTE0
MSw2ICsxNDEsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNpdGVEYXRhQ29u
ZmlndXJhdGlvblN0b3JlKiBXS1dlYnNpdGVEYXRhU3RvcmVDbwogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tXZWJzaXRlRGF0YVN0b3JlKiBXS1dlYnNpdGVEYXRhU3RvcmVSZWY7CiB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNpdGVQb2xpY2llcyogV0tXZWJzaXRlUG9saWNp
ZXNSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dpbmRvd0ZlYXR1cmVzKiBXS1dp
bmRvd0ZlYXR1cmVzUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFjayogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFja1JlZjsKIAogLyogV2ViS2l0MiBCdW5kbGUgdHlwZXMgKi8KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5k
ZXggMzQ5OTc1Y2VjMTAwYWEzMjVmODJmYzYxNTBhNjc2OTFlYTEyZWMwYi4uMDg1MTFiNjE4ZWE0
N2QxZTJiMzE1ZmU1ZDhkNDgwNDhlNTg0MmY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yOTAsNiArMjkw
LDcgQEAgVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCiBVSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIuY3BwCiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAog
VUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmNwcAorVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwCiBVSVByb2Nlc3MvVGV4dENoZWNrZXIuY3Bw
CiBVSVByb2Nlc3MvVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcAogVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcApAQCAtNDAzLDYgKzQwNCw3IEBAIFVJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNl
LmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCiBVSVByb2Nl
c3MvQVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuY3BwCitVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1RleHRD
aGVja2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmNw
cAogVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlZi5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAppbmRleCAwODRkNTEzNTJkNDRhNDUwOTQ5YjNmYmQxZDFkNzYxMzVm
YjJiZWIyLi42M2JkNDBjM2VmNjAxZWUxNDk0YTFiNDcxNGFjZTBlMWZhMTc0OGU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CkBAIC0zNzMsMTIgKzM3MywxNCBAQCBVSVByb2Nlc3MvQ29jb2EvR2xv
YmFsRmluZEluUGFnZVN0YXRlLm1tCiBVSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0
ZS5tbQogVUlQcm9jZXNzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5t
bQogVUlQcm9jZXNzL0NvY29hL01lZGlhVXRpbGl0aWVzLm1tCitVSVByb2Nlc3MvQ29jb2EvTWVk
aWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRl
Lm1tCiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQogVUlQcm9jZXNzL0Nv
Y29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQogVUlQcm9jZXNzL0NvY29hL1Jlc291
cmNlTG9hZERlbGVnYXRlLm1tCiBVSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0Nv
Y29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvU2Vzc2lvblN0YXRlQ29kaW5nLm1tCitVSVByb2Nlc3Mv
Q29jb2EvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tCiBVSVByb2Nl
c3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29h
L1RleHRDaGVja2luZ0NvbnRyb2xsZXIubW0KIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4IGFhN2Q4OWMw
MWU3MzUyMGNlM2VlMDQyMjZiOWFlODU5NzBiZmFhNmUuLmIyZGZmMjk4M2VlMDk4YWRiYzkyNzE4
MTVjNDJhYjZhZDZkNDA0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oCkBAIC0yMDIsNiArMjAyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQVBJOjpJ
bnNwZWN0b3JDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZv
aWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBBUEk6OlNlY3VyaXR5T3Jp
Z2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
eyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCBiNTJjNDRiYWVh
OWFjZjlmYzAzMzJkNWE5ZjM3MzU2ZTlkMjM4NjI5Li4xOGNiZmQ1Yjc0ZWI4NzcwYTU3OGYxNWM4
YTAxNjE0OTkwMjE0NTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0FQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNh
c3QuaApAQCAtNzksNiArNzksNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVu
ZXI7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdDsKIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworY2xhc3MgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2tQcm94eTsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CiBjbGFz
cyBXZWJCYWNrRm9yd2FyZExpc3Q7CkBAIC0xNTIsNiArMTUzLDcgQEAgV0tfQUREX0FQSV9NQVBQ
SU5HKFdLUHJlZmVyZW5jZXNSZWYsIFdlYlByZWZlcmVuY2VzKQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLUHJvdGVjdGlvblNwYWNlUmVmLCBXZWJQcm90ZWN0aW9uU3BhY2UpCiBXS19BRERfQVBJX01B
UFBJTkcoV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclJlZiwgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbmFnZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tTZXNzaW9uU3RhdGVSZWYs
IEFQSTo6U2Vzc2lvblN0YXRlKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVGV4dENoZWNrZXJSZWYsIFdlYlRleHRDaGVja2Vy
KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJDb250ZW50
RXh0ZW5zaW9uU3RvcmVSZWYsIEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA0MzY5Y2RkODI1YjUxNTdmYjAxMGMz
ZjgxYWU3OGU2NjBkYWE3NGZjLi4xMWM2NmJmNDI4NDkzMjgxNWQ3ZWZhYTRiYWUzOTA2ZWY3MjM0
NTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTYzLDYg
KzYzLDcgQEAKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb3Jt
YXRpb24uaCIKICNpbmNsdWRlICJQcmludEluZm8uaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVk
ZSAiV0tQYWdlUG9saWN5Q2xpZW50SW50ZXJuYWwuaCIKICNpbmNsdWRlICJXS1BhZ2VSZW5kZXJp
bmdQcm9ncmVzc0V2ZW50c0ludGVybmFsLmgiCkBAIC0xMTUsNyArMTE2LDcgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVBvbGljeUNsaWVudEJhc2U+IHsKIH07CiAKIHRl
bXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VVSUNsaWVudEJhc2U+IHsKLSAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQ
YWdlVUlDbGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdlVUlDbGllbnRWNCwgV0tQYWdl
VUlDbGllbnRWNSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQYWdlVUlDbGllbnRWNywgV0tQYWdlVUlD
bGllbnRWOCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQYWdlVUlDbGllbnRWMTAsIFdLUGFnZVVJQ2xp
ZW50VjExLCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQYWdlVUlDbGllbnRWMTMsIFdLUGFnZVVJQ2xp
ZW50VjE0PiBWZXJzaW9uczsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRW
MCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlDbGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywg
V0tQYWdlVUlDbGllbnRWNCwgV0tQYWdlVUlDbGllbnRWNSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQ
YWdlVUlDbGllbnRWNywgV0tQYWdlVUlDbGllbnRWOCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQYWdl
VUlDbGllbnRWMTAsIFdLUGFnZVVJQ2xpZW50VjExLCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQYWdl
VUlDbGllbnRWMTMsIFdLUGFnZVVJQ2xpZW50VjE0LCBXS1BhZ2VVSUNsaWVudFYxNT4gVmVyc2lv
bnM7CiB9OwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0yMTEwLDYgKzIxMTEsMTMg
QEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdL
UGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6UHJlc2VudGVkKTsKICAgICAg
ICAgfQogI2VuZGlmCisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6U2VjdXJpdHlPcmln
aW4mIHJlcXVlc3RpbmdPcmlnaW4sIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKCZyZXF1ZXN0aW5nT3JpZ2luKSwgdG9B
UEkoJnRvcE9yaWdpbiksIHRvQVBJKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
OjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpLnB0cigpKSk7CisgICAgICAgIH0K
ICAgICB9OwogCiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRVSUNsaWVudChtYWtlVW5pcXVlPFVJ
Q2xpZW50Pih3a0NsaWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZVVJQ2xpZW50LmgKaW5kZXggYjYzODgxNTVjZDMwMzZlNjY2MTEwZjE5MjU2MTZhZmQzN2U4
NjhiYS4uN2NkOGZkMGQ5ODRjZmQ5ZjRkNDRiZmU4M2Q4NWRiMWI1NjE3NTk4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCkBAIC0xMzYsNiAr
MTM2LDcgQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25n
UGFzc3dvcmRBcHBlYXJhbmNlQ2FsbGJhY2spKFdLUGEKIHR5cGVkZWYgYm9vbCAoKldLUGFnZVNo
b3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDYWxsYmFjaykoV0tQYWdl
UmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pOwogCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VSdW5XZWJBdXRoZW50aWNhdGlv
blBhbmVsQ2FsbGJhY2spKCk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdl
LCBXS1NlY3VyaXR5T3JpZ2luUmVmIHJlcXVlc3RpbmdPcmlnaW4sIFdLU2VjdXJpdHlPcmlnaW5S
ZWYgdG9wT3JpZ2luLCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIGNh
bGxiYWNrKTsKIAogLy8gRGVwcmVjYXRlZAogdHlwZWRlZiBXS1BhZ2VSZWYgKCpXS1BhZ2VDcmVh
dGVOZXdQYWdlQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkoV0tQYWdlUmVmIHBhZ2Us
IFdLRGljdGlvbmFyeVJlZiBmZWF0dXJlcywgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdL
RXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CkBA
IC0xMzUzLDYgKzEzNTQsMTE3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjE0IHsK
ICAgICBXS1BhZ2VSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWw7CiB9IFdLUGFnZVVJQ2xp
ZW50VjE0OwogCit0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFYxNSB7CisgICAgV0tQYWdl
VUlDbGllbnRCYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBiYXNlOworCisgICAgLy8gVmVyc2lvbiAwLgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VD
YWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3
UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1BhZ2U7Cisg
ICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbG9zZTsKKyAgICBXS1BhZ2VUYWtlRm9jdXNDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2VGb2N1czsKKyAgICBXS1Bh
Z2VGb2N1c0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvY3VzOworICAgIFdLUGFnZVVuZm9jdXNDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5mb2N1czsKKyAgICBXS1BhZ2VSdW5KYXZh
U2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICAgICAgIHJ1
bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZVJ1bkph
dmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAg
cnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VS
dW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAg
ICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1Bh
Z2VTZXRTdGF0dXNUZXh0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFN0YXR1c1RleHQ7CisgICAgV0tQYWdlTW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRD
YWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxl
bWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZU1pc3NpbmdQbHVnaW5CdXR0
b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAgICAgbWlzc2luZ1BsdWdp
bkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VEaWROb3RI
YW5kbGVLZXlFdmVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRp
ZE5vdEhhbmRsZUtleUV2ZW50OworICAgIFdLUGFnZURpZE5vdEhhbmRsZVdoZWVsRXZlbnRDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkTm90SGFuZGxlV2hlZWxFdmVu
dDsKKyAgICBXS1BhZ2VHZXRUb29sYmFyc0FyZVZpc2libGVDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRvb2xiYXJzQXJlVmlzaWJsZTsKKyAgICBXS1BhZ2VTZXRUb29s
YmFyc0FyZVZpc2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFRvb2xiYXJzQXJlVmlzaWJsZTsKKyAgICBXS1BhZ2VHZXRNZW51QmFySXNWaXNpYmxlQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVCYXJJc1Zpc2libGU7Cisg
ICAgV0tQYWdlU2V0TWVudUJhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRNZW51QmFySXNWaXNpYmxlOworICAgIFdLUGFnZUdldFN0YXR1c0Jh
cklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVz
QmFySXNWaXNpYmxlOworICAgIFdLUGFnZVNldFN0YXR1c0JhcklzVmlzaWJsZUNhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdHVzQmFySXNWaXNpYmxlOworICAg
IFdLUGFnZUdldElzUmVzaXphYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXNSZXNpemFibGU7CisgICAgV0tQYWdlU2V0SXNSZXNpemFibGVDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc1Jlc2l6YWJsZTsK
KyAgICBXS1BhZ2VHZXRXaW5kb3dGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdldFdpbmRvd0ZyYW1lOworICAgIFdLUGFnZVNldFdpbmRvd0ZyYW1l
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0V2luZG93
RnJhbWU7CisgICAgV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsQ2FsbGJhY2tfZGVw
cmVjYXRlZEZvclVzZVdpdGhWNiAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxfZGVwcmVj
YXRlZEZvclVzZVdpdGhWNjsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZERyYXc7CisgICAgV0tQYWdlVUlD
bGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYWdlRGlkU2Nyb2xsOworICAgIFdLUGFnZUV4Y2VlZGVkRGF0YWJhc2VRdW90YUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZWVkZWREYXRhYmFzZVF1b3RhOwor
ICAgIFdLUGFnZVJ1bk9wZW5QYW5lbENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnVuT3BlblBhbmVsOworICAgIFdLUGFnZURlY2lkZVBvbGljeUZvckdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAgICAgZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VIZWFkZXJIZWlnaHRD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckhl
aWdodDsKKyAgICBXS1BhZ2VGb290ZXJIZWlnaHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvb3RlckhlaWdodDsKKyAgICBXS1BhZ2VEcmF3SGVhZGVy
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdI
ZWFkZXI7CisgICAgV0tQYWdlRHJhd0Zvb3RlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkcmF3Rm9vdGVyOworICAgIFdLUGFnZVByaW50RnJhbWVD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRG
cmFtZTsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJ1bk1vZGFsOworICAgIHZvaWQqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkMTsg
Ly8gVXNlZCB0byBiZSBkaWRDb21wbGV0ZVJ1YmJlckJhbmRGb3JNYWluRnJhbWUKKyAgICBXS1Bh
Z2VTYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXI7CisgICAgdm9pZCogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0X3VuYXZhaWxhYmxlOworCisgICAgLy8gVmVyc2lvbiAx
LgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYx
ICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOwor
ICAgIFdLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVtZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ7CisgICAgV0tQYWdlRGVjaWRl
UG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAgICBk
ZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VV
bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0
aFYxIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYx
OworCisgICAgLy8gVmVyc2lvbiAyLgorICAgIFdLUGFnZVNob3dDb2xvclBpY2tlckNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NvbG9yUGlja2VyOwor
ICAgIFdLUGFnZUhpZGVDb2xvclBpY2tlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGlkZUNvbG9yUGlja2VyOworICAgIFdLUGFnZVVuYXZhaWxhYmxlUGx1
Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgdW5hdmFpbGFi
bGVQbHVnaW5CdXR0b25DbGlja2VkOworCisgICAgLy8gVmVyc2lvbiAzLgorICAgIFdLUGFnZVBp
bm5lZFN0YXRlRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGlubmVkU3RhdGVEaWRDaGFuZ2U7CisKKyAgICAvLyBWZXJzaW9uIDQuCisgICAgdm9pZCog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnVzZWQyOyAvLyBVc2VkIHRvIGJlIGRpZEJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25n
TW91c2VQcmVzcy4KKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDM7IC8vIFVzZWQgdG8gYmUgZGlkUmVj
b2duaXplTG9uZ01vdXNlUHJlc3MuCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQ0OyAvLyBVc2VkIHRv
IGJlIGRpZENhbmNlbFRyYWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MuCisgICAgV0tQYWdl
SXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZTsKKworICAgIC8vIFZlcnNpb24gNS4KKyAgICBX
S1BhZ2VEZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAg
ICAgICAgICAgIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OworICAg
IFdLUGFnZURpZENsaWNrQXV0b0ZpbGxCdXR0b25DYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbjsKKyAgICBXS1BhZ2VSdW5KYXZhU2Ny
aXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkph
dmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OworICAgIFdLUGFnZVJ1bkphdmFT
Y3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVu
SmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKKyAgICBXS1BhZ2VSdW5K
YXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAg
IHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKKyAgICB2b2lkKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2Uu
CisKKyAgICAvLyBWZXJzaW9uIDYuCisgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlOworICAg
IFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRD
b25maXJtQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuSmF2YVNj
cmlwdENvbmZpcm07CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0OworICAgIFdL
Q2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luOworCisgICAgLy8gVmVy
c2lvbiA3LgorICAgIFdLUGFnZVJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbENhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOworICAg
IFdLRnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lOworCisgICAgLy8gVmVyc2lv
biA4LgorICAgIFdLUmVxdWVzdFBvaW50ZXJMb2NrQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFBvaW50ZXJMb2NrOworICAgIFdLRGlkTG9zZVBv
aW50ZXJMb2NrQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGlkTG9zZVBvaW50ZXJMb2NrOworCisgICAgLy8gVmVyc2lvbiA5LgorICAgIFdLSGFuZGxlQXV0
b3BsYXlFdmVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGFuZGxlQXV0b3BsYXlFdmVudDsKKworICAgIC8vIFZlcnNpb24gMTAuCisgICAgV0tIYXNWaWRl
b0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICBoYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZTsKKyAgICBXS0RpZEV4Y2VlZEJh
Y2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmRDYWxsYmFjayAgICAgICAgIGRp
ZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQ7CisKKyAgICAv
LyBWZXJzaW9uIDExLgorICAgIFdLUGFnZURpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3
b3JkQXBwZWFyYW5jZUNhbGxiYWNrICAgICAgICAgZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25n
UGFzc3dvcmRBcHBlYXJhbmNlOworCisgICAgLy8gVmVyc2lvbiAxMi4KKyAgICBXS1BhZ2VSZXF1
ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm1DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybTsKKworICAgIC8vIFZlcnNpb24gMTMuCisgICAg
V0tQYWdlU2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NhbGxiYWNr
ICAgICAgICAgICBzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzOwor
CisgICAgLy8gVmVyc2lvbiAxNC4KKyAgICBXS1BhZ2VSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVs
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9u
UGFuZWw7CisKKyAgICAvLyBWZXJzaW9uIDE1LgorICAgIFdLUGFnZURlY2lkZVBvbGljeUZvclNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgZGVjaWRlUG9saWN5
Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDsKKyAgICAKK30gV0tQYWdlVUlD
bGllbnRWMTU7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjYzhmOWEzNWRiODQx
MWUwMzg1YTdhZTE1NDlhMzlhZjgxMzJlZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
LmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCIKKworI2lu
Y2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJX
S0FQSUNhc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0dldFR5cGVJRCgpCit7CisgICAgcmV0dXJu
IHRvQVBJKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpBUElUeXBlKTsKK30K
Kwordm9pZCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUoV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBzcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjaywgYm9vbCBncmFudGVkKQoreworICAgIHJldHVybiB0b0ltcGwoc3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2spLT5jb21wbGV0ZShncmFudGVkKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGFl
YWZjNjk4NGJhOTZmNTQ4OTJlNzMyYWZlYTNhMDYzYzljNzJkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25DYWxsYmFjay5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRl
cm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFja0dldFR5cGVJRCh2b2lkKTsKKworV0tfRVhQT1JUIHZvaWQgV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0NvbXBsZXRlKFdLU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2ssIGJvb2wgZ3JhbnRlZCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRl
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0
ZVByaXZhdGUuaAppbmRleCBkMWVhZTIwMWU2NTQyZjRmYWI2MDE5ODBkYzY2MTI0OTEzMTk3OTNm
Li41ZWFiNDY1NzlmOTlmYTZmNjMzMTZhNGMwNTQ0MjJkNjNhNmZkOTE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRl
LmgKQEAgLTE1Miw2ICsxNTIsOCBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogCiAtICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHdpbGxTaGFyZUFjdGl2aXR5SXRlbXM6KE5TQXJy
YXkgKilhY3Rpdml0eUl0ZW1zIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKIAor
LSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopcmVxdWVzdGluZ09y
aWdpbiB0b3BPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKil0b3BPcmlnaW4gZGVjaXNpb25IYW5k
bGVyOih2b2lkICheKShCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAjaWYgVEFSR0VU
X09TX0lQSE9ORQogCiAtIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHNob3Vs
ZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZv
ICopZWxlbWVudCBXS19BUElfQVZBSUxBQkxFKGlvcyg5LjApKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2E3Mzc0Mzc5ZjdlZjEwOTQ0YWFmYzc5NzdjNmVhYjNjOGE3MzNmOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lv
blV0aWxpdGllcy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEhBVkUoQVZDQVBUVVJFREVWSUNFKQorCisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZN
ZWRpYUZvcm1hdC5oPgorI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW1wb3J0
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIHJlcXVlc3RBVkNh
cHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUoQVZNZWRpYVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCBhdXRob3JpemVkKT4mJik7Cit2b2lkIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JN
ZWRpYVR5cGVzKFZlY3RvcjxBVk1lZGlhVHlwZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sIGF1dGhvcml6ZWQpPiYmKTsKK09wdGlvbmFsPFZlY3RvcjxBVk1lZGlhVHlwZT4+IGNoZWNr
QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlc0FuZEZpbHRlcihjb25zdCBWZWN0b3I8QVZNZWRp
YVR5cGU+JiB0eXBlcyk7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFW
RShBVkNBUFRVUkVERVZJQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzZiMWJlNmYz
NGJhMTMwODhkYTM2MzQ3Zjk3ZTNlMDY0MDkyNjlhNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQpAQCAt
MCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJN
ZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCIKKworI2lmIEhBVkUoQVZDQVBUVVJFREVWSUNFKQor
CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRp
b25Tb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCByZXF1ZXN0QVZDYXB0
dXJlQWNjZXNzRm9yTWVkaWFUeXBlKEFWTWVkaWFUeXBlIHR5cGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCBhdXRob3JpemVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxv
Y2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJP
T0wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChpc01haW5UaHJlYWQoKSkgewor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBhdXRob3JpemVkXSgpIG11dGFi
bGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgICAg
IH0pOworICAgIH0pOworICAgIFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgcmVxdWVz
dEFjY2Vzc0Zvck1lZGlhVHlwZTp0eXBlIGNvbXBsZXRpb25IYW5kbGVyOmRlY2lzaW9uSGFuZGxl
ci5nZXQoKV07Cit9CisKK3ZvaWQgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZXMo
VmVjdG9yPEFWTWVkaWFUeXBlPiYmIHR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wg
YXV0aG9yaXplZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKHR5cGVzLmlzRW1w
dHkoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGF1dG8gdHlwZSA9IHR5cGVzLnRha2VMYXN0KCk7CisgICAgcmVxdWVz
dEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZSh0eXBlLCBbdHlwZXMgPSBXVEZNb3ZlKHR5cGVz
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQk9PTCBh
dXRob3JpemVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFhdXRob3JpemVkKSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlcyhXVEZN
b3ZlKHR5cGVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCitP
cHRpb25hbDxWZWN0b3I8QVZNZWRpYVR5cGU+PiBjaGVja0FWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlh
VHlwZXNBbmRGaWx0ZXIoY29uc3QgVmVjdG9yPEFWTWVkaWFUeXBlPiYgdHlwZXMpCit7CisgICAg
VmVjdG9yPEFWTWVkaWFUeXBlPiB1bmRlY2lkZWRUeXBlczsKKyAgICBmb3IgKGF1dG8gdHlwZSA6
IHR5cGVzKSB7CisgICAgICAgIGF1dG8gYXV0aG9yaXphdGlvblN0YXR1cyA9IFtQQUw6OmdldEFW
Q2FwdHVyZURldmljZUNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c0Zvck1lZGlhVHlwZTp0eXBl
XTsKKyAgICAgICAgaWYgKGF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3Rh
dHVzRGVuaWVkIHx8IGF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVz
UmVzdHJpY3RlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIGlm
IChhdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWlu
ZWQpCisgICAgICAgICAgICB1bmRlY2lkZWRUeXBlcy5hcHBlbmQodHlwZSk7CisgICAgfQorICAg
IHJldHVybiB1bmRlY2lkZWRUeXBlczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBIQVZFKEFWQ0FQVFVSRURFVklDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXJDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODVhZTdjYzJhOWY4MzI0Njk2ZmJhMzRj
ZWJiMWEwYTQzYzE0NDE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tCkBAIC0w
LDAgKzEsMjU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCisKKyNpbXBvcnQgIkFQSVNlY3Vy
aXR5T3JpZ2luLmgiCisjaW1wb3J0ICJBUElVSUNsaWVudC5oIgorI2ltcG9ydCAiTWVkaWFQZXJt
aXNzaW9uVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCisjaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8
d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgorCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVS
KQorI2ltcG9ydCA8U3BlZWNoL1NwZWVjaC5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKFNwZWVj
aCkKK1NPRlRfTElOS19DTEFTUyhTcGVlY2gsIFNGU3BlZWNoUmVjb2duaXplcikKKyNlbmRpZgor
CisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVx
dWVzdChXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmIGNvbXBsZXRpb250SGFu
ZGxlcikKK3sKKyAgICBtX3JlcXVlc3RzLmFwcGVuZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0OjpjcmVhdGUoV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRpb250SGFu
ZGxlcikpKTsKKyAgICBpZiAobV9yZXF1ZXN0cy5zaXplKCkgPT0gMSkKKyAgICAgICAgc3RhcnRO
ZXh0UmVxdWVzdCgpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI6OnN0YXJ0TmV4dFJlcXVlc3QoKQoreworICAgIGlmIChtX3JlcXVlc3RzLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgY2hlY2tTYW5kYm94UmVxdWlyZW1lbnQoKTsKK30KKwor
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRS
ZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKQorewor
ICAgIEFTU0VSVCghbV9yZXF1ZXN0cy5pc0VtcHR5KCkpOworICAgIGF1dG8gY3VycmVudFJlcXVl
c3QgPSBtX3JlcXVlc3RzLnRha2VGaXJzdCgpOworICAgIGN1cnJlbnRSZXF1ZXN0LT5jb21wbGV0
ZShkZWNpc2lvbik7CisKKyAgICBzdGFydE5leHRSZXF1ZXN0KCk7Cit9CisKK3N0YXRpYyBib29s
IHBlcmZvcm1TYW5kYm94Q2hlY2soKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoY3Vy
cmVudFByb2Nlc3NJc1NhbmRib3hlZCgpICYmICEhc2FuZGJveF9jaGVjayhnZXRwaWQoKSwgImRl
dmljZS1taWNyb3Bob25lIiwgU0FOREJPWF9GSUxURVJfTk9ORSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnQoKQoreworICAg
IGlmICghbV9pc1NhbmRib3hDaGVja1Bhc3NlZC5oYXNWYWx1ZSgpKQorICAgICAgICBtX2lzU2Fu
ZGJveENoZWNrUGFzc2VkID0gcGVyZm9ybVNhbmRib3hDaGVjaygpOworCisgICAgaWYgKCFtX2lz
U2FuZGJveENoZWNrUGFzc2VkKSB7CisgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgY2hlY2tNaWNyb3Bob25lQWNjZXNzKCk7Cit9CisKK3ZvaWQgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKCkKK3sK
KyAgICBpZiAobV9wYWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgp
KSB7CisgICAgICAgIGNoZWNrQW5kUmVxdWVzdFVzZXJQZXJtaXNzaW9uRm9yT3JpZ2luKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1faXNNaWNyb3Bob25lQWNjZXNzQXV0
aG9yaXplZC5oYXNWYWx1ZSgpKSB7CisjaWYgSEFWRShBVkNBUFRVUkVERVZJQ0UpCisgICAgICAg
IGF1dG8gbWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPSBbUEFMOjpnZXRBVkNhcHR1cmVE
ZXZpY2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6QVZNZWRpYVR5cGVB
dWRpb107CisgICAgICAgIGlmIChtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1
dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkKQorICAgICAgICAgICAgbV9pc01pY3JvcGhvbmVB
Y2Nlc3NBdXRob3JpemVkID0gdHJ1ZTsKKyAgICAgICAgaWYgKG1pY3JvcGhvbmVBdXRob3JpemF0
aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCB8fCBtaWNyb3Bob25lQXV0
aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkKQorICAg
ICAgICAgICAgbV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkID0gZmFsc2U7CisgICAgICAg
IGlmIChtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0
dXNOb3REZXRlcm1pbmVkKSB7CisgICAgICAgICAgICBib29sIGhhc0Rlc2NyaXB0aW9uU3RyaW5n
ID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNTdHJpbmc+KE5TQnVuZGxlLm1haW5CdW5kbGUuaW5mb0Rp
Y3Rpb25hcnlbQCJOU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uIl0pLmxlbmd0aDsKKyAgICAg
ICAgICAgIGlmICghaGFzRGVzY3JpcHRpb25TdHJpbmcpCisgICAgICAgICAgICAgICAgbV9pc01p
Y3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkID0gZmFsc2U7CisgICAgICAgIH0KKyNlbHNlCisgICAg
ICAgIG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZCA9IHRydWU7CisjZW5kaWYKKyAgICB9
CisKKyAgICBpZiAobV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkLmhhc1ZhbHVlKCkgJiYg
IW1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZC52YWx1ZSgpKSB7CisgICAgICAgIGNvbXBs
ZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRl
bnkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2hlY2tTcGVlY2hSZWNvZ25pdGlv
blNlcnZpY2VBY2Nlc3MoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpCit7CisgICAgaWYg
KCFtX2lzU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZC5oYXNWYWx1ZSgp
KSB7CisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorICAgICAgICBhdXRvIHNwZWVjaFJlY29n
bml6ZXJBdXRob3JpemF0aW9uU3RhdHVzID0gW2dldFNGU3BlZWNoUmVjb2duaXplckNsYXNzKCkg
YXV0aG9yaXphdGlvblN0YXR1c107CisgICAgICAgIGlmIChzcGVlY2hSZWNvZ25pemVyQXV0aG9y
aXphdGlvblN0YXR1cyA9PSBTRlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzQXV0
aG9yaXplZCkKKyAgICAgICAgICAgIG1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NB
dXRob3JpemVkID0gdHJ1ZTsKKyAgICAgICAgaWYgKHNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0
aW9uU3RhdHVzID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmlj
dGVkIHx8IHNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzID09IFNGU3BlZWNoUmVj
b2duaXplckF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQpCisgICAgICAgICAgICBtX2lzU3BlZWNo
UmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCA9IGZhbHNlOworICAgICAgICBpZiAo
c3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVy
QXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQpIHsKKyAgICAgICAgICAgIGJvb2wgaGFz
RGVzY3JpcHRpb25TdHJpbmcgPSBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUu
bWFpbkJ1bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TU3BlZWNoUmVjb2duaXRpb25Vc2FnZURlc2Ny
aXB0aW9uIl0pLmxlbmd0aDsKKyAgICAgICAgICAgIGlmICghaGFzRGVzY3JpcHRpb25TdHJpbmcp
CisgICAgICAgICAgICAgICAgbV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhv
cml6ZWQgPSBmYWxzZTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgbV9pc1NwZWVjaFJlY29n
bml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQgPSB0cnVlOworI2VuZGlmCisgICAgfQorCisg
ICAgaWYgKG1faXNNaWNyb3Bob25lQWNjZXNzQXV0aG9yaXplZC5oYXNWYWx1ZSgpICYmICFtX2lz
TWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQudmFsdWUoKSkgeworICAgICAgICBjb21wbGV0ZUN1
cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNoZWNrQW5kUmVxdWVzdFVzZXJQZXJtaXNz
aW9uRm9yT3JpZ2luKCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcjo6Y2hlY2tBbmRSZXF1ZXN0VXNlclBlcm1pc3Npb25Gb3JPcmlnaW4oKQoreworICAgIEFT
U0VSVCghbV9yZXF1ZXN0cy5pc0VtcHR5KCkpOworICAgIGF1dG8mIGN1cnJlbnRSZXF1ZXN0ID0g
bV9yZXF1ZXN0cy5maXJzdCgpOworCisgICAgYXV0byBjbGllbnRPcmlnaW4gPSBjdXJyZW50UmVx
dWVzdC0+b3JpZ2luKCk7CisgICAgaWYgKG1fb3JpZ2luUGVybWlzc2lvbk1hcC5jb250YWlucyhj
bGllbnRPcmlnaW4udG9wT3JpZ2luKSkgeworICAgICAgICBhdXRvIGRlY2lzaW9uID0gbV9vcmln
aW5QZXJtaXNzaW9uTWFwLmdldChjbGllbnRPcmlnaW4udG9wT3JpZ2luKTsKKyAgICAgICAgY29t
cGxldGVDdXJyZW50UmVxdWVzdChkZWNpc2lvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBib29sIHNob3VsZFJlcXVlc3RNaWNyb3Bob25lQWNjZXNzSWZOZWVkZWQgPSAhbV9wYWdl
LnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpOworICAgIGF1dG8gZGVj
aXNpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBzaG91
bGRSZXF1ZXN0TWljcm9waG9uZUFjY2Vzc0lmTmVlZGVkXShib29sIGdyYW50ZWQpIHsKKyAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX29yaWdp
blBlcm1pc3Npb25NYXAuc2V0KG1fcmVxdWVzdHMuZmlyc3QoKS0+b3JpZ2luKCkudG9wT3JpZ2lu
LCBncmFudGVkID8gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkdyYW50IDog
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgICAgICBpZiAo
IWdyYW50ZWQpIHsKKyAgICAgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCFzaG91bGRSZXF1ZXN0TWljcm9waG9uZUFjY2Vzc0lm
TmVlZGVkKSB7CisgICAgICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpHcmFudCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICByZXF1ZXN0TWljcm9waG9uZUFjY2Vzc0lmTmVlZGVkKCk7Cisg
ICAgfTsKKworICAgIGF1dG8gcmVxdWVzdGluZ09yaWdpbiA9IGNsaWVudE9yaWdpbi5jbGllbnRP
cmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBhdXRvIHRvcE9yaWdpbiA9Y2xpZW50T3JpZ2lu
LnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOworICAgIG1fcGFnZS51aUNsaWVudCgpLmRlY2lk
ZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QobV9wYWdlLCBBUEk6
OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVxdWVzdGluZ09yaWdpbi5nZXQoKSkuZ2V0KCksIEFQ
STo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0b3BPcmlnaW4uZ2V0KCkpLmdldCgpLCBXVEZNb3Zl
KGRlY2lzaW9uSGFuZGxlcikpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNjZXNzSWZOZWVkZWQoKQoreworI2lmIEhBVkUo
QVZDQVBUVVJFREVWSUNFKQorICAgIGlmICghbV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVk
Lmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlw
ZShBVk1lZGlhVHlwZUF1ZGlvLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0o
Ym9vbCBhdXRob3JpemVkKSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKCFhdXRob3JpemVkKSB7CisgICAgICAg
ICAgICAgICAgbV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25EZWNpc2lvbjo6RGVueSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQgPSB0cnVlOwor
ICAgICAgICAgICAgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0lmTmVlZGVk
KCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBB
U1NFUlQobV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3JpemVkLmhhc1ZhbHVlKCkpOworICAgIEFT
U0VSVChtX2lzTWljcm9waG9uZUFjY2Vzc0F1dGhvcml6ZWQudmFsdWUoKSk7CisKKyAgICByZXF1
ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzSWZOZWVkZWQoKTsKK30KKwordm9pZCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRp
b25TZXJ2aWNlQWNjZXNzSWZOZWVkZWQoKQoreworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikK
KyAgICBpZiAoIW1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NBdXRob3JpemVkLmhh
c1ZhbHVlKCkpIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgYXV0
byBtYWluVGhyZWFkSGFuZGxlciA9IChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KV0oU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMpIG11dGFibGUg
eworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlv
blN0YXR1c0F1dGhvcml6ZWQpIHsKKyAgICAgICAgICAgICAgICBtX2lzU3BlZWNoUmVjb2duaXRp
b25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGNvbXBs
ZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRl
bnkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgbV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQgPSB0cnVlOwor
ICAgICAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25EZWNpc2lvbjo6R3JhbnQpOworICAgICAgICB9KTsKKyAgICAgICAgYXV0byBkZWNpc2lv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW21haW5UaHJlYWRIYW5kbGVyID0gV1RGTW92ZShtYWlu
VGhyZWFkSGFuZGxlcildKFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXMgc3Rh
dHVzKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICAg
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFttYWluVGhyZWFkSGFuZGxlciA9IFdURk1vdmUo
bWFpblRocmVhZEhhbmRsZXIpLCBzdGF0dXNdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAg
ICAgIG1haW5UaHJlYWRIYW5kbGVyKHN0YXR1cyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWFpblRocmVh
ZEhhbmRsZXIoc3RhdHVzKTsKKyAgICAgICAgfSk7CisgICAgICAgIFtnZXRTRlNwZWVjaFJlY29n
bml6ZXJDbGFzcygpIHJlcXVlc3RBdXRob3JpemF0aW9uOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIEFTU0VSVChtX2lzU3BlZWNo
UmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzQXV0aG9yaXplZC5oYXNWYWx1ZSgpKTsKKyAgICBBU1NF
UlQobV9pc1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0F1dGhvcml6ZWQudmFsdWUoKSk7
CisKKyAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkRlY2lzaW9uOjpHcmFudCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggOGEwOTQ3NDVjMWYyNGJl
MTA1ZGJiMDJhYjkxZTMwN2IzMWQ0ODZiMS4uZWFkNGQ1N2VlMGEzM2E2YjNlZWJiZGVjNDNmOGI3
Mzk1NWQ5NzYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
aApAQCAtMTYxLDYgKzE2MSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAg
ICAgICAgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQSTo6
V2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYkZyYW1lUHJveHkmLCBGcmFtZUluZm9EYXRhJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYp
IGZpbmFsOwogI2VuZGlmCisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2lu
JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
IGZpbmFsOwogCiAgICAgICAgIFVJRGVsZWdhdGUmIG1fdWlEZWxlZ2F0ZTsKICAgICB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggZDAzMzhmOGQ2
ZTNiOWExM2RmMmFmMTUzYWNiNWRlYjM4ZTFmY2Q5Yi4uMTkzNDU2YjFjMDc4Njc5Njk2MTk0YjM1
MzFiYzY1ZGM0MTU1MTllOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLm1tCkBAIC0xMzMyLDQgKzEzMzIsMjYgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVu
dDo6aW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXoK
ICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+PihkZWxlZ2F0ZSkgX3dl
YlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFu
Z2VkOm5ld1NpemVdOwogfQogCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xp
Y3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVBy
b3h5JiBwYWdlLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiByZXF1ZXN0aW5nT3JpZ2luLCBBUEk6OlNl
Y3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IChpZCA8V0tVSURlbGVn
YXRlUHJpdmF0ZT4pbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxl
Z2F0ZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF93ZWJWaWV3OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46
dG9wT3JpZ2luOmRlY2lzaW9uSGFuZGxlcjopXSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNoZWNrZXIgPSBD
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUsIEBzZWxlY3Rvcihf
d2ViVmlldzpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOnRvcE9y
aWdpbjpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgW2RlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxl
Z2F0ZS5tX3dlYlZpZXcgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkZvck9yaWdp
bjp3cmFwcGVyKHJlcXVlc3RpbmdPcmlnaW4pIHRvcE9yaWdpbjp3cmFwcGVyKHRvcE9yaWdpbikg
ZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4
Y2hhbmdlKGNvbXBsZXRpb25IYW5kbGVyLCB7IH0pLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2Vy
KV0gKEJPT0wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0
aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
Y2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGdyYW50ZWQpOworICAgIH0pLmdldCgpXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tCmluZGV4IDk5
NzU3NWRlMDIxNmE5YzBjZDc2YWZjYjQxYzc2NDFkYjEzMTVhZmIuLjE3NzZkMTQxOGYzMmQwZjVl
YTBhNmFiNDJlYTM4Y2E2MjNiMGNhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5Lm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgiCiAKKyNpbXBv
cnQgIk1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGll
cy5oIgogI2ltcG9ydCAiVENDU1BJLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKQEAgLTEw
OCwyMCArMTA5LDYgQEAgYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eTo6cGVybWl0dGVkVG9DYXB0dXJlVmlkZW8oKQogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKLXN0YXRpYyB2b2lkIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChCT09MIGF1dGhvcml6ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBB
Vk1lZGlhVHlwZSB0eXBlKQotewotICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2Nr
UHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShCT09M
IGF1dGhvcml6ZWQpIG11dGFibGUgewotICAgICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7Ci0g
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBhdXRob3JpemVkXSgpIG11dGFibGUgewotICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQpOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0
aG9yaXplZCk7Ci0gICAgfSk7Ci0gICAgW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBy
ZXF1ZXN0QWNjZXNzRm9yTWVkaWFUeXBlOnR5cGUgY29tcGxldGlvbkhhbmRsZXI6ZGVjaXNpb25I
YW5kbGVyLmdldCgpXTsKLX0KLQogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6cmVxdWVzdFN5c3RlbVZhbGlkYXRpb24oY29uc3QgV2ViUGFnZVByb3h5JiBwYWdl
LCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JiByZXF1ZXN0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChwYWdlLnByZWZlcmVuY2Vz
KCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpKSB7CkBAIC0xMzAsMzYgKzExNywxNiBAQCB2
b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lzdGVt
VmFsaWRhdGlvbihjb25zdCBXZWJQYQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBBZGQgVENDIGVu
dGl0bGVtZW50IGNoZWNrIGZvciBzY3JlZW5zaGFyaW5nLgotICAgIGJvb2wgcmVxdWlyZXNBdWRp
b0NhcHR1cmUgPSByZXF1ZXN0LnJlcXVpcmVzQXVkaW9DYXB0dXJlKCk7Ci0gICAgYm9vbCByZXF1
aXJlc1ZpZGVvQ2FwdHVyZSA9IHJlcXVlc3QucmVxdWlyZXNWaWRlb0NhcHR1cmUoKTsKLQotICAg
IGF1dG8gbWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPSAhcmVxdWlyZXNBdWRpb0NhcHR1
cmUgPyBBVkF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkIDogW1BBTDo6Z2V0QVZDYXB0dXJl
RGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOkFWTWVkaWFUeXBl
QXVkaW9dOwotICAgIGlmIChtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhv
cml6YXRpb25TdGF0dXNEZW5pZWQgfHwgbWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPT0g
QVZBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkgewotICAgICAgICBjYWxsYmFjayhmYWxz
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIGNhbWVyYUF1dGhvcml6YXRp
b25TdGF0dXMgPSAhcmVxdWlyZXNWaWRlb0NhcHR1cmUgPyBBVkF1dGhvcml6YXRpb25TdGF0dXNB
dXRob3JpemVkIDogW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0aW9u
U3RhdHVzRm9yTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW9dOwotICAgIGlmIChjYW1lcmFBdXRo
b3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCB8fCBjYW1lcmFB
dXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpIHsK
KyAgICBWZWN0b3I8QVZNZWRpYVR5cGU+IHR5cGVzOworICAgIGlmIChyZXF1ZXN0LnJlcXVpcmVz
VmlkZW9DYXB0dXJlKCkpCisgICAgICAgIHR5cGVzLmFwcGVuZChBVk1lZGlhVHlwZVZpZGVvKTsK
KyAgICBpZiAocmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpKQorICAgICAgICB0eXBlcy5h
cHBlbmQoQVZNZWRpYVR5cGVBdWRpbyk7CisgICAgYXV0byB1bmRlY2lkZWRUeXBlcyA9IGNoZWNr
QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlc0FuZEZpbHRlcih0eXBlcyk7CisgICAgaWYgKCF1
bmRlY2lkZWRUeXBlcykKICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQogCi0gICAgYm9vbCByZXF1aXJlc1ZpZGVvVENDUHJvbXB0ID0gcmVxdWlyZXNWaWRl
b0NhcHR1cmUgJiYgY2FtZXJhQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25T
dGF0dXNOb3REZXRlcm1pbmVkOwotICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSByZXF1aXJl
c1ZpZGVvVENDUHJvbXB0ID8gW3JlcXVlc3QgPSBtYWtlUmVmKHJlcXVlc3QpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShib29sIGlzT0spIG11dGFibGUgewotICAgICAgICBpZiAoIWlz
T0spIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlKFdU
Rk1vdmUoY2FsbGJhY2spLCBBVk1lZGlhVHlwZVZpZGVvKTsKLSAgICB9IDogV1RGTW92ZShjYWxs
YmFjayk7Ci0KLSAgICBib29sIHJlcXVpcmVzQXVkaW9UQ0NQcm9tcHQgPSByZXF1aXJlc0F1ZGlv
Q2FwdHVyZSAmJiBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRp
b25TdGF0dXNOb3REZXRlcm1pbmVkOwotICAgIGlmICghcmVxdWlyZXNBdWRpb1RDQ1Byb21wdCkg
ewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBBVk1lZGlhVHlwZUF1ZGlvKTsKKyAgICByZXF1ZXN0QVZDYXB0dXJlQWNj
ZXNzRm9yTWVkaWFUeXBlcyhXVEZNb3ZlKHVuZGVjaWRlZFR5cGVzLnZhbHVlKCkpLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5t
bQppbmRleCA4NjYyMzhiYWZlOGYwNWMxN2EyM2Q2ZjljYzk5YTIxMDE0ZGQ5MzEwLi5jZDMwMTQx
ZmNlYTYyMjJkZTViYTdjZjFjNjdhOWEyZjY0ZDAyMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtNDEsNiAr
NDEsMTAgQEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3Rm
L3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNp
bXBvcnQgIkFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9y
Q29uc3RhbnRzLmg+CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmE4ZDI0MzI0YTYwNGJhNTNhNDNhNjgzNTY0MmU5OWIxZGU5ZThiNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cjo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcihXZWJQYWdlUHJveHkmIHBhZ2Up
CisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKworU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6flNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoKQoreworICAgIGZv
ciAoYXV0byYgcmVxdWVzdCA6IG1fcmVxdWVzdHMpCisgICAgICAgIHJlcXVlc3QtPmNvbXBsZXRl
KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKK30KKworI2lmICFQ
TEFURk9STShDT0NPQSkKKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
OjpyZXF1ZXN0KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcihTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25E
ZWNpc2lvbjo6R3JhbnQpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXI6OnN0YXJ0TmV4dFJlcXVlc3QoKQoreworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uRGVjaXNpb24pCit7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcjo6Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnQoKQoreworfQorCit2b2lkIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrTWljcm9waG9uZUFjY2Vzcygp
Cit7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tT
cGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKQoreworfQorCit2b2lkIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNjZXNzSWZOZWVkZWQo
KQoreworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVl
c3RTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3NJZk5lZWRlZCgpCit7Cit9CisKK3ZvaWQg
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tBbmRSZXF1ZXN0VXNlclBl
cm1pc3Npb25Gb3JPcmlnaW4oKQoreworfQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzQ3MjcwNGY2YjNiY2Rh
ZThjNGYyMTY3NjUwNDAxYjIwOTJmNmY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCkBAIC0wLDAg
KzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
UGFnZVByb3h5OworCitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI+
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKFdlYlBhZ2VQcm94eSYpOworICAgIH5T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKCk7CisgICAgdm9pZCByZXF1ZXN0KFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzdGFy
dE5leHRSZXF1ZXN0KCk7CisgICAgdm9pZCBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKTsKKyAgICB2b2lkIHByZWNoZWNrKCk7CisgICAg
dm9pZCBjaGVja1NhbmRib3hSZXF1aXJlbWVudCgpOworICAgIHZvaWQgY2hlY2tNaWNyb3Bob25l
QWNjZXNzKCk7CisgICAgdm9pZCBjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcygp
OworICAgIHZvaWQgcmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3NJZk5lZWRlZCgpOworICAgIHZvaWQg
cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzc0lmTmVlZGVkKCk7CisgICAgdm9p
ZCBjaGVja0FuZFJlcXVlc3RVc2VyUGVybWlzc2lvbkZvck9yaWdpbigpOworCisgICAgV2ViUGFn
ZVByb3h5JiBtX3BhZ2U7CisgICAgRGVxdWU8UmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3Q+PiBtX3JlcXVlc3RzOworICAgIE9wdGlvbmFsPGJvb2w+IG1faXNTYW5kYm94Q2hl
Y2tQYXNzZWQ7CisgICAgT3B0aW9uYWw8Ym9vbD4gbV9pc01pY3JvcGhvbmVBY2Nlc3NBdXRob3Jp
emVkOworICAgIE9wdGlvbmFsPGJvb2w+IG1faXNTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nl
c3NBdXRob3JpemVkOworICAgIC8vIFRvcCBvcmlnaW4gdG8gcGVybWlzc2lvbi4KKyAgICBIYXNo
TWFwPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uRGVjaXNpb24+IG1fb3JpZ2luUGVybWlzc2lvbk1hcDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2ZGE5OWMxNzgyN2Q2
ZTU4NTFiZThmNjM3YWJkZmM5Y2E3YTgyZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAs
MCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KKyNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3Mg
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24gOiBib29sIHsgRGVueSwgR3JhbnQg
fTsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+IGNyZWF0
ZShXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdChXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKSk7CisgICAgfQorCisgICAgdm9pZCBjb21wbGV0ZShTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25EZWNpc2lvbiBkZWNpc2lvbikKKyAgICB7CisgICAgICAgIGF1dG8gY29tcGxldGlvbkhh
bmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGRlY2lzaW9uKTsKKyAgICB9CisKKyAgICBjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CisKK3By
aXZhdGU6CisgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpD
bGllbnRPcmlnaW4mJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICA6
IG1fb3JpZ2luKG9yaWdpbikKKyAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKQorICAgIHsgfQorCisgICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
IG1fb3JpZ2luOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uRGVjaXNpb24pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworfTsKKworY2xhc3MgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBs
PEFQSTo6T2JqZWN0OjpUeXBlOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaz4g
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2s+IGNyZWF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAg
ICB9CisKKyAgICB2b2lkIGNvbXBsZXRlKGJvb2wgZ3JhbnRlZCkgeyBtX2NvbXBsZXRpb25IYW5k
bGVyKGdyYW50ZWQpOyB9CisKK3ByaXZhdGU6CisgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKQorICAgIHsgfQorCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9j
b21wbGV0aW9uSGFuZGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCmluZGV4
IDljZTk3NGNmOWRhYTU2NTgyZWViY2ZhMDMwNjcwYjdhMzc1YmU3MWUuLmNjMmRjMTZlNzQ4OTY2
ODA2MGQyNzFhYTg4MGM2MTNiZWFkOWFlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKQEAgLTMyLDE1ICszMiwxNiBAQAog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJl
Y29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCitTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBj
b25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmIHBlcm1pc3Npb25DaGVja2VyKQog
ICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKKyAgICAsIG1fcGVybWlzc2lvbkNoZWNrZXIoV1RGTW92ZShwZXJtaXNz
aW9uQ2hlY2tlcikpCiB7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8mJiByZXF1ZXN0SW5mbykKK3Zv
aWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYg
bGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhB
bHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbikKIHsKLSAgICBhdXRv
IHJlcXVlc3QgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OmNyZWF0ZShXVEZN
b3ZlKHJlcXVlc3RJbmZvKSk7CisgICAgYXV0byByZXF1ZXN0ID0gbWFrZVVuaXF1ZTxXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+KFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8g
eyBjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGxhbmcpLCBjb250aW51b3VzLCBpbnRlcmltUmVz
dWx0cywgbWF4QWx0ZXJuYXRpdmVzLCBXVEZNb3ZlKG9yaWdpbikgfSk7CiAgICAgbV9wZW5kaW5n
UmVxdWVzdHMuYXBwZW5kKFdURk1vdmUocmVxdWVzdCkpOwogCiAgICAgcHJvY2Vzc05leHRQZW5k
aW5nUmVxdWVzdElmTmVlZGVkKCk7CkBAIC03Miw4ICs3Myw3IEBAIHZvaWQgU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXI6OmFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkCiB7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QgJiYgbV9jdXJyZW50UmVxdWVzdC0+
Y2xpZW50SWRlbnRpZmllcigpID09IGNsaWVudElkZW50aWZpZXIpIHsKICAgICAgICAgbV9jdXJy
ZW50UmVxdWVzdCA9IG51bGxwdHI7Ci0gICAgICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUp
LCBtX2lkZW50aWZpZXIpOworICAgICAgICBzZW5kVXBkYXRlKGNsaWVudElkZW50aWZpZXIsIFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKTsKIAogICAgICAgICBwcm9j
ZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODQs
MTMgKzg0LDEyIEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFib3J0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkCiAKIHZvaWQgU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXI6OnJlbW92ZVBlbmRpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKIHsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiB0YWtlblJlcXVlc3Q7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gdGFr
ZW5SZXF1ZXN0OwogICAgIGF1dG8gcGVuZGluZ1JlcXVlc3RzID0gc3RkOjpleGNoYW5nZShtX3Bl
bmRpbmdSZXF1ZXN0cywgeyB9KTsKICAgICB3aGlsZSAoIXBlbmRpbmdSZXF1ZXN0cy5pc0VtcHR5
KCkpIHsKICAgICAgICAgYXV0byByZXF1ZXN0ID0gcGVuZGluZ1JlcXVlc3RzLnRha2VGaXJzdCgp
OwogICAgICAgICBpZiAocmVxdWVzdC0+Y2xpZW50SWRlbnRpZmllcigpID09IGNsaWVudElkZW50
aWZpZXIpIHsKLSAgICAgICAgICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7Ci0gICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OkRpZFJlY2VpdmVVcGRhdGUodXBkYXRlKSwgbV9p
ZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KICAgICAgICAgbV9wZW5kaW5nUmVxdWVzdHMuYXBwZW5kKFdURk1v
dmUocmVxdWVzdCkpOwpAQCAtMTA1LDEyICsxMDQsNTEgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6aW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGkKICAgICB9CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0UG9jZXNz
aW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKQordm9pZCBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnRQb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkKIHsKKyAgICBtX3Blcm1pc3Npb25DaGVja2Vy
KHJlcXVlc3QuY2xpZW50T3JpZ2luKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCB3ZWFrUmVxdWVzdCA9IG1ha2VXZWFrUHRyKHJlcXVlc3QpXShTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghd2Vha1JlcXVlc3QpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgQVNTRVJUKG1fY3VycmVudFJlcXVlc3QuZ2V0KCkgPT0g
d2Vha1JlcXVlc3QuZ2V0KCkpOworICAgICAgICBpZiAoZGVjaXNpb24gPT0gU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpIHsKKyAgICAgICAgICAgIGF1dG8gZXJyb3Ig
PSBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6Ok5v
dEFsbG93ZWQsICJwZXJtaXNzaW9uIGNoZWNrIGZhaWxzIl9zIH07CisgICAgICAgICAgICBzZW5k
VXBkYXRlKHdlYWtSZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCksIFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IsIGVycm9yKTsKKyAgICAgICAgICAgIG1fY3VycmVu
dFJlcXVlc3QgPSBudWxscHRyOworICAgICAgICAgICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVz
dElmTmVlZGVkKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBj
b250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCp3ZWFrUmVxdWVzdCk7CisgICAgfSk7Cit9CisKK3Zv
aWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JikKK3sKKyAgICAvLyBUT0RPOiBzdGFydCBj
YXB0dXJpbmcgYXVkaW8gYW5kIHJlY29nbml6aW5nLgogfQogCi12b2lkIFNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjpzdG9wUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0JikKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnNlbmRVcGRhdGUoU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVy
LCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUgdHlwZSwgT3B0aW9uYWw8U3BlZWNoUmVjb2du
aXRpb25FcnJvcj4gZXJyb3IsIE9wdGlvbmFsPFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dERhdGE+PiByZXN1bHQpCiB7CisgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIsIHR5cGUpOworICAgIGlmICh0
eXBlID09IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IpCisgICAgICAgIHVwZGF0
ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihjbGllbnRJ
ZGVudGlmaWVyLCAqZXJyb3IpOworICAgIGlmICh0eXBlID09IFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlVHlwZTo6UmVzdWx0KQorICAgICAgICB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZTo6Y3JlYXRlUmVzdWx0KGNsaWVudElkZW50aWZpZXIsICpyZXN1bHQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6RGlkUmVjZWl2
ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjpzdG9wUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIC8vIFRPRE86IHN0b3AgY2FwdHVyaW5nIGF1ZGlv
IGFuZCBmaW5hbGl6aW5nIHJlY29nbml0aW9uIHJlc3VsdCB3aXRoIGNhcHR1cmVkIGF1ZGlvLgor
ICAgIHNlbmRVcGRhdGUocmVxdWVzdC5jbGllbnRJZGVudGlmaWVyKCksIFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uVXBkYXRlVHlwZTo6Tm9NYXRjaCk7CisgICAgc2VuZFVwZGF0ZShyZXF1ZXN0
LmNsaWVudElkZW50aWZpZXIoKSwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
OjpFbmQpOworICAgIEFTU0VSVChtX2N1cnJlbnRSZXF1ZXN0LmdldCgpID09ICZyZXF1ZXN0KTsK
KyAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbnVsbHB0cjsKKyAgICBwcm9jZXNzTmV4dFBlbmRpbmdS
ZXF1ZXN0SWZOZWVkZWQoKTsKIH0KIAogSVBDOjpDb25uZWN0aW9uKiBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5kZXggN2FhMjQxNjM4
YjljMzUxNDk2Njk4NDQzMmRiYzUzMGRmODQ4NGEzNy4uZWE4ZTNlNWUwYmZmYzA1ZjMxOWU3ZDBm
Mzc5ZTUxZDljMWJiOWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC0yOCwyMSArMjgsMzAgQEAKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2duaXRp
b25FcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGEuaD4KICNpbmNs
dWRlIDx3dGYvRGVxdWUuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworZW51bSBjbGFzcyBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworfQorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OworZW51bSBjbGFzcyBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiA6IGJvb2w7CiAKIHVzaW5nIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVySWRlbnRpZmllciA9IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyOwordXNp
bmcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciA9IEZ1bmN0aW9uPHZvaWQoV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmKT47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9u
U2VydmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPiwg
cHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXJJZGVudGlmaWVyKTsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNoZWNrZXImJik7CiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8mJik7CisgICAgdm9pZCBzdGFydChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5n
LCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVy
bmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYpOwogICAgIHZvaWQgc3RvcChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKICAgICB2b2lk
IGFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIpOwogICAgIHZvaWQgaW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyKTsKQEAgLTUxLDkgKzYwLDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsKICAgICB2b2lkIHJlbW92
ZVBlbmRpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIpOwogCi0gICAgLy8gVE9ETzogaW1wbGVtZW50IHRoZXNlLgogICAgIHZvaWQg
c3RhcnRQb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYp
OworICAgIHZvaWQgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3QmKTsKICAgICB2b2lkIHN0b3BQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKKyAgICB2b2lkIHNlbmRVcGRhdGUoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkVycm9yPiA9IFdURjo6bnVsbG9wdCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+ID0gV1RGOjpudWxsb3B0KTsKIAogICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CkBAIC02NCw4ICs3NCw5IEBAIHByaXZh
dGU6CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBEZXF1ZTxSZWY8
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Pj4gbV9wZW5kaW5nUmVxdWVzdHM7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gbV9jdXJyZW50UmVx
dWVzdDsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0Pj4gbV9wZW5kaW5nUmVxdWVzdHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyIG1fcGVybWlzc2lvbkNoZWNrZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KaW5kZXggZTMxYmVm
YjA5NWFkODhkYWRjMzBmMDk5NWM1N2U0MTUzNzNmMTJmNC4uYTI4YjkyMWNiOTY0YWZhZjJmZjIy
YzkxNmJiZTQ2ZTgyOTkxMzI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0
LDcgQEAKICAqLwogIAogIG1lc3NhZ2VzIC0+IFNwZWVjaFJlY29nbml0aW9uU2VydmVyIE5vdFJl
ZkNvdW50ZWQgewotICAgIFN0YXJ0KHN0cnVjdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3RJbmZvIGluZm8pCisgICAgU3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbGFuZywgYm9vbCBjb250
aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIHN0
cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luKQogICAgIFN0b3AoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IEFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICBJbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGM2NjBlNTY2YjA4ZGQzNjc5MTNkMjI0NTA2YmRm
MWVkZjAwZDVkODcuLmFhNDJjNWQ3OGFhNmFhMTk0MTlhNWJjNzU1Y2E0YjM3YjcwY2YwYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODYsNiArODYsNyBA
QAogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiU2FmZUJyb3dz
aW5nV2FybmluZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNp
bmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIK
ICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCkBAIC0xMDE3Myw2ICsxMDE3NCwxNCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZygp
CiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX3NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXIpCisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
ciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcj4oKnRoaXMp
OworCisgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLT5yZXF1ZXN0KFdU
Rk1vdmUoY2xpZW50T3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2NlZmJmYzY5NDVlZGZlNDNh
ZTU2YzJkNTY0YzBlODFlOTViYjRhNi4uMjM4YzBiZTdiMDYwNjUxYTVkZTFhY2ZhM2Q2NzY2Nzcy
NWFmM2VlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTMwNSw2
ICszMDUsNyBAQCBjbGFzcyBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE7
CiBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHk7CiBjbGFzcyBTZWNLZXlQcm94eVN0b3JlOworY2xhc3MgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjsKIGNsYXNzIFVzZXJEYXRhOwogY2xhc3MgVmll
d1NuYXBzaG90OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKQEAgLTM2NSw2ICszNjYsNyBAQCBz
dHJ1Y3QgVXNlck1lc3NhZ2U7CiAKIGVudW0gY2xhc3MgTmVnb3RpYXRlZExlZ2FjeVRMUyA6IGJv
b2w7CiBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgOiBib29sOworZW51
bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiA6IGJvb2w7CiBlbnVt
IGNsYXNzIFVuZG9PclJlZG8gOiBib29sOwogZW51bSBjbGFzcyBXZWJDb250ZW50TW9kZSA6IHVp
bnQ4X3Q7CiAKQEAgLTE4MTksNiArMTgyMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1lZGlh
Q2FwdHVyZVJlcG9ydGluZ0RlbGF5KFNlY29uZHMgY2FwdHVyZVJlcG9ydGluZ0RlbGF5KSB7IG1f
bWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkgPSBjYXB0dXJlUmVwb3J0aW5nRGVsYXk7IH0KICAg
ICBzaXplX3Qgc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyKCkgeyByZXR1cm4gbV9zdXNwZW5k
TWVkaWFQbGF5YmFja0NvdW50ZXI7IH0KIAorICAgIHZvaWQgcmVxdWVzdFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYpOworCiBwcml2YXRl
OgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7
CkBAIC0yODg4LDYgKzI4OTIsOCBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX3N1c3BlbmRNZWRp
YVBsYXliYWNrQ291bnRlciB7IDAgfTsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkFkQ2xpY2tB
dHRyaWJ1dGlvbj4gbV9uZXdQYWdlTmF2aWdhdGlvbkFkQ2xpY2tBdHRyaWJ1dGlvbjsKKworICAg
IHN0ZDo6dW5pcXVlX3B0cjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyPiBtX3Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4
IGY2Yjg2N2JkNTY0ZGZkMTcyZWJhM2RiODMzMjVjYzM3M2NkMjAwNjkuLmUyYzUwYzJkMDFiODc1
MDMzNDQ0ZDc4ZjMwYjg3MjQyNmE2YzdlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlBsdWdpbklu
Zm9TdG9yZS5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
UHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0
ZS5oIgpAQCAtMTcxMiw3ICsxNzEzLDE5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcihTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50CiB7CiAg
ICAgYXV0byBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXJNYXAuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOwogICAgIEFTU0VSVChzcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5pc05ld0VudHJ5KTsKLSAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlci5pdGVy
YXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPihtYWtlUmVm
KCpjb25uZWN0aW9uKCkpLCBpZGVudGlmaWVyKTsKKyAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPiht
YWtlUmVmKCpjb25uZWN0aW9uKCkpLCBpZGVudGlmaWVyLCBbaWRlbnRpZmllciwgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cih0aGlzKV0oQ2xpZW50T3JpZ2luJiYgb3JpZ2luLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGZvciAoYXV0byogcGFnZSA6IHdlYWtUaGlzLT5wYWdlcygpKSB7CisgICAg
ICAgICAgICBpZiAocGFnZSAmJiBwYWdlLT53ZWJQYWdlSUQoKSA9PSBpZGVudGlmaWVyKSB7Cisg
ICAgICAgICAgICAgICAgcGFnZS0+cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihX
VEZNb3ZlKG9yaWdpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbjo6RGVueSk7Cisg
ICAgfSk7CiAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyLCAqc3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWUwZDNjZjg3ZTc5ZjQxMDk2ZjFk
NzhlZjJiNGNjNjEzYzI2MTc0OS4uZDU0YzMwODU4NjM4ZDBhMzJiNjg3ZGJlMmQ4OTFhZjdjNGUz
NzRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMzc0LDYgKzEzNzQsNyBAQAogCQk5MzNFODM1NTIzQTA3QzA2MDBERUYyODkgLyog
V2ViSURCU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzNFODM1MzIzQTA3QkY4MDBERUYyODkgLyogV2ViSURCU2VydmVyLmggKi87IH07CiAJ
CTkzM0U4MzVBMjNBMUFFMjgwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzRTgzNTkyM0ExQURG
NTAwREVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VzLmggKi87IH07CiAJCTkzM0U4MzVCMjNB
MUI3NTAwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzRTgzNTgyM0ExQURGNTAw
REVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTkzNDI1
ODkwMjU1NUREQzYwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDI1ODhFMjU1NURDNDcw
MDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCAqLzsgfTsKIAkJOTM0QjcyNDQx
OUY1QjlCRTAwQUU5NkQ2IC8qIFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0QjcyNDMxOUY1QjlCRTAwQUU5NkQ2
IC8qIFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTkzNTZGMkRDMjE1MkI2QjUwMEU2RDVERiAvKiBXZWJTV0Ns
aWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxN0E1MzAyMUY0NzkzQjIwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24u
aCAqLzsgfTsKIAkJOTM1NkYyREQyMTUyQjZGNjAwRTZENURGIC8qIFdlYlNXU2VydmVyQ29ubmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNC
QTA0RTAyMTUxQURGNDAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbi5oICovOyB9OwpA
QCAtMTQwOCw2ICsxNDA5LDkgQEAKIAkJOTNENkI3ODcyNTRDQ0Q4QzAwNThERDNBIC8qIFdlYlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc4NjI1NENDRDhCMDA1OEREM0EgLyogV2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXMuaCAqLzsgfTsKIAkJOTNENkI3ODgy
NTRDQ0Q5NDAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2Vz
UmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNENkI3N0UyNTRDQ0FCQjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bk1lc3NhZ2VzUmVwbGllcy5oICovOyB9OwogCQk5M0Q2Qjc4QTI1NENENDNFMDA1OEREM0EgLyog
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzdEMjU0Q0NBQkIw
MDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OworCQk5M0Q2QjdCNDI1NTI2OEQ1MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNENkI3QUYyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3QuaCAqLzsgfTsKKwkJOTNENkI3QjUyNTUyNjhENzAwNThERDNBIC8q
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi87IH07CisJCTkzRDZCN0I5MjU1
MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdCNzI1
NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRTZB
NEVFMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcg
LyogX1dLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzRjU0OUI0MUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29u
ZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk5NTBGMjg4
MDI1MjQxNEVBMDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBGMjg3RTI1MjQxNEU5MDBCNzRG
MUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLmggKi87IH07CkBAIC00NDY4LDYgKzQ0NzIsOCBA
QAogCQk5MzNFODM1NzIzQTFBODcyMDBERUYyODkgLyogV2ViSURCU2VydmVyLm1lc3NhZ2VzLmlu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYklEQlNlcnZlci5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzRTgzNTgyM0ExQURGNTAwREVGMjg5IC8qIFdlYklE
QlNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9XZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5MzNFODM1OTIzQTFBREY1MDBERUYyODkgLyog
V2ViSURCU2VydmVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V2ViSURCU2VydmVyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2Vi
SURCU2VydmVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
KwkJOTM0MjU4OEUyNTU1REM0NzAwNTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTM0MjU4OEYyNTU1RENBNTAwNTlFRUREIC8qIE1lZGlhUGVybWlz
c2lvblV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUGVybWlzc2lvblV0
aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0QjcyNDMxOUY1QjlC
RTAwQUU5NkQ2IC8qIFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTM1RUVCOTUxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0Zvcndh
cmRMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxl
QmFja0ZvcndhcmRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1RUVC
OTYxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTI4LDYgKzQ1MzQsMTIgQEAKIAkJOTNENkI3ODAy
NTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNz
YWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2Qjc4MTI1NENDQUJDMDA1
OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2Qjc4
NjI1NENDRDhCMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2Fn
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNE
NkI3QUYyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdC
MDI1NTI2OEExMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNE
NkI3QjIyNTUyNjhBMjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdC
MzI1NTI2OEJGMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNv
Y29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzRDZCN0I4MjU1MzRBMTIwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVz
dFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tIaXRUZXN0UmVz
dWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjU0OUIzMUUzMTc0QjcwMDBF
NzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0Y1NDlCNTFFMzE3NERBMDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3Vy
YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1NuYXBz
aG90Q29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0NTYs
NiArNjQ2OCw4IEBACiAJCQkJN0E4MjFGNEQxRTJGNjc5RTAwNjA0NTc3IC8qIExlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5tbSAqLywKIAkJCQlBMURGNjMxMTE4RTBCN0M4MDAzQTNF
MkEgLyogTGVnYWN5RG93bmxvYWRDbGllbnQuaCAqLywKIAkJCQlBMURGNjMxMDE4RTBCN0M4MDAz
QTNFMkEgLyogTGVnYWN5RG93bmxvYWRDbGllbnQubW0gKi8sCisJCQkJOTM0MjU4OEUyNTU1REM0
NzAwNTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oICovLAorCQkJCTkzNDI1ODhG
MjU1NURDQTUwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0gKi8sCiAJCQkJ
NDExMjg2RUYyMUM4QTkwQzAwM0E4NTUwIC8qIE1lZGlhVXRpbGl0aWVzLmggKi8sCiAJCQkJNDEx
Mjg2RjAyMUM4QTkwRDAwM0E4NTUwIC8qIE1lZGlhVXRpbGl0aWVzLm1tICovLAogCQkJCTFBQkMz
REY0MTg5OUU0MzcwMDRGMDYyNiAvKiBOYXZpZ2F0aW9uU3RhdGUuaCAqLywKQEAgLTY0NzIsNiAr
NjQ4Niw3IEBACiAJCQkJNUNBOTg1NEIyMTBCRUI3MzAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dh
cm5pbmdDb2NvYS5tbSAqLywKIAkJCQkxQTAwMkQ0NzE5NkIzNDVEMDBCOUFENDQgLyogU2Vzc2lv
blN0YXRlQ29kaW5nLmggKi8sCiAJCQkJMUEwMDJENDYxOTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Np
b25TdGF0ZUNvZGluZy5tbSAqLywKKwkJCQk5M0Q2QjdCMzI1NTI2OEJGMDA1OEREM0EgLyogU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tICovLAogCQkJCTMxNTcxMzVD
MjA0MEE5QjIwMDg0RjlDRiAvKiBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tICovLAog
CQkJCTJEMENGNjRDMjFGMkE4MDMwMDc4NzU2NiAvKiBUZXh0Q2hlY2tpbmdDb250cm9sbGVyLmgg
Ki8sCiAJCQkJMkQwQ0Y2NEIyMUYyQTgwMzAwNzg3NTY2IC8qIFRleHRDaGVja2luZ0NvbnRyb2xs
ZXIubW0gKi8sCkBAIC05MjAzLDYgKzkyMTgsOSBAQAogCQkJCUJDMTExQjA4MTEyRjVFM0MwMDMz
N0JBQiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLywKIAkJCQkxQTMwMDY2QzExMTBGNEY3
MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovLAogCQkJCTVDQTk4NTQ5MjEwQkVC
NUEwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nLmggKi8sCisJCQkJOTNENkI3QjAyNTUy
NjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwICov
LAorCQkJCTkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyLmggKi8sCisJCQkJOTNENkI3QUYyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCAqLywKIAkJCQk5M0Q2Qjc2QjI1NEI4OTU4
MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwICovLAogCQkJCTkzRDZCNzZD
MjU0Qjg5NTgwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oICovLAogCQkJCTkz
RDZCNzdBMjU0Qzk4NEQwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNzYWdl
cy5pbiAqLywKQEAgLTk1NDMsNiArOTU2MSw4IEBACiAJCQkJMzMzNjc2MzkxMzBDOTlEQzAwNkM5
REUyIC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCAqLywKIAkJCQkxQURFNDZCMDE5NTRFQzYx
MDAwRjc5ODUgLyogV0tTZXNzaW9uU3RhdGVSZWYuY3BwICovLAogCQkJCTFBREU0NkIxMTk1NEVD
NjEwMDBGNzk4NSAvKiBXS1Nlc3Npb25TdGF0ZVJlZi5oICovLAorCQkJCTkzRDZCN0I4MjU1MzRB
MTIwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCAq
LywKKwkJCQk5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjay5oICovLAogCQkJCTUxRjg4NkEzMUYyQzIxNEEwMEMxOTNFRiAvKiBX
S1Rlc3RpbmdTdXBwb3J0LmNwcCAqLywKIAkJCQk1MUY4ODZBNDFGMkMyMTRBMDBDMTkzRUYgLyog
V0tUZXN0aW5nU3VwcG9ydC5oICovLAogCQkJCTMxNDg4OEZFMUQ5MUIxMUQwMDM3NzA0MiAvKiBX
S1RleHRDaGVja2VyLmNwcCAqLywKQEAgLTExMTQwLDYgKzExMTYwLDcgQEAKIAkJCQkxQTZEODZD
MjFERjc1MjY1MDA3NzQ1RTggLyogTWFjaE1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
QzU2Rjc5MTE1OTk1N0QwMDFDQ0FGOSAvKiBNYWNoUG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUEyNEI1RjMxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTkzNDI1ODkwMjU1NUREQzYwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RTE5RUZDMjNENDAxRjEwMDk0RkZCNCAvKiBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdFMTlF
RkQyM0Q0MDFGMTAwOTRGRkI0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzUmVw
bGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5MzNERUYxOTY1RUIzMTAwOEFDM0VBIC8qIE1l
bnVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTEzODEsNiArMTE0MDIsOCBAQAogCQkJ
CTU3QkJFQTZEMjJCQzBCRkUwMDI3Mzk5NSAvKiBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1NzZDQTlENzIyQjg2MjE4MDAzMDE0M0MgLyogU09BdXRob3Jp
emF0aW9uTlNVUkxFeHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTg1MjJCMzUxNjkw
MDhEMEU4QiAvKiBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk5
M0Q2QjdCNTI1NTI2OEQ3MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENkI3QjQyNTUyNjhENTAwNThERDNBIC8qIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
RDZCNzcyMjU0QkI1MTkwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTNENkI3ODQyNTRDQ0QwRTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0
aW9uU2VydmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzg1MjU0Q0NENDMw
MDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzUmVwbGllcy5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMTk5NCw2ICsxMjAxNyw3IEBACiAJCQkJNTEzRTQ2MkQxQUQ4Mzc1NjAw
MTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNGNTQ5QjQxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4NzIyQjM1MTcwMDA4RDBFOEIgLyogV0tTT0F1
dGhvcml6YXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENkI3QjkyNTUzNEEx
NzAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdBNzhGRjMyMjI0MTkxOTYwMDk2NDgzRSAvKiBXS1N0b3JhZ2VBY2Nl
c3NBbGVydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2MDYxMjRGRjAyNzAwNjhGMjBBIC8q
IFdLU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYxQTEyNEZGMDM3MDA2OEYyMEEg
LyogV0tTdHJpbmdDRi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCmluZGV4IGVhMTZiMmVkNzY2NWIzMmJkMzljYWM0NjMy
YjRiOWE1MWE3NWQ2YjEuLjNmMzUzMTk0YTMyYzNlNjc5YmNhMjlmYmVhODUwMzFjOTIxZTRmYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCkBA
IC01OSwxMCArNTksOSBAQCB2b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6cmVn
aXN0ZXJDbGllbnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25DbwogICAgIG1fY2xpZW50TWFw
LmFkZChjbGllbnQuaWRlbnRpZmllcigpLCBtYWtlV2Vha1B0cihjbGllbnQpKTsKIH0KIAotdm9p
ZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVp
bnQ2NF90IG1heEFsdGVybmF0aXZlcykKK3ZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uOjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyIGNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51
b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbikKIHsKLSAgICBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvIGluZm8geyBjbGllbnRJZGVudGlmaWVyLCBsYW5nLCBjb250
aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzIH07Ci0gICAgc2VuZChNZXNz
YWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlN0YXJ0KGluZm8pKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3RhcnQoY2xpZW50SWRlbnRpZmllciwg
bGFuZywgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVybmF0aXZlcywgV1RGTW92
ZShjbGllbnRPcmlnaW4pKSk7CiB9CiAKIHZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uOjpzdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIgY2xpZW50SWRlbnRpZmllcikKQEAgLTgwLDcgKzc5LDcgQEAgdm9pZCBXZWJTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb246OmludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWMKICAgICBzZW5kKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6SW52
YWxpZGF0ZShjbGllbnRJZGVudGlmaWVyKSk7CiB9CiAKLXZvaWQgV2ViU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uOjpkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlJiB1cGRhdGUpCit2b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bjo6ZGlkUmVjZWl2ZVVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYmIHVw
ZGF0ZSkKIHsKICAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSB1cGRhdGUuY2xpZW50SWRlbnRp
ZmllcigpOwogICAgIGlmICghbV9jbGllbnRNYXAuY29udGFpbnMoY2xpZW50SWRlbnRpZmllcikp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKaW5kZXggMjhk
YmQxOTdjYjNmNzk4ZmM3NjMxOTllYmIxMmRlMTNhZWQ3NTFiMS4uNDQzYjA0ZjFjY2FhYjBhMGU2
YWE1MzgzMWU5ODVkMTBhNmE1MzMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb24uaApAQCAtNDMsMTEgKzQzLDExIEBAIGNsYXNzIFdlYlBhZ2U7CiAKIHVz
aW5nIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbklkZW50aWZpZXIgPSBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcjsKIAotY2xhc3MgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uIDogcHVi
bGljIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiwgcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgeworY2xhc3MgV2ViU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0
ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uPiBjcmVhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
SWRlbnRpZmllcik7CiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250
aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpIGZp
bmFsOworICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJv
b2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiYpIGZpbmFsOwogICAgIHZvaWQgc3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFs
OwogCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgfldlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbigpOwogCiAgICAgdm9pZCByZWdpc3RlckNsaWVudChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVV
cGRhdGUoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUm
JikgZmluYWw7CiAgICAgdm9pZCBpbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2
ZXIuCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
YmIxOGE2YjY2MmU3MTY2MzY4YzU4OGY2NGEyOTQwNDlmNDZhYTIxOS4uZGM1NDgxY2M3NjcwNTM3
NGM4OTE1ZmYwZjY1NGQ1ZDgxYTM3NTg3MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTExLTA4ICBTaWh1aSBM
aXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyBwZXJt
aXNzaW9uIGNoZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdDoK
KyAgICAgICAgKiBNb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBsaXN0
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0SXNTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25HcmFudGVkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
Ojpjb21wbGV0ZVNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrKToKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRl
ZCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlv
bnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVu
dFZhbHVlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAo
V1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZSk6CisKIDIwMjAtMTEtMDggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSBhbm90aGVyIGZ1bmN0aW9uIHRoYXQgaW1wbGljaXRseSB1c2Vz
IHRoZSBjb21wb3NlZCB0cmVlIChkb2N1bWVudE9yZGVyIG9uIG5vZGVzIGFuZCBib3VuZGFyeSBw
b2ludHMpCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdCBiL1Rv
b2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0CmluZGV4IDRlMmIxZjQ4MTlhZDUxMDNlNGNm
MTcwOWI3YzUzYTY2ZThiMzk1ZTUuLjMzYTNjYTFiZTczNTA4ZTFmZmNiMDI5NTdjODY0ZTg1OTJk
YWFhNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0CisrKyBi
L1Rvb2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0CkBAIC01Miw5ICs1MiwxMSBAQAogCQkJ
PHN0cmluZz5FZGl0b3I8L3N0cmluZz4KIAkJPC9kaWN0PgogCTwvYXJyYXk+Ci0gICAgPGtleT5O
U0NhbWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJlY29yZGluZyB2aWRl
byBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KLSAgICA8a2V5Pk5TTWljcm9waG9uZVVz
YWdlRGVzY3JpcHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBiZWhh
bGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlvbjwv
a2V5PgorCTxzdHJpbmc+UmVjb3JkaW5nIHZpZGVvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3Ry
aW5nPgorCTxrZXk+TlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+
UmVjb3JkaW5nIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+TlNT
cGVlY2hSZWNvZ25pdGlvblVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29nbml6
aW5nIGNhcHR1cmVkIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgogPC9kaWN0
PgogPC9wbGlzdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL01vYmlsZU1pbmlCcm93c2VyL01vYmlsZU1p
bmlCcm93c2VyL0luZm8ucGxpc3QgYi9Ub29scy9Nb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5p
QnJvd3Nlci9JbmZvLnBsaXN0CmluZGV4IDJkMWJjNTgyZmJlNzY1Y2ZkYzQxMDVlZmU5ZWNjMWQ4
MzIwY2M5NTkuLjUzODdiMzc0OWE0NzRmZTBiM2Q5YzYwOTVjYjI4ODE3YjhmOTIzMGEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL01vYmlsZU1pbmlCcm93c2VyL01vYmlsZU1pbmlCcm93c2VyL0luZm8ucGxp
c3QKKysrIGIvVG9vbHMvTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5mby5w
bGlzdApAQCAtNTQsOSArNTQsMTEgQEAKIAkJPGtleT5OU0FsbG93c0FyYml0cmFyeUxvYWRzSW5X
ZWJDb250ZW50PC9rZXk+CiAJCTx0cnVlLz4KIAk8L2RpY3Q+Ci0gICAgPGtleT5OU0NhbWVyYVVz
YWdlRGVzY3JpcHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJlY29yZGluZyB2aWRlbyBvbiBiZWhh
bGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KLSAgICA8a2V5Pk5TTWljcm9waG9uZVVzYWdlRGVzY3Jp
cHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vi
c2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxz
dHJpbmc+UmVjb3JkaW5nIHZpZGVvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgorCTxr
ZXk+TlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVjb3JkaW5n
IGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+TlNTcGVlY2hSZWNv
Z25pdGlvblVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29nbml6aW5nIGNhcHR1
cmVkIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgogPC9kaWN0PgogPC9wbGlz
dD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDU1MTYyZmYzNDNkMjVmNjkwNmMzOTI3
NmZkNWE4OTFlZGYyOWI4NjkuLjZmZGNlMjNmYjg0ZDMwYmNjZDU5NzRhYjcyMDMzMWM5Mjk5ODRj
Y2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtNDAzLDQgKzQwMyw3IEBAIGludGVy
ZmFjZSBUZXN0UnVubmVyIHsKICAgICB1bmRlZmluZWQgc2V0QWRDbGlja0F0dHJpYnV0aW9uT3Zl
cnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbGVhbiB2YWx1ZSk7CiAgICAgdW5kZWZpbmVkIHNldEFk
Q2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKERPTVN0cmluZyB1cmwpOwog
ICAgIHVuZGVmaW5lZCBtYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3Rpbmco
KTsKKworICAgIC8vIFNwZWVjaFJlY29nbml0aW9uCisgICAgdW5kZWZpbmVkIHNldElzU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChib29sZWFuIHZhbHVlKTsKIH07CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApp
bmRleCBkZmQwMWEzMmYzMTFlMTI0NGFhNzg3OWI0Mzc1OTdhZmFjM2VmZDllLi5iMThhYjI3NjM3
NjM2MDJlZjdmNjZiMzkxYmE2MjM0ZTY0MjdhOTE0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTIwNjksNiArMjA2
OSwxMSBAQCB2b2lkIFRlc3RSdW5uZXI6OmRpZFNldEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKCkK
ICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKERpZFNldEFwcEJvdW5kRG9tYWluc0NhbGxiYWNr
SUQpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uR3JhbnRlZChib29sIGdyYW50ZWQpCit7CisgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3Nh
Z2UoInNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCIsIGdyYW50ZWQpOwor
fQorCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogfSAvLyBuYW1lc3BhY2Ug
V1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oCmluZGV4IDBiZDNhMDllMzJkNzFiMzUxNmU0ZjhlMDViZWEyMmFmOTk0YjFkMjMuLjk3
OTNjNzc3YWQzOGFhZDM0Y2Y1MjVkMTJjYTg3ZGVhMzE5YTJkM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC01MTUsNiAr
NTE1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lv
blVSTEZvclRlc3RpbmcoSlNTdHJpbmdSZWYpOwogICAgIHZvaWQgbWFya0FkQ2xpY2tBdHRyaWJ1
dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CiAKKyAgICB2b2lkIHNldElzU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uR3JhbnRlZChib29sKTsKKwogcHJpdmF0ZToKICAgICBUZXN0UnVubmVy
KCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNmRi
YzY4NGU4ODUwYWZlMDQ1OTEzOWZiZTE5ZDVlNWNjZGI3MjZlNy4uMTg2ZWZmOWExNGM3MTA4OWYw
NmFmMjk0YWVlZTI0MjMwZDdmYzFlMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tQcm90ZWN0
aW9uU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tTZWN1cml0eU9yaWdpblJlZi5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVGV4dENo
ZWNrZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tVUkwuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tV
c2VyQ29udGVudENvbnRyb2xsZXJSZWYuaD4KQEAgLTI5Nyw2ICsyOTgsMjEgQEAgc3RhdGljIHZv
aWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbCgpCiB7CiB9CiAKK3N0YXRpYyB2b2lkIGRlY2lk
ZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmLCBX
S1NlY3VyaXR5T3JpZ2luUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIGNhbGxiYWNrKQoreworICAgIFRlc3RDb250cm9sbGVy
OjpzaW5nbGV0b24oKS5jb21wbGV0ZVNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrKGNh
bGxiYWNrKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6Y29tcGxldGVTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DaGVjayhXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
UmVmIGNhbGxiYWNrKQoreworICAgIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2tDb21wbGV0ZShjYWxsYmFjaywgbV9pc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50
ZWQpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkdyYW50ZWQoYm9vbCBncmFudGVkKQoreworICAgIG1faXNTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25HcmFudGVkID0gZ3JhbnRlZDsKK30KKwogV0tQYWdlUmVmIFRlc3RDb250cm9s
bGVyOjpjcmVhdGVPdGhlclBhZ2UoV0tQYWdlUmVmLCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNv
bmZpZ3VyYXRpb24sIFdLTmF2aWdhdGlvbkFjdGlvblJlZiBuYXZpZ2F0aW9uQWN0aW9uLCBXS1dp
bmRvd0ZlYXR1cmVzUmVmIHdpbmRvd0ZlYXR1cmVzLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQog
ewogICAgIFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldyA9IHN0YXRpY19jYXN0PFBsYXRmb3Jt
V2ViVmlldyo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKQEAgLTY1MCw4ICs2NjYs
OCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoY29uc3Qg
VGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgV0tIVFRQQ29va2llU3RvcmVEZWxldGVBbGxDb29r
aWVzKFdLV2Vic2l0ZURhdGFTdG9yZUdldEhUVFBDb29raWVTdG9yZSh3ZWJzaXRlRGF0YVN0b3Jl
KCkpLCBudWxscHRyLCBudWxscHRyKTsKIAogICAgIHBsYXRmb3JtQ3JlYXRlV2ViVmlldyhjb25m
aWd1cmF0aW9uLmdldCgpLCBvcHRpb25zKTsKLSAgICBXS1BhZ2VVSUNsaWVudFYxNCBwYWdlVUlD
bGllbnQgPSB7Ci0gICAgICAgIHsgMTQsIG1fbWFpbldlYlZpZXcuZ2V0KCkgfSwKKyAgICBXS1Bh
Z2VVSUNsaWVudFYxNSBwYWdlVUlDbGllbnQgPSB7CisgICAgICAgIHsgMTUsIG1fbWFpbldlYlZp
ZXcuZ2V0KCkgfSwKICAgICAgICAgMCwgLy8gY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNl
V2l0aFYwCiAgICAgICAgIDAsIC8vIHNob3dQYWdlCiAgICAgICAgIDAsIC8vIGNsb3NlCkBAIC03
MjQsNyArNzQwLDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRp
b25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogICAgICAgICAwLCAvLyBkaWRSZXNpZ25J
bnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UKICAgICAgICAgMCwgLy8gcmVxdWVz
dFN0b3JhZ2VBY2Nlc3NDb25maXJtCiAgICAgICAgIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3MsCi0gICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwKKyAg
ICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbCwKKyAgICAgICAgZGVjaWRlUG9saWN5Rm9y
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdAogICAgIH07CiAgICAgV0tQYWdlU2V0
UGFnZVVJQ2xpZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJnBhZ2VVSUNsaWVudC5iYXNlKTsK
IApAQCAtMTA1Myw2ICsxMDcwLDggQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRv
Q29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmUKICAgICBtX3Nl
cnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCA9IDA7CiAgICAgbV9zaG91bGRE
aXNtaXNzSmF2YVNjcmlwdEFsZXJ0c0FzeW5jaHJvbm91c2x5ID0gZmFsc2U7CiAKKyAgICBzZXRJ
c1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQodHJ1ZSk7CisKICAgICBhdXRvIGxv
YWRBYm91dEJsYW5rID0gW3RoaXNdIHsKICAgICAgICAgbV9kb25lUmVzZXR0aW5nID0gZmFsc2U7
CiAgICAgICAgIFdLUGFnZUxvYWRVUkwobV9tYWluV2ViVmlldy0+cGFnZSgpLCBibGFua1VSTCgp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAzM2I2NDk0YWM2
MjQ0YjkyZmNiNzgwOWE1OGQ3MjAzYzdjMTI1OGE4Li4wNWM4ZjhiZGFhOTVhZDg3ZTQzOWUzMDkz
YjhhNGYzNGY1ZjgyYzU2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
CkBAIC0zNTEsNiArMzUxLDkgQEAgcHVibGljOgogCiAgICAgV0tVUkxSZWYgY3VycmVudFRlc3RV
UkwoKSBjb25zdDsKIAorICAgIHZvaWQgY29tcGxldGVTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25DaGVjayhXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmKTsKKyAgICB2
b2lkIHNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChib29sKTsKKwogcHJp
dmF0ZToKICAgICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZVBh
Z2VDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJik7CiAgICAgV0tSZXRhaW5QdHI8V0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbihjb25z
dCBUZXN0T3B0aW9ucyYpIGNvbnN0OwpAQCAtNjQwLDYgKzY0Myw4IEBAIHByaXZhdGU6CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBtX2hhc1NldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRp
ZmllciB7IGZhbHNlIH07CiAjZW5kaWYKKworICAgIGJvb2wgbV9pc1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkdyYW50ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDE0YzA0ZWQxZmE5
Mzk0ZjU3MmY2NDlhOTFiNDdlZmIyMDZlZjg1NGUuLjViNjY2MTdiZWUwMTZiNjc1MWM3YmIyYmNl
NmJiOGJhZTQ0ZWIwYTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCkBAIC0xMzQ1LDYgKzEzNDUsMTEgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52
b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcobWVzc2FnZU5hbWUsICJzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdy
YW50ZWQiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0SXNTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2xlYW5WYWx1ZShtZXNzYWdlQm9keSkp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0ODQ0OGMzODk0YjNiZTI5YTFi
Yzc3MWM1ZGZjMTc3ZDExNTY4NDgwLi43NGQwMjQ0YjY0ZTg4MzJkYTMzM2UyYWNhZGI3NWRjZjJi
M2RmZmUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTEtMDggIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24g
Y2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC9z
cGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTEx
LTA4ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAg
IFRleHR1cmVNYXBwZXJMYXllcjo6Y29tcHV0ZU92ZXJsYXBSZWdpb25zOiBBY2N1bXVsYXRlIG5l
c3RlZCByZXBsaWNhIHRyYW5zZm9ybSBtYXRyaWNlcyByZWN1cnNpdmVseQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggZjc3ZmVlOWI0MDdhYmQzZjU1MjVkOGVhMmRlODAxN2E3MzMyNGNiNi4uMjdiNWZl
OTA1NDgwNTU5YzdjOWMwZTVkOTc2N2ZlMzNmMTcyNGEzNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBA
IC0xNzcsNiArMTc3LDcgQEAgc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1h
ZnRlci1zdG9yYWdlLWNyYXNoLmh0bWwgWyBTa2lwIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL0lEQk9i
amVjdC1sZWFrLmh0bWwgWyBTa2lwIF0KIGZhc3QvZm9ybXMvY2FsbC10ZXh0LWRpZC1jaGFuZ2Ut
aW4tdGV4dC1maWVsZC13aGVuLXR5cGluZy5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL2luLWFw
cC1icm93c2VyLXByaXZhY3kvIFsgU2tpcCBdCitmYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1p
c3Npb24tZXJyb3IuaHRtbCBbIFNraXAgXQogCiAjIE9ubHkgcGFydGlhbCBzdXBwb3J0IG9uIENv
Y29hIHBsYXRmb3Jtcy4KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3BlZWNoLWFw
aS8gWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRp
b24vcGVybWlzc2lvbi1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVj
aHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQy
OWI4YWIwNGQwODNmYTI3YTA4NDU4NWRhYTk4ZmQ3YjYwNmI0NjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3ItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1ZlcmlmeSB0aGF0IGVycm9yIGV2ZW50IGlzIGZp
cmVkIHdoZW4gcGVybWlzc2lvbiBpcyBkZW5pZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIHJlY29nbml0aW9uID0gbmV3IFNwZWVjaFJlY29nbml0aW9uKCkgZGlkIG5v
dCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHJlY29nbml0aW9uLnN0YXJ0KCkgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCitQQVNTIGV2ZW50LmVycm9yIGlzICJub3QtYWxsb3dlZCIKK1BBU1MgZXZl
bnQubWVzc2FnZSBpcyAicGVybWlzc2lvbiBjaGVjayBmYWlscyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE0NmU5ZjNhNzc2NDA5YWEzZGY0MTkyYmZiYzU4NzU5MDE1ZTM2Y2EKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJy
b3IuaHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCBlcnJvciBldmVudCBpcyBmaXJlZCB3aGVu
IHBlcm1pc3Npb24gaXMgZGVuaWVkLiIpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICB0ZXN0UnVubmVyLnNldElzU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uR3JhbnRlZChmYWxzZSk7Cit9CisKK3Nob3VsZE5vdFRocm93KCJyZWNv
Z25pdGlvbiA9IG5ldyBTcGVlY2hSZWNvZ25pdGlvbigpIik7CitzaG91bGROb3RUaHJvdygicmVj
b2duaXRpb24uc3RhcnQoKSIpOworcmVjb2duaXRpb24ub25lcnJvciA9IChldmVudCkgPT4gewor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQuZXJyb3IiLCAibm90LWFsbG93ZWQiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50Lm1lc3NhZ2UiLCAicGVybWlzc2lvbiBj
aGVjayBmYWlscyIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMGY4MGFjZjBhNmY2ZTQ0YjZmMGU0NTc4
MzM5ZjY5ZDRhMmEwMmE3My4uMmYzYWE5Yzg1YTMzZDE5MGJlN2NkMDlmODhkMTRjODA5NTgwOTg5
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTgyMSw0
ICs4MjEsNSBAQCBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlZC1wb3J0LWRl
bGF5Lmh0bWwgWyBQYXNzIF0KIAogIyBXZWJLaXQyIG9ubHkuCiBqcy90aHJvdy1sYXJnZS1zdHJp
bmctb29tLmh0bWwgWyBQYXNzIF0KLWZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW50ZXItd2hpbGUt
ZXhpdGluZy5odG1sIFsgUGFzcyBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZnVsbHNj
cmVlbi9mdWxsLXNjcmVlbi1lbnRlci13aGlsZS1leGl0aW5nLmh0bWwgWyBQYXNzIF0KK2Zhc3Qv
c3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCg==
</data>
<flag name="commit-queue"
          id="430190"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413662</attachid>
            <date>2020-11-09 22:04:34 -0800</date>
            <delta_ts>2020-11-09 22:14:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201109220433.patch</filename>
            <type>text/plain</type>
            <size>124041</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdhYzk0N2Q3NDczMjk5OWVhYzUwYzFj
OGNkMzU5ZDYyYTYyNjg0NzQuLjc4Y2RlNGRhZWRlNjAyZWEzZTJkZWQ4MTRkYWUzMzRmNWU2ZGRm
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMTEtMDkgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1Bs
YXRmb3JtSGF2ZS5oOgorCiAyMDIwLTExLTA5ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIFNldCBwcmVmZXJlbmNlIGZvciBvdmVycmlkZGVu
IGxhbmd1YWdlcyBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGFmdGVyIGVudGVyaW5nIHRoZSBz
YW5kYm94LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGIyNTkyOWFkNmU1MTg2Yjc1YjBlZTUwMTZkMmU2ZDY3OTdi
N2YzOTAuLjg0ZDFlODI4Mzk4MzBkYTQwZjk0ODVmMjE3MDYzMjg0YmU3ZWYxOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMC0xMS0wOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFw
cGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3Ig
U3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxODQ3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMjI2Mzg+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9z
cGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwKKworICAgICAgICAqIE1vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpjbGllbnRPcmlnaW4gY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmVycm9yIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpyZXN1bHQgY29uc3QpOgorICAgICAg
ICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmg6CisgICAgICAgICog
cGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaDoKKwogMjAyMC0xMS0wOSAgRnVq
aWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbVGV4dHVy
ZU1hcHBlcl0gVGhlIHRvcCBhbmQgbGVmdCBzaWRlcyBvZiBkcm9wLXNoYWRvdyBhcmUgY2xpcHBl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBkNTNhYmYxMzJjZDVlOTU2MmVlNDNhY2RjZmU0NTY2M2I5NTg5ZWU3Li5m
ZDVhOTNmNjI1YmE3OTBkNTIyYmQ1NjhjMmRmYjQ0Zjc5YmE0ZjBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEwNyBAQAorMjAyMC0xMS0wOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3IgU3BlZWNoUmVj
b2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxODQ3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMjI2Mzg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIsIHdoaWNoIGNoZWNrcyBhbmQgcmVxdWVzdHMgc3BlZWNo
IHJlY29nbml0aW9uIHBlcm1pc3Npb25zIGJlZm9yZSAKKyAgICAgICAgd2UgYWN0dWFsbHkgc3Rh
cnQgY2FwdHVyaW5nIGF1ZGlvIGFuZCBwZXJmb3JtIHJlY29nbml0aW9uLiBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyIGlzIHBlci1wYWdlLCBsaWtlCisgICAgICAgIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyLiBUaGUgY2hlY2tzIGluY2x1ZGU6CisgICAgICAgIDEuIFNhbmRib3gg
cmVxdWlyZW1lbnQgZm9yIG1pY3JvcGhvbmUKKyAgICAgICAgMi4gVENDIGNoZWNrIGZvciBtaWNy
b3Bob25lCisgICAgICAgIDMuIFRDQyBjaGVjayBmb3IgU0ZTcGVlY2hSZWNvZ25pemVyCisgICAg
ICAgIDQuIFVzZXIgcGVybWlzc2lvbiBvbiBzcGVlY2ggcmVjb2duaXRpb24gZm9yIG9yaWdpbnMK
KworICAgICAgICBBZGQgYSBkZWxlZ2F0ZSBmdW5jdGlvbiBmb3IgcmVxdWVzdGluZyB1c2VyIHBl
cm1pc3Npb24sIHdoaWNoIGlzIGRlbmllZCBieSBkZWZhdWx0LgorCisgICAgICAgIFRlc3Q6IGZh
c3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCisKKyAgICAgICAgKiBT
aGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoK
KyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGll
bnQ6OmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNsaWVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tHZXRU
eXBlSUQpOgorICAgICAgICAoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0Nv
bXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTWVkaWFQ
ZXJtaXNzaW9uVXRpbGl0aWVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9N
ZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpyZXF1
ZXN0QVZDYXB0dXJlQWNjZXNzRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrQVZDYXB0
dXJlQWNjZXNzRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrU2FuZGJveFJlcXVpcmVt
ZW50Rm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrVXNhZ2VEZXNjcmlwdGlvblN0cmlu
Z0ZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydFByb2Nlc3NpbmdSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tN
aWNyb3Bob25lQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0
U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1
ZXN0VXNlclBlcm1pc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChX
ZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpwZXJtaXR0ZWRUb0NhcHR1cmVB
dWRpbyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5OjpwZXJtaXR0ZWRUb0NhcHR1cmVWaWRlbyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lzdGVtVmFsaWRhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OnJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2Nv
YS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKToKKyAgICAg
ICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6flNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnROZXh0UmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNvbnRpbnVl
UHJvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVzZXQpOgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydFByb2Nlc3Np
bmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZp
Y2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpyZXF1ZXN0TWljcm9waG9uZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNl
cnZpY2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyOjpyZXF1ZXN0VXNlclBlcm1pc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Ojpj
b21wbGV0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3Q6Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3Q6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2s6OmNvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2s6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQpOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQpOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVtb3ZlUGVuZGluZ1JlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnRQb2Nlc3NpbmdSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmNvbnRpbnVl
UHJvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6c2VuZFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpzdG9wUHJvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VNYWluRG9jdW1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcik6CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpkaWRSZWNlaXZlVXBkYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5oOgorCiAyMDIwLTExLTA5ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIERpYWdub3N0aWMgc2VydmljZSBzYW5kYm94IHZpb2xhdGlv
biBsb2FkaW5nIGFueSB3ZWJwYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4IDIwM2U4ZWM3ZDYx
NWU4NzVmM2IzMTQ1ZjJmOGJkZDFlNWI3YjA4M2QuLjkzZTdiNDUzODVhZTg4NzA1OGVkNmY0ZDA2
ZWQ3NTJlZjJiMTgwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC03NTUsMyArNzU1LDExIEBA
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFU
Rk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX0NOQ09OVEFDVFBJQ0tFUlZJRVdDT05UUk9MTEVS
IDEKICNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkg
fHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDE1MDApCisjZGVmaW5lIEhBVkVfU1BFRUNIUkVDT0dOSVpFUiAxCisjZW5kaWYKKworI2lmIFBM
QVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpIHx8IFBMQVRGT1JNKE1BQykKKyNk
ZWZpbmUgSEFWRV9BVkNBUFRVUkVERVZJQ0UgMQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKaW5kZXggNTFhMzJjZGFh
Y2FhMWVkMDExNDI3NjdkMjJlMzAyNTI2ZGViZjU5NS4uZjExN2MxZmIxYjViZDA0YWU3NTUyNTY1
ZmJhYTg4OTFjNWMxYWViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uLmgiCiAKKyNpbmNsdWRlICJDbGll
bnRPcmlnaW4uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC02OSw3ICs3MCw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IFNwZWVjaFJlY29nbml0aW9uOjpzdGFydFJlY29nbml0aW9uKCkKICAgICBpZiAoIW1fY29ubmVj
dGlvbikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIlJlY29nbml0
aW9uIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBjb25uZWN0aW9uIl9zIH07CiAKLSAgICBtX2Nvbm5l
Y3Rpb24tPnN0YXJ0KGlkZW50aWZpZXIoKSwgbV9sYW5nLCBtX2NvbnRpbnVvdXMsIG1faW50ZXJp
bVJlc3VsdHMsIG1fbWF4QWx0ZXJuYXRpdmVzKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25j
YXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX2Nvbm5lY3Rp
b24tPnN0YXJ0KGlkZW50aWZpZXIoKSwgbV9sYW5nLCBtX2NvbnRpbnVvdXMsIG1faW50ZXJpbVJl
c3VsdHMsIG1fbWF4QWx0ZXJuYXRpdmVzLCBDbGllbnRPcmlnaW4geyBkb2N1bWVudC50b3BPcmln
aW4oKS5kYXRhKCksIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpIH0pOwogICAgIG1f
c3RhdGUgPSBTdGF0ZTo6U3RhcnRpbmc7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uLmgKaW5kZXggM2ZkMmQzM2FjYTAyMDUyNjM0MDU4ZDBmYjU2NTJlYjcwMDdmYTUyYS4u
NjllZWJjMjkzZDViN2RlMWUzOGNlZWFkMmEzZWUzOGYwMGQxY2E1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uLmgKQEAgLTMxLDE1ICszMSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudDsKIGNsYXNzIFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlOworc3RydWN0IENsaWVudE9yaWdpbjsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBi
b29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0
aXZlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91
cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBDbGllbnRP
cmlnaW4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlJiYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3QuY3BwCmluZGV4IDRhNWU4YzE2MzAzYzE4NjVjMmIxZmZjZTliNTZlZTI2MjAzYTdmYzUuLmQz
YmQ3YTk0YTQyYjlkNWUwNTkyMGM1YmZlN2RiYzQ0YTkxODg3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
LmNwcApAQCAtMjgsMTEgKzI4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0PiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OmNyZWF0ZShT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYgcmVxdWVzdEluZm8pCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KFdURk1vdmUocmVxdWVzdElu
Zm8pKSk7Ci19Ci0KIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8mJiByZXF1ZXN0SW5mbykKICAgICA6
IG1faW5mbyhXVEZNb3ZlKHJlcXVlc3RJbmZvKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKaW5kZXggNWNl
ZWEwMWM3Mzg2NTU2ZDQyNTFmOGM4Yjk1YzMxMjRiYWZjNjAxMi4uMzk2ZGIyNjk4NGY5MTI0Njgy
NGIwNjU4NjY1Y2E3M2U3YmM0Y2NkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKQEAgLTMwLDE5ICszMCwx
OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4geworY2xh
c3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0PiBjcmVhdGUoU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QoU3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0SW5mbyYmKTsKIAogICAgIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5jbGll
bnRJZGVudGlmaWVyOyB9CiAgICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4g
bV9pbmZvLmxhbmc7IH0KICAgICBib29sIGNvbnRpbnVvdXMoKSBjb25zdCB7IHJldHVybiBtX2lu
Zm8uY29udGludW91czs7IH0KICAgICBib29sIGludGVyaW1SZXN1bHRzKCkgY29uc3QgeyByZXR1
cm4gbV9pbmZvLmludGVyaW1SZXN1bHRzOyB9CiAgICAgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVz
KCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLm1heEFsdGVybmF0aXZlczsgfQorICAgIENsaWVudE9y
aWdpbiBjbGllbnRPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2luZm8uY2xpZW50T3JpZ2luOyB9
CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KFNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdEluZm8mJik7Ci0KICAgICBTcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3RJbmZvIG1faW5mbzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaAppbmRleCBhYjFlMWFl
NmVmMzg4OThjMjFhMmE5ZGY3YWYxZjAwN2UyNGIxN2QwLi4xZWZlOWUwNjQ2ZTc0N2NiNTVkN2Nj
YjBmN2IxOGZmNWUwYjNjNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5j
bHVkZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNSw2ICszNiw3IEBAIHN0cnVjdCBTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3RJbmZvIHsKICAgICBib29sIGNvbnRpbnVvdXMgeyBmYWxzZSB9OwogICAgIGJv
b2wgaW50ZXJpbVJlc3VsdHMgeyBmYWxzZSB9OwogICAgIHVpbnQ2NF90IG1heEFsdGVybmF0aXZl
cyB7IDEgfTsKKyAgICBDbGllbnRPcmlnaW4gY2xpZW50T3JpZ2luOwogCiAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJ
bmZvPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtNDMsNyArNDUsNyBAQCBzdHJ1Y3QgU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0SW5mbyB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKLSAgICBlbmNvZGVyIDw8IGNsaWVudElkZW50aWZpZXIgPDwgbGFuZyA8PCBjb250aW51b3Vz
IDw8IGludGVyaW1SZXN1bHRzIDw8IG1heEFsdGVybmF0aXZlczsKKyAgICBlbmNvZGVyIDw8IGNs
aWVudElkZW50aWZpZXIgPDwgbGFuZyA8PCBjb250aW51b3VzIDw8IGludGVyaW1SZXN1bHRzIDw8
IG1heEFsdGVybmF0aXZlcyA8PCBjbGllbnRPcmlnaW47CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CkBAIC03NCwxMiArNzYsMTggQEAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0SW5mbz4gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2RlKERlY28KICAgICBp
ZiAoIW1heEFsdGVybmF0aXZlcykKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAg
IE9wdGlvbmFsPENsaWVudE9yaWdpbj4gY2xpZW50T3JpZ2luOworICAgIGRlY29kZXIgPj4gY2xp
ZW50T3JpZ2luOworICAgIGlmICghY2xpZW50T3JpZ2luKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCiAgICAgcmV0dXJuIHt7CiAgICAgICAgIFdURk1vdmUoKmNsaWVudElkZW50aWZp
ZXIpLAogICAgICAgICBXVEZNb3ZlKCpsYW5nKSwKICAgICAgICAgV1RGTW92ZSgqY29udGludW91
cyksCiAgICAgICAgIFdURk1vdmUoKmludGVyaW1SZXN1bHRzKSwKLSAgICAgICAgV1RGTW92ZSgq
bWF4QWx0ZXJuYXRpdmVzKQorICAgICAgICBXVEZNb3ZlKCptYXhBbHRlcm5hdGl2ZXMpLAorICAg
ICAgICBXVEZNb3ZlKCpjbGllbnRPcmlnaW4pCiAgICAgfX07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNw
cAppbmRleCA1MzRlZGEzZDI0NzdlZTFjNmYxN2VjNmFmMTc5MzI2YmI3OWYwMjA3Li45YTlhN2Q5
MjA2OTY1NWM0NTcxNjA3ZGRhMThjNGU2YjMzMGY3MmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwCkBA
IC02MCw3ICs2MCw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGUgZW51bWVyYXRpb25WYWx1ZSkKIAogU3BlZWNoUmVjb2duaXRp
b25VcGRhdGUgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZSB0eXBlKQogewotICAgIHJldHVybiBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZSB7IGNsaWVudElkZW50aWZpZXIsIHR5cGUgfTsKKyAgICByZXR1cm4gU3BlZWNoUmVjb2du
aXRpb25VcGRhdGUgeyBjbGllbnRJZGVudGlmaWVyLCB0eXBlLCBXVEY6Ok1vbm9zdGF0ZSgpIH07
CiB9CiAKIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpj
cmVhdGVFcnJvcihTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNs
aWVudElkZW50aWZpZXIsIGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXJyb3ImIGVycm9yKQpAQCAt
ODMsNyArODMsNyBAQCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6U3BlZWNoUmVjb2duaXRpb25V
cGRhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZQogU3BlZWNoUmVjb2duaXRpb25F
cnJvciBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6ZXJyb3IoKSBjb25zdAogewogICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKG1fY29udGVudCwKLSAgICAgICAgW10gKFNwZWVjaFJlY29nbml0aW9u
RXJyb3ImIGVycm9yKSB7IHJldHVybiBlcnJvcjsgfSwKKyAgICAgICAgW10gKGNvbnN0IFNwZWVj
aFJlY29nbml0aW9uRXJyb3ImIGVycm9yKSB7IHJldHVybiBlcnJvcjsgfSwKICAgICAgICAgW10g
KGNvbnN0IGF1dG8mKSB7IHJldHVybiBTcGVlY2hSZWNvZ25pdGlvbkVycm9yKCk7IH0KICAgICAp
OwogfQpAQCAtOTEsNyArOTEsNyBAQCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjplcnJvcigpIGNvbnN0CiBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1
bHREYXRhPiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6cmVzdWx0KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2NvbnRlbnQsCi0gICAgICAgIFtdIChWZWN0b3I8U3BlZWNo
UmVjb2duaXRpb25SZXN1bHREYXRhPiYgZGF0YSkgeyByZXR1cm4gZGF0YTsgfSwKKyAgICAgICAg
W10gKGNvbnN0IFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+JiBkYXRhKSB7IHJl
dHVybiBkYXRhOyB9LAogICAgICAgICBbXSAoY29uc3QgYXV0byYpIHsgcmV0dXJuIFZlY3RvcjxT
cGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+IHsgfTsgfQogICAgICk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUu
aAppbmRleCAzYTgyYmY2YmFmNTRjZTBjNGIxMzM0ZWY2ZjhiNTg5M2YzYjg5ODJlLi44OTE0OTE3
OTNmNGUwMWVjMmZmNjAxMDdjYjQ4NWY0ODhmYTQzZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKQEAgLTUy
LDggKzUyLDggQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZSk7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7CiBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIGNy
ZWF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGUpOwotICAgIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZSBjcmVhdGVFcnJvcihTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
LCBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yJik7Ci0gICAgc3RhdGljIFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlIGNyZWF0ZVJlc3VsdChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVh
dGVFcnJvcihTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25z
dCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlIGNyZWF0ZVJlc3VsdChTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1
bHREYXRhPiYpOwogCiAgICAgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllciBjbGllbnRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVy
OyB9CiAgICAgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHVz
aW5nIENvbnRlbnQgPSBWYXJpYW50PFdURjo6TW9ub3N0YXRlLCBTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yLCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj47Ci0gICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUoU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlLCBD
b250ZW50ID0gV1RGOjpNb25vc3RhdGUoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3BlZWNoUmVj
b2duaXRpb25VcGRhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlLCBDb250ZW50KTsKIAogICAgIFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgbV9jbGllbnRJZGVudGlmaWVyOwog
ICAgIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaAppbmRleCBjZjll
NzJiOTNjMDY0YTU1ZGRkZmFiN2IzY2FmYjQ4OTBlMDM1ZjQ2Li4yNDBhYTNkNDg0YTk3M2I0NDEx
MmFlZjYxZThlYWFhODQ3YjU4ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1
bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKQEAgLTM5LDEwICszOSwxMCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEdW1teVNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbigpKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIHJlZ2lzdGVyQ2xpZW50
KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpIGZpbmFsIHsgfQotICAgICAgICB2
b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYsIGJvb2wsIGJvb2wsIHVpbnQ2NF90KSBmaW5hbCB7IH0KKyAgICAgICAgdm9p
ZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCwgQ2xpZW50T3JpZ2luJiYpIGZpbmFsIHsg
fQogICAgICAgICB2b2lkIHN0b3AoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllcikgZmluYWwgeyB9CiAgICAgICAgIHZvaWQgYWJvcnQoU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVVwZGF0ZShjb25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpIGZpbmFsIHsgfQorICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmJikgZmlu
YWwgeyB9CiAgICAgfTsKICAgICBEdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIoKSA9IGRl
ZmF1bHQ7CiAgICAgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uJiBzcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9i
amVjdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IDZkMDY1
NjQ1ZGNlZTYyZTU5ZDUwZGJlZjM3NDM1YTQ5YTgwZWI2ODIuLmNkMWNhZDk2YjQwMzEyZGIzYjE4
OGRlNzFmNjA4OGJmNzI4ZmQ4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgK
QEAgLTE2NSw2ICsxNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJ1bkphdmFTY3JpcHRBbGVydFJl
c3VsdExpc3RlbmVyLAogICAgICAgICBSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVy
LAogICAgICAgICBSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXIsCisgICAgICAgIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLAogICAgICAgICBUZXh0Q2hlY2tlciwK
ICAgICAgICAgVVJMU2NoZW1lVGFzaywKICAgICAgICAgVXNlckNvbnRlbnRDb250cm9sbGVyLApA
QCAtNDEwLDYgKzQxMSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8QVBJOjpPYmpl
Y3Q6OlR5cGU+IHsKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlJ1bkphdmFTY3JpcHRBbGVy
dFJlc3VsdExpc3RlbmVyLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6UnVuSmF2YVNjcmlw
dENvbmZpcm1SZXN1bHRMaXN0ZW5lciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlJ1bkph
dmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lciwKKyAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6
OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLAogICAgICAgICBBUEk6Ok9iamVj
dDo6VHlwZTo6VGV4dENoZWNrZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpVUkxTY2hl
bWVUYXNrLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6VXNlckNvbnRlbnRDb250cm9sbGVy
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAppbmRleCA5ZTgyZTU2MDAxODdlYzFjZjhh
ZjliZWU3OWU3MWQwZThkN2ZkMTVhLi44NGVlNmMyODhmNmQyZWJkNTFmYTczZWE3MjcwOGYzMjk0
NmJkZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAtMTQxLDYgKzE0MSw3
IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2Vic2l0ZURhdGFDb25maWd1cmF0aW9u
U3RvcmUqIFdLV2Vic2l0ZURhdGFTdG9yZUNvCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVX
S1dlYnNpdGVEYXRhU3RvcmUqIFdLV2Vic2l0ZURhdGFTdG9yZVJlZjsKIHR5cGVkZWYgY29uc3Qg
c3RydWN0IE9wYXF1ZVdLV2Vic2l0ZVBvbGljaWVzKiBXS1dlYnNpdGVQb2xpY2llc1JlZjsKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2luZG93RmVhdHVyZXMqIFdLV2luZG93RmVhdHVy
ZXNSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVm
OwogCiAvKiBXZWJLaXQyIEJ1bmRsZSB0eXBlcyAqLwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAzNDk5NzVj
ZWMxMDBhYTMyNWY4MmZjNjE1MGE2NzY5MWVhMTJlYzBiLi4wODUxMWI2MThlYTQ3ZDFlMmIzMTVm
ZTVkOGQ0ODA0OGU1ODQyZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI5MCw2ICsyOTAsNyBAQCBVSVBy
b2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5jcHAKIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCiBVSVByb2Nlc3Mv
U3lzdGVtUHJldmlld0NvbnRyb2xsZXIuY3BwCitVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlci5jcHAKIFVJUHJvY2Vzcy9UZXh0Q2hlY2tlci5jcHAKIFVJUHJvY2Vz
cy9UZXh0Q2hlY2tlckNvbXBsZXRpb24uY3BwCiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrUHJveHkuY3BwCkBAIC00MDMsNiArNDA0LDcgQEAgVUlQcm9jZXNzL0FQSS9DL1dLUHJl
ZmVyZW5jZXMuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuY3BwCiBVSVBy
b2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9X
S1Nlc3Npb25TdGF0ZVJlZi5jcHAKK1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLVGV4dENoZWNrZXIuY3Bw
CiBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCiBVSVByb2Nl
c3MvQVBJL0MvV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUmVmLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDA4NGQ1MTM1MmQ0NGE0NTA5NDliM2ZiZDFkMWQ3NjEzNWZiMmJlYjIuLjYz
YmQ0MGMzZWY2MDFlZTE0OTRhMWI0NzE0YWNlMGUxZmExNzQ4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTM3MywxMiArMzczLDE0IEBAIFVJUHJvY2Vzcy9Db2NvYS9HbG9iYWxGaW5kSW5Q
YWdlU3RhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCiBVSVBy
b2Nlc3MvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tCiBVSVByb2Nl
c3MvQ29jb2EvTWVkaWFVdGlsaXRpZXMubW0KK1VJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Np
b25VdGlsaXRpZXMubW0KIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KIFVJUHJv
Y2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCiBVSVByb2Nlc3MvQ29jb2EvUmVzb3VyY2VMb2FkRGVs
ZWdhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KIFVJ
UHJvY2Vzcy9Db2NvYS9TZXNzaW9uU3RhdGVDb2RpbmcubW0KK1VJUHJvY2Vzcy9Db2NvYS9TcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9T
eXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvVGV4dENoZWNr
aW5nQ29udHJvbGxlci5tbQogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggYWE3ZDg5YzAxZTczNTIwY2Uz
ZWUwNDIyNmI5YWU4NTk3MGJmYWE2ZS4uYTBkYmE4MzcyN2E5NmFkNjEwNDdiOWVkMTViNjRiMzEz
NGVlZGFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAg
LTIwMiw2ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBBUEk6Okluc3BlY3RvckNv
bmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tB
UElDYXN0LmgKaW5kZXggYjUyYzQ0YmFlYTlhY2Y5ZmMwMzMyZDVhOWYzNzM1NmU5ZDIzODYyOS4u
MThjYmZkNWI3NGViODc3MGE1NzhmMTVjOGEwMTYxNDk5MDIxNDU0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKQEAgLTc5LDYgKzc5LDcgQEAgY2xhc3MgQXV0
aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOwogY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNz
IEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdDsKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOwog
Y2xhc3MgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk7CiBjbGFzcyBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OwpAQCAtMTUyLDYg
KzE1Myw3IEBAIFdLX0FERF9BUElfTUFQUElORyhXS1ByZWZlcmVuY2VzUmVmLCBXZWJQcmVmZXJl
bmNlcykKIFdLX0FERF9BUElfTUFQUElORyhXS1Byb3RlY3Rpb25TcGFjZVJlZiwgV2ViUHJvdGVj
dGlvblNwYWNlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bmFnZXJSZWYsIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyKQogV0tfQUREX0FQSV9N
QVBQSU5HKFdLU2Vzc2lvblN0YXRlUmVmLCBBUEk6OlNlc3Npb25TdGF0ZSkKK1dLX0FERF9BUElf
TUFQUElORyhXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmLCBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaykKIFdLX0FERF9BUElfTUFQUElORyhXS1RleHRD
aGVja2VyUmVmLCBXZWJUZXh0Q2hlY2tlcikKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJDb250
ZW50Q29udHJvbGxlclJlZiwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpCiBXS19BRERf
QVBJX01BUFBJTkcoV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUmVmLCBBUEk6OkNvbnRlbnRS
dWxlTGlzdFN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5k
ZXggNDM2OWNkZDgyNWI1MTU3ZmIwMTBjM2Y4MWFlNzhlNjYwZGFhNzRmYy4uNWUxMDlkNTc5ZWI3
NWYxZDhmYmZiMWQwM2E4ZjhjMGQ3YmNlNmRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAiUGFnZUNsaWVudC5o
IgogI2luY2x1ZGUgIlBsdWdpbkluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiUHJpbnRJbmZvLmgi
CisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLUGFnZVBvbGljeUNsaWVudEludGVybmFsLmgi
CiAjaW5jbHVkZSAiV0tQYWdlUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNJbnRlcm5hbC5oIgpAQCAt
MTE1LDcgKzExNiw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VQb2xp
Y3lDbGllbnRCYXNlPiB7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tQ
YWdlVUlDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZVVJQ2xpZW50
VjAsIFdLUGFnZVVJQ2xpZW50VjEsIFdLUGFnZVVJQ2xpZW50VjIsIFdLUGFnZVVJQ2xpZW50VjMs
IFdLUGFnZVVJQ2xpZW50VjQsIFdLUGFnZVVJQ2xpZW50VjUsIFdLUGFnZVVJQ2xpZW50VjYsIFdL
UGFnZVVJQ2xpZW50VjcsIFdLUGFnZVVJQ2xpZW50VjgsIFdLUGFnZVVJQ2xpZW50VjksIFdLUGFn
ZVVJQ2xpZW50VjEwLCBXS1BhZ2VVSUNsaWVudFYxMSwgV0tQYWdlVUlDbGllbnRWMTIsIFdLUGFn
ZVVJQ2xpZW50VjEzLCBXS1BhZ2VVSUNsaWVudFYxND4gVmVyc2lvbnM7CisgICAgdHlwZWRlZiBz
dGQ6OnR1cGxlPFdLUGFnZVVJQ2xpZW50VjAsIFdLUGFnZVVJQ2xpZW50VjEsIFdLUGFnZVVJQ2xp
ZW50VjIsIFdLUGFnZVVJQ2xpZW50VjMsIFdLUGFnZVVJQ2xpZW50VjQsIFdLUGFnZVVJQ2xpZW50
VjUsIFdLUGFnZVVJQ2xpZW50VjYsIFdLUGFnZVVJQ2xpZW50VjcsIFdLUGFnZVVJQ2xpZW50Vjgs
IFdLUGFnZVVJQ2xpZW50VjksIFdLUGFnZVVJQ2xpZW50VjEwLCBXS1BhZ2VVSUNsaWVudFYxMSwg
V0tQYWdlVUlDbGllbnRWMTIsIFdLUGFnZVVJQ2xpZW50VjEzLCBXS1BhZ2VVSUNsaWVudFYxNCwg
V0tQYWdlVUlDbGllbnRWMTU+IFZlcnNpb25zOwogfTsKIAogI2lmIEVOQUJMRShDT05URVhUX01F
TlVTKQpAQCAtMjExMCw2ICsyMTExLDEzIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxS
ZXN1bHQ6OlByZXNlbnRlZCk7CiAgICAgICAgIH0KICNlbmRpZgorICAgICAgICB2b2lkIGRlY2lk
ZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5
JiBwYWdlLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fY2xp
ZW50LmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QodG9B
UEkoJnBhZ2UpLCB0b0FQSSgmb3JpZ2luKSwgdG9BUEkoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkucHRyKCkpKTsK
KyAgICAgICAgfQogICAgIH07CiAKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFVJQ2xpZW50KG1h
a2VVbmlxdWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaAppbmRleCBiNjM4ODE1NWNkMzAzNmU2NjYxMTBmMTky
NTYxNmFmZDM3ZTg2OGJhLi42MzYzNTU1NjRkMDBiMTEyMmE4N2UyMjlhMzBiOTRkN2U5OWU0ZWY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgK
QEAgLTEzNiw2ICsxMzYsNyBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZXNpZ25JbnB1dEVs
ZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2VDYWxsYmFjaykoV0tQYQogdHlwZWRlZiBib29s
ICgqV0tQYWdlU2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NhbGxi
YWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiAKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVJ1bldlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDYWxsYmFjaykoKTsKK3R5cGVkZWYgdm9pZCAoKldLUGFnZURlY2lk
ZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjaykoV0tQ
YWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYgdG9wT3JpZ2luLCBXS1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIGNhbGxiYWNrKTsKIAogLy8gRGVwcmVjYXRlZAog
dHlwZWRlZiBXS1BhZ2VSZWYgKCpXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMCkoV0tQYWdlUmVmIHBhZ2UsIFdLRGljdGlvbmFyeVJlZiBmZWF0dXJlcywg
V0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRv
biwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CkBAIC0xMzUzLDYgKzEzNTQsMTE3IEBAIHR5cGVk
ZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjE0IHsKICAgICBXS1BhZ2VSdW5XZWJBdXRoZW50aWNh
dGlvblBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bldlYkF1dGhl
bnRpY2F0aW9uUGFuZWw7CiB9IFdLUGFnZVVJQ2xpZW50VjE0OwogCit0eXBlZGVmIHN0cnVjdCBX
S1BhZ2VVSUNsaWVudFYxNSB7CisgICAgV0tQYWdlVUlDbGllbnRCYXNlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOworCisgICAgLy8gVmVyc2lv
biAwLgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0
aFYwICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
OworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2hvd1BhZ2U7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZTsKKyAgICBX
S1BhZ2VUYWtlRm9jdXNDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRha2VGb2N1czsKKyAgICBXS1BhZ2VGb2N1c0NhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzOworICAgIFdLUGFnZVVu
Zm9jdXNDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5mb2N1czsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNh
dGVkRm9yVXNlV2l0aFYwICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVk
Rm9yVXNlV2l0aFYwOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVw
cmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVj
YXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tf
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVw
cmVjYXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VTZXRTdGF0dXNUZXh0Q2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXR1c1RleHQ7CisgICAg
V0tQYWdlTW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0
aFYwICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
OworICAgIFdLUGFnZU1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMCAgICAgbWlzc2luZ1BsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZv
clVzZVdpdGhWMDsKKyAgICBXS1BhZ2VEaWROb3RIYW5kbGVLZXlFdmVudENhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZE5vdEhhbmRsZUtleUV2ZW50OworICAgIFdL
UGFnZURpZE5vdEhhbmRsZVdoZWVsRXZlbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlkTm90SGFuZGxlV2hlZWxFdmVudDsKKyAgICBXS1BhZ2VHZXRUb29sYmFyc0Fy
ZVZpc2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJz
QXJlVmlzaWJsZTsKKyAgICBXS1BhZ2VTZXRUb29sYmFyc0FyZVZpc2libGVDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvb2xiYXJzQXJlVmlzaWJsZTsKKyAgICBX
S1BhZ2VHZXRNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lbnVCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlU2V0TWVudUJhcklzVmlzaWJs
ZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNZW51QmFySXNW
aXNpYmxlOworICAgIFdLUGFnZUdldFN0YXR1c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFnZVNl
dFN0YXR1c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0U3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFnZUdldElzUmVzaXphYmxlQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZXNpemFibGU7Cisg
ICAgV0tQYWdlU2V0SXNSZXNpemFibGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRJc1Jlc2l6YWJsZTsKKyAgICBXS1BhZ2VHZXRXaW5kb3dGcmFtZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFdpbmRvd0Zy
YW1lOworICAgIFdLUGFnZVNldFdpbmRvd0ZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0V2luZG93RnJhbWU7CisgICAgV0tQYWdlUnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNiAgICBydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWNjsKKyAgICBXS1Bh
Z2VVSUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpZERyYXc7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlRGlkU2Nyb2xsOworICAgIFdLUGFn
ZUV4Y2VlZGVkRGF0YWJhc2VRdW90YUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZWVkZWREYXRhYmFzZVF1b3RhOworICAgIFdLUGFnZVJ1bk9wZW5QYW5lbENhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuT3BlblBhbmVs
OworICAgIFdLUGFnZURlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RD
YWxsYmFjayAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdDsKKyAgICBXS1BhZ2VIZWFkZXJIZWlnaHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckhlaWdodDsKKyAgICBXS1BhZ2VGb290ZXJIZWln
aHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3Rl
ckhlaWdodDsKKyAgICBXS1BhZ2VEcmF3SGVhZGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdIZWFkZXI7CisgICAgV0tQYWdlRHJhd0Zvb3Rl
ckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3
Rm9vdGVyOworICAgIFdLUGFnZVByaW50RnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRGcmFtZTsKKyAgICBXS1BhZ2VVSUNsaWVudENh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bk1v
ZGFsOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW51c2VkMTsgLy8gVXNlZCB0byBiZSBkaWRDb21wbGV0ZVJ1
YmJlckJhbmRGb3JNYWluRnJhbWUKKyAgICBXS1BhZ2VTYXZlRGF0YVRvRmlsZUluRG93bmxvYWRz
Rm9sZGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIHNhdmVEYXRhVG9GaWxlSW5Eb3du
bG9hZHNGb2xkZXI7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0X3Vu
YXZhaWxhYmxlOworCisgICAgLy8gVmVyc2lvbiAxLgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VD
YWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3
UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOworICAgIFdLUGFnZU1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnQ7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNr
ZWRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9u
Q2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOworCisgICAgLy8gVmVyc2lvbiAyLgorICAg
IFdLUGFnZVNob3dDb2xvclBpY2tlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2hvd0NvbG9yUGlja2VyOworICAgIFdLUGFnZUhpZGVDb2xvclBpY2tlckNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUNvbG9yUGlj
a2VyOworICAgIFdLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkOworCisg
ICAgLy8gVmVyc2lvbiAzLgorICAgIFdLUGFnZVBpbm5lZFN0YXRlRGlkQ2hhbmdlQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkU3RhdGVEaWRDaGFuZ2U7CisK
KyAgICAvLyBWZXJzaW9uIDQuCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQyOyAvLyBVc2VkIHRvIGJl
IGRpZEJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcy4KKyAgICB2b2lkKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVudXNlZDM7IC8vIFVzZWQgdG8gYmUgZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MuCisgICAg
dm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnVzZWQ0OyAvLyBVc2VkIHRvIGJlIGRpZENhbmNlbFRyYWNraW5nUG90ZW50
aWFsTG9uZ01vdXNlUHJlc3MuCisgICAgV0tQYWdlSXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2VDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BsYXlpbmdBdWRpb0RpZENoYW5n
ZTsKKworICAgIC8vIFZlcnNpb24gNS4KKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZvclVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZURpZENsaWNrQXV0b0ZpbGxCdXR0
b25DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ2xpY2tBdXRvRmls
bEJ1dHRvbjsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVk
Rm9yVXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9y
VXNlV2l0aFY1OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVw
cmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVj
YXRlZEZvclVzZVdpdGhWNTsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUg
bWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCisKKyAgICAvLyBWZXJzaW9uIDYuCisgICAg
V0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVOZXdQYWdlOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFs
ZXJ0OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm07CisgICAgV0tQYWdlUnVu
SmF2YVNjcmlwdFByb21wdENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBydW5KYXZhU2NyaXB0UHJvbXB0OworICAgIFdLQ2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yT3JpZ2luOworCisgICAgLy8gVmVyc2lvbiA3LgorICAgIFdLUGFnZVJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOworICAgIFdLRnVsbHNjcmVlbk1heVJldHVyblRvSW5s
aW5lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVlbk1heVJl
dHVyblRvSW5saW5lOworCisgICAgLy8gVmVyc2lvbiA4LgorICAgIFdLUmVxdWVzdFBvaW50ZXJM
b2NrQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dFBvaW50ZXJMb2NrOworICAgIFdLRGlkTG9zZVBvaW50ZXJMb2NrQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkTG9zZVBvaW50ZXJMb2NrOworCisgICAg
Ly8gVmVyc2lvbiA5LgorICAgIFdLSGFuZGxlQXV0b3BsYXlFdmVudENhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQXV0b3BsYXlFdmVudDsKKworICAg
IC8vIFZlcnNpb24gMTAuCisgICAgV0tIYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5n
ZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBoYXNWaWRlb0luUGljdHVyZUluUGljdHVy
ZURpZENoYW5nZTsKKyAgICBXS0RpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJ
bkZvcmVncm91bmRDYWxsYmFjayAgICAgICAgIGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxp
bWl0V2hpbGVJbkZvcmVncm91bmQ7CisKKyAgICAvLyBWZXJzaW9uIDExLgorICAgIFdLUGFnZURp
ZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZUNhbGxiYWNrICAgICAg
ICAgZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlOworCisgICAg
Ly8gVmVyc2lvbiAxMi4KKyAgICBXS1BhZ2VSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm1DYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmly
bTsKKworICAgIC8vIFZlcnNpb24gMTMuCisgICAgV0tQYWdlU2hvdWxkQWxsb3dEZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NhbGxiYWNrICAgICAgICAgICBzaG91bGRBbGxvd0Rldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzOworCisgICAgLy8gVmVyc2lvbiAxNC4KKyAgICBX
S1BhZ2VSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWw7CisKKyAgICAvLyBWZXJzaW9uIDE1
LgorICAgIFdLUGFnZURlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3RDYWxsYmFjayAgICAgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdDsKKyAgICAKK30gV0tQYWdlVUlDbGllbnRWMTU7CisKICNpZmRlZiBfX2NwbHVz
cGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBjYzhmOWEzNWRiODQxMWUwMzg1YTdhZTE1NDlhMzlhZjgxMzJlZDYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2suaCIKKworI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFja0dldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrOjpBUElUeXBlKTsKK30KKwordm9pZCBXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFja1JlZiBzcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaywgYm9vbCBncmFu
dGVkKQoreworICAgIHJldHVybiB0b0ltcGwoc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2spLT5jb21wbGV0ZShncmFudGVkKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGFlYWZjNjk4NGJhOTZmNTQ4OTJlNzMyYWZlYTNh
MDYzYzljNzJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCkBAIC0wLDAgKzEsNDAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2Uu
aD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBP
UlQgV0tUeXBlSUQgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0dldFR5cGVJ
RCh2b2lkKTsKKworV0tfRVhQT1JUIHZvaWQgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFja0NvbXBsZXRlKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYg
c3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2ssIGJvb2wgZ3JhbnRlZCk7CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAppbmRleCBkMWVhZTIwMWU2
NTQyZjRmYWI2MDE5ODBkYzY2MTI0OTEzMTk3OTNmLi5mMGE5YmE0MWY1MTVlZjcxOGY3NDZjN2Zk
ZmZmZWE0YTM1ZThkZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKQEAgLTE1Miw2ICsxNTIsOCBAQCBzdHJ1
Y3QgVUlFZGdlSW5zZXRzOwogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHdpbGxTaGFyZUFjdGl2aXR5SXRlbXM6KE5TQXJyYXkgKilhY3Rpdml0eUl0ZW1zIFdLX0FQSV9B
VkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKIAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOihX
S1NlY3VyaXR5T3JpZ2luICopb3JpZ2luIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBh
dXRob3JpemVkKSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogI2lmIFRBUkdFVF9PU19JUEhPTkUKIAogLSAoQk9P
TClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzaG91bGRJbmNsdWRlQXBwTGlua0FjdGlv
bnNGb3JFbGVtZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQgV0tfQVBJX0FW
QUlMQUJMRShpb3MoOS4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmYjRmNTVkMGJl
OWJmM2ZhZTY5ZDU2ZDY1ZTNkODI4N2ZhYjAyN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaApAQCAtMCww
ICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPEFWRm91bmRh
dGlvbi9BVk1lZGlhRm9ybWF0Lmg+CisjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
KyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xh
c3MgTWVkaWFQZXJtaXNzaW9uVHlwZSB7CisgICAgQXVkaW8sCisgICAgVmlkZW8KK307CisKK2Vu
dW0gY2xhc3MgTWVkaWFQZXJtaXNzaW9uUmVzdWx0IHsKKyAgICBEZW5pZWQsCisgICAgR3JhbnRl
ZCwKKyAgICBVbmtub3duCit9OworCisjaWYgSEFWRShBVkNBUFRVUkVERVZJQ0UpCit2b2lkIHJl
cXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCBhdXRob3JpemVkKT4mJik7CitNZWRpYVBlcm1pc3Npb25SZXN1
bHQgY2hlY2tBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGUpOworI2Vu
ZGlmCisKK2Jvb2wgY2hlY2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlzc2lv
blR5cGUpOworYm9vbCBjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdGb3JUeXBlKE1lZGlhUGVy
bWlzc2lvblR5cGUpOworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI4ZWNkYjhiZjcwOTJlODcxY2NjYTE0ZTg0ZmJjMGZhOGYyYTY2NDAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1p
c3Npb25VdGlsaXRpZXMubW0KQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIk1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oIgorCisjaW1w
b3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUQ0NTUEkuaCIKKyNpbXBvcnQgPHd0
Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgorI2lt
cG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisKK1NPRlRfTElOS19QUklW
QVRFX0ZSQU1FV09SSyhUQ0MpCitTT0ZUX0xJTksoVENDLCBUQ0NBY2Nlc3NQcmVmbGlnaHQsIFRD
Q0FjY2Vzc1ByZWZsaWdodFJlc3VsdCwgKENGU3RyaW5nUmVmIHNlcnZpY2UsIENGRGljdGlvbmFy
eVJlZiBvcHRpb25zKSwgKHNlcnZpY2UsIG9wdGlvbnMpKQorU09GVF9MSU5LX0NPTlNUQU5UKFRD
Qywga1RDQ1NlcnZpY2VNaWNyb3Bob25lLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFO
VChUQ0MsIGtUQ0NTZXJ2aWNlQ2FtZXJhLCBDRlN0cmluZ1JlZikKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKKyNpZiBIQVZFKEFWQ0FQVFVSRURFVklDRSkKKwordm9pZCByZXF1ZXN0QVZDYXB0dXJl
QWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlIHR5cGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCBhdXRob3JpemVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgQVZNZWRpYVR5cGUgbWVkaWFUeXBlID0gdHlwZSA9
PSBNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbyA/IEFWTWVkaWFUeXBlQXVkaW8gOiBBVk1lZGlh
VHlwZVZpZGVvOworICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShCT09MIGF1dGhvcml6
ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgYXV0aG9yaXplZF0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQpOworICAgICAgICB9KTsKKyAgICB9
KTsKKyAgICBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIHJlcXVlc3RBY2Nlc3NGb3JN
ZWRpYVR5cGU6bWVkaWFUeXBlIGNvbXBsZXRpb25IYW5kbGVyOmRlY2lzaW9uSGFuZGxlci5nZXQo
KV07Cit9CisKK01lZGlhUGVybWlzc2lvblJlc3VsdCBjaGVja0FWQ2FwdHVyZUFjY2Vzc0ZvclR5
cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSB0eXBlKQoreworICAgIEFWTWVkaWFUeXBlIG1lZGlhVHlw
ZSA9IHR5cGUgPT0gTWVkaWFQZXJtaXNzaW9uVHlwZTo6QXVkaW8gPyBBVk1lZGlhVHlwZUF1ZGlv
IDogQVZNZWRpYVR5cGVWaWRlbzsKKyAgICBhdXRvIGF1dGhvcml6YXRpb25TdGF0dXMgPSBbUEFM
OjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5
cGU6bWVkaWFUeXBlXTsKKyAgICBpZiAoYXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6
YXRpb25TdGF0dXNEZW5pZWQgfHwgYXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRp
b25TdGF0dXNSZXN0cmljdGVkKQorICAgICAgICByZXR1cm4gTWVkaWFQZXJtaXNzaW9uUmVzdWx0
OjpEZW5pZWQ7CisgICAgaWYgKGF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9u
U3RhdHVzTm90RGV0ZXJtaW5lZCkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGVybWlzc2lvblJlc3Vs
dDo6VW5rbm93bjsKKyAgICByZXR1cm4gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpHcmFudGVkOwor
fQorCisjZW5kaWYKKworYm9vbCBjaGVja1NhbmRib3hSZXF1aXJlbWVudEZvclR5cGUoTWVkaWFQ
ZXJtaXNzaW9uVHlwZSB0eXBlKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgYXVkaW9GbGFnOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyB2aWRlb0Zs
YWc7CisgICAgc3RhdGljIGJvb2wgaXNBdWRpb0VudGl0bGVkID0gdHJ1ZTsKKyAgICBzdGF0aWMg
Ym9vbCBpc1ZpZGVvRW50aXRsZWQgPSB0cnVlOworICAgIAorICAgIGF1dG8gY2hlY2tGdW5jdGlv
biA9IFtdKGNvbnN0IGNoYXIqIG9wZXJhdGlvbiwgYm9vbCogZW50aXRsZWQpIHsKKyAgICAgICAg
aWYgKCFjdXJyZW50UHJvY2Vzc0lzU2FuZGJveGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgaW50IHJlc3VsdCA9IHNhbmRib3hfY2hlY2soZ2V0cGlkKCksIG9wZXJhdGlvbiwg
U0FOREJPWF9GSUxURVJfTk9ORSk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAg
ICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGNoZWNraW5nICclcycgc2FuZGJveCBhY2Nlc3MsIGVy
cm5vPSVsZCIsIG9wZXJhdGlvbiwgKGxvbmcpZXJybm8pOworICAgICAgICAqZW50aXRsZWQgPSAh
cmVzdWx0OworICAgIH07CisKKyAgICBpZiAodHlwZSA9PSBNZWRpYVBlcm1pc3Npb25UeXBlOjpB
dWRpbykgeworICAgICAgICBzdGQ6OmNhbGxfb25jZShhdWRpb0ZsYWcsIGNoZWNrRnVuY3Rpb24s
ICJkZXZpY2UtbWljcm9waG9uZSIsICZpc0F1ZGlvRW50aXRsZWQpOworICAgICAgICByZXR1cm4g
aXNBdWRpb0VudGl0bGVkOworICAgIH0KKworICAgIHN0ZDo6Y2FsbF9vbmNlKHZpZGVvRmxhZywg
Y2hlY2tGdW5jdGlvbiwgImRldmljZS1jYW1lcmEiLCAmaXNWaWRlb0VudGl0bGVkKTsKKyAgICBy
ZXR1cm4gaXNWaWRlb0VudGl0bGVkOworI2VuZGlmCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgY2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBl
IHR5cGUpCit7CisgICAgaWYgKHR5cGUgPT0gTWVkaWFQZXJtaXNzaW9uVHlwZTo6QXVkaW8pIHsK
KyAgICAgICAgc3RhdGljIFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3VsdCBhdWRpb0FjY2VzcyA9IFRD
Q0FjY2Vzc1ByZWZsaWdodChnZXRrVENDU2VydmljZU1pY3JvcGhvbmUoKSwgTlVMTCk7CisgICAg
ICAgIGlmIChhdWRpb0FjY2VzcyA9PSBrVENDQWNjZXNzUHJlZmxpZ2h0R3JhbnRlZCkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZHluYW1pY19vYmpjX2Nhc3Q8TlNT
dHJpbmc+KE5TQnVuZGxlLm1haW5CdW5kbGUuaW5mb0RpY3Rpb25hcnlbQCJOU01pY3JvcGhvbmVV
c2FnZURlc2NyaXB0aW9uIl0pLmxlbmd0aCA+IDA7CisgICAgfQorCisgICAgc3RhdGljIFRDQ0Fj
Y2Vzc1ByZWZsaWdodFJlc3VsdCB2aWRlb0FjY2VzcyA9IFRDQ0FjY2Vzc1ByZWZsaWdodChnZXRr
VENDU2VydmljZUNhbWVyYSgpLCBOVUxMKTsKKyAgICBpZiAodmlkZW9BY2Nlc3MgPT0ga1RDQ0Fj
Y2Vzc1ByZWZsaWdodEdyYW50ZWQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBk
eW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZvRGljdGlv
bmFyeVtAIk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlvbiJdKS5sZW5ndGggPiAwOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJD
b2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MDJlMGU1YjMwYmU0NDQwMjVlMjA5N2IyMjEwMzk0NzVjY2E3
N2M5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tCkBAIC0wLDAgKzEsMTgzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCisKKyNpbXBvcnQgIkFQSVNlY3VyaXR5T3JpZ2luLmgi
CisjaW1wb3J0ICJBUElVSUNsaWVudC5oIgorI2ltcG9ydCAiTWVkaWFQZXJtaXNzaW9uVXRpbGl0
aWVzLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgorCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorI2ltcG9ydCA8U3BlZWNoL1NwZWVj
aC5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKFNwZWVjaCkKK1NPRlRfTElOS19DTEFTUyhTcGVl
Y2gsIFNGU3BlZWNoUmVjb2duaXplcikKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydFByb2Nlc3NpbmdS
ZXF1ZXN0KCkKK3sKKyAgICBpZiAoIWNoZWNrU2FuZGJveFJlcXVpcmVtZW50Rm9yVHlwZShNZWRp
YVBlcm1pc3Npb25UeXBlOjpBdWRpbykpIHsKKyAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVz
dChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoIWNoZWNrTWljcm9waG9uZUFjY2VzcygpIHx8ICFjaGVj
a1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpIHx8IG1fdXNlclBlcm1pc3Npb25DaGVj
ayA9PSBDaGVja1Jlc3VsdDo6RGVuaWVkKSB7CisgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVl
c3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgpOworfQorCiti
b29sIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrTWljcm9waG9uZUFj
Y2VzcygpCit7CisgICAgaWYgKG1fcGFnZS5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2aWNl
c0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobV9taWNyb3Bob25l
Q2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyNpZiBIQVZFKEFWQ0FQVFVSRURFVklD
RSkKKyAgICAgICAgYXV0byByZXN1bHQgPSBjaGVja0FWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVk
aWFQZXJtaXNzaW9uVHlwZTo6QXVkaW8pOworICAgICAgICBpZiAocmVzdWx0ICE9IE1lZGlhUGVy
bWlzc2lvblJlc3VsdDo6VW5rbm93bikKKyAgICAgICAgICAgIG1fbWljcm9waG9uZUNoZWNrID0g
cmVzdWx0ID09IE1lZGlhUGVybWlzc2lvblJlc3VsdDo6R3JhbnRlZCA/IENoZWNrUmVzdWx0OjpH
cmFudGVkIDogQ2hlY2tSZXN1bHQ6OkRlbmllZDsKKyAgICAgICAgZWxzZSBpZiAoIWNoZWNrVXNh
Z2VEZXNjcmlwdGlvblN0cmluZ0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6QXVkaW8pKQor
ICAgICAgICAgICAgbV9taWNyb3Bob25lQ2hlY2sgPSBDaGVja1Jlc3VsdDo6RGVuaWVkOworI2Vs
c2UKKyAgICAgICAgbV9taWNyb3Bob25lQ2hlY2sgPSBDaGVja1Jlc3VsdDo6R3JhbnRlZDsKKyNl
bmRpZgorICAgIH0KKworICAgIHJldHVybiBtX21pY3JvcGhvbmVDaGVjayAhPSBDaGVja1Jlc3Vs
dDo6RGVuaWVkOworfQorCitib29sIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6
OmNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCkKK3sKKyAgICBpZiAobV9wYWdl
LnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGlmIChtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrID09IENo
ZWNrUmVzdWx0OjpVbmtub3duKSB7CisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorICAgICAg
ICBhdXRvIHN0YXR1cyA9IFtnZXRTRlNwZWVjaFJlY29nbml6ZXJDbGFzcygpIGF1dGhvcml6YXRp
b25TdGF0dXNdOworICAgICAgICBpZiAoc3RhdHVzICE9IFNGU3BlZWNoUmVjb2duaXplckF1dGhv
cml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkKQorICAgICAgICAgICAgbV9zcGVlY2hSZWNvZ25p
dGlvblNlcnZpY2VDaGVjayA9IHN0YXR1cyA9PSBTRlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0
aW9uU3RhdHVzQXV0aG9yaXplZCA/IENoZWNrUmVzdWx0OjpHcmFudGVkIDogQ2hlY2tSZXN1bHQ6
OkRlbmllZDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBib29sIGhhc0Rlc2NyaXB0aW9u
U3RyaW5nID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNTdHJpbmc+KE5TQnVuZGxlLm1haW5CdW5kbGUu
aW5mb0RpY3Rpb25hcnlbQCJOU1NwZWVjaFJlY29nbml0aW9uVXNhZ2VEZXNjcmlwdGlvbiJdKS5s
ZW5ndGg7CisgICAgICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrID0gaGFz
RGVzY3JpcHRpb25TdHJpbmcgPyBDaGVja1Jlc3VsdDo6VW5rbm93biA6IENoZWNrUmVzdWx0OjpE
ZW5pZWQ7CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2
aWNlQ2hlY2sgPSBDaGVja1Jlc3VsdDo6R3JhbnRlZDsKKyNlbmRpZgorICAgIH0KKworICAgIHJl
dHVybiBtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrICE9IENoZWNrUmVzdWx0OjpEZW5p
ZWQ7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVz
dFNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpCit7CisjaWYgSEFWRShTUEVFQ0hSRUNP
R05JWkVSKQorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fc3BlZWNo
UmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pOworCisgICAg
YXV0byBtYWluVGhyZWFkSGFuZGxlciA9IChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKV0oYm9vbCBhdXRob3JpemVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9uU2Vydmlj
ZUNoZWNrID0gIGF1dGhvcml6ZWQgPyBDaGVja1Jlc3VsdDo6R3JhbnRlZCA6IENoZWNrUmVzdWx0
OjpEZW5pZWQ7CisgICAgICAgIGlmIChtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrID09
IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAgICAgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVl
c3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVz
dCgpOworICAgIH0pOworICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFtt
YWluVGhyZWFkSGFuZGxlciA9IFdURk1vdmUobWFpblRocmVhZEhhbmRsZXIpXShTRlNwZWVjaFJl
Y29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cykgbXV0YWJsZSB7CisgICAgICAgIGJv
b2wgYXV0aG9yaXplZCA9IHN0YXR1cyA9PSBTRlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9u
U3RhdHVzQXV0aG9yaXplZDsKKyAgICAgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbbWFpblRocmVhZEhhbmRsZXIgPSBXVEZNb3ZlKG1haW5U
aHJlYWRIYW5kbGVyKSwgYXV0aG9yaXplZF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBt
YWluVGhyZWFkSGFuZGxlcihhdXRob3JpemVkKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1haW5UaHJlYWRIYW5kbGVyKGF1dGhvcml6
ZWQpOworICAgIH0pOworICAgIFtnZXRTRlNwZWVjaFJlY29nbml6ZXJDbGFzcygpIHJlcXVlc3RB
dXRob3JpemF0aW9uOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07CisjZW5kaWYKK30KKwordm9pZCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0TWljcm9waG9uZUFjY2Vz
cygpCit7CisjaWYgSEFWRShBVkNBUFRVUkVERVZJQ0UpCisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQobV9taWNyb3Bob25lQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25v
d24pOworCisgICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9u
VHlwZTo6QXVkaW8sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShib29sIGF1
dGhvcml6ZWQpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBtX21pY3JvcGhvbmVDaGVjayA9IGF1dGhvcml6ZWQgPyBDaGVja1Jlc3VsdDo6
R3JhbnRlZCA6IENoZWNrUmVzdWx0OjpEZW5pZWQ7CisgICAgICAgIGlmIChtX21pY3JvcGhvbmVD
aGVjayA9PSBDaGVja1Jlc3VsdDo6RGVuaWVkKSB7CisgICAgICAgICAgICBjb21wbGV0ZUN1cnJl
bnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRpbnVlUHJvY2Vzc2lu
Z1JlcXVlc3QoKTsKKyAgICB9KTsKKyNlbmRpZgorfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RVc2VyUGVybWlzc2lvbigpCit7CisgICAgQVNTRVJU
KCFtX3JlcXVlc3RzLmlzRW1wdHkoKSk7CisgICAgYXV0byYgY3VycmVudFJlcXVlc3QgPSBtX3Jl
cXVlc3RzLmZpcnN0KCk7CisKKyAgICBhdXRvIGNsaWVudE9yaWdpbiA9IGN1cnJlbnRSZXF1ZXN0
LT5vcmlnaW4oKTsKKyAgICBhdXRvIHJlcXVlc3RpbmdPcmlnaW4gPSBjbGllbnRPcmlnaW4uY2xp
ZW50T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0byB0b3BPcmlnaW4gPSBjbGllbnRP
cmlnaW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgaWYgKHJlcXVlc3RpbmdPcmln
aW4tPmlzU2FtZU9yaWdpbkFzKHRvcE9yaWdpbikpIHsKKyAgICAgICAgY29tcGxldGVDdXJyZW50
UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbjo6RGVueSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oYm9vbCBncmFudGVkKSB7CisgICAgICAgIGlm
ICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV91c2VyUGVybWlz
c2lvbkNoZWNrID0gZ3JhbnRlZCA/IENoZWNrUmVzdWx0OjpHcmFudGVkIDogQ2hlY2tSZXN1bHQ6
OkRlbmllZDsKKyAgICAgICAgaWYgKG1fdXNlclBlcm1pc3Npb25DaGVjayA9PSBDaGVja1Jlc3Vs
dDo6RGVuaWVkKSB7CisgICAgICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoKTsKKyAgICB9
OworICAgIG1fcGFnZS51aUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3QobV9wYWdlLCBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodG9w
T3JpZ2luLmdldCgpKS5nZXQoKSwgV1RGTW92ZShkZWNpc2lvbkhhbmRsZXIpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUuaAppbmRleCA4YTA5NDc0NWMxZjI0YmUxMDVkYmIwMmFiOTFlMzA3YjMxZDQ4NmIxLi42
MmQ3YThhMThmNmViODM5NGNiZTAyY2ZhYzQzNzZhNTRkMGExZmExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCkBAIC0xNjEsNiArMTYxLDcgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgICAgICB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0
aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2Vi
RnJhbWVQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJikgZmluYWw7CiAjZW5kaWYKKyAgICAgICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBh
Z2VQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKSBmaW5hbDsKIAogICAgICAgICBVSURlbGVnYXRlJiBtX3VpRGVsZWdhdGU7CiAgICAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGQw
MzM4ZjhkNmUzYjlhMTNkZjJhZjE1M2FjYjVkZWIzOGUxZmNkOWIuLjBmOWVhOTA5YTZlZjk5OTEx
YmU4MWVlZTllMDkzODk4NTdhMjY4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMTMzMiw0ICsxMzMyLDI2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6
SW50U2l6CiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oZGVsZWdh
dGUpIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgaW1hZ2VPck1lZGlhRG9jdW1lbnRT
aXplQ2hhbmdlZDpuZXdTaXplXTsKIH0KIAordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVj
aWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gZGVs
ZWdhdGUgPSAoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRl
LmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uRm9yT3JpZ2luOmRlY2lzaW9uSGFuZGxlcjopXSkgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUs
IEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9y
T3JpZ2luOmRlY2lzaW9uSGFuZGxlcjopKTsKKyAgICBbZGVsZWdhdGUgX3dlYlZpZXc6bV91aURl
bGVnYXRlLm1fd2ViVmlldyByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3Jp
Z2luOndyYXBwZXIob3JpZ2luKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0
aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UoY29tcGxldGlvbkhhbmRsZXIsIHsgfSksIGNoZWNr
ZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZ3JhbnRlZCk7CisgICAgfSkuZ2V0KCldOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkubW0KaW5kZXggOTk3NTc1ZGUwMjE2YTljMGNkNzZhZmNiNDFjNzY0MWRiMTMxNWFm
Yi4uOGViZWM1MmNjNmI2NmQxNWEyM2U1NDRlMjM0ZWVkODVhY2VmMGI5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuaCIKIAorI2ltcG9ydCAiTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUQ0NTUEkuaCIKICNpbXBvcnQgIldl
YlBhZ2VQcm94eS5oIgpAQCAtMzcsNDAgKzM4LDEyIEBACiAjaW1wb3J0IDxwYWwvY29jb2EvQVZG
b3VuZGF0aW9uU29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEku
aD4KIAotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFRDQykKLVNPRlRfTElOSyhUQ0MsIFRD
Q0FjY2Vzc1ByZWZsaWdodCwgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0LCAoQ0ZTdHJpbmdSZWYg
c2VydmljZSwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpLCAoc2VydmljZSwgb3B0aW9ucykpCi1T
T0ZUX0xJTksoVENDLCBUQ0NBY2Nlc3NQcmVmbGlnaHRXaXRoQXVkaXRUb2tlbiwgVENDQWNjZXNz
UHJlZmxpZ2h0UmVzdWx0LCAoQ0ZTdHJpbmdSZWYgc2VydmljZSwgYXVkaXRfdG9rZW5fdCB0b2tl
biwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpLCAoc2VydmljZSwgdG9rZW4sIG9wdGlvbnMpKQot
U09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RDQ1NlcnZpY2VNaWNyb3Bob25lLCBDRlN0cmluZ1Jl
ZikKLVNPRlRfTElOS19DT05TVEFOVChUQ0MsIGtUQ0NTZXJ2aWNlQ2FtZXJhLCBDRlN0cmluZ1Jl
ZikKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZUF1ZGlvKCkKIHsKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBvbmNlRmxhZzsKLSAgICBzdGF0aWMgYm9vbCBlbnRpdGxlZCA9IHRydWU7Ci0gICAgc3Rk
OjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgaWYgKCFjdXJyZW50UHJvY2Vzc0lz
U2FuZGJveGVkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaW50IHJlc3VsdCA9
IHNhbmRib3hfY2hlY2soZ2V0cGlkKCksICJkZXZpY2UtbWljcm9waG9uZSIsIFNBTkRCT1hfRklM
VEVSX05PTkUpOwotICAgICAgICBlbnRpdGxlZCA9ICFyZXN1bHQ7Ci0gICAgICAgIGlmIChyZXN1
bHQgPT0gLTEpCi0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGNoZWNraW5nICdkZXZp
Y2UtbWljcm9waG9uZScgc2FuZGJveCBhY2Nlc3MsIGVycm5vPSVsZCIsIChsb25nKWVycm5vKTsK
LSAgICB9KTsKLSAgICBpZiAoIWVudGl0bGVkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5k
aWYgLy8gUExBVEZPUk0oTUFDKQotCi0gICAgc3RhdGljIFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3Vs
dCBhY2Nlc3MgPSBUQ0NBY2Nlc3NQcmVmbGlnaHQoZ2V0a1RDQ1NlcnZpY2VNaWNyb3Bob25lKCks
IE5VTEwpOwotICAgIGlmIChhY2Nlc3MgPT0ga1RDQ0FjY2Vzc1ByZWZsaWdodEdyYW50ZWQpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgc3RhdGljIGJvb2wgaXNQZXJtaXR0ZWQgPSBkeW5h
bWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZvRGljdGlvbmFy
eVtAIk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb24iXSkubGVuZ3RoOwotICAgIHJldHVybiBp
c1Blcm1pdHRlZDsKKyAgICByZXR1cm4gY2hlY2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKE1l
ZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKSAmJiBjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdG
b3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKTsKICNlbHNlCiAgICAgcmV0dXJuIGZh
bHNlOwogI2VuZGlmCkBAIC03OSw0OSArNTIsMTMgQEAgYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6cGVybWl0dGVkVG9DYXB0dXJlQXVkaW8oKQogYm9vbCBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cGVybWl0dGVkVG9DYXB0dXJlVmlk
ZW8oKQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpZiBQTEFURk9STShNQUMpCi0g
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0YXRpYyBib29sIGVudGl0
bGVkID0gdHJ1ZTsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAgICBp
ZiAoIWN1cnJlbnRQcm9jZXNzSXNTYW5kYm94ZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBpbnQgcmVzdWx0ID0gc2FuZGJveF9jaGVjayhnZXRwaWQoKSwgImRldmljZS1jYW1l
cmEiLCBTQU5EQk9YX0ZJTFRFUl9OT05FKTsKLSAgICAgICAgZW50aXRsZWQgPSAhcmVzdWx0Owot
ICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJv
ciBjaGVja2luZyAnZGV2aWNlLWNhbWVyYScgc2FuZGJveCBhY2Nlc3MsIGVycm5vPSVsZCIsIChs
b25nKWVycm5vKTsKLSAgICB9KTsKLSAgICBpZiAoIWVudGl0bGVkKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQotCi0gICAgc3RhdGljIFRDQ0FjY2Vzc1By
ZWZsaWdodFJlc3VsdCBhY2Nlc3MgPSBUQ0NBY2Nlc3NQcmVmbGlnaHQoZ2V0a1RDQ1NlcnZpY2VD
YW1lcmEoKSwgTlVMTCk7Ci0gICAgaWYgKGFjY2VzcyA9PSBrVENDQWNjZXNzUHJlZmxpZ2h0R3Jh
bnRlZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBzdGF0aWMgYm9vbCBpc1Blcm1pdHRl
ZCA9IGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihOU0J1bmRsZS5tYWluQnVuZGxlLmluZm9E
aWN0aW9uYXJ5W0AiTlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uIl0pLmxlbmd0aDsKLSAgICByZXR1
cm4gaXNQZXJtaXR0ZWQ7CisgICAgcmV0dXJuIGNoZWNrU2FuZGJveFJlcXVpcmVtZW50Rm9yVHlw
ZShNZWRpYVBlcm1pc3Npb25UeXBlOjpWaWRlbykgJiYgY2hlY2tVc2FnZURlc2NyaXB0aW9uU3Ry
aW5nRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpWaWRlbyk7CiAjZWxzZQogICAgIHJldHVy
biBmYWxzZTsKICNlbmRpZgogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLXN0YXRpYyB2
b2lkIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChCT09MIGF1dGhvcml6ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBVk1lZGlhVHlwZSB0
eXBlKQotewotICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShCT09MIGF1dGhvcml6ZWQp
IG11dGFibGUgewotICAgICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBhdXRob3JpemVkXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGF1dGhvcml6ZWQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7Ci0g
ICAgfSk7Ci0gICAgW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSByZXF1ZXN0QWNjZXNz
Rm9yTWVkaWFUeXBlOnR5cGUgY29tcGxldGlvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgp
XTsKLX0KLQogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cmVx
dWVzdFN5c3RlbVZhbGlkYXRpb24oY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlLCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5JiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChwYWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1
cmVEZXZpY2VzRW5hYmxlZCgpKSB7CkBAIC0xMzAsMzYgKzY3LDQwIEBAIHZvaWQgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlcXVlc3RTeXN0ZW1WYWxpZGF0aW9uKGNv
bnN0IFdlYlBhCiAgICAgfQogCiAgICAgLy8gRklYTUU6IEFkZCBUQ0MgZW50aXRsZW1lbnQgY2hl
Y2sgZm9yIHNjcmVlbnNoYXJpbmcuCi0gICAgYm9vbCByZXF1aXJlc0F1ZGlvQ2FwdHVyZSA9IHJl
cXVlc3QucmVxdWlyZXNBdWRpb0NhcHR1cmUoKTsKLSAgICBib29sIHJlcXVpcmVzVmlkZW9DYXB0
dXJlID0gcmVxdWVzdC5yZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpOwotCi0gICAgYXV0byBtaWNyb3Bo
b25lQXV0aG9yaXphdGlvblN0YXR1cyA9ICFyZXF1aXJlc0F1ZGlvQ2FwdHVyZSA/IEFWQXV0aG9y
aXphdGlvblN0YXR1c0F1dGhvcml6ZWQgOiBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygp
IGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpb107Ci0gICAg
aWYgKG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1
c0RlbmllZCB8fCBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRp
b25TdGF0dXNSZXN0cmljdGVkKSB7CisgICAgYXV0byBhdWRpb1N0YXR1cyA9IHJlcXVlc3QucmVx
dWlyZXNBdWRpb0NhcHR1cmUoKSA/IGNoZWNrQVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBl
cm1pc3Npb25UeXBlOjpBdWRpbykgOiBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkdyYW50ZWQ7Cisg
ICAgaWYgKGF1ZGlvU3RhdHVzID09IE1lZGlhUGVybWlzc2lvblJlc3VsdDo6RGVuaWVkKSB7CiAg
ICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1
dG8gY2FtZXJhQXV0aG9yaXphdGlvblN0YXR1cyA9ICFyZXF1aXJlc1ZpZGVvQ2FwdHVyZSA/IEFW
QXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQgOiBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VD
bGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlb107
Ci0gICAgaWYgKGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3Rh
dHVzRGVuaWVkIHx8IGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9u
U3RhdHVzUmVzdHJpY3RlZCkgeworICAgIGF1dG8gdmlkZW9TdGF0dXMgPSByZXF1ZXN0LnJlcXVp
cmVzVmlkZW9DYXB0dXJlKCkgPyBjaGVja0FWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJt
aXNzaW9uVHlwZTo6VmlkZW8pIDogTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpHcmFudGVkOworICAg
IGlmIChhdWRpb1N0YXR1cyA9PSBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkRlbmllZCkgewogICAg
ICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBib29s
IHJlcXVpcmVzVmlkZW9UQ0NQcm9tcHQgPSByZXF1aXJlc1ZpZGVvQ2FwdHVyZSAmJiBjYW1lcmFB
dXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQ7
Ci0gICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHJlcXVpcmVzVmlkZW9UQ0NQcm9tcHQgPyBb
cmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGJvb2wgaXNPSykgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghaXNPSykgewotICAgICAgICAgICAg
Y2FsbGJhY2soZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUoV1RGTW92ZShjYWxsYmFjayksIEFW
TWVkaWFUeXBlVmlkZW8pOwotICAgIH0gOiBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICBpZiAoYXVk
aW9TdGF0dXMgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIHJl
cXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvLCBb
dmlkZW9TdGF0dXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wg
YXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAodmlkZW9TdGF0dXMgPT0gTWVk
aWFQZXJtaXNzaW9uUmVzdWx0OjpHcmFudGVkKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vz
c0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6VmlkZW8sIFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGF1dGhvcml6ZWQpIG11dGFibGUgewor
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgYm9vbCBy
ZXF1aXJlc0F1ZGlvVENDUHJvbXB0ID0gcmVxdWlyZXNBdWRpb0NhcHR1cmUgJiYgbWljcm9waG9u
ZUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5l
ZDsKLSAgICBpZiAoIXJlcXVpcmVzQXVkaW9UQ0NQcm9tcHQpIHsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIodHJ1ZSk7CisgICAgaWYgKHZpZGVvU3RhdHVzID09IE1lZGlhUGVybWlzc2lvblJl
c3VsdDo6VW5rbm93bikgeworICAgICAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yVHlwZShN
ZWRpYVBlcm1pc3Npb25UeXBlOjpWaWRlbywgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
YWxsYmFjayldKGJvb2wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihhdXRob3JpemVkKTsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgQVZNZWRpYVR5cGVBdWRpbyk7CisKKyAgICBjYWxsYmFjayh0cnVlKTsK
IH0KICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDg2NjIz
OGJhZmU4ZjA1YzE3YTIzZDZmOWNjOTlhMjEwMTRkZDkzMTAuLmNkMzAxNDFmY2VhNjIyMmRlNWJh
N2NmMWM2N2E5YTJmNjRkMDIwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC00MSw2ICs0MSwxMCBAQAogI2lt
cG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9T
YW5kYm94U1BJLmg+CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCAiQWNjZXNz
aWJpbGl0eVN1cHBvcnRTUEkuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaD4K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzc5OGI3NDhk
NTA0ZmI2NjEyYmJkNDk0Y2M5OTI3NDZmNjAxOWM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAK
QEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcihXZWJQYWdlUHJveHkmIHBhZ2UpCisgICAgOiBtX3Bh
Z2UocGFnZSkKK3sKK30KKworU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6flNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoKQoreworICAgIGZvciAoYXV0byYgcmVx
dWVzdCA6IG1fcmVxdWVzdHMpCisgICAgICAgIHJlcXVlc3QtPmNvbXBsZXRlKFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25E
ZWNpc2lvbik+JiYgY29tcGxldGlvbnRIYW5kbGVyKQoreworICAgIG1fcmVxdWVzdHMuYXBwZW5k
KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShXVEZNb3ZlKG9yaWdp
biksIFdURk1vdmUoY29tcGxldGlvbnRIYW5kbGVyKSkpOworICAgIGlmIChtX3JlcXVlc3RzLnNp
emUoKSA9PSAxKQorICAgICAgICBzdGFydE5leHRSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnROZXh0UmVxdWVzdCgpCit7CisgICAg
aWYgKG1fcmVxdWVzdHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGFydFBy
b2Nlc3NpbmdSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6Y29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgpCit7CisgICAgaWYgKCFtX3BhZ2Uu
cHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCkpIHsKKyAgICAgICAgaWYg
KG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24p
IHsKKyAgICAgICAgICAgIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQobV9zcGVlY2hS
ZWNvZ25pdGlvblNlcnZpY2VDaGVjayA9PSBDaGVja1Jlc3VsdDo6R3JhbnRlZCk7CisKKyAgICAg
ICAgaWYgKG1fbWljcm9waG9uZUNoZWNrID09IENoZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAg
ICAgICAgICByZXF1ZXN0TWljcm9waG9uZUFjY2VzcygpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIEFTU0VSVChtX21pY3JvcGhvbmVDaGVjayA9PSBDaGVja1Jlc3Vs
dDo6R3JhbnRlZCk7CisgICAgfQorCisgICAgaWYgKG1fdXNlclBlcm1pc3Npb25DaGVjayA9PSBD
aGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICByZXF1ZXN0VXNlclBlcm1pc3Npb24oKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQobV91c2VyUGVybWlzc2lvbkNoZWNr
ID09IENoZWNrUmVzdWx0OjpHcmFudGVkKTsKKworICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3Qo
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkdyYW50KTsKK30KKwordm9pZCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0
KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKQoreworICAgIEFT
U0VSVCghbV9yZXF1ZXN0cy5pc0VtcHR5KCkpOworICAgIGF1dG8gY3VycmVudFJlcXVlc3QgPSBt
X3JlcXVlc3RzLnRha2VGaXJzdCgpOworICAgIGN1cnJlbnRSZXF1ZXN0LT5jb21wbGV0ZShkZWNp
c2lvbik7CisKKyAgICBzdGFydE5leHRSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVzZXQoKQoreworICAgIG1fdXNlclBlcm1pc3Npb25D
aGVjayA9IENoZWNrUmVzdWx0OjpVbmtub3duOworfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQor
Cit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0UHJvY2Vzc2lu
Z1JlcXVlc3QoKQoreworICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uRGVjaXNpb246OkdyYW50KTsKK30KKworYm9vbCBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja01pY3JvcGhvbmVBY2Nlc3MoKQoreworfQorCitib29s
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU3BlZWNoUmVjb2duaXRp
b25TZXJ2aWNlQWNjZXNzKCkKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyOjpyZXF1ZXN0TWljcm9waG9uZUFjY2VzcygpCit7Cit9CisKK3ZvaWQgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uU2Vy
dmljZUFjY2VzcygpCit7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcjo6cmVxdWVzdFVzZXJQZXJtaXNzaW9uKCkKK3sKK30KKworI2VuZGlmCisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ4Mjdh
YTdjM2U2M2MyNDFmMzA1NDRkMzcxMDg3YTkwMGM0MTk1NwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIu
aApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcihXZWJQYWdlUHJveHkm
KTsKKyAgICB+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcigpOworICAgIHZvaWQg
cmVxdWVzdChXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYpOworICAgIHZvaWQgcmVzZXQo
KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHN0YXJ0TmV4dFJlcXVlc3QoKTsKKyAgICB2b2lkIHN0
YXJ0UHJvY2Vzc2luZ1JlcXVlc3QoKTsKKyAgICB2b2lkIGNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVl
c3QoKTsKKyAgICB2b2lkIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uRGVjaXNpb24pOworICAgIGJvb2wgY2hlY2tNaWNyb3Bob25lQWNjZXNzKCk7Cisg
ICAgYm9vbCBjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpOworICAgIHZvaWQg
cmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3MoKTsKKyAgICB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25p
dGlvblNlcnZpY2VBY2Nlc3MoKTsKKyAgICB2b2lkIHJlcXVlc3RVc2VyUGVybWlzc2lvbigpOwor
CisgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CisgICAgRGVxdWU8UmVmPFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3Q+PiBtX3JlcXVlc3RzOworICAgIGVudW0gY2xhc3MgQ2hlY2tS
ZXN1bHQgeyBEZW5pZWQsIEdyYW50ZWQsIFVua25vd24gfTsKKyAgICBDaGVja1Jlc3VsdCBtX3Nh
bmRib3hDaGVjayB7IENoZWNrUmVzdWx0OjpVbmtub3duIH07CisgICAgQ2hlY2tSZXN1bHQgbV9t
aWNyb3Bob25lQ2hlY2sgeyBDaGVja1Jlc3VsdDo6VW5rbm93biB9OworICAgIENoZWNrUmVzdWx0
IG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgeyBDaGVja1Jlc3VsdDo6VW5rbm93biB9
OworICAgIENoZWNrUmVzdWx0IG1fdXNlclBlcm1pc3Npb25DaGVjayB7IENoZWNrUmVzdWx0OjpV
bmtub3duIH07CisgICAgYm9vbCBtX2lzVXNpbmdNb2NrZWRDYXB0dXJlRGV2aWNlIHsgZmFsc2Ug
fTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmI2ZGE5OWMxNzgyN2Q2ZTU4NTFiZThmNjM3YWJkZmM5Y2E3YTgyZDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRP
cmlnaW4uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2VudW0gY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNp
b24gOiBib29sIHsgRGVueSwgR3JhbnQgfTsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3Q+IGNyZWF0ZShXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNp
b24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXVEZNb3ZlKG9yaWdpbiks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgfQorCisgICAgdm9pZCBjb21wbGV0
ZShTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikKKyAgICB7Cisg
ICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlv
bkhhbmRsZXIsIHsgfSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRlY2lzaW9uKTsKKyAg
ICB9CisKKyAgICBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0IHsg
cmV0dXJuIG1fb3JpZ2luOyB9CisKK3ByaXZhdGU6CisgICAgU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdChXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgICAgICA6IG1fb3JpZ2luKG9yaWdpbikKKyAgICAgICAgLCBtX2Nv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgIHsgfQorCisg
ICAgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG1fb3JpZ2luOworICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiBtX2NvbXBsZXRpb25I
YW5kbGVyOworfTsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sg
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFjaz4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+IGNyZWF0ZShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2soV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBsZXRlKGJvb2wgZ3Jh
bnRlZCkgeyBtX2NvbXBsZXRpb25IYW5kbGVyKGdyYW50ZWQpOyB9CisKK3ByaXZhdGU6CisgICAg
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgOiBtX2NvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgIHsgfQorCisgICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIuY3BwCmluZGV4IDljZTk3NGNmOWRhYTU2NTgyZWViY2ZhMDMwNjcwYjdh
Mzc1YmU3MWUuLmQ3M2IwOGM3MjUyNTQ3ZTVmMzc4NjUwZjMxZWIzZDcyZTUyNDE1NTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5j
cHAKQEAgLTMyLDE1ICszMiwxNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYgY29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCitTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIo
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tl
ciYmIHBlcm1pc3Npb25DaGVja2VyKQogICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVj
dGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fcGVybWlzc2lv
bkNoZWNrZXIoV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlcikpCiB7CiB9CiAKLXZvaWQgU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dEluZm8mJiByZXF1ZXN0SW5mbykKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xp
ZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVy
aW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdp
biYmIG9yaWdpbikKIHsKLSAgICBhdXRvIHJlcXVlc3QgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3Q6OmNyZWF0ZShXVEZNb3ZlKHJlcXVlc3RJbmZvKSk7CisgICAgYXV0byByZXF1
ZXN0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+KFNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdEluZm8geyBjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGxhbmcp
LCBjb250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzLCBXVEZNb3ZlKG9y
aWdpbikgfSk7CiAgICAgbV9wZW5kaW5nUmVxdWVzdHMuYXBwZW5kKFdURk1vdmUocmVxdWVzdCkp
OwogCiAgICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7CkBAIC03Miw4ICs3
Myw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFib3J0KFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkCiB7CiAgICAgaWYgKG1fY3VycmVudFJlcXVl
c3QgJiYgbV9jdXJyZW50UmVxdWVzdC0+Y2xpZW50SWRlbnRpZmllcigpID09IGNsaWVudElkZW50
aWZpZXIpIHsKICAgICAgICAgbV9jdXJyZW50UmVxdWVzdCA9IG51bGxwdHI7Ci0gICAgICAgIGF1
dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGll
bnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7
Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6
RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50aWZpZXIpOworICAgICAgICBzZW5kVXBk
YXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlw
ZTo6RW5kKTsKIAogICAgICAgICBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtODQsMTMgKzg0LDEyIEBAIHZvaWQgU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OmFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkCiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlbW92ZVBlbmRpbmdSZXF1ZXN0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xp
ZW50SWRlbnRpZmllcikKIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0PiB0YWtlblJlcXVlc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdD4gdGFrZW5SZXF1ZXN0OwogICAgIGF1dG8gcGVuZGluZ1JlcXVl
c3RzID0gc3RkOjpleGNoYW5nZShtX3BlbmRpbmdSZXF1ZXN0cywgeyB9KTsKICAgICB3aGlsZSAo
IXBlbmRpbmdSZXF1ZXN0cy5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byByZXF1ZXN0ID0gcGVu
ZGluZ1JlcXVlc3RzLnRha2VGaXJzdCgpOwogICAgICAgICBpZiAocmVxdWVzdC0+Y2xpZW50SWRl
bnRpZmllcigpID09IGNsaWVudElkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGF1dG8gdXBkYXRl
ID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlm
aWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7Ci0gICAgICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OkRpZFJl
Y2VpdmVVcGRhdGUodXBkYXRlKSwgbV9pZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHNlbmRVcGRh
dGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
OjpFbmQpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgbV9wZW5k
aW5nUmVxdWVzdHMuYXBwZW5kKFdURk1vdmUocmVxdWVzdCkpOwpAQCAtMTA1LDEyICsxMDQsNTEg
QEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aW52YWxpZGF0ZShXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGkKICAgICB9CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXI6OnN0YXJ0UG9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3QmKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnRQb2Nlc3Np
bmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkKIHsK
KyAgICBtX3Blcm1pc3Npb25DaGVja2VyKHJlcXVlc3QuY2xpZW50T3JpZ2luKCksIFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWFrUmVxdWVzdCA9IG1ha2VXZWFrUHRyKHJl
cXVlc3QpXShTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikgewor
ICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlm
ICghd2Vha1JlcXVlc3QpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgQVNTRVJUKG1f
Y3VycmVudFJlcXVlc3QuZ2V0KCkgPT0gd2Vha1JlcXVlc3QuZ2V0KCkpOworICAgICAgICBpZiAo
ZGVjaXNpb24gPT0gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpIHsK
KyAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNo
UmVjb2duaXRpb25FcnJvclR5cGU6Ok5vdEFsbG93ZWQsICJQZXJtaXNzaW9uIGNoZWNrIGZhaWxl
ZCJfcyB9OworICAgICAgICAgICAgc2VuZFVwZGF0ZSh3ZWFrUmVxdWVzdC0+Y2xpZW50SWRlbnRp
ZmllcigpLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yLCBlcnJv
cik7CisgICAgICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IHByb2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJZk5lZWRlZCgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgqd2Vha1Jl
cXVlc3QpOworICAgIH0pOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpjb250
aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYp
Cit7CisgICAgLy8gVE9ETzogc3RhcnQgY2FwdHVyaW5nIGF1ZGlvIGFuZCByZWNvZ25pemluZy4K
IH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RvcFByb2Nlc3NpbmdSZXF1ZXN0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpCit2b2lkIFNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjpzZW5kVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIHR5
cGUsIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+IGVycm9yLCBPcHRpb25hbDxWZWN0
b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gcmVzdWx0KQogeworICAgIGF1dG8gdXBk
YXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVu
dGlmaWVyLCB0eXBlKTsKKyAgICBpZiAodHlwZSA9PSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5
cGU6OkVycm9yKQorICAgICAgICB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRlbnRpZmllciwgKmVycm9yKTsKKyAgICBpZiAodHlw
ZSA9PSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlJlc3VsdCkKKyAgICAgICAgdXBkYXRl
ID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZVJlc3VsdChjbGllbnRJ
ZGVudGlmaWVyLCAqcmVzdWx0KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb246OkRpZFJlY2VpdmVVcGRhdGUodXBkYXRlKSwgbV9pZGVudGlmaWVyKTsK
K30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RvcFByb2Nlc3NpbmdSZXF1ZXN0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICAvLyBU
T0RPOiBzdG9wIGNhcHR1cmluZyBhdWRpbyBhbmQgZmluYWxpemluZyByZWNvZ25pdGlvbiByZXN1
bHQgd2l0aCBjYXB0dXJlZCBhdWRpby4KKyAgICBzZW5kVXBkYXRlKHJlcXVlc3QuY2xpZW50SWRl
bnRpZmllcigpLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6Ok5vTWF0Y2gp
OworICAgIHNlbmRVcGRhdGUocmVxdWVzdC5jbGllbnRJZGVudGlmaWVyKCksIFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKTsKKyAgICBBU1NFUlQobV9jdXJyZW50UmVx
dWVzdC5nZXQoKSA9PSAmcmVxdWVzdCk7CisgICAgbV9jdXJyZW50UmVxdWVzdCA9IG51bGxwdHI7
CisgICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7CiB9CiAKIElQQzo6Q29u
bmVjdGlvbiogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5oCmluZGV4IDdhYTI0MTYzOGI5YzM1MTQ5NjY5ODQ0MzJkYmM1MzBkZjg0ODRhMzcu
LmVhOGUzZTVlMGJmZmMwNWYzMTllN2QwZjM3OWU1MWQ5YzFiYjlkYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaApAQCAtMjgsMjEg
KzI4LDMwIEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NwZWVjaFJlY29nbml0aW9uRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2du
aXRpb25SZXN1bHREYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2VudW0gY2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOworc3RydWN0
IENsaWVudE9yaWdpbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlByb2Nl
c3NQcm94eTsKK2VudW0gY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24g
OiBib29sOwogCiB1c2luZyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgPSBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcjsKK3VzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNo
ZWNrZXIgPSBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJik+Owog
CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJp
dmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllcik7CisgICAgU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXJJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYpOwogCi0g
ICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYpOwor
ICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1S
ZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYm
KTsKICAgICB2b2lkIHN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcik7CiAgICAgdm9pZCBhYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKICAgICB2b2lkIGludmFsaWRhdGUoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CkBAIC01MSw5
ICs2MCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElm
TmVlZGVkKCk7CiAgICAgdm9pZCByZW1vdmVQZW5kaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKIAotICAgIC8vIFRPRE86IGlt
cGxlbWVudCB0aGVzZS4KICAgICB2b2lkIHN0YXJ0UG9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKKyAgICB2b2lkIGNvbnRpbnVlUHJvY2Vzc2luZ1Jl
cXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBzdG9w
UHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7Cisg
ICAgdm9pZCBzZW5kVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSwgT3B0
aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gPSBXVEY6Om51bGxvcHQsIE9w
dGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PiA9IFdU
Rjo6bnVsbG9wdCk7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRl
OwpAQCAtNjQsOCArNzQsOSBAQCBwcml2YXRlOgogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4g
bV9jb25uZWN0aW9uOwogICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7Ci0gICAgRGVxdWU8UmVmPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dD4+IG1fcGVuZGluZ1JlcXVlc3RzOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3Q+IG1fY3VycmVudFJlcXVlc3Q7CisgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4+IG1fcGVuZGluZ1JlcXVlc3RzOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IG1f
Y3VycmVudFJlcXVlc3Q7CisgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciBt
X3Blcm1pc3Npb25DaGVja2VyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVy
Lm1lc3NhZ2VzLmluCmluZGV4IGUzMWJlZmIwOTVhZDg4ZGFkYzMwZjA5OTVjNTdlNDE1MzczZjEy
ZjQuLmEyOGI5MjFjYjk2NGFmYWYyZmYyMmM5MTZiYmU0NmU4Mjk5MTMyOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVy
Lm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KICAKICBtZXNzYWdlcyAtPiBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlciBOb3RSZWZDb3VudGVkIHsKLSAgICBTdGFydChzdHJ1Y3QgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyBpbmZvKQorICAgIFN0YXJ0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmll
ciwgU3RyaW5nIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWlu
dDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdp
bikKICAgICBTdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBBYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgSW52YWxpZGF0ZShX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50
aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjNjYw
ZTU2NmIwOGRkMzY3OTEzZDIyNDUwNmJkZjFlZGYwMGQ1ZDg3Li5mZWI2YmY1M2RjYTI2YjBiYzQx
MjRjNmU5ZmU1N2UyYjc1YmZkYmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTg2LDYgKzg2LDcgQEAKICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94
eS5oIgogI2luY2x1ZGUgIlNhZmVCcm93c2luZ1dhcm5pbmcuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZS5oIgog
I2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgpA
QCAtNDg5Miw2ICs0ODkzLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZU1haW5Eb2N1
bWVudChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7
CiAjZW5kaWYKICAgICBtX2lzUXVvdGFJbmNyZWFzZURlbmllZCA9IGZhbHNlOworCisgICAgaWYg
KG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcikKKyAgICAgICAgbV9zcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLT5yZXNldCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6dmlld0lzQmVjb21pbmdWaXNpYmxlKCkKQEAgLTc2MDUsNiArNzYwOSw5IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVzZXRTdGF0ZVJlYXNv
bikKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+YXV0aGVu
dGljYXRvck1hbmFnZXIoKS5jYW5jZWxSZXF1ZXN0KG1fd2ViUGFnZUlELCBXVEY6Om51bGxvcHQp
OwogI2VuZGlmCisKKyAgICBpZiAobV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
KQorICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXItPnJlc2V0KCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKFBy
b2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB0ZXJtaW5hdGlvblJlYXNvbikKQEAgLTEwMTczLDYgKzEw
MTgwLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVVcGRhdGVG
b3JUZXN0aW5nKCkKICAgICB9KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb24oV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgY2xpZW50T3Jp
Z2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRl
Y2lzaW9uKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fc3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcikKKyAgICAgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyPigqdGhpcyk7CisKKyAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIt
PnJlcXVlc3QoV1RGTW92ZShjbGllbnRPcmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3Y2VmYmZj
Njk0NWVkZmU0M2FlNTZjMmQ1NjRjMGU4MWU5NWJiNGE2Li4yMzhjMGJlN2IwNjA2NTFhNWRlMWFj
ZmEzZDY3NjY3NzI1YWYzZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMzA1LDYgKzMwNSw3IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZv
cm1hbmNlRGF0YTsKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOwogY2xhc3MgUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTsKIGNsYXNzIFNlY0tleVByb3h5U3RvcmU7Citj
bGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOwogY2xhc3MgVXNlckRhdGE7
CiBjbGFzcyBWaWV3U25hcHNob3Q7CiBjbGFzcyBWaXNpdGVkTGlua1N0b3JlOwpAQCAtMzY1LDYg
KzM2Niw3IEBAIHN0cnVjdCBVc2VyTWVzc2FnZTsKIAogZW51bSBjbGFzcyBOZWdvdGlhdGVkTGVn
YWN5VExTIDogYm9vbDsKIGVudW0gY2xhc3MgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA6
IGJvb2w7CitlbnVtIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIDog
Ym9vbDsKIGVudW0gY2xhc3MgVW5kb09yUmVkbyA6IGJvb2w7CiBlbnVtIGNsYXNzIFdlYkNvbnRl
bnRNb2RlIDogdWludDhfdDsKIApAQCAtMTgxOSw2ICsxODIxLDggQEAgcHVibGljOgogICAgIHZv
aWQgc2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkoU2Vjb25kcyBjYXB0dXJlUmVwb3J0aW5n
RGVsYXkpIHsgbV9tZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheSA9IGNhcHR1cmVSZXBvcnRpbmdE
ZWxheTsgfQogICAgIHNpemVfdCBzdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXIoKSB7IHJldHVy
biBtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlcjsgfQogCisgICAgdm9pZCByZXF1ZXN0U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJik7
CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJv
eHkmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUlu
aXRpYWxpemUoKTsKQEAgLTI4ODgsNiArMjg5Miw4IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1f
c3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyIHsgMCB9OwogCiAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6QWRDbGlja0F0dHJpYnV0aW9uPiBtX25ld1BhZ2VOYXZpZ2F0aW9uQWRDbGlja0F0dHJpYnV0
aW9uOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXI+IG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKaW5kZXggZjZiODY3YmQ1NjRkZmQxNzJlYmEzZGI4MzMyNWNjMzczY2QyMDA2OS4uZTJj
NTBjMmQwMWI4NzUwMzM0NDRkNzhmMzBiODcyNDI2YTZjN2UzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk
ZSAiUGx1Z2luSW5mb1N0b3JlLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIK
ICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblNl
cnZlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0
Q2hlY2tlclN0YXRlLmgiCkBAIC0xNzEyLDcgKzE3MTMsMTkgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2VydmVy
SWRlbnQKIHsKICAgICBhdXRvIHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0gbV9zcGVlY2hSZWNv
Z25pdGlvblNlcnZlck1hcC5hZGQoaWRlbnRpZmllciwgbnVsbHB0cik7CiAgICAgQVNTRVJUKHNw
ZWVjaFJlY29nbml0aW9uU2VydmVyLmlzTmV3RW50cnkpOwotICAgIHNwZWVjaFJlY29nbml0aW9u
U2VydmVyLml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24oKSksIGlkZW50aWZpZXIpOworICAgIHNwZWVjaFJlY29n
bml0aW9uU2VydmVyLml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24oKSksIGlkZW50aWZpZXIsIFtpZGVudGlmaWVy
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShDbGllbnRPcmlnaW4mJiBvcmlnaW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChhdXRvKiBwYWdlIDogd2Vha1RoaXMtPnBhZ2Vz
KCkpIHsKKyAgICAgICAgICAgIGlmIChwYWdlICYmIHBhZ2UtPndlYlBhZ2VJRCgpID09IGlkZW50
aWZpZXIpIHsKKyAgICAgICAgICAgICAgICBwYWdlLT5yZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uKFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9u
OjpEZW55KTsKKyAgICB9KTsKICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNwZWVj
aFJlY29nbml0aW9uU2VydmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIsICpz
cGVlY2hSZWNvZ25pdGlvblNlcnZlci5pdGVyYXRvci0+dmFsdWUpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1ZTBkM2NmODdl
NzlmNDEwOTZmMWQ3OGVmMmI0Y2M2MTNjMjYxNzQ5Li5kNTRjMzA4NTg2MzhkMGEzMmI2ODdkYmUy
ZDg5MWFmN2M0ZTM3NGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEzNzQsNiArMTM3NCw3IEBACiAJCTkzM0U4MzU1MjNBMDdDMDYw
MERFRjI4OSAvKiBXZWJJREJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzM0U4MzUzMjNBMDdCRjgwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXIu
aCAqLzsgfTsKIAkJOTMzRTgzNUEyM0ExQUUyODAwREVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzNF
ODM1OTIzQTFBREY1MDBERUYyODkgLyogV2ViSURCU2VydmVyTWVzc2FnZXMuaCAqLzsgfTsKIAkJ
OTMzRTgzNUIyM0ExQjc1MDAwREVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzNFODM1
ODIzQTFBREY1MDBERUYyODkgLyogV2ViSURCU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKKwkJOTM0MjU4OTAyNTU1RERDNjAwNTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0MjU4
OEUyNTU1REM0NzAwNTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oICovOyB9Owog
CQk5MzRCNzI0NDE5RjVCOUJFMDBBRTk2RDYgLyogV0tBY3Rpb25NZW51SXRlbVR5cGVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRCNzI0MzE5RjVC
OUJFMDBBRTk2RDYgLyogV0tBY3Rpb25NZW51SXRlbVR5cGVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM1NkYyREMyMTUyQjZCNTAwRTZENURG
IC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE3QTUzMDIxRjQ3OTNCMjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50
Q29ubmVjdGlvbi5oICovOyB9OwogCQk5MzU2RjJERDIxNTJCNkY2MDBFNkQ1REYgLyogV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0JBMDRFMDIxNTFBREY0MDA3RjQ1NUYgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmggKi87IH07CkBAIC0xNDA4LDYgKzE0MDksOSBAQAogCQk5M0Q2Qjc4NzI1NENDRDhDMDA1OERE
M0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzg2MjU0Q0NEOEIwMDU4
REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9Owog
CQk5M0Q2Qjc4ODI1NENDRDk0MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0Q2Qjc3RTI1NENDQUJCMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggKi87IH07CiAJCTkzRDZCNzhBMjU0Q0Q0M0Uw
MDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3
N0QyNTRDQ0FCQjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi87IH07CisJCTkzRDZCN0I0MjU1MjY4RDUwMDU4REQzQSAvKiBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdBRjI1NTI2OEExMDA1OEREM0EgLyogU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oICovOyB9OworCQk5M0Q2QjdCNTI1NTI2OEQ3
MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3QjIyNTUyNjhBMjAw
NThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCAqLzsgfTsKKwkJ
OTNENkI3QjkyNTUzNEExNzAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzRDZCN0I3MjU1MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNFNkE0RUUxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTZBNEVEMUJDNURE
MzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGNTQ5QjQxRTMxNzRCNzAwMEU3MjM5IC8qIFdL
U25hcHNob3RDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZp
Z3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07
CiAJCTk1MEYyODgwMjUyNDE0RUEwMEI3NEYxQyAvKiBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEYyODdFMjUy
NDE0RTkwMEI3NEYxQyAvKiBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIuaCAqLzsgfTsKQEAgLTQ0Njgs
NiArNDQ3Miw4IEBACiAJCTkzM0U4MzU3MjNBMUE4NzIwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXIu
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViSURCU2VydmVyLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzNFODM1ODIzQTFBREY1MDBERUYy
ODkgLyogV2ViSURCU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFdlYklEQlNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklEQlNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTkzM0U4MzU5MjNBMUFERjUw
MERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBXZWJJREJTZXJ2ZXJNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9XZWJJREJTZXJ2ZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQk5MzQyNTg4RTI1NTVEQzQ3MDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9u
VXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzQyNTg4RjI1NTVEQ0E1MDA1OUVFREQgLyog
TWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQ
ZXJtaXNzaW9uVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzRC
NzI0MzE5RjVCOUJFMDBBRTk2RDYgLyogV0tBY3Rpb25NZW51SXRlbVR5cGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzVFRUI5NTEyNzc2MTZEMDAzMzIyQjggLyogV0tCdW5k
bGVCYWNrRm9yd2FyZExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzVFRUI5NjEyNzc2MTZEMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVCYWNrRm9yd2FyZExp
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1MjgsNiArNDUzNCwxMiBAQAog
CQk5M0Q2Qjc4MDI1NENDQUJDMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCNzgx
MjU0Q0NBQkMwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25p
dGlvblNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzRDZCNzg2MjU0Q0NEOEIwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5M0Q2QjdBRjI1NTI2OEExMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkzRDZCN0IwMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5M0Q2QjdCMjI1NTI2OEEyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkzRDZCN0IzMjU1MjY4QkYwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0I3MjU1MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjgyNTUzNEExMjAwNThERDNBIC8qIFdLU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTZBNEVEMUJDNUREMzkwMEY4QTBFNyAv
KiBfV0tIaXRUZXN0UmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9X
S0hpdFRlc3RSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjMx
RTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU25hcHNob3RDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjU0OUI1MUUzMTc0REEwMDBFNzIzOSAvKiBXS1NuYXBz
aG90Q29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdLU25hcHNob3RDb25maWd1cmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNjQ1Niw2ICs2NDY4LDggQEAKIAkJCQk3QTgyMUY0RDFFMkY2NzlFMDA2MDQ1NzcgLyog
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tICovLAogCQkJCUExREY2MzExMThF
MEI3QzgwMDNBM0UyQSAvKiBMZWdhY3lEb3dubG9hZENsaWVudC5oICovLAogCQkJCUExREY2MzEw
MThFMEI3QzgwMDNBM0UyQSAvKiBMZWdhY3lEb3dubG9hZENsaWVudC5tbSAqLywKKwkJCQk5MzQy
NTg4RTI1NTVEQzQ3MDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggKi8sCisJ
CQkJOTM0MjU4OEYyNTU1RENBNTAwNTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5t
bSAqLywKIAkJCQk0MTEyODZFRjIxQzhBOTBDMDAzQTg1NTAgLyogTWVkaWFVdGlsaXRpZXMuaCAq
LywKIAkJCQk0MTEyODZGMDIxQzhBOTBEMDAzQTg1NTAgLyogTWVkaWFVdGlsaXRpZXMubW0gKi8s
CiAJCQkJMUFCQzNERjQxODk5RTQzNzAwNEYwNjI2IC8qIE5hdmlnYXRpb25TdGF0ZS5oICovLApA
QCAtNjQ3Miw2ICs2NDg2LDcgQEAKIAkJCQk1Q0E5ODU0QjIxMEJFQjczMDA1N0VCNkIgLyogU2Fm
ZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tICovLAogCQkJCTFBMDAyRDQ3MTk2QjM0NUQwMEI5QUQ0
NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcuaCAqLywKIAkJCQkxQTAwMkQ0NjE5NkIzNDVEMDBCOUFE
NDQgLyogU2Vzc2lvblN0YXRlQ29kaW5nLm1tICovLAorCQkJCTkzRDZCN0IzMjU1MjY4QkYwMDU4
REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyQ29jb2EubW0gKi8sCiAJ
CQkJMzE1NzEzNUMyMDQwQTlCMjAwODRGOUNGIC8qIFN5c3RlbVByZXZpZXdDb250cm9sbGVyQ29j
b2EubW0gKi8sCiAJCQkJMkQwQ0Y2NEMyMUYyQTgwMzAwNzg3NTY2IC8qIFRleHRDaGVja2luZ0Nv
bnRyb2xsZXIuaCAqLywKIAkJCQkyRDBDRjY0QjIxRjJBODAzMDA3ODc1NjYgLyogVGV4dENoZWNr
aW5nQ29udHJvbGxlci5tbSAqLywKQEAgLTkyMDMsNiArOTIxOCw5IEBACiAJCQkJQkMxMTFCMDgx
MTJGNUUzQzAwMzM3QkFCIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovLAogCQkJCTFBMzAw
NjZDMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8sCiAJCQkJNUNB
OTg1NDkyMTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmcuaCAqLywKKwkJCQk5
M0Q2QjdCMDI1NTI2OEExMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlci5jcHAgKi8sCisJCQkJOTNENkI3QjIyNTUyNjhBMjAwNThERDNBIC8qIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCAqLywKKwkJCQk5M0Q2QjdBRjI1NTI2OEExMDA1OERE
M0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oICovLAogCQkJCTkzRDZC
NzZCMjU0Qjg5NTgwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAgKi8sCiAJ
CQkJOTNENkI3NkMyNTRCODk1ODAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmgg
Ki8sCiAJCQkJOTNENkI3N0EyNTRDOTg0RDAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyLm1lc3NhZ2VzLmluICovLApAQCAtOTU0Myw2ICs5NTYxLDggQEAKIAkJCQkzMzM2NzYzOTEz
MEM5OURDMDA2QzlERTIgLyogV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oICovLAogCQkJCTFBREU0
NkIwMTk1NEVDNjEwMDBGNzk4NSAvKiBXS1Nlc3Npb25TdGF0ZVJlZi5jcHAgKi8sCiAJCQkJMUFE
RTQ2QjExOTU0RUM2MTAwMEY3OTg1IC8qIFdLU2Vzc2lvblN0YXRlUmVmLmggKi8sCisJCQkJOTNE
NkI3QjgyNTUzNEExMjAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2suY3BwICovLAorCQkJCTkzRDZCN0I3MjU1MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggKi8sCiAJCQkJNTFGODg2QTMxRjJDMjE0QTAw
QzE5M0VGIC8qIFdLVGVzdGluZ1N1cHBvcnQuY3BwICovLAogCQkJCTUxRjg4NkE0MUYyQzIxNEEw
MEMxOTNFRiAvKiBXS1Rlc3RpbmdTdXBwb3J0LmggKi8sCiAJCQkJMzE0ODg4RkUxRDkxQjExRDAw
Mzc3MDQyIC8qIFdLVGV4dENoZWNrZXIuY3BwICovLApAQCAtMTExNDAsNiArMTExNjAsNyBAQAog
CQkJCTFBNkQ4NkMyMURGNzUyNjUwMDc3NDVFOCAvKiBNYWNoTWVzc2FnZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNDNTZGNzkxMTU5OTU3RDAwMUNDQUY5IC8qIE1hY2hQb3J0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTI0QjVGMzExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTM0MjU4OTAyNTU1RERDNjAwNTlFRUREIC8qIE1lZGlhUGVybWlz
c2lvblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdFMTlFRkMyM0Q0MDFGMTAwOTRG
RkI0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0UxOUVGRDIzRDQwMUYxMDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
TWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTkzM0RFRjE5NjVFQjMxMDA4
QUMzRUEgLyogTWVudVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTM4MSw2ICsxMTQw
Miw4IEBACiAJCQkJNTdCQkVBNkQyMkJDMEJGRTAwMjczOTk1IC8qIFNPQXV0aG9yaXphdGlvbkxv
YWRQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3NkNBOUQ3MjJCODYyMTgwMDMwMTQzQyAv
KiBTT0F1dGhvcml6YXRpb25OU1VSTEV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMx
ODUyMkIzNTE2OTAwOEQwRThCIC8qIFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTkzRDZCN0I1MjU1MjY4RDcwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q2QjdCNDI1NTI2OEQ1MDA1
OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTNENkI3NzIyNTRCQjUxOTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4NDI1NENDRDBFMDA1OEREM0EgLyogU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3
ODUyNTRDQ0Q0MzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXNSZXBs
aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTExOTk0LDYgKzEyMDE3LDcgQEAKIAkJCQk1MTNFNDYy
RDFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5M0Y1NDlCNDFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENv
bmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTg3MjJCMzUxNzAwMDhEMEU4
QiAvKiBXS1NPQXV0aG9yaXphdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q2
QjdCOTI1NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E3OEZGMzIyMjQxOTE5NjAwOTY0ODNFIC8qIFdL
U3RvcmFnZUFjY2Vzc0FsZXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYwNjEyNEZGMDI3
MDA2OEYyMEEgLyogV0tTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjFBMTI0RkYw
MzcwMDY4RjIwQSAvKiBXS1N0cmluZ0NGLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAKaW5kZXggZWExNmIyZWQ3NjY1YjMy
YmQzOWNhYzQ2MzJiNGI5YTUxYTc1ZDZiMS4uM2YzNTMxOTRhMzJjM2U2NzliY2EyOWZiZWE4NTAz
MWM5MjFlNGZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5jcHAKQEAgLTU5LDEwICs1OSw5IEBAIHZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uOjpyZWdpc3RlckNsaWVudChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvCiAgICAg
bV9jbGllbnRNYXAuYWRkKGNsaWVudC5pZGVudGlmaWVyKCksIG1ha2VXZWFrUHRyKGNsaWVudCkp
OwogfQogCi12b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmlt
UmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKQordm9pZCBXZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb246OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBi
b29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0
aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luKQogewotICAgIFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gaW5mbyB7IGNsaWVudElkZW50aWZpZXIs
IGxhbmcsIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMgfTsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3RhcnQoaW5mbykpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTdGFydChjbGllbnRJ
ZGVudGlmaWVyLCBsYW5nLCBjb250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRp
dmVzLCBXVEZNb3ZlKGNsaWVudE9yaWdpbikpKTsKIH0KIAogdm9pZCBXZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb246OnN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQpAQCAtODAsNyArNzksNyBAQCB2b2lk
IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6aW52YWxpZGF0ZShXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lYwogICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9u
U2VydmVyOjpJbnZhbGlkYXRlKGNsaWVudElkZW50aWZpZXIpKTsKIH0KIAotdm9pZCBXZWJTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OmRpZFJlY2VpdmVVcGRhdGUoY29uc3QgV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmIHVwZGF0ZSkKK3ZvaWQgV2ViU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uOjpkaWRSZWNlaXZlVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
VXBkYXRlJiYgdXBkYXRlKQogewogICAgIGF1dG8gY2xpZW50SWRlbnRpZmllciA9IHVwZGF0ZS5j
bGllbnRJZGVudGlmaWVyKCk7CiAgICAgaWYgKCFtX2NsaWVudE1hcC5jb250YWlucyhjbGllbnRJ
ZGVudGlmaWVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24u
aAppbmRleCAyOGRiZDE5N2NiM2Y3OThmYzc2MzE5OWViYjEyZGUxM2FlZDc1MWIxLi40NDNiMDRm
MWNjYWFiMGEwZTZhYTUzODMxZTk4NWQxMGE2YTUzMzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCkBAIC00MywxMSArNDMsMTEgQEAgY2xhc3MgV2Vi
UGFnZTsKIAogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uSWRlbnRpZmllciA9IFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyOwogCi1jbGFzcyBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLCBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7Citj
bGFzcyBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2Vp
dmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24+IGNyZWF0ZShTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIAotICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5n
LCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVy
bmF0aXZlcykgZmluYWw7CisgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29u
dGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mJikgZmluYWw7CiAgICAgdm9pZCBzdG9wKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFsOwogICAgIHZv
aWQgYWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllcikgZmluYWw7CiAKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB+V2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uKCk7CiAKICAgICB2b2lkIHJlZ2lzdGVyQ2xpZW50KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYp
IGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZSYmKSBmaW5hbDsKICAgICB2b2lkIGludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CiAKICAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlci4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA0ZTJhYzUwZTA1ZWU2NmJlMmY5ZmU5NzExODkxNmRmZWNmOTY4OTUwLi5mNDMy
YTU3NjdmMDhmODUxMzMxN2I0YTk5MjAwYWEzM2VkYWZhYzZiIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjAtMTEt
MDkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzcxMjIyNjM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3Q6CisgICAgICAgICog
TW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5mby5wbGlzdDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uR3JhbnRlZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXVFI6OmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y29tcGxldGVT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVjayk6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQpOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdElu
dm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUp
OgorCiAyMDIwLTExLTA5ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbbWFjT1NdIFNldCBwcmVmZXJlbmNlIGZvciBvdmVycmlkZGVuIGxhbmd1YWdlcyBp
biB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGFmdGVyIGVudGVyaW5nIHRoZSBzYW5kYm94LgpkaWZm
IC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QgYi9Ub29scy9NaW5pQnJv
d3Nlci9tYWMvSW5mby5wbGlzdAppbmRleCA0ZTJiMWY0ODE5YWQ1MTAzZTRjZjE3MDliN2M1M2E2
NmU4YjM5NWU1Li4zM2EzY2ExYmU3MzUwOGUxZmZjYjAyOTU3Yzg2NGU4NTkyZGFhYTRlIDEwMDY0
NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdAorKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvSW5mby5wbGlzdApAQCAtNTIsOSArNTIsMTEgQEAKIAkJCTxzdHJpbmc+RWRp
dG9yPC9zdHJpbmc+CiAJCTwvZGljdD4KIAk8L2FycmF5PgotICAgIDxrZXk+TlNDYW1lcmFVc2Fn
ZURlc2NyaXB0aW9uPC9rZXk+Ci0gICAgPHN0cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxm
IG9mIHdlYnNpdGVzPC9zdHJpbmc+Ci0gICAgPGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0
aW9uPC9rZXk+Ci0gICAgPHN0cmluZz5SZWNvcmRpbmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNp
dGVzPC9zdHJpbmc+CisJPGtleT5OU0NhbWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3Ry
aW5nPlJlY29yZGluZyB2aWRlbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5
Pk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyBh
dWRpbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TU3BlZWNoUmVjb2du
aXRpb25Vc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvZ25pemluZyBjYXB0dXJl
ZCBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+
CmRpZmYgLS1naXQgYS9Ub29scy9Nb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9J
bmZvLnBsaXN0IGIvVG9vbHMvTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5m
by5wbGlzdAppbmRleCAyZDFiYzU4MmZiZTc2NWNmZGM0MTA1ZWZlOWVjYzFkODMyMGNjOTU5Li41
Mzg3YjM3NDlhNDc0ZmUwYjNkOWM2MDk1Y2IyODgxN2I4ZjkyMzBhIDEwMDY0NAotLS0gYS9Ub29s
cy9Nb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBsaXN0CisrKyBiL1Rv
b2xzL01vYmlsZU1pbmlCcm93c2VyL01vYmlsZU1pbmlCcm93c2VyL0luZm8ucGxpc3QKQEAgLTU0
LDkgKzU0LDExIEBACiAJCTxrZXk+TlNBbGxvd3NBcmJpdHJhcnlMb2Fkc0luV2ViQ29udGVudDwv
a2V5PgogCQk8dHJ1ZS8+CiAJPC9kaWN0PgotICAgIDxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0
aW9uPC9rZXk+Ci0gICAgPHN0cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNp
dGVzPC9zdHJpbmc+Ci0gICAgPGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+
Ci0gICAgPHN0cmluZz5SZWNvcmRpbmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJp
bmc+CisJPGtleT5OU0NhbWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29y
ZGluZyB2aWRlbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TTWljcm9w
aG9uZVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBi
ZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TU3BlZWNoUmVjb2duaXRpb25Vc2Fn
ZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvZ25pemluZyBjYXB0dXJlZCBhdWRpbyBv
biBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbAppbmRleCA1NTE2MmZmMzQzZDI1ZjY5MDZjMzkyNzZmZDVhODkxZWRm
MjliODY5Li42ZmRjZTIzZmI4NGQzMGJjY2Q1OTc0YWI3MjAzMzFjOTI5OTg0Y2NiIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTQwMyw0ICs0MDMsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1
bm5lciB7CiAgICAgdW5kZWZpbmVkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbk92ZXJyaWRlVGltZXJG
b3JUZXN0aW5nKGJvb2xlYW4gdmFsdWUpOwogICAgIHVuZGVmaW5lZCBzZXRBZENsaWNrQXR0cmli
dXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZyhET01TdHJpbmcgdXJsKTsKICAgICB1bmRlZmlu
ZWQgbWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CisKKyAgICAv
LyBTcGVlY2hSZWNvZ25pdGlvbgorICAgIHVuZGVmaW5lZCBzZXRJc1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkdyYW50ZWQoYm9vbGVhbiB2YWx1ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZGZkMDFh
MzJmMzExZTEyNDRhYTc4NzliNDM3NTk3YWZhYzNlZmQ5ZS4uYjE4YWIyNzYzNzYzNjAyZWY3ZjY2
YjM5MWJhNjIzNGU2NDI3YTkxNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yMDY5LDYgKzIwNjksMTEgQEAgdm9p
ZCBUZXN0UnVubmVyOjpkaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFjaygpCiAgICAgY2FsbFRl
c3RSdW5uZXJDYWxsYmFjayhEaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFja0lEKTsKIH0KIAor
dm9pZCBUZXN0UnVubmVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQo
Ym9vbCBncmFudGVkKQoreworICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJzZXRJc1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQiLCBncmFudGVkKTsKK30KKwogQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRl
eCAwYmQzYTA5ZTMyZDcxYjM1MTZlNGY4ZTA1YmVhMjJhZjk5NGIxZDIzLi45NzkzYzc3N2FkMzhh
YWQzNGNmNTI1ZDEyY2E4N2RlYTMxOWEyZDNlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNTE1LDYgKzUxNSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0
aW5nKEpTU3RyaW5nUmVmKTsKICAgICB2b2lkIG1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBp
cmVkRm9yVGVzdGluZygpOwogCisgICAgdm9pZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkdyYW50ZWQoYm9vbCk7CisKIHByaXZhdGU6CiAgICAgVGVzdFJ1bm5lcigpOwogCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDZkYmM2ODRlODg1MGFm
ZTA0NTkxMzlmYmUxOWQ1ZTVjY2RiNzI2ZTcuLjFjN2EwMWY4NjZkOGUzNGFiM2YzNWE2ZjdlOWU5
ZjNhM2FlMjQ4YzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJvdGVjdGlvblNwYWNlLmg+
CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2Vj
dXJpdHlPcmlnaW5SZWYuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjay5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1RleHRDaGVja2VyLmg+CiAj
aW5jbHVkZSA8V2ViS2l0L1dLVVJMLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVXNlckNvbnRlbnRD
b250cm9sbGVyUmVmLmg+CkBAIC0yOTcsNiArMjk4LDIxIEBAIHN0YXRpYyB2b2lkIHJ1bldlYkF1
dGhlbnRpY2F0aW9uUGFuZWwoKQogewogfQogCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9y
aWdpblJlZiwgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBjYWxsYmFj
aykKK3sKKyAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29tcGxldGVTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DaGVjayhjYWxsYmFjayk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OmNvbXBsZXRlU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2soV0tTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBjYWxsYmFjaykKK3sKKyAgICBXS1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUoY2FsbGJhY2ssIG1faXNTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6
c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wgZ3JhbnRlZCkKK3sK
KyAgICBtX2lzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCA9IGdyYW50ZWQ7Cit9
CisKIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFdLUGFnZVJlZiwg
V0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS05hdmlnYXRpb25BY3Rpb25S
ZWYgbmF2aWdhdGlvbkFjdGlvbiwgV0tXaW5kb3dGZWF0dXJlc1JlZiB3aW5kb3dGZWF0dXJlcywg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZp
ZXcgPSBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdlYlZpZXcqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSk7CkBAIC02NTAsOCArNjY2LDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRl
V2ViVmlld1dpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogICAgIFdLSFRU
UENvb2tpZVN0b3JlRGVsZXRlQWxsQ29va2llcyhXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29v
a2llU3RvcmUod2Vic2l0ZURhdGFTdG9yZSgpKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAKICAgICBw
bGF0Zm9ybUNyZWF0ZVdlYlZpZXcoY29uZmlndXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7Ci0gICAg
V0tQYWdlVUlDbGllbnRWMTQgcGFnZVVJQ2xpZW50ID0gewotICAgICAgICB7IDE0LCBtX21haW5X
ZWJWaWV3LmdldCgpIH0sCisgICAgV0tQYWdlVUlDbGllbnRWMTUgcGFnZVVJQ2xpZW50ID0gewor
ICAgICAgICB7IDE1LCBtX21haW5XZWJWaWV3LmdldCgpIH0sCiAgICAgICAgIDAsIC8vIGNyZWF0
ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAogICAgICAgICAwLCAvLyBzaG93UGFnZQog
ICAgICAgICAwLCAvLyBjbG9zZQpAQCAtNzI0LDcgKzc0MCw4IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykK
ICAgICAgICAgMCwgLy8gZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJh
bmNlCiAgICAgICAgIDAsIC8vIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybQogICAgICAgICBz
aG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzLAotICAgICAgICBydW5X
ZWJBdXRoZW50aWNhdGlvblBhbmVsCisgICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWws
CisgICAgICAgIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3QKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChtX21haW5XZWJWaWV3LT5wYWdl
KCksICZwYWdlVUlDbGllbnQuYmFzZSk7CiAKQEAgLTEwNTMsNiArMTA3MCw4IEBAIGJvb2wgVGVz
dENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlv
bnMmIG9wdGlvbnMsIFJlCiAgICAgbV9zZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxz
Q291bnQgPSAwOwogICAgIG1fc2hvdWxkRGlzbWlzc0phdmFTY3JpcHRBbGVydHNBc3luY2hyb25v
dXNseSA9IGZhbHNlOwogCisgICAgc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFu
dGVkKHRydWUpOworCiAgICAgYXV0byBsb2FkQWJvdXRCbGFuayA9IFt0aGlzXSB7CiAgICAgICAg
IG1fZG9uZVJlc2V0dGluZyA9IGZhbHNlOwogICAgICAgICBXS1BhZ2VMb2FkVVJMKG1fbWFpbldl
YlZpZXctPnBhZ2UoKSwgYmxhbmtVUkwoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmgKaW5kZXggMzNiNjQ5NGFjNjI0NGI5MmZjYjc4MDlhNThkNzIwM2M3YzEyNThhOC4u
MDVjOGY4YmRhYTk1YWQ4N2U0MzllMzA5M2I4YTRmMzRmNWY4MmM1NiAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMzUxLDYgKzM1MSw5IEBAIHB1YmxpYzoKIAog
ICAgIFdLVVJMUmVmIGN1cnJlbnRUZXN0VVJMKCkgY29uc3Q7CiAKKyAgICB2b2lkIGNvbXBsZXRl
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2soV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFja1JlZik7CisgICAgdm9pZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkdyYW50ZWQoYm9vbCk7CisKIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29u
ZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9u
cyYpOwogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRl
Q29udGV4dENvbmZpZ3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnMmKSBjb25zdDsKQEAgLTY0MCw2
ICs2NDMsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgbV9oYXNT
ZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgeyBmYWxzZSB9OwogI2VuZGlmCisKKyAgICBi
b29sIG1faXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkIHsgZmFsc2UgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcAppbmRleCAxNGMwNGVkMWZhOTM5NGY1NzJmNjQ5YTkxYjQ3ZWZiMjA2ZWY4NTRlLi41
YjY2NjE3YmVlMDE2YjY3NTFjN2JiMmJjZTZiYjhiYWU0NGViMGEwIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTM0NSw2ICsxMzQ1LDExIEBAIFdLUmV0
YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAic2V0SXNTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChi
b29sZWFuVmFsdWUobWVzc2FnZUJvZHkpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggZDAyNDZmMjk5ODBiZGMxMWVlZTE1NGJhOTQ1MTc3MjQzMDFlODdkZS4uNWFiZTAwZGEz
OTIxZjgwMzAxYjE3OWZjZDc1YTczZGJlNTZlM2Y1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDIwLTExLTA5ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCBiYXNpYyBwZXJtaXNzaW9uIGNoZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc2CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS83MTIyMjYzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZmFz
dC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIw
LTExLTA5ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAg
ICAgIFtUZXh0dXJlTWFwcGVyXSBUaGUgdG9wIGFuZCBsZWZ0IHNpZGVzIG9mIGRyb3Atc2hhZG93
IGFyZSBjbGlwcGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBmNzdmZWU5YjQwN2FiZDNmNTUyNWQ4
ZWEyZGU4MDE3YTczMzI0Y2I2Li4yN2I1ZmU5MDU0ODA1NTljN2M5YzBlNWQ5NzY3ZmUzM2YxNzI0
YTM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE3Nyw2ICsxNzcsNyBAQCBzdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2guaHRtbCBbIFNraXAg
XQogc3RvcmFnZS9pbmRleGVkZGIvSURCT2JqZWN0LWxlYWsuaHRtbCBbIFNraXAgXQogZmFzdC9m
b3Jtcy9jYWxsLXRleHQtZGlkLWNoYW5nZS1pbi10ZXh0LWZpZWxkLXdoZW4tdHlwaW5nLmh0bWwg
WyBTa2lwIF0KIGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS8gWyBTa2lwIF0KK2Zh
c3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sIFsgU2tpcCBdCiAKICMg
T25seSBwYXJ0aWFsIHN1cHBvcnQgb24gQ29jb2EgcGxhdGZvcm1zLgogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zcGVlY2gtYXBpLyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDI5YjhhYjA0ZDA4M2ZhMjdhMDg0NTg1ZGFhOThmZDdi
NjA2YjQ2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2du
aXRpb24vcGVybWlzc2lvbi1lcnJvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVmVy
aWZ5IHRoYXQgZXJyb3IgZXZlbnQgaXMgZmlyZWQgd2hlbiBwZXJtaXNzaW9uIGlzIGRlbmllZC4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgcmVjb2duaXRpb24gPSBuZXcg
U3BlZWNoUmVjb2duaXRpb24oKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgcmVjb2du
aXRpb24uc3RhcnQoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgZXZlbnQuZXJyb3Ig
aXMgIm5vdC1hbGxvd2VkIgorUEFTUyBldmVudC5tZXNzYWdlIGlzICJwZXJtaXNzaW9uIGNoZWNr
IGZhaWxzIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlz
c2lvbi1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJt
aXNzaW9uLWVycm9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2ZTlmM2E3NzY0MDlhYTNkZjQxOTJiZmJj
NTg3NTkwMTVlMzZjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
cmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0
IGVycm9yIGV2ZW50IGlzIGZpcmVkIHdoZW4gcGVybWlzc2lvbiBpcyBkZW5pZWQuIik7CisKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIHRl
c3RSdW5uZXIuc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGZhbHNlKTsK
K30KKworc2hvdWxkTm90VGhyb3coInJlY29nbml0aW9uID0gbmV3IFNwZWVjaFJlY29nbml0aW9u
KCkiKTsKK3Nob3VsZE5vdFRocm93KCJyZWNvZ25pdGlvbi5zdGFydCgpIik7CityZWNvZ25pdGlv
bi5vbmVycm9yID0gKGV2ZW50KSA9PiB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVu
dC5lcnJvciIsICJub3QtYWxsb3dlZCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZl
bnQubWVzc2FnZSIsICJwZXJtaXNzaW9uIGNoZWNrIGZhaWxzIik7CisKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCAwZjgwYWNmMGE2ZjZlNDRiNmYwZTQ1NzgzMzlmNjlkNGEyYTAyYTczLi4yZjNhYTljODVhMzNk
MTkwYmU3Y2QwOWY4OGQxNGM4MDk1ODA5ODlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtODIxLDQgKzgyMSw1IEBAIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvY2xvc2VkLXBvcnQtZGVsYXkuaHRtbCBbIFBhc3MgXQogCiAjIFdlYktpdDIg
b25seS4KIGpzL3Rocm93LWxhcmdlLXN0cmluZy1vb20uaHRtbCBbIFBhc3MgXQotZnVsbHNjcmVl
bi9mdWxsLXNjcmVlbi1lbnRlci13aGlsZS1leGl0aW5nLmh0bWwgWyBQYXNzIF0KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCitmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVudGVyLXdoaWxlLWV4
aXRpbmcuaHRtbCBbIFBhc3MgXQorZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVy
cm9yLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413664</attachid>
            <date>2020-11-09 22:14:35 -0800</date>
            <delta_ts>2020-11-09 23:43:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201109221433.patch</filename>
            <type>text/plain</type>
            <size>123877</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRiY2QyNGY5YjcxNzVhZjUwNzhhNzJj
ZDA1MGJiNzJmYTI1YzMwNWQuLjI0NzYwYzZlYWIxMWRhMTM1OTNiZDRiMzI4YzJhN2JjYTBlZmI2
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMTEtMDkgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1Bs
YXRmb3JtSGF2ZS5oOgorCiAyMDIwLTExLTA5ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2OTYwMy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBiZWIzYTZiNzJiYjJiZDUyMDZhNGQyNGM0OWM3MTJiNTA3YjdjZjdlLi4yYTc2YjY0Zjk1ZDNk
M2IxYTczMTY3ZjhkMDgyNzExNDliNGM2OGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMjAtMTEtMDkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVy
bWlzc2lvbi1lcnJvci5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnRS
ZWNvZ25pdGlvbik6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6
Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dDo6Y2xpZW50T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3RJbmZvOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjplcnJvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZTo6cmVzdWx0IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oOgorICAgICAgICAqIHBhZ2UvRHVtbXlTcGVlY2hSZWNv
Z25pdGlvblByb3ZpZGVyLmg6CisKIDIwMjAtMTEtMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fp
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRoZSBsaWZlIGN5
Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBOYXRpdmVJbWFn
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA4OWRmM2NkZjZmN2Y1NzFhZDM5MjJjMjQyMzdjMDY3NGZiMTdkYzYzLi40
YmYzYzgzMmUwNzMxNDVmZDViY2I3OWU2Njc4MjFhOGRlNTdiNGQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEwNyBAQAorMjAyMC0xMS0wOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3IgU3BlZWNoUmVj
b2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxODQ3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMjI2Mzg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIsIHdoaWNoIGNoZWNrcyBhbmQgcmVxdWVzdHMgc3BlZWNo
IHJlY29nbml0aW9uIHBlcm1pc3Npb25zIGJlZm9yZSAKKyAgICAgICAgd2UgYWN0dWFsbHkgc3Rh
cnQgY2FwdHVyaW5nIGF1ZGlvIGFuZCBwZXJmb3JtIHJlY29nbml0aW9uLiBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyIGlzIHBlci1wYWdlLCBsaWtlCisgICAgICAgIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyLiBUaGUgY2hlY2tzIGluY2x1ZGU6CisgICAgICAgIDEuIFNhbmRib3gg
cmVxdWlyZW1lbnQgZm9yIG1pY3JvcGhvbmUKKyAgICAgICAgMi4gVENDIGNoZWNrIGZvciBtaWNy
b3Bob25lCisgICAgICAgIDMuIFRDQyBjaGVjayBmb3IgU0ZTcGVlY2hSZWNvZ25pemVyCisgICAg
ICAgIDQuIFVzZXIgcGVybWlzc2lvbiBvbiBzcGVlY2ggcmVjb2duaXRpb24gZm9yIG9yaWdpbnMK
KworICAgICAgICBBZGQgYSBkZWxlZ2F0ZSBmdW5jdGlvbiBmb3IgcmVxdWVzdGluZyB1c2VyIHBl
cm1pc3Npb24sIHdoaWNoIGlzIGRlbmllZCBieSBkZWZhdWx0LgorCisgICAgICAgIFRlc3Q6IGZh
c3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCisKKyAgICAgICAgKiBT
aGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoK
KyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGll
bnQ6OmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNsaWVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tHZXRU
eXBlSUQpOgorICAgICAgICAoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0Nv
bXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTWVkaWFQ
ZXJtaXNzaW9uVXRpbGl0aWVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9N
ZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpyZXF1
ZXN0QVZDYXB0dXJlQWNjZXNzRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrQVZDYXB0
dXJlQWNjZXNzRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrU2FuZGJveFJlcXVpcmVt
ZW50Rm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrVXNhZ2VEZXNjcmlwdGlvblN0cmlu
Z0ZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydFByb2Nlc3NpbmdSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tN
aWNyb3Bob25lQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0
U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1
ZXN0VXNlclBlcm1pc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChX
ZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpwZXJtaXR0ZWRUb0NhcHR1cmVB
dWRpbyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5OjpwZXJtaXR0ZWRUb0NhcHR1cmVWaWRlbyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lzdGVtVmFsaWRhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OnJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2Nv
YS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKToKKyAgICAg
ICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6flNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnROZXh0UmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNvbnRpbnVl
UHJvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVzZXQpOgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydFByb2Nlc3Np
bmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZp
Y2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpyZXF1ZXN0TWljcm9waG9uZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNl
cnZpY2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyOjpyZXF1ZXN0VXNlclBlcm1pc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Ojpj
b21wbGV0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3Q6Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3Q6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2s6OmNvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2s6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQpOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQpOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVtb3ZlUGVuZGluZ1JlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnRQb2Nlc3NpbmdSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmNvbnRpbnVl
UHJvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6c2VuZFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpzdG9wUHJvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VNYWluRG9jdW1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcik6CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpkaWRSZWNlaXZlVXBkYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5oOgorCiAyMDIwLTExLTA5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQ29udHJvbCB0aGUgbGlmZSBjeWNsZSBvZiB0aGUg
cGxhdGZvcm0gaW1hZ2UgYnkgYSBuZXcgY2xhc3MgbmFtZWQgTmF0aXZlSW1hZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZv
cm1IYXZlLmgKaW5kZXggMjAzZThlYzdkNjE1ZTg3NWYzYjMxNDVmMmY4YmRkMWU1YjdiMDgzZC4u
OTNlN2I0NTM4NWFlODg3MDU4ZWQ2ZjRkMDZlZDc1MmVmMmIxODAzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1I
YXZlLmgKQEAgLTc1NSwzICs3NTUsMTEgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAh
UExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAjZGVmaW5lIEhBVkVfQ05D
T05UQUNUUElDS0VSVklFV0NPTlRST0xMRVIgMQogI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1Mp
IHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkKKyNkZWZpbmUgSEFWRV9TUEVFQ0hSRUNP
R05JWkVSIDEKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRB
TFlTVCkgfHwgUExBVEZPUk0oTUFDKQorI2RlZmluZSBIQVZFX0FWQ0FQVFVSRURFVklDRSAxCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uLmNwcAppbmRleCA1MWEzMmNkYWFjYWExZWQwMTE0Mjc2N2QyMmUzMDI1MjZkZWJmNTk1
Li5mMTE3YzFmYjFiNWJkMDRhZTc1NTI1NjVmYmFhODg5MWM1YzFhZWJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2du
aXRpb24uaCIKIAorI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTY5LDcg
KzcwLDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gU3BlZWNoUmVjb2duaXRpb246OnN0YXJ0UmVjb2du
aXRpb24oKQogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgVW5rbm93bkVycm9yLCAiUmVjb2duaXRpb24gZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGNvbm5l
Y3Rpb24iX3MgfTsKIAotICAgIG1fY29ubmVjdGlvbi0+c3RhcnQoaWRlbnRpZmllcigpLCBtX2xh
bmcsIG1fY29udGludW91cywgbV9pbnRlcmltUmVzdWx0cywgbV9tYXhBbHRlcm5hdGl2ZXMpOwor
ICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c3RhcnQoaWRlbnRpZmllcigpLCBtX2xhbmcs
IG1fY29udGludW91cywgbV9pbnRlcmltUmVzdWx0cywgbV9tYXhBbHRlcm5hdGl2ZXMsIENsaWVu
dE9yaWdpbiB7IGRvY3VtZW50LnRvcE9yaWdpbigpLmRhdGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW4oKS5kYXRhKCkgfSk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpTdGFydGluZzsKICAgICBy
ZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAppbmRleCAzZmQyZDMzYWNhMDIwNTI2
MzQwNThkMGZiNTY1MmViNzAwN2ZhNTJhLi42OWVlYmMyOTNkNWI3ZGUxZTM4Y2VlYWQyYTNlZTM4
ZjAwZDFjYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaApAQCAtMzEsMTUgKzMxLDE2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50OwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU7CitzdHJ1Y3QgQ2xpZW50T3JpZ2lu
OwogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRl
ZDxTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5T
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJDbGllbnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50JikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVz
dWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0
YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRf
dCBtYXhBbHRlcm5hdGl2ZXMsIENsaWVudE9yaWdpbiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHN0b3AoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBhYm9ydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoY29uc3Qg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVVcGRhdGUoU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmJikgPSAwOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5jcHAKaW5kZXggNGE1ZThjMTYzMDNjMTg2NWMy
YjFmZmNlOWI1NmVlMjYyMDNhN2ZjNS4uZDNiZDdhOTRhNDJiOWQ1ZTA1OTIwYzViZmU3ZGJjNDRh
OTE4ODdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuY3BwCkBAIC0yOCwxMSArMjgsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IFNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdDo6Y3JlYXRlKFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8mJiBy
ZXF1ZXN0SW5mbykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0SW5mbykpKTsKLX0KLQogU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0OjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
SW5mbyYmIHJlcXVlc3RJbmZvKQogICAgIDogbV9pbmZvKFdURk1vdmUocmVxdWVzdEluZm8pKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3QuaAppbmRleCA1Y2VlYTAxYzczODY1NTZkNDI1MWY4YzhiOTVjMzEyNGJh
ZmM2MDEyLi4zOTZkYjI2OTg0ZjkxMjQ2ODI0YjA2NTg2NjVjYTczZTdiYzRjY2QxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3QuaApAQCAtMzAsMTkgKzMwLDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0PiB7CitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IGNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3RJbmZvJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYpOwogCiAgICAgU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pbmZvLmNsaWVudElkZW50aWZpZXI7IH0KICAgICBjb25zdCBTdHJp
bmcmIGxhbmcoKSBjb25zdCB7IHJldHVybiBtX2luZm8ubGFuZzsgfQogICAgIGJvb2wgY29udGlu
dW91cygpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5jb250aW51b3VzOzsgfQogICAgIGJvb2wgaW50
ZXJpbVJlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX2luZm8uaW50ZXJpbVJlc3VsdHM7IH0KICAg
ICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMoKSBjb25zdCB7IHJldHVybiBtX2luZm8ubWF4QWx0
ZXJuYXRpdmVzOyB9CisgICAgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1faW5mby5jbGllbnRPcmlnaW47IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsKLQog
ICAgIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gbV9pbmZvOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
SW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mby5oCmluZGV4IGFiMWUxYWU2ZWYzODg5OGMyMWEyYTlkZjdhZjFmMDA3ZTI0YjE3
ZDAuLjFlZmU5ZTA2NDZlNzQ3Y2I1NWQ3Y2NiMGY3YjE4ZmY1ZTBiM2M0YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3RJbmZvLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDYgKzM2
LDcgQEAgc3RydWN0IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gewogICAgIGJvb2wgY29u
dGludW91cyB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcmltUmVzdWx0cyB7IGZhbHNlIH07CiAg
ICAgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzIHsgMSB9OworICAgIENsaWVudE9yaWdpbiBjbGll
bnRPcmlnaW47CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8+IGRlY29kZShEZWNvZGVyJik7CkBAIC00Myw3
ICs0NSw3IEBAIHN0cnVjdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIHsKIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CiB2b2lkIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgY2xpZW50SWRlbnRp
ZmllciA8PCBsYW5nIDw8IGNvbnRpbnVvdXMgPDwgaW50ZXJpbVJlc3VsdHMgPDwgbWF4QWx0ZXJu
YXRpdmVzOworICAgIGVuY29kZXIgPDwgY2xpZW50SWRlbnRpZmllciA8PCBsYW5nIDw8IGNvbnRp
bnVvdXMgPDwgaW50ZXJpbVJlc3VsdHMgPDwgbWF4QWx0ZXJuYXRpdmVzIDw8IGNsaWVudE9yaWdp
bjsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTc0LDEyICs3NiwxOCBAQCBPcHRp
b25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBTcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3RJbmZvOjpkZWNvZGUoRGVjbwogICAgIGlmICghbWF4QWx0ZXJuYXRpdmVzKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgT3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBjbGllbnRP
cmlnaW47CisgICAgZGVjb2RlciA+PiBjbGllbnRPcmlnaW47CisgICAgaWYgKCFjbGllbnRPcmln
aW4pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICByZXR1cm4ge3sKICAgICAg
ICAgV1RGTW92ZSgqY2xpZW50SWRlbnRpZmllciksCiAgICAgICAgIFdURk1vdmUoKmxhbmcpLAog
ICAgICAgICBXVEZNb3ZlKCpjb250aW51b3VzKSwKICAgICAgICAgV1RGTW92ZSgqaW50ZXJpbVJl
c3VsdHMpLAotICAgICAgICBXVEZNb3ZlKCptYXhBbHRlcm5hdGl2ZXMpCisgICAgICAgIFdURk1v
dmUoKm1heEFsdGVybmF0aXZlcyksCisgICAgICAgIFdURk1vdmUoKmNsaWVudE9yaWdpbikKICAg
ICB9fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwCmluZGV4IDUzNGVkYTNkMjQ3N2VlMWM2ZjE3ZWM2
YWYxNzkzMjZiYjc5ZjAyMDcuLjlhOWE3ZDkyMDY5NjU1YzQ1NzE2MDdkZGExOGM0ZTZiMzMwZjcy
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uVXBkYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgU3RyaW5nIGNvbnZlcnRF
bnVtZXJhdGlvblRvU3RyaW5nKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSBlbnVtZXJhdGlv
blZhbHVlKQogCiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xp
ZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIHR5cGUpCiB7Ci0gICAg
cmV0dXJuIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIHsgY2xpZW50SWRlbnRpZmllciwgdHlwZSB9
OworICAgIHJldHVybiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7IGNsaWVudElkZW50aWZpZXIs
IHR5cGUsIFdURjo6TW9ub3N0YXRlKCkgfTsKIH0KIAogU3BlZWNoUmVjb2duaXRpb25VcGRhdGUg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgY29uc3QgU3BlZWNoUmVj
b2duaXRpb25FcnJvciYgZXJyb3IpCkBAIC04Myw3ICs4Myw3IEBAIFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllCiBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpl
cnJvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9jb250ZW50LAotICAg
ICAgICBbXSAoU3BlZWNoUmVjb2duaXRpb25FcnJvciYgZXJyb3IpIHsgcmV0dXJuIGVycm9yOyB9
LAorICAgICAgICBbXSAoY29uc3QgU3BlZWNoUmVjb2duaXRpb25FcnJvciYgZXJyb3IpIHsgcmV0
dXJuIGVycm9yOyB9LAogICAgICAgICBbXSAoY29uc3QgYXV0byYpIHsgcmV0dXJuIFNwZWVjaFJl
Y29nbml0aW9uRXJyb3IoKTsgfQogICAgICk7CiB9CkBAIC05MSw3ICs5MSw3IEBAIFNwZWVjaFJl
Y29nbml0aW9uRXJyb3IgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmVycm9yKCkgY29uc3QKIFZl
Y3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+IFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
OjpyZXN1bHQoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fY29udGVudCwK
LSAgICAgICAgW10gKFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+JiBkYXRhKSB7
IHJldHVybiBkYXRhOyB9LAorICAgICAgICBbXSAoY29uc3QgVmVjdG9yPFNwZWVjaFJlY29nbml0
aW9uUmVzdWx0RGF0YT4mIGRhdGEpIHsgcmV0dXJuIGRhdGE7IH0sCiAgICAgICAgIFtdIChjb25z
dCBhdXRvJikgeyByZXR1cm4gVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4geyB9
OyB9CiAgICAgKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCmluZGV4IDNhODJiZjZiYWY1NGNlMGM0YjEzMzRl
ZjZmOGI1ODkzZjNiODk4MmUuLjg5MTQ5MTc5M2Y0ZTAxZWMyZmY2MDEwN2NiNDg1ZjQ4OGZhNDNl
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uVXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25VcGRhdGUuaApAQCAtNTIsOCArNTIsOCBAQCBTdHJpbmcgY29udmVydEVudW1l
cmF0aW9uVG9TdHJpbmcoU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlKTsKIGNsYXNzIFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSk7Ci0gICAgc3Rh
dGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIGNyZWF0ZUVycm9yKFNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXJyb3Im
KTsKLSAgICBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlUmVzdWx0KFNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdERhdGE+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlIGNyZWF0ZUVycm9yKFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXJyb3ImKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlUmVz
dWx0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFZl
Y3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+Jik7CiAKICAgICBTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2NsaWVudElkZW50aWZpZXI7IH0KICAgICBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpAQCAtNjUsNyArNjUsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdXNpbmcgQ29udGVudCA9IFZhcmlhbnQ8V1RGOjpNb25v
c3RhdGUsIFNwZWVjaFJlY29nbml0aW9uRXJyb3IsIFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdERhdGE+PjsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIENvbnRlbnQgPSBXVEY6Ok1vbm9zdGF0ZSgpKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZShTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUs
IENvbnRlbnQpOwogCiAgICAgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllciBtX2NsaWVudElkZW50aWZpZXI7CiAgICAgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
IG1fdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNv
Z25pdGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2du
aXRpb25Qcm92aWRlci5oCmluZGV4IGNmOWU3MmI5M2MwNjRhNTVkZGRmYWI3YjNjYWZiNDg5MGUw
MzVmNDYuLjI0MGFhM2Q0ODRhOTczYjQ0MTEyYWVmNjFlOGVhYWE4NDdiNThkMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIu
aApAQCAtMzksMTAgKzM5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IER1bW15U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uKCkpOwogICAgICAgICB9CiAg
ICAgICAgIHZvaWQgcmVnaXN0ZXJDbGllbnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50JikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgYm9vbCwgYm9vbCwgdWludDY0
X3QpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wsIHVpbnQ2NF90
LCBDbGllbnRPcmlnaW4mJikgZmluYWwgeyB9CiAgICAgICAgIHZvaWQgc3RvcChTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbCB7IH0KICAgICAgICAgdm9p
ZCBhYm9ydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5h
bCB7IH0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZSYmKSBmaW5hbCB7IH0KICAgICB9OwogICAgIER1bW15U3BlZWNo
UmVjb2duaXRpb25Qcm92aWRlcigpID0gZGVmYXVsdDsKICAgICBTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb24mIHNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQVBJT2JqZWN0LmgKaW5kZXggNmQwNjU2NDVkY2VlNjJlNTlkNTBkYmVmMzc0MzVhNDlhODBl
YjY4Mi4uY2QxY2FkOTZiNDAzMTJkYjNiMTg4ZGU3MWY2MDg4YmY3MjhmZDg3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTY1LDYgKzE2NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgUnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1bkphdmFT
Y3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1bkphdmFTY3JpcHRQcm9tcHRS
ZXN1bHRMaXN0ZW5lciwKKyAgICAgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2ssCiAgICAgICAgIFRleHRDaGVja2VyLAogICAgICAgICBVUkxTY2hlbWVUYXNrLAogICAgICAg
ICBVc2VyQ29udGVudENvbnRyb2xsZXIsCkBAIC00MTAsNiArNDExLDcgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxBUEk6Ok9iamVjdDo6VHlwZT4gewogICAgICAgICBBUEk6Ok9iamVj
dDo6VHlwZTo6UnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIEFQSTo6
T2JqZWN0OjpUeXBlOjpSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVyLAogICAgICAg
ICBBUEk6Ok9iamVjdDo6VHlwZTo6UnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExpc3RlbmVyLAor
ICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2ssCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpUZXh0Q2hlY2tlciwKICAgICAgICAg
QVBJOjpPYmplY3Q6OlR5cGU6OlVSTFNjaGVtZVRhc2ssCiAgICAgICAgIEFQSTo6T2JqZWN0OjpU
eXBlOjpVc2VyQ29udGVudENvbnRyb2xsZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5o
CmluZGV4IDllODJlNTYwMDE4N2VjMWNmOGFmOWJlZTc5ZTcxZDBlOGQ3ZmQxNWEuLjg0ZWU2YzI4
OGY2ZDJlYmQ1MWZhNzNlYTcyNzA4ZjMyOTQ2YmRkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L1dLQmFzZS5oCkBAIC0xNDEsNiArMTQxLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tXZWJzaXRlRGF0YUNvbmZpZ3VyYXRpb25TdG9yZSogV0tXZWJzaXRlRGF0YVN0b3JlQ28KIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2Vic2l0ZURhdGFTdG9yZSogV0tXZWJzaXRlRGF0
YVN0b3JlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tXZWJzaXRlUG9saWNpZXMq
IFdLV2Vic2l0ZVBvbGljaWVzUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tXaW5k
b3dGZWF0dXJlcyogV0tXaW5kb3dGZWF0dXJlc1JlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sqIFdLU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWY7CiAKIC8qIFdlYktpdDIgQnVuZGxlIHR5cGVzICov
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CmluZGV4IDgzZDI4MGM3NWVmNWY1YmIwYTJlYjZkMTFhYThjMGZhOTE5Yjc0
ZDAuLmE5MGJiYTA5Y2M3NGVlYmEwNWIwM2QzZjZlNDhkNzU1ZDEwMmZhYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dApAQCAtMjkwLDYgKzI5MCw3IEBAIFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcAog
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAogVUlQcm9jZXNzL1N1c3BlbmRl
ZFBhZ2VQcm94eS5jcHAKIFVJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5jcHAKK1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAogVUlQcm9jZXNz
L1RleHRDaGVja2VyLmNwcAogVUlQcm9jZXNzL1RleHRDaGVja2VyQ29tcGxldGlvbi5jcHAKIFVJ
UHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAKQEAgLTQwMyw2ICs0MDQs
NyBAQCBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9X
S1Byb3RlY3Rpb25TcGFjZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5h
Z2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRlUmVmLmNwcAorVUlQcm9jZXNz
L0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwCiBVSVByb2Nl
c3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50
Q29udHJvbGxlclJlZi5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50RXh0ZW5zaW9u
U3RvcmVSZWYuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMDg0ZDUxMzUyZDQ0YTQ1MDk0
OWIzZmJkMWQxZDc2MTM1ZmIyYmViMi4uNjNiZDQwYzNlZjYwMWVlMTQ5NGExYjQ3MTRhY2UwZTFm
YTE3NDhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMzczLDEyICszNzMsMTQgQEAgVUlQ
cm9jZXNzL0NvY29hL0dsb2JhbEZpbmRJblBhZ2VTdGF0ZS5tbQogVUlQcm9jZXNzL0NvY29hL0lj
b25Mb2FkaW5nRGVsZWdhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQubW0KIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVV0aWxpdGllcy5tbQorVUlQ
cm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQogVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2Eu
bW0KIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KIFVJUHJv
Y2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1NhZmVC
cm93c2luZ1dhcm5pbmdDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1Nlc3Npb25TdGF0ZUNvZGlu
Zy5tbQorVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJD
b2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0K
IFVJUHJvY2Vzcy9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQu
aAppbmRleCBhYTdkODljMDFlNzM1MjBjZTNlZTA0MjI2YjlhZTg1OTcwYmZhYTZlLi5hMGRiYTgz
NzI3YTk2YWQ2MTA0N2I5ZWQxNWI2NGIzMTM0ZWVkYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtMjAyLDYgKzIwMiw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgfQog
CisgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCBiNTJjNDRiYWVhOWFjZjlm
YzAzMzJkNWE5ZjM3MzU2ZTlkMjM4NjI5Li4xOGNiZmQ1Yjc0ZWI4NzcwYTU3OGYxNWM4YTAxNjE0
OTkwMjE0NTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaApA
QCAtNzksNiArNzksNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI7CiBj
bGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsK
IGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworY2xhc3MgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQ
cm94eTsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CiBjbGFzcyBXZWJC
YWNrRm9yd2FyZExpc3Q7CkBAIC0xNTIsNiArMTUzLDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdL
UHJlZmVyZW5jZXNSZWYsIFdlYlByZWZlcmVuY2VzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJv
dGVjdGlvblNwYWNlUmVmLCBXZWJQcm90ZWN0aW9uU3BhY2UpCiBXS19BRERfQVBJX01BUFBJTkco
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclJlZiwgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tTZXNzaW9uU3RhdGVSZWYsIEFQSTo6
U2Vzc2lvblN0YXRlKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2tSZWYsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKQog
V0tfQUREX0FQSV9NQVBQSU5HKFdLVGV4dENoZWNrZXJSZWYsIFdlYlRleHRDaGVja2VyKQogV0tf
QUREX0FQSV9NQVBQSU5HKFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJDb250ZW50RXh0ZW5z
aW9uU3RvcmVSZWYsIEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA0MzY5Y2RkODI1YjUxNTdmYjAxMGMzZjgxYWU3
OGU2NjBkYWE3NGZjLi41ZTEwOWQ1NzllYjc1ZjFkOGZiZmIxZDAzYThmOGMwZDdiY2U2ZGZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTYzLDYgKzYzLDcg
QEAKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb3JtYXRpb24u
aCIKICNpbmNsdWRlICJQcmludEluZm8uaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tQ
YWdlUG9saWN5Q2xpZW50SW50ZXJuYWwuaCIKICNpbmNsdWRlICJXS1BhZ2VSZW5kZXJpbmdQcm9n
cmVzc0V2ZW50c0ludGVybmFsLmgiCkBAIC0xMTUsNyArMTE2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVBvbGljeUNsaWVudEJhc2U+IHsKIH07CiAKIHRlbXBsYXRl
PD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VVSUNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlD
bGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdlVUlDbGllbnRWNCwgV0tQYWdlVUlDbGll
bnRWNSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQYWdlVUlDbGllbnRWNywgV0tQYWdlVUlDbGllbnRW
OCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQYWdlVUlDbGllbnRWMTAsIFdLUGFnZVVJQ2xpZW50VjEx
LCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQYWdlVUlDbGllbnRWMTMsIFdLUGFnZVVJQ2xpZW50VjE0
PiBWZXJzaW9uczsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQ
YWdlVUlDbGllbnRWMSwgV0tQYWdlVUlDbGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdl
VUlDbGllbnRWNCwgV0tQYWdlVUlDbGllbnRWNSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQYWdlVUlD
bGllbnRWNywgV0tQYWdlVUlDbGllbnRWOCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQYWdlVUlDbGll
bnRWMTAsIFdLUGFnZVVJQ2xpZW50VjExLCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQYWdlVUlDbGll
bnRWMTMsIFdLUGFnZVVJQ2xpZW50VjE0LCBXS1BhZ2VVSUNsaWVudFYxNT4gVmVyc2lvbnM7CiB9
OwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0yMTEwLDYgKzIxMTEsMTMgQEAgdm9p
ZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJ
Q2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktp
dDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6UHJlc2VudGVkKTsKICAgICAgICAgfQog
I2VuZGlmCisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIG9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
ZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lG
b3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKCZvcmlnaW4pLCB0b0FQ
SShTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKS5wdHIoKSkpOworICAgICAgICB9CiAgICAgfTsKIAogICAgIHRvSW1w
bChwYWdlUmVmKS0+c2V0VUlDbGllbnQobWFrZVVuaXF1ZTxVSUNsaWVudD4od2tDbGllbnQpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCmluZGV4
IGI2Mzg4MTU1Y2QzMDM2ZTY2NjExMGYxOTI1NjE2YWZkMzdlODY4YmEuLjYzNjM1NTU2NGQwMGIx
MTIyYTg3ZTIyOWEzMGI5NGQ3ZTk5ZTRlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaApAQCAtMTM2LDYgKzEzNiw3IEBAIHR5cGVkZWYgdm9p
ZCAoKldLUGFnZURpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZUNh
bGxiYWNrKShXS1BhCiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VTaG91bGRBbGxvd0RldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uQWNjZXNzQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5
T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIAogdHlw
ZWRlZiB2b2lkICgqV0tQYWdlUnVuV2ViQXV0aGVudGljYXRpb25QYW5lbENhbGxiYWNrKSgpOwor
dHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTZWN1cml0eU9yaWdpblJl
ZiB0b3BPcmlnaW4sIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgY2Fs
bGJhY2spOwogCiAvLyBEZXByZWNhdGVkCiB0eXBlZGVmIFdLUGFnZVJlZiAoKldLUGFnZUNyZWF0
ZU5ld1BhZ2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwKShXS1BhZ2VSZWYgcGFnZSwg
V0tEaWN0aW9uYXJ5UmVmIGZlYXR1cmVzLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tF
dmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKQEAg
LTEzNTMsNiArMTM1NCwxMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMTQgewog
ICAgIFdLUGFnZVJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDsKIH0gV0tQYWdlVUlDbGll
bnRWMTQ7CiAKK3R5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjE1IHsKKyAgICBXS1BhZ2VV
SUNsaWVudEJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJhc2U7CisKKyAgICAvLyBWZXJzaW9uIDAuCisgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNh
bGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQ
YWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93UGFnZTsKKyAg
ICBXS1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNsb3NlOworICAgIFdLUGFnZVRha2VGb2N1c0NhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZUZvY3VzOworICAgIFdLUGFn
ZUZvY3VzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm9jdXM7CisgICAgV0tQYWdlVW5mb2N1c0NhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmZvY3VzOworICAgIFdLUGFnZVJ1bkphdmFT
Y3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgICAgcnVu
SmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICAgICBy
dW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZVJ1
bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICAg
ICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFn
ZVNldFN0YXR1c1RleHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0U3RhdHVzVGV4dDsKKyAgICBXS1BhZ2VNb3VzZURpZE1vdmVPdmVyRWxlbWVudENh
bGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVt
ZW50X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlTWlzc2luZ1BsdWdpbkJ1dHRv
bkNsaWNrZWRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICBtaXNzaW5nUGx1Z2lu
QnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZURpZE5vdEhh
bmRsZUtleUV2ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlk
Tm90SGFuZGxlS2V5RXZlbnQ7CisgICAgV0tQYWdlRGlkTm90SGFuZGxlV2hlZWxFdmVudENhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWROb3RIYW5kbGVXaGVlbEV2ZW50
OworICAgIFdLUGFnZUdldFRvb2xiYXJzQXJlVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdG9vbGJhcnNBcmVWaXNpYmxlOworICAgIFdLUGFnZVNldFRvb2xi
YXJzQXJlVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
VG9vbGJhcnNBcmVWaXNpYmxlOworICAgIFdLUGFnZUdldE1lbnVCYXJJc1Zpc2libGVDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudUJhcklzVmlzaWJsZTsKKyAg
ICBXS1BhZ2VTZXRNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE1lbnVCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlR2V0U3RhdHVzQmFy
SXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNC
YXJJc1Zpc2libGU7CisgICAgV0tQYWdlU2V0U3RhdHVzQmFySXNWaXNpYmxlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0dXNCYXJJc1Zpc2libGU7CisgICAg
V0tQYWdlR2V0SXNSZXNpemFibGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpc1Jlc2l6YWJsZTsKKyAgICBXS1BhZ2VTZXRJc1Jlc2l6YWJsZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzUmVzaXphYmxlOwor
ICAgIFdLUGFnZUdldFdpbmRvd0ZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2V0V2luZG93RnJhbWU7CisgICAgV0tQYWdlU2V0V2luZG93RnJhbWVD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRXaW5kb3dG
cmFtZTsKKyAgICBXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxDYWxsYmFja19kZXBy
ZWNhdGVkRm9yVXNlV2l0aFY2ICAgIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXByZWNh
dGVkRm9yVXNlV2l0aFY2OworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRHJhdzsKKyAgICBXS1BhZ2VVSUNs
aWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhZ2VEaWRTY3JvbGw7CisgICAgV0tQYWdlRXhjZWVkZWREYXRhYmFzZVF1b3RhQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlZWRlZERhdGFiYXNlUXVvdGE7Cisg
ICAgV0tQYWdlUnVuT3BlblBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydW5PcGVuUGFuZWw7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgICBkZWNpZGVQb2xpY3lG
b3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZUhlYWRlckhlaWdodENh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVySGVp
Z2h0OworICAgIFdLUGFnZUZvb3RlckhlaWdodENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9vdGVySGVpZ2h0OworICAgIFdLUGFnZURyYXdIZWFkZXJD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0hl
YWRlcjsKKyAgICBXS1BhZ2VEcmF3Rm9vdGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRyYXdGb290ZXI7CisgICAgV0tQYWdlUHJpbnRGcmFtZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludEZy
YW1lOworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnVuTW9kYWw7CisgICAgdm9pZCogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQxOyAv
LyBVc2VkIHRvIGJlIGRpZENvbXBsZXRlUnViYmVyQmFuZEZvck1haW5GcmFtZQorICAgIFdLUGFn
ZVNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXJDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcjsKKyAgICB2b2lkKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo
b3VsZEludGVycnVwdEphdmFTY3JpcHRfdW5hdmFpbGFibGU7CisKKyAgICAvLyBWZXJzaW9uIDEu
CisgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEg
ICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjE7Cisg
ICAgV0tQYWdlTW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDsKKyAgICBXS1BhZ2VEZWNpZGVQ
b2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgIGRl
Y2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZVVu
YXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjEgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjE7
CisKKyAgICAvLyBWZXJzaW9uIDIuCisgICAgV0tQYWdlU2hvd0NvbG9yUGlja2VyQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q29sb3JQaWNrZXI7Cisg
ICAgV0tQYWdlSGlkZUNvbG9yUGlja2VyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoaWRlQ29sb3JQaWNrZXI7CisgICAgV0tQYWdlVW5hdmFpbGFibGVQbHVn
aW5CdXR0b25DbGlja2VkQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICB1bmF2YWlsYWJs
ZVBsdWdpbkJ1dHRvbkNsaWNrZWQ7CisKKyAgICAvLyBWZXJzaW9uIDMuCisgICAgV0tQYWdlUGlu
bmVkU3RhdGVEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwaW5uZWRTdGF0ZURpZENoYW5nZTsKKworICAgIC8vIFZlcnNpb24gNC4KKyAgICB2b2lkKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVudXNlZDI7IC8vIFVzZWQgdG8gYmUgZGlkQmVnaW5UcmFja2luZ1BvdGVudGlhbExvbmdN
b3VzZVByZXNzLgorICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkMzsgLy8gVXNlZCB0byBiZSBkaWRSZWNv
Z25pemVMb25nTW91c2VQcmVzcy4KKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDQ7IC8vIFVzZWQgdG8g
YmUgZGlkQ2FuY2VsVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcy4KKyAgICBXS1BhZ2VJ
c1BsYXlpbmdBdWRpb0RpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlOworCisgICAgLy8gVmVyc2lvbiA1LgorICAgIFdL
UGFnZURlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAg
ICAgICAgICAgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q7CisgICAg
V0tQYWdlRGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWRDbGlja0F1dG9GaWxsQnV0dG9uOworICAgIFdLUGFnZVJ1bkphdmFTY3Jp
cHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVuSmF2
YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CisgICAgV0tQYWdlUnVuSmF2YVNj
cmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBydW5K
YXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OworICAgIFdLUGFnZVJ1bkph
dmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAg
cnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OworICAgIHZvaWQqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4K
KworICAgIC8vIFZlcnNpb24gNi4KKyAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CisgICAg
V0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnQ7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENv
bmZpcm1DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5KYXZhU2Ny
aXB0Q29uZmlybTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHQ7CisgICAgV0tD
aGVja1VzZXJNZWRpYVBlcm1pc3Npb25DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW47CisKKyAgICAvLyBWZXJz
aW9uIDcuCisgICAgV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CisgICAg
V0tGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmU7CisKKyAgICAvLyBWZXJzaW9u
IDguCisgICAgV0tSZXF1ZXN0UG9pbnRlckxvY2tDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0UG9pbnRlckxvY2s7CisgICAgV0tEaWRMb3NlUG9p
bnRlckxvY2tDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWRMb3NlUG9pbnRlckxvY2s7CisKKyAgICAvLyBWZXJzaW9uIDkuCisgICAgV0tIYW5kbGVBdXRv
cGxheUV2ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
YW5kbGVBdXRvcGxheUV2ZW50OworCisgICAgLy8gVmVyc2lvbiAxMC4KKyAgICBXS0hhc1ZpZGVv
SW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
IGhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlOworICAgIFdLRGlkRXhjZWVkQmFj
a2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZENhbGxiYWNrICAgICAgICAgZGlk
RXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDsKKworICAgIC8v
IFZlcnNpb24gMTEuCisgICAgV0tQYWdlRGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dv
cmRBcHBlYXJhbmNlQ2FsbGJhY2sgICAgICAgICBkaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQ
YXNzd29yZEFwcGVhcmFuY2U7CisKKyAgICAvLyBWZXJzaW9uIDEyLgorICAgIFdLUGFnZVJlcXVl
c3RTdG9yYWdlQWNjZXNzQ29uZmlybUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtOworCisgICAgLy8gVmVyc2lvbiAxMy4KKyAgICBX
S1BhZ2VTaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ2FsbGJhY2sg
ICAgICAgICAgIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3M7CisK
KyAgICAvLyBWZXJzaW9uIDE0LgorICAgIFdLUGFnZVJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25Q
YW5lbDsKKworICAgIC8vIFZlcnNpb24gMTUuCisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICBkZWNpZGVQb2xpY3lG
b3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIAorfSBXS1BhZ2VVSUNs
aWVudFYxNTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNjOGY5YTM1ZGI4NDEx
ZTAzODVhN2FlMTU0OWEzOWFmODEzMmVkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
Y3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIgorCisjaW5j
bHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4g
dG9BUEkoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OkFQSVR5cGUpOworfQor
Cit2b2lkIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tDb21wbGV0ZShXS1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIHNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrLCBib29sIGdyYW50ZWQpCit7CisgICAgcmV0dXJuIHRvSW1wbChzcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayktPmNvbXBsZXRlKGdyYW50ZWQpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4YWVh
ZmM2OTg0YmE5NmY1NDg5MmU3MzJhZmVhM2EwNjNjOWM3MmQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVy
biAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKHZvaWQpOworCitXS19FWFBPUlQgdm9pZCBXS1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUoV0tTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBzcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjaywgYm9vbCBncmFudGVkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRl
UHJpdmF0ZS5oCmluZGV4IGQxZWFlMjAxZTY1NDJmNGZhYjYwMTk4MGRjNjYxMjQ5MTMxOTc5M2Yu
LmYwYTliYTQxZjUxNWVmNzE4Zjc0NmM3ZmRmZmZlYTRhMzVlOGRlMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUu
aApAQCAtMTUyLDYgKzE1Miw4IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAKIC0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2lsbFNoYXJlQWN0aXZpdHlJdGVtczooTlNBcnJh
eSAqKWFjdGl2aXR5SXRlbXMgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogCist
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gZGVjaXNp
b25IYW5kbGVyOih2b2lkICheKShCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlciBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAjaWYg
VEFSR0VUX09TX0lQSE9ORQogCiAtIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHNob3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1l
bnRJbmZvICopZWxlbWVudCBXS19BUElfQVZBSUxBQkxFKGlvcyg5LjApKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWZiNGY1NWQwYmU5YmYzZmFlNjlkNTZkNjVlM2Q4Mjg3ZmFiMDI3ZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVy
bWlzc2lvblV0aWxpdGllcy5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWTWVkaWFGb3JtYXQuaD4KKyNpbXBvcnQg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBNZWRpYVBlcm1pc3Npb25UeXBlIHsKKyAgICBB
dWRpbywKKyAgICBWaWRlbworfTsKKworZW51bSBjbGFzcyBNZWRpYVBlcm1pc3Npb25SZXN1bHQg
eworICAgIERlbmllZCwKKyAgICBHcmFudGVkLAorICAgIFVua25vd24KK307CisKKyNpZiBIQVZF
KEFWQ0FQVFVSRURFVklDRSkKK3ZvaWQgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVk
aWFQZXJtaXNzaW9uVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQp
PiYmKTsKK01lZGlhUGVybWlzc2lvblJlc3VsdCBjaGVja0FWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUo
TWVkaWFQZXJtaXNzaW9uVHlwZSk7CisjZW5kaWYKKworYm9vbCBjaGVja1NhbmRib3hSZXF1aXJl
bWVudEZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSk7Citib29sIGNoZWNrVXNhZ2VEZXNjcmlw
dGlvblN0cmluZ0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSk7CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9NZWRp
YVBlcm1pc3Npb25VdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9N
ZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhlY2RiOGJmNzA5MmU4NzFj
Y2NhMTRlODRmYmMwZmE4ZjJhNjY0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQpAQCAtMCwwICsxLDEx
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTWVkaWFQZXJt
aXNzaW9uVXRpbGl0aWVzLmgiCisKKyNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKKyNpbXBv
cnQgIlRDQ1NQSS5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvc3Bp
L2Rhcndpbi9TYW5kYm94U1BJLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29m
dExpbmsuaD4KKworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFRDQykKK1NPRlRfTElOSyhU
Q0MsIFRDQ0FjY2Vzc1ByZWZsaWdodCwgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0LCAoQ0ZTdHJp
bmdSZWYgc2VydmljZSwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpLCAoc2VydmljZSwgb3B0aW9u
cykpCitTT0ZUX0xJTktfQ09OU1RBTlQoVENDLCBrVENDU2VydmljZU1pY3JvcGhvbmUsIENGU3Ry
aW5nUmVmKQorU09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RDQ1NlcnZpY2VDYW1lcmEsIENGU3Ry
aW5nUmVmKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2lmIEhBVkUoQVZDQVBUVVJFREVWSUNF
KQorCit2b2lkIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5
cGUgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBBVk1l
ZGlhVHlwZSBtZWRpYVR5cGUgPSB0eXBlID09IE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvID8g
QVZNZWRpYVR5cGVBdWRpbyA6IEFWTWVkaWFUeXBlVmlkZW87CisgICAgYXV0byBkZWNpc2lvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKEJPT0wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChpc01h
aW5UaHJlYWQoKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBhdXRo
b3JpemVkXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9y
aXplZCk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIFtQQUw6OmdldEFWQ2FwdHVyZURldmlj
ZUNsYXNzKCkgcmVxdWVzdEFjY2Vzc0Zvck1lZGlhVHlwZTptZWRpYVR5cGUgY29tcGxldGlvbkhh
bmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKK30KKworTWVkaWFQZXJtaXNzaW9uUmVzdWx0
IGNoZWNrQVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlIHR5cGUpCit7
CisgICAgQVZNZWRpYVR5cGUgbWVkaWFUeXBlID0gdHlwZSA9PSBNZWRpYVBlcm1pc3Npb25UeXBl
OjpBdWRpbyA/IEFWTWVkaWFUeXBlQXVkaW8gOiBBVk1lZGlhVHlwZVZpZGVvOworICAgIGF1dG8g
YXV0aG9yaXphdGlvblN0YXR1cyA9IFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgYXV0
aG9yaXphdGlvblN0YXR1c0Zvck1lZGlhVHlwZTptZWRpYVR5cGVdOworICAgIGlmIChhdXRob3Jp
emF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCB8fCBhdXRob3JpemF0
aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpCisgICAgICAgIHJl
dHVybiBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkRlbmllZDsKKyAgICBpZiAoYXV0aG9yaXphdGlv
blN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkKQorICAgICAgICBy
ZXR1cm4gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duOworICAgIHJldHVybiBNZWRpYVBl
cm1pc3Npb25SZXN1bHQ6OkdyYW50ZWQ7Cit9CisKKyNlbmRpZgorCitib29sIGNoZWNrU2FuZGJv
eFJlcXVpcmVtZW50Rm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlIHR5cGUpCit7CisjaWYgUExB
VEZPUk0oTUFDKQorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBhdWRpb0ZsYWc7CisgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIHZpZGVvRmxhZzsKKyAgICBzdGF0aWMgYm9vbCBpc0F1ZGlvRW50
aXRsZWQgPSB0cnVlOworICAgIHN0YXRpYyBib29sIGlzVmlkZW9FbnRpdGxlZCA9IHRydWU7Cisg
ICAgCisgICAgYXV0byBjaGVja0Z1bmN0aW9uID0gW10oY29uc3QgY2hhciogb3BlcmF0aW9uLCBi
b29sKiBlbnRpdGxlZCkgeworICAgICAgICBpZiAoIWN1cnJlbnRQcm9jZXNzSXNTYW5kYm94ZWQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpbnQgcmVzdWx0ID0gc2FuZGJveF9j
aGVjayhnZXRwaWQoKSwgb3BlcmF0aW9uLCBTQU5EQk9YX0ZJTFRFUl9OT05FKTsKKyAgICAgICAg
aWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3IgY2hlY2tp
bmcgJyVzJyBzYW5kYm94IGFjY2VzcywgZXJybm89JWxkIiwgb3BlcmF0aW9uLCAobG9uZyllcnJu
byk7CisgICAgICAgICplbnRpdGxlZCA9ICFyZXN1bHQ7CisgICAgfTsKKworICAgIGlmICh0eXBl
ID09IE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKSB7CisgICAgICAgIHN0ZDo6Y2FsbF9vbmNl
KGF1ZGlvRmxhZywgY2hlY2tGdW5jdGlvbiwgImRldmljZS1taWNyb3Bob25lIiwgJmlzQXVkaW9F
bnRpdGxlZCk7CisgICAgICAgIHJldHVybiBpc0F1ZGlvRW50aXRsZWQ7CisgICAgfQorCisgICAg
c3RkOjpjYWxsX29uY2UodmlkZW9GbGFnLCBjaGVja0Z1bmN0aW9uLCAiZGV2aWNlLWNhbWVyYSIs
ICZpc1ZpZGVvRW50aXRsZWQpOworICAgIHJldHVybiBpc1ZpZGVvRW50aXRsZWQ7CisjZW5kaWYK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdG
b3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGUgdHlwZSkKK3sKKyAgICBpZiAodHlwZSA9PSBNZWRp
YVBlcm1pc3Npb25UeXBlOjpBdWRpbykgeworICAgICAgICBzdGF0aWMgVENDQWNjZXNzUHJlZmxp
Z2h0UmVzdWx0IGF1ZGlvQWNjZXNzID0gVENDQWNjZXNzUHJlZmxpZ2h0KGdldGtUQ0NTZXJ2aWNl
TWljcm9waG9uZSgpLCBOVUxMKTsKKyAgICAgICAgaWYgKGF1ZGlvQWNjZXNzID09IGtUQ0NBY2Nl
c3NQcmVmbGlnaHRHcmFudGVkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJl
dHVybiBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZv
RGljdGlvbmFyeVtAIk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb24iXSkubGVuZ3RoID4gMDsK
KyAgICB9CisKKyAgICBzdGF0aWMgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0IHZpZGVvQWNjZXNz
ID0gVENDQWNjZXNzUHJlZmxpZ2h0KGdldGtUQ0NTZXJ2aWNlQ2FtZXJhKCksIE5VTEwpOworICAg
IGlmICh2aWRlb0FjY2VzcyA9PSBrVENDQWNjZXNzUHJlZmxpZ2h0R3JhbnRlZCkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihOU0J1
bmRsZS5tYWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNDYW1lcmFVc2FnZURlc2NyaXB0aW9u
Il0pLmxlbmd0aCA+IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwMmUwZTViMzBi
ZTQ0NDAyNWUyMDk3YjIyMTAzOTQ3NWNjYTc3YzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
Q29jb2EubW0KQEAgLTAsMCArMSwxODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIKKworI2lt
cG9ydCAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKKyNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCisjaW1w
b3J0ICJNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTkla
RVIpCisjaW1wb3J0IDxTcGVlY2gvU3BlZWNoLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUksoU3Bl
ZWNoKQorU09GVF9MSU5LX0NMQVNTKFNwZWVjaCwgU0ZTcGVlY2hSZWNvZ25pemVyKQorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OnN0YXJ0UHJvY2Vzc2luZ1JlcXVlc3QoKQoreworICAgIGlmICghY2hlY2tTYW5k
Ym94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKSkgeworICAg
ICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRl
Y2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghY2hlY2tN
aWNyb3Bob25lQWNjZXNzKCkgfHwgIWNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNz
KCkgfHwgbV91c2VyUGVybWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAg
ICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25E
ZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb250aW51ZVBy
b2Nlc3NpbmdSZXF1ZXN0KCk7Cit9CisKK2Jvb2wgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKCkKK3sKKyAgICBpZiAobV9wYWdlLnByZWZl
cmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIGlmIChtX21pY3JvcGhvbmVDaGVjayA9PSBDaGVja1Jlc3VsdDo6VW5rbm93bikg
eworI2lmIEhBVkUoQVZDQVBUVVJFREVWSUNFKQorICAgICAgICBhdXRvIHJlc3VsdCA9IGNoZWNr
QVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbyk7CisgICAg
ICAgIGlmIChyZXN1bHQgIT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duKQorICAgICAg
ICAgICAgbV9taWNyb3Bob25lQ2hlY2sgPSByZXN1bHQgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0
OjpHcmFudGVkID8gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBDaGVja1Jlc3VsdDo6RGVuaWVkOwor
ICAgICAgICBlbHNlIGlmICghY2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yVHlwZShNZWRp
YVBlcm1pc3Npb25UeXBlOjpBdWRpbykpCisgICAgICAgICAgICBtX21pY3JvcGhvbmVDaGVjayA9
IENoZWNrUmVzdWx0OjpEZW5pZWQ7CisjZWxzZQorICAgICAgICBtX21pY3JvcGhvbmVDaGVjayA9
IENoZWNrUmVzdWx0OjpHcmFudGVkOworI2VuZGlmCisgICAgfQorCisgICAgcmV0dXJuIG1fbWlj
cm9waG9uZUNoZWNrICE9IENoZWNrUmVzdWx0OjpEZW5pZWQ7Cit9CisKK2Jvb2wgU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VB
Y2Nlc3MoKQoreworICAgIGlmIChtX3BhZ2UucHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmlj
ZXNFbmFibGVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG1fc3BlZWNoUmVj
b2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyNpZiBIQVZF
KFNQRUVDSFJFQ09HTklaRVIpCisgICAgICAgIGF1dG8gc3RhdHVzID0gW2dldFNGU3BlZWNoUmVj
b2duaXplckNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c107CisgICAgICAgIGlmIChzdGF0dXMg
IT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQpCisg
ICAgICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrID0gc3RhdHVzID09IFNG
U3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkID8gQ2hlY2tSZXN1
bHQ6OkdyYW50ZWQgOiBDaGVja1Jlc3VsdDo6RGVuaWVkOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIGJvb2wgaGFzRGVzY3JpcHRpb25TdHJpbmcgPSBkeW5hbWljX29iamNfY2FzdDxOU1N0
cmluZz4oTlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TU3BlZWNoUmVjb2du
aXRpb25Vc2FnZURlc2NyaXB0aW9uIl0pLmxlbmd0aDsKKyAgICAgICAgICAgIG1fc3BlZWNoUmVj
b2duaXRpb25TZXJ2aWNlQ2hlY2sgPSBoYXNEZXNjcmlwdGlvblN0cmluZyA/IENoZWNrUmVzdWx0
OjpVbmtub3duIDogQ2hlY2tSZXN1bHQ6OkRlbmllZDsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAg
ICAgbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VDaGVjayA9IENoZWNrUmVzdWx0OjpHcmFudGVk
OworI2VuZGlmCisgICAgfQorCisgICAgcmV0dXJuIG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNl
Q2hlY2sgIT0gQ2hlY2tSZXN1bHQ6OkRlbmllZDsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNz
KCkKK3sKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQobV9zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VDaGVjayA9PSBDaGVj
a1Jlc3VsdDo6VW5rbm93bik7CisKKyAgICBhdXRvIG1haW5UaHJlYWRIYW5kbGVyID0gKFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShib29sIGF1dGhvcml6ZWQpIG11dGFibGUg
eworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPSAgYXV0aG9yaXplZCA/IENoZWNrUmVz
dWx0OjpHcmFudGVkIDogQ2hlY2tSZXN1bHQ6OkRlbmllZDsKKyAgICAgICAgaWYgKG1fc3BlZWNo
UmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OkRlbmllZCkgeworICAgICAg
ICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25E
ZWNpc2lvbjo6RGVueSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCk7CisgICAgfSk7CisgICAgYXV0byBkZWNpc2lv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW21haW5UaHJlYWRIYW5kbGVyID0gV1RGTW92ZShtYWlu
VGhyZWFkSGFuZGxlcildKFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXMgc3Rh
dHVzKSBtdXRhYmxlIHsKKyAgICAgICAgYm9vbCBhdXRob3JpemVkID0gc3RhdHVzID09IFNGU3Bl
ZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkOworICAgICAgICBpZiAo
IWlzTWFpblRocmVhZCgpKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFttYWluVGhy
ZWFkSGFuZGxlciA9IFdURk1vdmUobWFpblRocmVhZEhhbmRsZXIpLCBhdXRob3JpemVkXSgpIG11
dGFibGUgeworICAgICAgICAgICAgICAgIG1haW5UaHJlYWRIYW5kbGVyKGF1dGhvcml6ZWQpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
bWFpblRocmVhZEhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgfSk7CisgICAgW2dldFNGU3BlZWNo
UmVjb2duaXplckNsYXNzKCkgcmVxdWVzdEF1dGhvcml6YXRpb246ZGVjaXNpb25IYW5kbGVyLmdl
dCgpXTsKKyNlbmRpZgorfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNjZXNzKCkKK3sKKyNpZiBIQVZFKEFWQ0FQVFVSRURFVklD
RSkKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX21pY3JvcGhvbmVD
aGVjayA9PSBDaGVja1Jlc3VsdDo6VW5rbm93bik7CisKKyAgICByZXF1ZXN0QVZDYXB0dXJlQWNj
ZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbywgW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyldKGJvb2wgYXV0aG9yaXplZCkgeworICAgICAgICBpZiAoIXdlYWtU
aGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fbWljcm9waG9uZUNoZWNrID0g
YXV0aG9yaXplZCA/IENoZWNrUmVzdWx0OjpHcmFudGVkIDogQ2hlY2tSZXN1bHQ6OkRlbmllZDsK
KyAgICAgICAgaWYgKG1fbWljcm9waG9uZUNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsK
KyAgICAgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgpOworICAgIH0pOworI2VuZGlmCit9
CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdFVzZXJQ
ZXJtaXNzaW9uKCkKK3sKKyAgICBBU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKyAgICBh
dXRvJiBjdXJyZW50UmVxdWVzdCA9IG1fcmVxdWVzdHMuZmlyc3QoKTsKKworICAgIGF1dG8gY2xp
ZW50T3JpZ2luID0gY3VycmVudFJlcXVlc3QtPm9yaWdpbigpOworICAgIGF1dG8gcmVxdWVzdGlu
Z09yaWdpbiA9IGNsaWVudE9yaWdpbi5jbGllbnRPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKKyAg
ICBhdXRvIHRvcE9yaWdpbiA9IGNsaWVudE9yaWdpbi50b3BPcmlnaW4uc2VjdXJpdHlPcmlnaW4o
KTsKKyAgICBpZiAocmVxdWVzdGluZ09yaWdpbi0+aXNTYW1lT3JpZ2luQXModG9wT3JpZ2luKSkg
eworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8g
ZGVjaXNpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShi
b29sIGdyYW50ZWQpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPSBncmFudGVkID8gQ2hlY2tSZXN1
bHQ6OkdyYW50ZWQgOiBDaGVja1Jlc3VsdDo6RGVuaWVkOworICAgICAgICBpZiAobV91c2VyUGVy
bWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAgICAgICAgICAgIGNvbXBs
ZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRl
bnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29udGludWVQ
cm9jZXNzaW5nUmVxdWVzdCgpOworICAgIH07CisgICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRl
UG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsIEFQSTo6
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0b3BPcmlnaW4uZ2V0KCkpLmdldCgpLCBXVEZNb3ZlKGRl
Y2lzaW9uSGFuZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDhhMDk0NzQ1YzFmMjRiZTEw
NWRiYjAyYWI5MWUzMDdiMzFkNDg2YjEuLjYyZDdhOGExOGY2ZWI4Mzk0Y2JlMDJjZmFjNDM3NmE1
NGQwYTFmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgK
QEAgLTE2MSw2ICsxNjEsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAg
ICAgIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6Oldl
YkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJGcmFtZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmKSBm
aW5hbDsKICNlbmRpZgorICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogCiAgICAgICAgIFVJRGVs
ZWdhdGUmIG1fdWlEZWxlZ2F0ZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUubW0KaW5kZXggZDAzMzhmOGQ2ZTNiOWExM2RmMmFmMTUzYWNiNWRlYjM4
ZTFmY2Q5Yi4uMGY5ZWE5MDlhNmVmOTk5MTFiZTgxZWVlOWUwOTM4OTg1N2EyNjhmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMzMyLDQgKzEz
MzIsMjYgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6aW1hZ2VPck1lZGlhRG9jdW1lbnRT
aXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXoKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdL
VUlEZWxlZ2F0ZVByaXZhdGU+PihkZWxlZ2F0ZSkgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2Vi
VmlldyBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkOm5ld1NpemVdOwogfQogCit2b2lk
IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6OlNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IChpZCA8V0tVSURlbGVnYXRlUHJpdmF0
ZT4pbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46ZGVjaXNpb25I
YW5kbGVyOildKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2Fs
bENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46ZGVjaXNpb25IYW5kbGVyOikpOworICAg
IFtkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJlcXVlc3RTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46d3JhcHBlcihvcmlnaW4pIGRlY2lzaW9uSGFu
ZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShjb21w
bGV0aW9uSGFuZGxlciwgeyB9KSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09MIGdy
YW50ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJI
YXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNoZWNrZXItPmRp
ZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihncmFu
dGVkKTsKKyAgICB9KS5nZXQoKV07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5tbQppbmRleCA5OTc1NzVkZTAyMTZh
OWMwY2Q3NmFmY2I0MWM3NjQxZGIxMzE1YWZiLi44ZWJlYzUyY2M2YjY2ZDE1YTIzZTU0NGUyMzRl
ZWQ4NWFjZWYwYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgogCisjaW1wb3J0ICJNZWRpYVBl
cm1pc3Npb25VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBv
cnQgIlRDQ1NQSS5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCkBAIC0zNyw0MCArMzgsMTIg
QEAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogI2ltcG9ydCA8
d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogCi1TT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdP
UksoVENDKQotU09GVF9MSU5LKFRDQywgVENDQWNjZXNzUHJlZmxpZ2h0LCBUQ0NBY2Nlc3NQcmVm
bGlnaHRSZXN1bHQsIChDRlN0cmluZ1JlZiBzZXJ2aWNlLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9u
cyksIChzZXJ2aWNlLCBvcHRpb25zKSkKLVNPRlRfTElOSyhUQ0MsIFRDQ0FjY2Vzc1ByZWZsaWdo
dFdpdGhBdWRpdFRva2VuLCBUQ0NBY2Nlc3NQcmVmbGlnaHRSZXN1bHQsIChDRlN0cmluZ1JlZiBz
ZXJ2aWNlLCBhdWRpdF90b2tlbl90IHRva2VuLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucyksIChz
ZXJ2aWNlLCB0b2tlbiwgb3B0aW9ucykpCi1TT0ZUX0xJTktfQ09OU1RBTlQoVENDLCBrVENDU2Vy
dmljZU1pY3JvcGhvbmUsIENGU3RyaW5nUmVmKQotU09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RD
Q1NlcnZpY2VDYW1lcmEsIENGU3RyaW5nUmVmKQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogYm9v
bCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cGVybWl0dGVkVG9DYXB0
dXJlQXVkaW8oKQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpZiBQTEFURk9STShN
QUMpCi0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0YXRpYyBib29s
IGVudGl0bGVkID0gdHJ1ZTsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAg
ICAgICBpZiAoIWN1cnJlbnRQcm9jZXNzSXNTYW5kYm94ZWQoKSkKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBpbnQgcmVzdWx0ID0gc2FuZGJveF9jaGVjayhnZXRwaWQoKSwgImRldmlj
ZS1taWNyb3Bob25lIiwgU0FOREJPWF9GSUxURVJfTk9ORSk7Ci0gICAgICAgIGVudGl0bGVkID0g
IXJlc3VsdDsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKLSAgICAgICAgICAgIFdURkxvZ0Fs
d2F5cygiRXJyb3IgY2hlY2tpbmcgJ2RldmljZS1taWNyb3Bob25lJyBzYW5kYm94IGFjY2Vzcywg
ZXJybm89JWxkIiwgKGxvbmcpZXJybm8pOwotICAgIH0pOwotICAgIGlmICghZW50aXRsZWQpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCi0KLSAgICBzdGF0
aWMgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0IGFjY2VzcyA9IFRDQ0FjY2Vzc1ByZWZsaWdodChn
ZXRrVENDU2VydmljZU1pY3JvcGhvbmUoKSwgTlVMTCk7Ci0gICAgaWYgKGFjY2VzcyA9PSBrVEND
QWNjZXNzUHJlZmxpZ2h0R3JhbnRlZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBzdGF0
aWMgYm9vbCBpc1Blcm1pdHRlZCA9IGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihOU0J1bmRs
ZS5tYWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlv
biJdKS5sZW5ndGg7Ci0gICAgcmV0dXJuIGlzUGVybWl0dGVkOworICAgIHJldHVybiBjaGVja1Nh
bmRib3hSZXF1aXJlbWVudEZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6QXVkaW8pICYmIGNo
ZWNrVXNhZ2VEZXNjcmlwdGlvblN0cmluZ0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6QXVk
aW8pOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTc5LDQ5ICs1MiwxMyBA
QCBib29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpwZXJtaXR0ZWRU
b0NhcHR1cmVBdWRpbygpCiBib29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5OjpwZXJtaXR0ZWRUb0NhcHR1cmVWaWRlbygpCiB7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZs
YWc7Ci0gICAgc3RhdGljIGJvb2wgZW50aXRsZWQgPSB0cnVlOwotICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIGlmICghY3VycmVudFByb2Nlc3NJc1NhbmRib3hlZCgp
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGludCByZXN1bHQgPSBzYW5kYm94X2No
ZWNrKGdldHBpZCgpLCAiZGV2aWNlLWNhbWVyYSIsIFNBTkRCT1hfRklMVEVSX05PTkUpOwotICAg
ICAgICBlbnRpdGxlZCA9ICFyZXN1bHQ7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAg
ICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGNoZWNraW5nICdkZXZpY2UtY2FtZXJhJyBzYW5k
Ym94IGFjY2VzcywgZXJybm89JWxkIiwgKGxvbmcpZXJybm8pOwotICAgIH0pOwotICAgIGlmICgh
ZW50aXRsZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAvLyBQTEFURk9STShNQUMp
Ci0KLSAgICBzdGF0aWMgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0IGFjY2VzcyA9IFRDQ0FjY2Vz
c1ByZWZsaWdodChnZXRrVENDU2VydmljZUNhbWVyYSgpLCBOVUxMKTsKLSAgICBpZiAoYWNjZXNz
ID09IGtUQ0NBY2Nlc3NQcmVmbGlnaHRHcmFudGVkKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIHN0YXRpYyBib29sIGlzUGVybWl0dGVkID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNTdHJpbmc+
KE5TQnVuZGxlLm1haW5CdW5kbGUuaW5mb0RpY3Rpb25hcnlbQCJOU0NhbWVyYVVzYWdlRGVzY3Jp
cHRpb24iXSkubGVuZ3RoOwotICAgIHJldHVybiBpc1Blcm1pdHRlZDsKKyAgICByZXR1cm4gY2hl
Y2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OlZpZGVvKSAm
JiBjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6
OlZpZGVvKTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiB9CiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotc3RhdGljIHZvaWQgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1l
ZGlhVHlwZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEJPT0wgYXV0aG9yaXplZCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIsIEFWTWVkaWFUeXBlIHR5cGUpCi17Ci0gICAgYXV0byBkZWNpc2lvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKEJPT0wgYXV0aG9yaXplZCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghaXNNYWlu
VGhyZWFkKCkpIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGF1dGhvcml6ZWRdKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7Ci0gICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihhdXRob3JpemVkKTsKLSAgICB9KTsKLSAgICBbUEFMOjpnZXRBVkNhcHR1cmVE
ZXZpY2VDbGFzcygpIHJlcXVlc3RBY2Nlc3NGb3JNZWRpYVR5cGU6dHlwZSBjb21wbGV0aW9uSGFu
ZGxlcjpkZWNpc2lvbkhhbmRsZXIuZ2V0KCldOwotfQotCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lzdGVtVmFsaWRhdGlvbihjb25zdCBXZWJQ
YWdlUHJveHkmIHBhZ2UsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHJlcXVlc3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKHBh
Z2UucHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCkpIHsKQEAgLTEzMCwz
NiArNjcsNDAgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
cmVxdWVzdFN5c3RlbVZhbGlkYXRpb24oY29uc3QgV2ViUGEKICAgICB9CiAKICAgICAvLyBGSVhN
RTogQWRkIFRDQyBlbnRpdGxlbWVudCBjaGVjayBmb3Igc2NyZWVuc2hhcmluZy4KLSAgICBib29s
IHJlcXVpcmVzQXVkaW9DYXB0dXJlID0gcmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpOwot
ICAgIGJvb2wgcmVxdWlyZXNWaWRlb0NhcHR1cmUgPSByZXF1ZXN0LnJlcXVpcmVzVmlkZW9DYXB0
dXJlKCk7Ci0KLSAgICBhdXRvIG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID0gIXJlcXVp
cmVzQXVkaW9DYXB0dXJlID8gQVZBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZCA6IFtQQUw6
OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c0Zvck1lZGlhVHlw
ZTpBVk1lZGlhVHlwZUF1ZGlvXTsKLSAgICBpZiAobWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0
dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IG1pY3JvcGhvbmVBdXRob3JpemF0
aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpIHsKKyAgICBhdXRv
IGF1ZGlvU3RhdHVzID0gcmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpID8gY2hlY2tBVkNh
cHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKSA6IE1lZGlhUGVy
bWlzc2lvblJlc3VsdDo6R3JhbnRlZDsKKyAgICBpZiAoYXVkaW9TdGF0dXMgPT0gTWVkaWFQZXJt
aXNzaW9uUmVzdWx0OjpEZW5pZWQpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYW1lcmFBdXRob3JpemF0aW9uU3RhdHVzID0g
IXJlcXVpcmVzVmlkZW9DYXB0dXJlID8gQVZBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZCA6
IFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c0Zvck1l
ZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvXTsKLSAgICBpZiAoY2FtZXJhQXV0aG9yaXphdGlvblN0
YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQgfHwgY2FtZXJhQXV0aG9yaXphdGlv
blN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkKSB7CisgICAgYXV0byB2
aWRlb1N0YXR1cyA9IHJlcXVlc3QucmVxdWlyZXNWaWRlb0NhcHR1cmUoKSA/IGNoZWNrQVZDYXB0
dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpWaWRlbykgOiBNZWRpYVBlcm1p
c3Npb25SZXN1bHQ6OkdyYW50ZWQ7CisgICAgaWYgKGF1ZGlvU3RhdHVzID09IE1lZGlhUGVybWlz
c2lvblJlc3VsdDo6RGVuaWVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgcmVxdWlyZXNWaWRlb1RDQ1Byb21wdCA9IHJlcXVp
cmVzVmlkZW9DYXB0dXJlICYmIGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3Jp
emF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDsKLSAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
cmVxdWlyZXNWaWRlb1RDQ1Byb21wdCA/IFtyZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBpc09LKSBtdXRhYmxlIHsKLSAgICAgICAg
aWYgKCFpc09LKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlh
VHlwZShXVEZNb3ZlKGNhbGxiYWNrKSwgQVZNZWRpYVR5cGVWaWRlbyk7Ci0gICAgfSA6IFdURk1v
dmUoY2FsbGJhY2spOworICAgIGlmIChhdWRpb1N0YXR1cyA9PSBNZWRpYVBlcm1pc3Npb25SZXN1
bHQ6OlVua25vd24pIHsKKyAgICAgICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVk
aWFQZXJtaXNzaW9uVHlwZTo6QXVkaW8sIFt2aWRlb1N0YXR1cywgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBhdXRob3JpemVkKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGlmICh2aWRlb1N0YXR1cyA9PSBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkdyYW50ZWQpIHsK
KyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpW
aWRlbywgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJv
b2wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoYXV0aG9yaXplZCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKLSAgICBib29sIHJlcXVpcmVzQXVkaW9UQ0NQcm9tcHQgPSByZXF1aXJl
c0F1ZGlvQ2FwdHVyZSAmJiBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhv
cml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOwotICAgIGlmICghcmVxdWlyZXNBdWRpb1RDQ1By
b21wdCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICBpZiAodmlkZW9T
dGF0dXMgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIHJlcXVl
c3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OlZpZGVvLCBbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBhdXRob3JpemVkKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQpOworICAgICAg
ICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNz
Rm9yTWVkaWFUeXBlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBBVk1lZGlhVHlwZUF1ZGlv
KTsKKworICAgIGNhbGxiYWNrKHRydWUpOwogfQogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Byb3h5Q29jb2EubW0KaW5kZXggODY2MjM4YmFmZThmMDVjMTdhMjNkNmY5Y2M5OWEyMTAxNGRk
OTMxMC4uY2QzMDE0MWZjZWE2MjIyZGU1YmE3Y2YxYzY3YTlhMmY2NGQwMjBmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2Eu
bW0KQEAgLTQxLDYgKzQxLDEwIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4K
ICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KIAorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5oIgorI2VuZGlmCisK
ICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1Jl
bW90ZUluc3BlY3RvckNvbnN0YW50cy5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmEzNzk4Yjc0OGQ1MDRmYjY2MTJiYmQ0OTRjYzk5Mjc0NmY2MDE5YzgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKFdlYlBh
Z2VQcm94eSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCitTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cigpCit7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9yZXF1ZXN0cykKKyAgICAgICAgcmVx
dWVzdC0+Y29tcGxldGUoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkp
OworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3Qo
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0aW9udEhhbmRsZXIp
Cit7CisgICAgbV9yZXF1ZXN0cy5hcHBlbmQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdDo6Y3JlYXRlKFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9udEhhbmRsZXIp
KSk7CisgICAgaWYgKG1fcmVxdWVzdHMuc2l6ZSgpID09IDEpCisgICAgICAgIHN0YXJ0TmV4dFJl
cXVlc3QoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpz
dGFydE5leHRSZXF1ZXN0KCkKK3sKKyAgICBpZiAobV9yZXF1ZXN0cy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIHN0YXJ0UHJvY2Vzc2luZ1JlcXVlc3QoKTsKK30KKwordm9pZCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb250aW51ZVByb2Nlc3NpbmdSZXF1
ZXN0KCkKK3sKKyAgICBpZiAoIW1fcGFnZS5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2aWNl
c0VuYWJsZWQoKSkgeworICAgICAgICBpZiAobV9zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VDaGVj
ayA9PSBDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICAgICAgcmVxdWVzdFNwZWVjaFJl
Y29nbml0aW9uU2VydmljZUFjY2VzcygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIEFTU0VSVChtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrID09IENoZWNr
UmVzdWx0OjpHcmFudGVkKTsKKworICAgICAgICBpZiAobV9taWNyb3Bob25lQ2hlY2sgPT0gQ2hl
Y2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgICAgIHJlcXVlc3RNaWNyb3Bob25lQWNjZXNz
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKG1fbWlj
cm9waG9uZUNoZWNrID09IENoZWNrUmVzdWx0OjpHcmFudGVkKTsKKyAgICB9CisKKyAgICBpZiAo
bV91c2VyUGVybWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAg
IHJlcXVlc3RVc2VyUGVybWlzc2lvbigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFT
U0VSVChtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQpOworCisg
ICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNp
c2lvbjo6R3JhbnQpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI6OmNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVj
aXNpb24gZGVjaXNpb24pCit7CisgICAgQVNTRVJUKCFtX3JlcXVlc3RzLmlzRW1wdHkoKSk7Cisg
ICAgYXV0byBjdXJyZW50UmVxdWVzdCA9IG1fcmVxdWVzdHMudGFrZUZpcnN0KCk7CisgICAgY3Vy
cmVudFJlcXVlc3QtPmNvbXBsZXRlKGRlY2lzaW9uKTsKKworICAgIHN0YXJ0TmV4dFJlcXVlc3Qo
KTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXNldCgp
Cit7CisgICAgbV91c2VyUGVybWlzc2lvbkNoZWNrID0gQ2hlY2tSZXN1bHQ6OlVua25vd247Cit9
CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6c3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgpCit7CisgICAgY29tcGxldGVDdXJy
ZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbjo6R3JhbnQpOwor
fQorCitib29sIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrTWljcm9w
aG9uZUFjY2VzcygpCit7Cit9CisKK2Jvb2wgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKQoreworfQorCit2b2lk
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNj
ZXNzKCkKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpy
ZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCkKK3sKK30KKwordm9pZCBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0VXNlclBlcm1pc3Npb24oKQor
eworfQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jNDgyN2FhN2MzZTYzYzI0MWYzMDU0NGQzNzEwODdhOTAwYzQx
OTU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3QuaCIKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRy
PFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyKFdlYlBhZ2VQcm94eSYpOworICAgIH5TcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyKCk7CisgICAgdm9pZCByZXF1ZXN0KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lz
aW9uKT4mJik7CisgICAgdm9pZCByZXNldCgpOworCitwcml2YXRlOgorICAgIHZvaWQgc3RhcnRO
ZXh0UmVxdWVzdCgpOworICAgIHZvaWQgc3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgpOworICAgIHZv
aWQgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgpOworICAgIHZvaWQgY29tcGxldGVDdXJyZW50
UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik7CisgICAgYm9vbCBj
aGVja01pY3JvcGhvbmVBY2Nlc3MoKTsKKyAgICBib29sIGNoZWNrU3BlZWNoUmVjb2duaXRpb25T
ZXJ2aWNlQWNjZXNzKCk7CisgICAgdm9pZCByZXF1ZXN0TWljcm9waG9uZUFjY2VzcygpOworICAg
IHZvaWQgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpOworICAgIHZvaWQg
cmVxdWVzdFVzZXJQZXJtaXNzaW9uKCk7CisKKyAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKKyAg
ICBEZXF1ZTxSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4+IG1fcmVxdWVz
dHM7CisgICAgZW51bSBjbGFzcyBDaGVja1Jlc3VsdCB7IERlbmllZCwgR3JhbnRlZCwgVW5rbm93
biB9OworICAgIENoZWNrUmVzdWx0IG1fc2FuZGJveENoZWNrIHsgQ2hlY2tSZXN1bHQ6OlVua25v
d24gfTsKKyAgICBDaGVja1Jlc3VsdCBtX21pY3JvcGhvbmVDaGVjayB7IENoZWNrUmVzdWx0OjpV
bmtub3duIH07CisgICAgQ2hlY2tSZXN1bHQgbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VDaGVj
ayB7IENoZWNrUmVzdWx0OjpVbmtub3duIH07CisgICAgQ2hlY2tSZXN1bHQgbV91c2VyUGVybWlz
c2lvbkNoZWNrIHsgQ2hlY2tSZXN1bHQ6OlVua25vd24gfTsKKyAgICBib29sIG1faXNVc2luZ01v
Y2tlZENhcHR1cmVEZXZpY2UgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZkYTk5YzE3ODI3ZDZlNTg1MWJl
OGY2MzdhYmRmYzljYTdhODJkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaApAQCAtMCwwICsxLDc4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiA6IGJvb2wgeyBEZW55LCBHcmFudCB9OworCitj
bGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0IDogcHVibGljIFJlZkNvdW50
ZWQ8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4geworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gY3JlYXRlKFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0KFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsK
KyAgICB9CisKKyAgICB2b2lkIGNvbXBsZXRlKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRl
Y2lzaW9uIGRlY2lzaW9uKQorICAgIHsKKyAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9
IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZGVjaXNpb24pOworICAgIH0KKworICAgIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KKworcHJpdmF0ZToK
KyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25EZWNpc2lvbik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogbV9vcmln
aW4ob3JpZ2luKQorICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpCisgICAgeyB9CisKKyAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gbV9vcmln
aW47CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25EZWNpc2lvbik+IG1fY29tcGxldGlvbkhhbmRsZXI7Cit9OworCitjbGFzcyBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFjayA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpP
YmplY3Q6OlR5cGU6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaz4g
Y3JlYXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIH0KKwor
ICAgIHZvaWQgY29tcGxldGUoYm9vbCBncmFudGVkKSB7IG1fY29tcGxldGlvbkhhbmRsZXIoZ3Jh
bnRlZCk7IH0KKworcHJpdmF0ZToKKyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
CisgICAgeyB9CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX2NvbXBsZXRp
b25IYW5kbGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKaW5kZXggOWNlOTc0
Y2Y5ZGFhNTY1ODJlZWJjZmEwMzA2NzBiN2EzNzViZTcxZS4uZDczYjA4YzcyNTI1NDdlNWYzNzg2
NTBmMzFlYjNkNzJlNTI0MTU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcApAQCAtMzIsMTUgKzMyLDE2IEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1TcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25p
dGlvblNlcnZlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK1NwZWVjaFJlY29nbml0aW9uU2VydmVy
OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rp
b24sIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYgcGVybWlzc2lvbkNoZWNrZXIpCiAgICAgOiBt
X2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQorICAgICwgbV9wZXJtaXNzaW9uQ2hlY2tlcihXVEZNb3ZlKHBlcm1pc3Npb25DaGVj
a2VyKSkKIHsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmIHJlcXVlc3RJbmZvKQordm9pZCBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBi
b29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0
aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luKQogewotICAgIGF1dG8gcmVxdWVz
dCA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6Y3JlYXRlKFdURk1vdmUocmVx
dWVzdEluZm8pKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdD4oU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7IGNsaWVu
dElkZW50aWZpZXIsIFdURk1vdmUobGFuZyksIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBt
YXhBbHRlcm5hdGl2ZXMsIFdURk1vdmUob3JpZ2luKSB9KTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0
cy5hcHBlbmQoV1RGTW92ZShyZXF1ZXN0KSk7CiAKICAgICBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1
ZXN0SWZOZWVkZWQoKTsKQEAgLTcyLDggKzczLDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6YWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWQK
IHsKICAgICBpZiAobV9jdXJyZW50UmVxdWVzdCAmJiBtX2N1cnJlbnRSZXF1ZXN0LT5jbGllbnRJ
ZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikgewogICAgICAgICBtX2N1cnJlbnRSZXF1
ZXN0ID0gbnVsbHB0cjsKLSAgICAgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpEaWRSZWNlaXZlVXBkYXRlKHVwZGF0ZSksIG1faWRl
bnRpZmllcik7CisgICAgICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOwogCiAgICAgICAgIHByb2Nlc3NOZXh0
UGVuZGluZ1JlcXVlc3RJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm47CkBAIC04NCwxMyArODQs
MTIgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWQKIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6cmVtb3ZlUGVuZGluZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IHRha2VuUmVxdWVzdDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiB0YWtlblJlcXVl
c3Q7CiAgICAgYXV0byBwZW5kaW5nUmVxdWVzdHMgPSBzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1Jl
cXVlc3RzLCB7IH0pOwogICAgIHdoaWxlICghcGVuZGluZ1JlcXVlc3RzLmlzRW1wdHkoKSkgewog
ICAgICAgICBhdXRvIHJlcXVlc3QgPSBwZW5kaW5nUmVxdWVzdHMudGFrZUZpcnN0KCk7CiAgICAg
ICAgIGlmIChyZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikg
ewotICAgICAgICAgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
VXBkYXRlVHlwZTo6RW5kKTsKLSAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbjo6RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50aWZp
ZXIpOworICAgICAgICAgICAgc2VuZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogICAgICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShyZXF1
ZXN0KSk7CkBAIC0xMDUsMTIgKzEwNCw1MSBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
OjppbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaQogICAg
IH0KIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnRQb2Nlc3NpbmdSZXF1
ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpCit2b2lkIFNwZWVjaFJlY29n
bml0aW9uU2VydmVyOjpzdGFydFBvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0JiByZXF1ZXN0KQogeworICAgIG1fcGVybWlzc2lvbkNoZWNrZXIocmVxdWVz
dC5jbGllbnRPcmlnaW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdl
YWtSZXF1ZXN0ID0gbWFrZVdlYWtQdHIocmVxdWVzdCldKFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkRlY2lzaW9uIGRlY2lzaW9uKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCF3ZWFrUmVxdWVzdCkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBBU1NFUlQobV9jdXJyZW50UmVxdWVzdC5nZXQoKSA9PSB3ZWFrUmVx
dWVzdC5nZXQoKSk7CisgICAgICAgIGlmIChkZWNpc2lvbiA9PSBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25EZWNpc2lvbjo6RGVueSkgeworICAgICAgICAgICAgYXV0byBlcnJvciA9IFNwZWVj
aFJlY29nbml0aW9uRXJyb3IgeyBTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6Tm90QWxsb3dl
ZCwgIlBlcm1pc3Npb24gY2hlY2sgZmFpbGVkIl9zIH07CisgICAgICAgICAgICBzZW5kVXBkYXRl
KHdlYWtSZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCksIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uVXBkYXRlVHlwZTo6RXJyb3IsIGVycm9yKTsKKyAgICAgICAgICAgIG1fY3VycmVudFJlcXVl
c3QgPSBudWxscHRyOworICAgICAgICAgICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVl
ZGVkKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250aW51
ZVByb2Nlc3NpbmdSZXF1ZXN0KCp3ZWFrUmVxdWVzdCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JikKK3sKKyAgICAvLyBUT0RPOiBzdGFydCBjYXB0dXJp
bmcgYXVkaW8gYW5kIHJlY29nbml6aW5nLgogfQogCi12b2lkIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpzdG9wUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0JikKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnNlbmRVcGRhdGUoU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUgdHlwZSwgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25F
cnJvcj4gZXJyb3IsIE9wdGlvbmFsPFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+
PiByZXN1bHQpCiB7CisgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIsIHR5cGUpOworICAgIGlmICh0eXBlID09
IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IpCisgICAgICAgIHVwZGF0ZSA9IFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihjbGllbnRJZGVudGlm
aWVyLCAqZXJyb3IpOworICAgIGlmICh0eXBlID09IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlw
ZTo6UmVzdWx0KQorICAgICAgICB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZTo6Y3JlYXRlUmVzdWx0KGNsaWVudElkZW50aWZpZXIsICpyZXN1bHQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6RGlkUmVjZWl2ZVVwZGF0
ZSh1cGRhdGUpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpzdG9wUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0JiByZXF1ZXN0KQoreworICAgIC8vIFRPRE86IHN0b3AgY2FwdHVyaW5nIGF1ZGlvIGFuZCBm
aW5hbGl6aW5nIHJlY29nbml0aW9uIHJlc3VsdCB3aXRoIGNhcHR1cmVkIGF1ZGlvLgorICAgIHNl
bmRVcGRhdGUocmVxdWVzdC5jbGllbnRJZGVudGlmaWVyKCksIFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZTo6Tm9NYXRjaCk7CisgICAgc2VuZFVwZGF0ZShyZXF1ZXN0LmNsaWVu
dElkZW50aWZpZXIoKSwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQp
OworICAgIEFTU0VSVChtX2N1cnJlbnRSZXF1ZXN0LmdldCgpID09ICZyZXF1ZXN0KTsKKyAgICBt
X2N1cnJlbnRSZXF1ZXN0ID0gbnVsbHB0cjsKKyAgICBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0
SWZOZWVkZWQoKTsKIH0KIAogSVBDOjpDb25uZWN0aW9uKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5kZXggN2FhMjQxNjM4YjljMzUx
NDk2Njk4NDQzMmRiYzUzMGRmODQ4NGEzNy4uZWE4ZTNlNWUwYmZmYzA1ZjMxOWU3ZDBmMzc5ZTUx
ZDljMWJiOWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblNlcnZlci5oCkBAIC0yOCwyMSArMjgsMzAgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2duaXRpb25FcnJv
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGEuaD4KICNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworZW51bSBjbGFzcyBTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworfQorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OworZW51bSBjbGFzcyBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiA6IGJvb2w7CiAKIHVzaW5nIFNwZWVjaFJlY29nbml0
aW9uU2VydmVySWRlbnRpZmllciA9IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyOwordXNpbmcgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciA9IEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uRGVjaXNpb24pPiYmKT47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPiwgcHVibGlj
IElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVu
dGlmaWVyKTsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9u
PiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNoZWNrZXImJik7CiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdEluZm8mJik7CisgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29s
IGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZl
cywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYpOwogICAgIHZvaWQgc3RvcChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKICAgICB2b2lkIGFib3J0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwog
ICAgIHZvaWQgaW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyKTsKQEAgLTUxLDkgKzYwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
cm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsKICAgICB2b2lkIHJlbW92ZVBlbmRp
bmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIpOwogCi0gICAgLy8gVE9ETzogaW1wbGVtZW50IHRoZXNlLgogICAgIHZvaWQgc3RhcnRQ
b2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOworICAg
IHZvaWQgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3QmKTsKICAgICB2b2lkIHN0b3BQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKKyAgICB2b2lkIHNlbmRVcGRhdGUoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGVUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkVycm9yPiA9IFdURjo6bnVsbG9wdCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uUmVzdWx0RGF0YT4+ID0gV1RGOjpudWxsb3B0KTsKIAogICAgIC8vIElQQzo6TWVz
c2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CkBAIC02NCw4ICs3NCw5IEBAIHByaXZhdGU6CiAK
ICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBEZXF1ZTxSZWY8V2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Pj4gbV9wZW5kaW5nUmVxdWVzdHM7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsK
KyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0Pj4gbV9wZW5kaW5nUmVxdWVzdHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DaGVja2VyIG1fcGVybWlzc2lvbkNoZWNrZXI7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KaW5kZXggZTMxYmVmYjA5NWFk
ODhkYWRjMzBmMDk5NWM1N2U0MTUzNzNmMTJmNC4uYTI4YjkyMWNiOTY0YWZhZjJmZjIyYzkxNmJi
ZTQ2ZTgyOTkxMzI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAK
ICAqLwogIAogIG1lc3NhZ2VzIC0+IFNwZWVjaFJlY29nbml0aW9uU2VydmVyIE5vdFJlZkNvdW50
ZWQgewotICAgIFN0YXJ0KHN0cnVjdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJ
bmZvIGluZm8pCisgICAgU3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbGFuZywgYm9vbCBjb250aW51b3Vz
LCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIHN0cnVjdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luKQogICAgIFN0b3AoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEFib3J0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRl
bnRpZmllcikKICAgICBJbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IGM2NjBlNTY2YjA4ZGQzNjc5MTNkMjI0NTA2YmRmMWVkZjAw
ZDVkODcuLmZlYjZiZjUzZGNhMjZiMGJjNDEyNGM2ZTlmZTU3ZTJiNzViZmRiZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODYsNiArODYsNyBAQAogI2lu
Y2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiU2FmZUJyb3dzaW5nV2Fy
bmluZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRl
ICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3ludGhl
dGljRWRpdGluZ0NvbW1hbmRUeXBlLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNs
dWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCkBAIC00ODkyLDYgKzQ4OTMsOSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQ2hhbmdlTWFpbkRvY3VtZW50KEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQog
ICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICNlbmRpZgogICAgIG1faXNRdW90YUluY3JlYXNl
RGVuaWVkID0gZmFsc2U7CisKKyAgICBpZiAobV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyKQorICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXItPnJl
c2V0KCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3SXNCZWNvbWluZ1Zpc2libGUoKQpA
QCAtNzYwNSw2ICs3NjA5LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRT
dGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAg
bV93ZWJzaXRlRGF0YVN0b3JlLT5hdXRoZW50aWNhdG9yTWFuYWdlcigpLmNhbmNlbFJlcXVlc3Qo
bV93ZWJQYWdlSUQsIFdURjo6bnVsbG9wdCk7CiAjZW5kaWYKKworICAgIGlmIChtX3NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIpCisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlci0+cmVzZXQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0
U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHRlcm1pbmF0
aW9uUmVhc29uKQpAQCAtMTAxNzMsNiArMTAxODAsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
c3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoKQogICAgIH0pOwogfQogCit2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmICghbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKQorICAgICAg
ICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI+KCp0aGlzKTsKKworICAgIG1fc3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci0+cmVxdWVzdChXVEZNb3ZlKGNsaWVudE9yaWdpbiks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IDdjZWZiZmM2OTQ1ZWRmZTQzYWU1NmMyZDU2NGMwZTgxZTk1YmI0
YTYuLjIzOGMwYmU3YjA2MDY1MWE1ZGUxYWNmYTNkNjc2Njc3MjVhZjNlZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zMDUsNiArMzA1LDcgQEAgY2xhc3MgUmVt
b3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhOwogY2xhc3MgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb247CiBjbGFzcyBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Owog
Y2xhc3MgU2VjS2V5UHJveHlTdG9yZTsKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI7CiBjbGFzcyBVc2VyRGF0YTsKIGNsYXNzIFZpZXdTbmFwc2hvdDsKIGNsYXNzIFZp
c2l0ZWRMaW5rU3RvcmU7CkBAIC0zNjUsNiArMzY2LDcgQEAgc3RydWN0IFVzZXJNZXNzYWdlOwog
CiBlbnVtIGNsYXNzIE5lZ290aWF0ZWRMZWdhY3lUTFMgOiBib29sOwogZW51bSBjbGFzcyBQcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IDogYm9vbDsKK2VudW0gY2xhc3MgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uRGVjaXNpb24gOiBib29sOwogZW51bSBjbGFzcyBVbmRvT3JSZWRvIDog
Ym9vbDsKIGVudW0gY2xhc3MgV2ViQ29udGVudE1vZGUgOiB1aW50OF90OwogCkBAIC0xODE5LDYg
KzE4MjEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxh
eShTZWNvbmRzIGNhcHR1cmVSZXBvcnRpbmdEZWxheSkgeyBtX21lZGlhQ2FwdHVyZVJlcG9ydGlu
Z0RlbGF5ID0gY2FwdHVyZVJlcG9ydGluZ0RlbGF5OyB9CiAgICAgc2l6ZV90IHN1c3BlbmRNZWRp
YVBsYXliYWNrQ291bnRlcigpIHsgcmV0dXJuIG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVy
OyB9CiAKKyAgICB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24oV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uRGVjaXNpb24pPiYmKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHko
UGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9u
PiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjg4OCw2ICsyODkyLDgg
QEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9zdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXIgeyAw
IH07CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24+IG1fbmV3UGFn
ZU5hdmlnYXRpb25BZENsaWNrQXR0cmlidXRpb247CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcj4gbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA3ZjgzMTViNzNjZjQyOTAzZjI2
N2ExNDQxYjRjNjgyNGZlNWJmODg5Li5jZmVhMjhjN2Q2ZWMzMjE3NjkxOTUzMTcwM2JiNzU1MTk3
NzkzZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKICNpbmNsdWRl
ICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5
LmgiCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJUZXh0
Q2hlY2tlci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKQEAgLTE3MTMsNyArMTcx
NCwxOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIoU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudAogewogICAgIGF1dG8gc3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIgPSBtX3NwZWVjaFJlY29nbml0aW9uU2VydmVyTWFwLmFkZChpZGVudGlmaWVy
LCBudWxscHRyKTsKICAgICBBU1NFUlQoc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXNOZXdFbnRy
eSk7Ci0gICAgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVu
aXF1ZTxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRl
bnRpZmllcik7CisgICAgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlID0g
bWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigp
KSwgaWRlbnRpZmllciwgW2lkZW50aWZpZXIsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyld
KENsaWVudE9yaWdpbiYmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGF1
dG8qIHBhZ2UgOiB3ZWFrVGhpcy0+cGFnZXMoKSkgeworICAgICAgICAgICAgaWYgKHBhZ2UgJiYg
cGFnZS0+d2ViUGFnZUlEKCkgPT0gaWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgIHBhZ2Ut
PnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24oV1RGTW92ZShvcmlnaW4pLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgIH0pOwogICAgIGFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgaWRlbnRpZmllciwgKnNwZWVjaFJlY29nbml0aW9uU2VydmVyLml0ZXJhdG9y
LT52YWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGMwMjc0OTRiNzNhY2NlYzVlZmQ4MWM2OTRkM2E4NTNiNGVkZWYwY2Eu
LmM4ZDY4ODk4MWU1M2JjYzY0M2NjZTk3Njg3MWZhNGI4NjM0NGQ0NTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM3NCw2ICsxMzc0
LDcgQEAKIAkJOTMzRTgzNTUyM0EwN0MwNjAwREVGMjg5IC8qIFdlYklEQlNlcnZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzRTgzNTMyM0EwN0JG
ODAwREVGMjg5IC8qIFdlYklEQlNlcnZlci5oICovOyB9OwogCQk5MzNFODM1QTIzQTFBRTI4MDBE
RUYyODkgLyogV2ViSURCU2VydmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzM0U4MzU5MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJT
ZXJ2ZXJNZXNzYWdlcy5oICovOyB9OwogCQk5MzNFODM1QjIzQTFCNzUwMDBERUYyODkgLyogV2Vi
SURCU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzM0U4MzU4MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQk5MzQyNTg5MDI1NTVEREM2MDA1OUVFREQg
LyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQyNTg4RTI1NTVEQzQ3MDA1OUVFREQgLyogTWVkaWFQZXJt
aXNzaW9uVXRpbGl0aWVzLmggKi87IH07CiAJCTkzNEI3MjQ0MTlGNUI5QkUwMEFFOTZENiAvKiBX
S0FjdGlvbk1lbnVJdGVtVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzNEI3MjQzMTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVt
VHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5MzU2RjJEQzIxNTJCNkI1MDBFNkQ1REYgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTMwMjFGNDc5
M0IyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmggKi87IH07CiAJCTkzNTZGMkRE
MjE1MkI2RjYwMEU2RDVERiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQkEwNEUwMjE1MUFERjQwMDdGNDU1
RiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCAqLzsgfTsKQEAgLTE0MDgsNiArMTQwOSw5IEBA
CiAJCTkzRDZCNzg3MjU0Q0NEOEMwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNENkI3ODYyNTRDQ0Q4QjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CiAJCTkzRDZCNzg4MjU0Q0NEOTQwMDU4REQzQSAvKiBX
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzdFMjU0Q0NBQkIwMDU4
REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCAq
LzsgfTsKIAkJOTNENkI3OEEyNTRDRDQzRTAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc3RDI1NENDQUJCMDA1OEREM0EgLyogV2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTNENkI3
QjQyNTUyNjhENTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0FG
MjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmgg
Ki87IH07CisJCTkzRDZCN0I1MjU1MjY4RDcwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0Q2QjdCMjI1NTI2OEEyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlci5oICovOyB9OworCQk5M0Q2QjdCOTI1NTM0QTE3MDA1OEREM0EgLyogV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdL
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcg
LyogX1dLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y1
NDlCNDFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjU0OUIzMUUzMTc0Qjcw
MDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJOTUwRjI4ODAyNTI0MTRFQTAwQjc0RjFDIC8q
IFdLTW91c2VEZXZpY2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTUwRjI4N0UyNTI0MTRFOTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VP
YnNlcnZlci5oICovOyB9OwpAQCAtNDQ2OCw2ICs0NDcyLDggQEAKIAkJOTMzRTgzNTcyM0ExQTg3
MjAwREVGMjg5IC8qIFdlYklEQlNlcnZlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJJREJTZXJ2ZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzM0U4MzU4MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSURCU2VydmVy
TWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSURC
U2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJOTMzRTgzNTkyM0ExQURGNTAwREVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYklEQlNlcnZlck1lc3NhZ2Vz
Lmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklEQlNlcnZlck1lc3NhZ2VzLmg7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTkzNDI1ODhFMjU1NURDNDcw
MDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVk
aWFQZXJtaXNzaW9uVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkz
NDI1ODhGMjU1NURDQTUwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNEI3MjQzMTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlv
bk1lbnVJdGVtVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tBY3Rp
b25NZW51SXRlbVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUVFQjk1
MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUVFQjk2MTI3NzYxNkQwMDMzMjJCOCAv
KiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDUyOCw2ICs0NTM0LDEyIEBACiAJCTkzRDZCNzgwMjU0Q0NBQkMwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3ODEyNTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29n
bml0aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3ODYyNTRDQ0Q4QjAwNThERDNBIC8q
IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0FGMjU1MjY4QTEwMDU4REQz
QSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjAyNTUyNjhBMTAwNThERDNBIC8q
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0IyMjU1MjY4QTIwMDU4REQz
QSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjMyNTUyNjhCRjAwNThERDNBIC8q
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjcyNTUz
NEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdCODI1
NTM0QTEyMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENv
bmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTbmFwc2hv
dENvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjUx
RTMxNzREQTAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDU4LDYgKzY0NzAsOCBAQAogCQkJCTdB
ODIxRjREMUUyRjY3OUUwMDYwNDU3NyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQubW0gKi8sCiAJCQkJQTFERjYzMTExOEUwQjdDODAwM0EzRTJBIC8qIExlZ2FjeURvd25sb2Fk
Q2xpZW50LmggKi8sCiAJCQkJQTFERjYzMTAxOEUwQjdDODAwM0EzRTJBIC8qIExlZ2FjeURvd25s
b2FkQ2xpZW50Lm1tICovLAorCQkJCTkzNDI1ODhFMjU1NURDNDcwMDU5RUVERCAvKiBNZWRpYVBl
cm1pc3Npb25VdGlsaXRpZXMuaCAqLywKKwkJCQk5MzQyNTg4RjI1NTVEQ0E1MDA1OUVFREQgLyog
TWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tICovLAogCQkJCTQxMTI4NkVGMjFDOEE5MEMwMDNB
ODU1MCAvKiBNZWRpYVV0aWxpdGllcy5oICovLAogCQkJCTQxMTI4NkYwMjFDOEE5MEQwMDNBODU1
MCAvKiBNZWRpYVV0aWxpdGllcy5tbSAqLywKIAkJCQkxQUJDM0RGNDE4OTlFNDM3MDA0RjA2MjYg
LyogTmF2aWdhdGlvblN0YXRlLmggKi8sCkBAIC02NDc0LDYgKzY0ODgsNyBAQAogCQkJCTVDQTk4
NTRCMjEwQkVCNzMwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gKi8sCiAJ
CQkJMUEwMDJENDcxOTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oICovLAog
CQkJCTFBMDAyRDQ2MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcubW0gKi8s
CisJCQkJOTNENkI3QjMyNTUyNjhCRjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXJDb2NvYS5tbSAqLywKIAkJCQkzMTU3MTM1QzIwNDBBOUIyMDA4NEY5Q0YgLyog
U3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbSAqLywKIAkJCQkyRDBDRjY0QzIxRjJBODAz
MDA3ODc1NjYgLyogVGV4dENoZWNraW5nQ29udHJvbGxlci5oICovLAogCQkJCTJEMENGNjRCMjFG
MkE4MDMwMDc4NzU2NiAvKiBUZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tICovLApAQCAtOTIwNyw2
ICs5MjIyLDkgQEAKIAkJCQlCQzExMUIwODExMkY1RTNDMDAzMzdCQUIgLyogUmVzcG9uc2l2ZW5l
c3NUaW1lci5jcHAgKi8sCiAJCQkJMUEzMDA2NkMxMTEwRjRGNzAwMzE5MzdDIC8qIFJlc3BvbnNp
dmVuZXNzVGltZXIuaCAqLywKIAkJCQk1Q0E5ODU0OTIxMEJFQjVBMDA1N0VCNkIgLyogU2FmZUJy
b3dzaW5nV2FybmluZy5oICovLAorCQkJCTkzRDZCN0IwMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcCAqLywKKwkJCQk5M0Q2QjdCMjI1NTI2
OEEyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovLAor
CQkJCTkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0LmggKi8sCiAJCQkJOTNENkI3NkIyNTRCODk1ODAwNThERDNBIC8qIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyLmNwcCAqLywKIAkJCQk5M0Q2Qjc2QzI1NEI4OTU4MDA1OEREM0EgLyog
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCAqLywKIAkJCQk5M0Q2Qjc3QTI1NEM5ODREMDA1OERE
M0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4gKi8sCkBAIC05NTQ3LDYg
Kzk1NjUsOCBAQAogCQkJCTMzMzY3NjM5MTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNlQ2Fj
aGVNYW5hZ2VyLmggKi8sCiAJCQkJMUFERTQ2QjAxOTU0RUM2MTAwMEY3OTg1IC8qIFdLU2Vzc2lv
blN0YXRlUmVmLmNwcCAqLywKIAkJCQkxQURFNDZCMTE5NTRFQzYxMDAwRjc5ODUgLyogV0tTZXNz
aW9uU3RhdGVSZWYuaCAqLywKKwkJCQk5M0Q2QjdCODI1NTM0QTEyMDA1OEREM0EgLyogV0tTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi8sCisJCQkJOTNENkI3QjcyNTUz
NEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAq
LywKIAkJCQk1MUY4ODZBMzFGMkMyMTRBMDBDMTkzRUYgLyogV0tUZXN0aW5nU3VwcG9ydC5jcHAg
Ki8sCiAJCQkJNTFGODg2QTQxRjJDMjE0QTAwQzE5M0VGIC8qIFdLVGVzdGluZ1N1cHBvcnQuaCAq
LywKIAkJCQkzMTQ4ODhGRTFEOTFCMTFEMDAzNzcwNDIgLyogV0tUZXh0Q2hlY2tlci5jcHAgKi8s
CkBAIC0xMTE0NCw2ICsxMTE2NCw3IEBACiAJCQkJMUE2RDg2QzIxREY3NTI2NTAwNzc0NUU4IC8q
IE1hY2hNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0M1NkY3OTExNTk5NTdEMDAxQ0NB
RjkgLyogTWFjaFBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjRCNUYzMTFGNTMxRTgwMEMz
ODI2OSAvKiBNYWNoVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzQyNTg5MDI1NTVE
REM2MDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0UxOUVGQzIzRDQwMUYxMDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RTE5RUZEMjNENDAxRjEwMDk0RkZCNCAv
KiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxOTMzREVGMTk2NUVCMzEwMDhBQzNFQSAvKiBNZW51VXRpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTExMzg1LDYgKzExNDA2LDggQEAKIAkJCQk1N0JCRUE2RDIyQkMwQkZFMDAy
NzM5OTUgLyogU09BdXRob3JpemF0aW9uTG9hZFBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTc2Q0E5RDcyMkI4NjIxODAwMzAxNDNDIC8qIFNPQXV0aG9yaXphdGlvbk5TVVJMRXh0cmFzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4NTIyQjM1MTY5MDA4RDBFOEIgLyogU09BdXRob3Jp
emF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENkI3QjUyNTUyNjhENzAwNThE
RDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTkzRDZCN0I0MjU1MjY4RDUwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OERE
M0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZC
Nzg0MjU0Q0NEMEUwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4NTI1NENDRDQzMDA1OEREM0EgLyogU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXJNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTE5OTgs
NiArMTIwMjEsNyBAQAogCQkJCTUxM0U0NjJEMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdT
ZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjU0OUI0MUUzMTc0
QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdGRDMxODcyMkIzNTE3MDAwOEQwRThCIC8qIFdLU09BdXRob3JpemF0aW9uRGVsZWdhdGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDZCN0I5MjU1MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTc4
RkYzMjIyNDE5MTk2MDA5NjQ4M0UgLyogV0tTdG9yYWdlQWNjZXNzQWxlcnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDNDA3NjA2MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1N0cmluZy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM0MDc2MUExMjRGRjAzNzAwNjhGMjBBIC8qIFdLU3RyaW5nQ0YuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
LmNwcAppbmRleCBlYTE2YjJlZDc2NjViMzJiZDM5Y2FjNDYzMmI0YjlhNTFhNzVkNmIxLi4zZjM1
MzE5NGEzMmMzZTY3OWJjYTI5ZmJlYTg1MDMxYzkyMWU0ZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcApAQCAtNTksMTAgKzU5LDkgQEAgdm9p
ZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnJlZ2lzdGVyQ2xpZW50KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ28KICAgICBtX2NsaWVudE1hcC5hZGQoY2xpZW50LmlkZW50aWZp
ZXIoKSwgbWFrZVdlYWtQdHIoY2xpZW50KSk7CiB9CiAKLXZvaWQgV2ViU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uOjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9v
bCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2
ZXMpCit2b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVz
dWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBj
bGllbnRPcmlnaW4pCiB7Ci0gICAgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5m
byBpbmZvIHsgY2xpZW50SWRlbnRpZmllciwgbGFuZywgY29udGludW91cywgaW50ZXJpbVJlc3Vs
dHMsIG1heEFsdGVybmF0aXZlcyB9OwotICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjpTdGFydChpbmZvKSk7CisgICAgc2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXI6OlN0YXJ0KGNsaWVudElkZW50aWZpZXIsIGxhbmcsIGNvbnRpbnVvdXMsIGlu
dGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMsIFdURk1vdmUoY2xpZW50T3JpZ2luKSkpOwog
fQogCiB2b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RvcChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZp
ZXIpCkBAIC04MCw3ICs3OSw3IEBAIHZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
OjppbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjCiAgICAgc2VuZChN
ZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OkludmFsaWRhdGUoY2xpZW50SWRlbnRp
ZmllcikpOwogfQogCi12b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYgdXBkYXRl
KQordm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OmRpZFJlY2VpdmVVcGRhdGUo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmJiB1cGRhdGUpCiB7CiAgICAgYXV0byBj
bGllbnRJZGVudGlmaWVyID0gdXBkYXRlLmNsaWVudElkZW50aWZpZXIoKTsKICAgICBpZiAoIW1f
Y2xpZW50TWFwLmNvbnRhaW5zKGNsaWVudElkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCmluZGV4IDI4ZGJkMTk3Y2IzZjc5OGZjNzYzMTk5
ZWJiMTJkZTEzYWVkNzUxYjEuLjQ0M2IwNGYxY2NhYWIwYTBlNmFhNTM4MzFlOTg1ZDEwYTZhNTMz
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKQEAg
LTQzLDExICs0MywxMSBAQCBjbGFzcyBXZWJQYWdlOwogCiB1c2luZyBTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25JZGVudGlmaWVyID0gV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI7CiAKLWNsYXNz
IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZh
dGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKK2NsYXNzIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24s
IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVy
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bj4gY3JlYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAg
dm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmlt
UmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1
aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmKSBmaW5hbDsK
ICAgICB2b2lkIHN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBhYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbDsKIApAQCAtNTYsNyArNTYsNyBA
QCBwcml2YXRlOgogICAgIH5XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24oKTsKIAogICAg
IHZvaWQgcmVnaXN0ZXJDbGllbnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlVXBk
YXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYpIGZpbmFsOwogICAgIHZvaWQg
aW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDNjNDEyMjFhZWUyMzk1NjU2ZDUw
YzYyNTljMDkyYmEwODYxZDk4NDkuLjk5NzNkYWM2ZTlmNGExZjdkOGI4M2ZmNGFjNWVlMTBmNTg0
OWJlNzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAyMC0xMS0wOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxl
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3IgU3Bl
ZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODQ3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMjI2Mzg+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9t
YWMvSW5mby5wbGlzdDoKKyAgICAgICAgKiBNb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJv
d3Nlci9JbmZvLnBsaXN0OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6
c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6ZGVjaWRlUG9s
aWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpjb21wbGV0ZVNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNr
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uR3JhbnRlZCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVX
ZWJWaWV3V2l0aE9wdGlvbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRT
dGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3Vz
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMjAtMTEtMDkgIEFha2FzaCBKYWluICA8
YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtidWlsZC53ZWJraXQub3JnXSBEbyBu
b3QgcHJpbnQgbWFzdGVyIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiBidWlsZCBzdGVwcwpkaWZm
IC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QgYi9Ub29scy9NaW5pQnJv
d3Nlci9tYWMvSW5mby5wbGlzdAppbmRleCA0ZTJiMWY0ODE5YWQ1MTAzZTRjZjE3MDliN2M1M2E2
NmU4YjM5NWU1Li4zM2EzY2ExYmU3MzUwOGUxZmZjYjAyOTU3Yzg2NGU4NTkyZGFhYTRlIDEwMDY0
NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdAorKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvSW5mby5wbGlzdApAQCAtNTIsOSArNTIsMTEgQEAKIAkJCTxzdHJpbmc+RWRp
dG9yPC9zdHJpbmc+CiAJCTwvZGljdD4KIAk8L2FycmF5PgotICAgIDxrZXk+TlNDYW1lcmFVc2Fn
ZURlc2NyaXB0aW9uPC9rZXk+Ci0gICAgPHN0cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxm
IG9mIHdlYnNpdGVzPC9zdHJpbmc+Ci0gICAgPGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0
aW9uPC9rZXk+Ci0gICAgPHN0cmluZz5SZWNvcmRpbmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNp
dGVzPC9zdHJpbmc+CisJPGtleT5OU0NhbWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3Ry
aW5nPlJlY29yZGluZyB2aWRlbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5
Pk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyBh
dWRpbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TU3BlZWNoUmVjb2du
aXRpb25Vc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvZ25pemluZyBjYXB0dXJl
ZCBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+
CmRpZmYgLS1naXQgYS9Ub29scy9Nb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9J
bmZvLnBsaXN0IGIvVG9vbHMvTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5m
by5wbGlzdAppbmRleCAyZDFiYzU4MmZiZTc2NWNmZGM0MTA1ZWZlOWVjYzFkODMyMGNjOTU5Li41
Mzg3YjM3NDlhNDc0ZmUwYjNkOWM2MDk1Y2IyODgxN2I4ZjkyMzBhIDEwMDY0NAotLS0gYS9Ub29s
cy9Nb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBsaXN0CisrKyBiL1Rv
b2xzL01vYmlsZU1pbmlCcm93c2VyL01vYmlsZU1pbmlCcm93c2VyL0luZm8ucGxpc3QKQEAgLTU0
LDkgKzU0LDExIEBACiAJCTxrZXk+TlNBbGxvd3NBcmJpdHJhcnlMb2Fkc0luV2ViQ29udGVudDwv
a2V5PgogCQk8dHJ1ZS8+CiAJPC9kaWN0PgotICAgIDxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0
aW9uPC9rZXk+Ci0gICAgPHN0cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNp
dGVzPC9zdHJpbmc+Ci0gICAgPGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+
Ci0gICAgPHN0cmluZz5SZWNvcmRpbmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJp
bmc+CisJPGtleT5OU0NhbWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29y
ZGluZyB2aWRlbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TTWljcm9w
aG9uZVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBi
ZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TU3BlZWNoUmVjb2duaXRpb25Vc2Fn
ZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvZ25pemluZyBjYXB0dXJlZCBhdWRpbyBv
biBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbAppbmRleCA1NTE2MmZmMzQzZDI1ZjY5MDZjMzkyNzZmZDVhODkxZWRm
MjliODY5Li42ZmRjZTIzZmI4NGQzMGJjY2Q1OTc0YWI3MjAzMzFjOTI5OTg0Y2NiIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTQwMyw0ICs0MDMsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1
bm5lciB7CiAgICAgdW5kZWZpbmVkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbk92ZXJyaWRlVGltZXJG
b3JUZXN0aW5nKGJvb2xlYW4gdmFsdWUpOwogICAgIHVuZGVmaW5lZCBzZXRBZENsaWNrQXR0cmli
dXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZyhET01TdHJpbmcgdXJsKTsKICAgICB1bmRlZmlu
ZWQgbWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CisKKyAgICAv
LyBTcGVlY2hSZWNvZ25pdGlvbgorICAgIHVuZGVmaW5lZCBzZXRJc1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkdyYW50ZWQoYm9vbGVhbiB2YWx1ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZGZkMDFh
MzJmMzExZTEyNDRhYTc4NzliNDM3NTk3YWZhYzNlZmQ5ZS4uYjE4YWIyNzYzNzYzNjAyZWY3ZjY2
YjM5MWJhNjIzNGU2NDI3YTkxNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yMDY5LDYgKzIwNjksMTEgQEAgdm9p
ZCBUZXN0UnVubmVyOjpkaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFjaygpCiAgICAgY2FsbFRl
c3RSdW5uZXJDYWxsYmFjayhEaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFja0lEKTsKIH0KIAor
dm9pZCBUZXN0UnVubmVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQo
Ym9vbCBncmFudGVkKQoreworICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJzZXRJc1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQiLCBncmFudGVkKTsKK30KKwogQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRl
eCAwYmQzYTA5ZTMyZDcxYjM1MTZlNGY4ZTA1YmVhMjJhZjk5NGIxZDIzLi45NzkzYzc3N2FkMzhh
YWQzNGNmNTI1ZDEyY2E4N2RlYTMxOWEyZDNlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNTE1LDYgKzUxNSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0
aW5nKEpTU3RyaW5nUmVmKTsKICAgICB2b2lkIG1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBp
cmVkRm9yVGVzdGluZygpOwogCisgICAgdm9pZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkdyYW50ZWQoYm9vbCk7CisKIHByaXZhdGU6CiAgICAgVGVzdFJ1bm5lcigpOwogCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDZkYmM2ODRlODg1MGFm
ZTA0NTkxMzlmYmUxOWQ1ZTVjY2RiNzI2ZTcuLjFjN2EwMWY4NjZkOGUzNGFiM2YzNWE2ZjdlOWU5
ZjNhM2FlMjQ4YzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJvdGVjdGlvblNwYWNlLmg+
CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2Vj
dXJpdHlPcmlnaW5SZWYuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjay5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1RleHRDaGVja2VyLmg+CiAj
aW5jbHVkZSA8V2ViS2l0L1dLVVJMLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVXNlckNvbnRlbnRD
b250cm9sbGVyUmVmLmg+CkBAIC0yOTcsNiArMjk4LDIxIEBAIHN0YXRpYyB2b2lkIHJ1bldlYkF1
dGhlbnRpY2F0aW9uUGFuZWwoKQogewogfQogCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9y
aWdpblJlZiwgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBjYWxsYmFj
aykKK3sKKyAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29tcGxldGVTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DaGVjayhjYWxsYmFjayk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OmNvbXBsZXRlU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2soV0tTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBjYWxsYmFjaykKK3sKKyAgICBXS1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUoY2FsbGJhY2ssIG1faXNTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6
c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wgZ3JhbnRlZCkKK3sK
KyAgICBtX2lzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCA9IGdyYW50ZWQ7Cit9
CisKIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFdLUGFnZVJlZiwg
V0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS05hdmlnYXRpb25BY3Rpb25S
ZWYgbmF2aWdhdGlvbkFjdGlvbiwgV0tXaW5kb3dGZWF0dXJlc1JlZiB3aW5kb3dGZWF0dXJlcywg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZp
ZXcgPSBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdlYlZpZXcqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSk7CkBAIC02NTAsOCArNjY2LDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRl
V2ViVmlld1dpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogICAgIFdLSFRU
UENvb2tpZVN0b3JlRGVsZXRlQWxsQ29va2llcyhXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29v
a2llU3RvcmUod2Vic2l0ZURhdGFTdG9yZSgpKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAKICAgICBw
bGF0Zm9ybUNyZWF0ZVdlYlZpZXcoY29uZmlndXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7Ci0gICAg
V0tQYWdlVUlDbGllbnRWMTQgcGFnZVVJQ2xpZW50ID0gewotICAgICAgICB7IDE0LCBtX21haW5X
ZWJWaWV3LmdldCgpIH0sCisgICAgV0tQYWdlVUlDbGllbnRWMTUgcGFnZVVJQ2xpZW50ID0gewor
ICAgICAgICB7IDE1LCBtX21haW5XZWJWaWV3LmdldCgpIH0sCiAgICAgICAgIDAsIC8vIGNyZWF0
ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAogICAgICAgICAwLCAvLyBzaG93UGFnZQog
ICAgICAgICAwLCAvLyBjbG9zZQpAQCAtNzI0LDcgKzc0MCw4IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykK
ICAgICAgICAgMCwgLy8gZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJh
bmNlCiAgICAgICAgIDAsIC8vIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybQogICAgICAgICBz
aG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzLAotICAgICAgICBydW5X
ZWJBdXRoZW50aWNhdGlvblBhbmVsCisgICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWws
CisgICAgICAgIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3QKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChtX21haW5XZWJWaWV3LT5wYWdl
KCksICZwYWdlVUlDbGllbnQuYmFzZSk7CiAKQEAgLTEwNTMsNiArMTA3MCw4IEBAIGJvb2wgVGVz
dENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlv
bnMmIG9wdGlvbnMsIFJlCiAgICAgbV9zZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxz
Q291bnQgPSAwOwogICAgIG1fc2hvdWxkRGlzbWlzc0phdmFTY3JpcHRBbGVydHNBc3luY2hyb25v
dXNseSA9IGZhbHNlOwogCisgICAgc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFu
dGVkKHRydWUpOworCiAgICAgYXV0byBsb2FkQWJvdXRCbGFuayA9IFt0aGlzXSB7CiAgICAgICAg
IG1fZG9uZVJlc2V0dGluZyA9IGZhbHNlOwogICAgICAgICBXS1BhZ2VMb2FkVVJMKG1fbWFpbldl
YlZpZXctPnBhZ2UoKSwgYmxhbmtVUkwoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmgKaW5kZXggMzNiNjQ5NGFjNjI0NGI5MmZjYjc4MDlhNThkNzIwM2M3YzEyNThhOC4u
MDVjOGY4YmRhYTk1YWQ4N2U0MzllMzA5M2I4YTRmMzRmNWY4MmM1NiAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMzUxLDYgKzM1MSw5IEBAIHB1YmxpYzoKIAog
ICAgIFdLVVJMUmVmIGN1cnJlbnRUZXN0VVJMKCkgY29uc3Q7CiAKKyAgICB2b2lkIGNvbXBsZXRl
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2soV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFja1JlZik7CisgICAgdm9pZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkdyYW50ZWQoYm9vbCk7CisKIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29u
ZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9u
cyYpOwogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRl
Q29udGV4dENvbmZpZ3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnMmKSBjb25zdDsKQEAgLTY0MCw2
ICs2NDMsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgbV9oYXNT
ZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgeyBmYWxzZSB9OwogI2VuZGlmCisKKyAgICBi
b29sIG1faXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkIHsgZmFsc2UgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcAppbmRleCAxNGMwNGVkMWZhOTM5NGY1NzJmNjQ5YTkxYjQ3ZWZiMjA2ZWY4NTRlLi41
YjY2NjE3YmVlMDE2YjY3NTFjN2JiMmJjZTZiYjhiYWU0NGViMGEwIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTM0NSw2ICsxMzQ1LDExIEBAIFdLUmV0
YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAic2V0SXNTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChi
b29sZWFuVmFsdWUobWVzc2FnZUJvZHkpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNDVlN2U4NGM2YTllMzYwZWVkOTY4OGRmY2NmMTlmNjJlODA1ODFiMy4uMjZiYWMzNTQ4
NDU3OWFhZGM4OGQ5MGY2OWRjYjQ2ZTIyYWFkYTMxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDIwLTExLTA5ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCBiYXNpYyBwZXJtaXNzaW9uIGNoZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc2CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS83MTIyMjYzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZmFz
dC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIw
LTExLTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5leHBv
c2Ugb2Jzb2xldGUgSFRNTEFwcGxldEVsZW1lbnQgaW50ZXJmYWNlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCBiYjMyMTlkYWE1MDk5MjBjYjQyMDk3NjFmZDYyNTE4MTBiMTJmODM0Li5mOTdjYjYyYTE2
YzM4YmJmOTlmZDAyYmRlMDUzNWQ0NDkyNGM5YmMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE3
Nyw2ICsxNzcsNyBAQCBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVy
LXN0b3JhZ2UtY3Jhc2guaHRtbCBbIFNraXAgXQogc3RvcmFnZS9pbmRleGVkZGIvSURCT2JqZWN0
LWxlYWsuaHRtbCBbIFNraXAgXQogZmFzdC9mb3Jtcy9jYWxsLXRleHQtZGlkLWNoYW5nZS1pbi10
ZXh0LWZpZWxkLXdoZW4tdHlwaW5nLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS8gWyBTa2lwIF0KK2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lv
bi1lcnJvci5odG1sIFsgU2tpcCBdCiAKICMgT25seSBwYXJ0aWFsIHN1cHBvcnQgb24gQ29jb2Eg
cGxhdGZvcm1zLgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zcGVlY2gtYXBpLyBb
IFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9w
ZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVj
b2duaXRpb24vcGVybWlzc2lvbi1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDI5Yjhh
YjA0ZDA4M2ZhMjdhMDg0NTg1ZGFhOThmZDdiNjA2YjQ2NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVmVyaWZ5IHRoYXQgZXJyb3IgZXZlbnQgaXMgZmlyZWQg
d2hlbiBwZXJtaXNzaW9uIGlzIGRlbmllZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgcmVjb2duaXRpb24gPSBuZXcgU3BlZWNoUmVjb2duaXRpb24oKSBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KK1BBU1MgcmVjb2duaXRpb24uc3RhcnQoKSBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KK1BBU1MgZXZlbnQuZXJyb3IgaXMgIm5vdC1hbGxvd2VkIgorUEFTUyBldmVudC5t
ZXNzYWdlIGlzICJwZXJtaXNzaW9uIGNoZWNrIGZhaWxzIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTQ2ZTlmM2E3NzY0MDlhYTNkZjQxOTJiZmJjNTg3NTkwMTVlMzZjYQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5o
dG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IGVycm9yIGV2ZW50IGlzIGZpcmVkIHdoZW4gcGVy
bWlzc2lvbiBpcyBkZW5pZWQuIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIGpz
VGVzdElzQXN5bmMgPSB0cnVlOworICAgIHRlc3RSdW5uZXIuc2V0SXNTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25HcmFudGVkKGZhbHNlKTsKK30KKworc2hvdWxkTm90VGhyb3coInJlY29nbml0
aW9uID0gbmV3IFNwZWVjaFJlY29nbml0aW9uKCkiKTsKK3Nob3VsZE5vdFRocm93KCJyZWNvZ25p
dGlvbi5zdGFydCgpIik7CityZWNvZ25pdGlvbi5vbmVycm9yID0gKGV2ZW50KSA9PiB7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC5lcnJvciIsICJub3QtYWxsb3dlZCIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQubWVzc2FnZSIsICJwZXJtaXNzaW9uIGNoZWNr
IGZhaWxzIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4ZDdkNDkwZWIzMjg0YzMwOWRjY2QyYTBlMTg2
ZDk4MDQzNjI3ZTk0Li5hNzQxOTgwZTViMmU1YjBiMWEwZTkxNjlkYWE5YTRiNTI3MzBmMDY4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtODAzLDQgKzgw
Myw1IEBAIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2VkLXBvcnQtZGVsYXku
aHRtbCBbIFBhc3MgXQogCiAjIFdlYktpdDIgb25seS4KIGpzL3Rocm93LWxhcmdlLXN0cmluZy1v
b20uaHRtbCBbIFBhc3MgXQorZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9y
Lmh0bWwgWyBQYXNzIF0KIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW50ZXItd2hpbGUtZXhpdGlu
Zy5odG1sIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413672</attachid>
            <date>2020-11-09 23:43:27 -0800</date>
            <delta_ts>2020-11-10 07:13:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201109234326.patch</filename>
            <type>text/plain</type>
            <size>123913</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRiY2QyNGY5YjcxNzVhZjUwNzhhNzJj
ZDA1MGJiNzJmYTI1YzMwNWQuLjI0NzYwYzZlYWIxMWRhMTM1OTNiZDRiMzI4YzJhN2JjYTBlZmI2
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMTEtMDkgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1Bs
YXRmb3JtSGF2ZS5oOgorCiAyMDIwLTExLTA5ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2OTYwMy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBiZWIzYTZiNzJiYjJiZDUyMDZhNGQyNGM0OWM3MTJiNTA3YjdjZjdlLi4yYTc2YjY0Zjk1ZDNk
M2IxYTczMTY3ZjhkMDgyNzExNDliNGM2OGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMjAtMTEtMDkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVy
bWlzc2lvbi1lcnJvci5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnRS
ZWNvZ25pdGlvbik6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6
Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dDo6Y2xpZW50T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3RJbmZvOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjplcnJvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZTo6cmVzdWx0IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oOgorICAgICAgICAqIHBhZ2UvRHVtbXlTcGVlY2hSZWNv
Z25pdGlvblByb3ZpZGVyLmg6CisKIDIwMjAtMTEtMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fp
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRoZSBsaWZlIGN5
Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBOYXRpdmVJbWFn
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA4OWRmM2NkZjZmN2Y1NzFhZDM5MjJjMjQyMzdjMDY3NGZiMTdkYzYzLi40
YmYzYzgzMmUwNzMxNDVmZDViY2I3OWU2Njc4MjFhOGRlNTdiNGQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEwNyBAQAorMjAyMC0xMS0wOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3IgU3BlZWNoUmVj
b2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxODQ3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMjI2Mzg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIsIHdoaWNoIGNoZWNrcyBhbmQgcmVxdWVzdHMgc3BlZWNo
IHJlY29nbml0aW9uIHBlcm1pc3Npb25zIGJlZm9yZSAKKyAgICAgICAgd2UgYWN0dWFsbHkgc3Rh
cnQgY2FwdHVyaW5nIGF1ZGlvIGFuZCBwZXJmb3JtIHJlY29nbml0aW9uLiBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyIGlzIHBlci1wYWdlLCBsaWtlCisgICAgICAgIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyLiBUaGUgY2hlY2tzIGluY2x1ZGU6CisgICAgICAgIDEuIFNhbmRib3gg
cmVxdWlyZW1lbnQgZm9yIG1pY3JvcGhvbmUKKyAgICAgICAgMi4gVENDIGNoZWNrIGZvciBtaWNy
b3Bob25lCisgICAgICAgIDMuIFRDQyBjaGVjayBmb3IgU0ZTcGVlY2hSZWNvZ25pemVyCisgICAg
ICAgIDQuIFVzZXIgcGVybWlzc2lvbiBvbiBzcGVlY2ggcmVjb2duaXRpb24gZm9yIG9yaWdpbnMK
KworICAgICAgICBBZGQgYSBkZWxlZ2F0ZSBmdW5jdGlvbiBmb3IgcmVxdWVzdGluZyB1c2VyIHBl
cm1pc3Npb24sIHdoaWNoIGlzIGRlbmllZCBieSBkZWZhdWx0LgorCisgICAgICAgIFRlc3Q6IGZh
c3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCisKKyAgICAgICAgKiBT
aGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoK
KyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGll
bnQ6OmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNsaWVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tHZXRU
eXBlSUQpOgorICAgICAgICAoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0Nv
bXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTWVkaWFQ
ZXJtaXNzaW9uVXRpbGl0aWVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9N
ZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpyZXF1
ZXN0QVZDYXB0dXJlQWNjZXNzRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrQVZDYXB0
dXJlQWNjZXNzRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrU2FuZGJveFJlcXVpcmVt
ZW50Rm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrVXNhZ2VEZXNjcmlwdGlvblN0cmlu
Z0ZvclR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydFByb2Nlc3NpbmdSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tN
aWNyb3Bob25lQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0
U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1
ZXN0VXNlclBlcm1pc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChX
ZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpwZXJtaXR0ZWRUb0NhcHR1cmVB
dWRpbyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5OjpwZXJtaXR0ZWRUb0NhcHR1cmVWaWRlbyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lzdGVtVmFsaWRhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OnJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2Nv
YS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKToKKyAgICAg
ICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6flNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnROZXh0UmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNvbnRpbnVl
UHJvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVzZXQpOgorICAgICAgICAo
V2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydFByb2Nlc3Np
bmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZp
Y2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpyZXF1ZXN0TWljcm9waG9uZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNl
cnZpY2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyOjpyZXF1ZXN0VXNlclBlcm1pc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Ojpj
b21wbGV0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3Q6Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3Q6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2s6OmNvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2s6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQpOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQpOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVtb3ZlUGVuZGluZ1JlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnRQb2Nlc3NpbmdSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmNvbnRpbnVl
UHJvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6c2VuZFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpzdG9wUHJvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VNYWluRG9jdW1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcik6CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpkaWRSZWNlaXZlVXBkYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5oOgorCiAyMDIwLTExLTA5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQ29udHJvbCB0aGUgbGlmZSBjeWNsZSBvZiB0aGUg
cGxhdGZvcm0gaW1hZ2UgYnkgYSBuZXcgY2xhc3MgbmFtZWQgTmF0aXZlSW1hZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZv
cm1IYXZlLmgKaW5kZXggMjAzZThlYzdkNjE1ZTg3NWYzYjMxNDVmMmY4YmRkMWU1YjdiMDgzZC4u
OTNlN2I0NTM4NWFlODg3MDU4ZWQ2ZjRkMDZlZDc1MmVmMmIxODAzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1I
YXZlLmgKQEAgLTc1NSwzICs3NTUsMTEgQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAh
UExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAjZGVmaW5lIEhBVkVfQ05D
T05UQUNUUElDS0VSVklFV0NPTlRST0xMRVIgMQogI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1Mp
IHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkKKyNkZWZpbmUgSEFWRV9TUEVFQ0hSRUNP
R05JWkVSIDEKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRB
TFlTVCkgfHwgUExBVEZPUk0oTUFDKQorI2RlZmluZSBIQVZFX0FWQ0FQVFVSRURFVklDRSAxCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uLmNwcAppbmRleCA1MWEzMmNkYWFjYWExZWQwMTE0Mjc2N2QyMmUzMDI1MjZkZWJmNTk1
Li5mMTE3YzFmYjFiNWJkMDRhZTc1NTI1NjVmYmFhODg5MWM1YzFhZWJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2du
aXRpb24uaCIKIAorI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTY5LDcg
KzcwLDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gU3BlZWNoUmVjb2duaXRpb246OnN0YXJ0UmVjb2du
aXRpb24oKQogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgVW5rbm93bkVycm9yLCAiUmVjb2duaXRpb24gZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGNvbm5l
Y3Rpb24iX3MgfTsKIAotICAgIG1fY29ubmVjdGlvbi0+c3RhcnQoaWRlbnRpZmllcigpLCBtX2xh
bmcsIG1fY29udGludW91cywgbV9pbnRlcmltUmVzdWx0cywgbV9tYXhBbHRlcm5hdGl2ZXMpOwor
ICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c3RhcnQoaWRlbnRpZmllcigpLCBtX2xhbmcs
IG1fY29udGludW91cywgbV9pbnRlcmltUmVzdWx0cywgbV9tYXhBbHRlcm5hdGl2ZXMsIENsaWVu
dE9yaWdpbiB7IGRvY3VtZW50LnRvcE9yaWdpbigpLmRhdGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW4oKS5kYXRhKCkgfSk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpTdGFydGluZzsKICAgICBy
ZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAppbmRleCAzZmQyZDMzYWNhMDIwNTI2
MzQwNThkMGZiNTY1MmViNzAwN2ZhNTJhLi42OWVlYmMyOTNkNWI3ZGUxZTM4Y2VlYWQyYTNlZTM4
ZjAwZDFjYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaApAQCAtMzEsMTUgKzMxLDE2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50OwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU7CitzdHJ1Y3QgQ2xpZW50T3JpZ2lu
OwogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRl
ZDxTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5T
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJDbGllbnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50JikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVz
dWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0
YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRf
dCBtYXhBbHRlcm5hdGl2ZXMsIENsaWVudE9yaWdpbiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHN0b3AoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBhYm9ydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoY29uc3Qg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVVcGRhdGUoU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmJikgPSAwOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5jcHAKaW5kZXggNGE1ZThjMTYzMDNjMTg2NWMy
YjFmZmNlOWI1NmVlMjYyMDNhN2ZjNS4uZDNiZDdhOTRhNDJiOWQ1ZTA1OTIwYzViZmU3ZGJjNDRh
OTE4ODdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuY3BwCkBAIC0yOCwxMSArMjgsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IFNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdDo6Y3JlYXRlKFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8mJiBy
ZXF1ZXN0SW5mbykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0SW5mbykpKTsKLX0KLQogU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0OjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
SW5mbyYmIHJlcXVlc3RJbmZvKQogICAgIDogbV9pbmZvKFdURk1vdmUocmVxdWVzdEluZm8pKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3QuaAppbmRleCA1Y2VlYTAxYzczODY1NTZkNDI1MWY4YzhiOTVjMzEyNGJh
ZmM2MDEyLi4zOTZkYjI2OTg0ZjkxMjQ2ODI0YjA2NTg2NjVjYTczZTdiYzRjY2QxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3QuaApAQCAtMzAsMTkgKzMwLDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0PiB7CitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IGNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3RJbmZvJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYpOwogCiAgICAgU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pbmZvLmNsaWVudElkZW50aWZpZXI7IH0KICAgICBjb25zdCBTdHJp
bmcmIGxhbmcoKSBjb25zdCB7IHJldHVybiBtX2luZm8ubGFuZzsgfQogICAgIGJvb2wgY29udGlu
dW91cygpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5jb250aW51b3VzOzsgfQogICAgIGJvb2wgaW50
ZXJpbVJlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX2luZm8uaW50ZXJpbVJlc3VsdHM7IH0KICAg
ICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMoKSBjb25zdCB7IHJldHVybiBtX2luZm8ubWF4QWx0
ZXJuYXRpdmVzOyB9CisgICAgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1faW5mby5jbGllbnRPcmlnaW47IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsKLQog
ICAgIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gbV9pbmZvOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
SW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mby5oCmluZGV4IGFiMWUxYWU2ZWYzODg5OGMyMWEyYTlkZjdhZjFmMDA3ZTI0YjE3
ZDAuLjFlZmU5ZTA2NDZlNzQ3Y2I1NWQ3Y2NiMGY3YjE4ZmY1ZTBiM2M0YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3RJbmZvLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDYgKzM2
LDcgQEAgc3RydWN0IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gewogICAgIGJvb2wgY29u
dGludW91cyB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcmltUmVzdWx0cyB7IGZhbHNlIH07CiAg
ICAgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzIHsgMSB9OworICAgIENsaWVudE9yaWdpbiBjbGll
bnRPcmlnaW47CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8+IGRlY29kZShEZWNvZGVyJik7CkBAIC00Myw3
ICs0NSw3IEBAIHN0cnVjdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIHsKIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CiB2b2lkIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgY2xpZW50SWRlbnRp
ZmllciA8PCBsYW5nIDw8IGNvbnRpbnVvdXMgPDwgaW50ZXJpbVJlc3VsdHMgPDwgbWF4QWx0ZXJu
YXRpdmVzOworICAgIGVuY29kZXIgPDwgY2xpZW50SWRlbnRpZmllciA8PCBsYW5nIDw8IGNvbnRp
bnVvdXMgPDwgaW50ZXJpbVJlc3VsdHMgPDwgbWF4QWx0ZXJuYXRpdmVzIDw8IGNsaWVudE9yaWdp
bjsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTc0LDEyICs3NiwxOCBAQCBPcHRp
b25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBTcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3RJbmZvOjpkZWNvZGUoRGVjbwogICAgIGlmICghbWF4QWx0ZXJuYXRpdmVzKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgT3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBjbGllbnRP
cmlnaW47CisgICAgZGVjb2RlciA+PiBjbGllbnRPcmlnaW47CisgICAgaWYgKCFjbGllbnRPcmln
aW4pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICByZXR1cm4ge3sKICAgICAg
ICAgV1RGTW92ZSgqY2xpZW50SWRlbnRpZmllciksCiAgICAgICAgIFdURk1vdmUoKmxhbmcpLAog
ICAgICAgICBXVEZNb3ZlKCpjb250aW51b3VzKSwKICAgICAgICAgV1RGTW92ZSgqaW50ZXJpbVJl
c3VsdHMpLAotICAgICAgICBXVEZNb3ZlKCptYXhBbHRlcm5hdGl2ZXMpCisgICAgICAgIFdURk1v
dmUoKm1heEFsdGVybmF0aXZlcyksCisgICAgICAgIFdURk1vdmUoKmNsaWVudE9yaWdpbikKICAg
ICB9fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwCmluZGV4IDUzNGVkYTNkMjQ3N2VlMWM2ZjE3ZWM2
YWYxNzkzMjZiYjc5ZjAyMDcuLjlhOWE3ZDkyMDY5NjU1YzQ1NzE2MDdkZGExOGM0ZTZiMzMwZjcy
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uVXBkYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgU3RyaW5nIGNvbnZlcnRF
bnVtZXJhdGlvblRvU3RyaW5nKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSBlbnVtZXJhdGlv
blZhbHVlKQogCiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xp
ZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIHR5cGUpCiB7Ci0gICAg
cmV0dXJuIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIHsgY2xpZW50SWRlbnRpZmllciwgdHlwZSB9
OworICAgIHJldHVybiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7IGNsaWVudElkZW50aWZpZXIs
IHR5cGUsIFdURjo6TW9ub3N0YXRlKCkgfTsKIH0KIAogU3BlZWNoUmVjb2duaXRpb25VcGRhdGUg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgY29uc3QgU3BlZWNoUmVj
b2duaXRpb25FcnJvciYgZXJyb3IpCkBAIC04Myw3ICs4Myw3IEBAIFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllCiBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpl
cnJvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9jb250ZW50LAotICAg
ICAgICBbXSAoU3BlZWNoUmVjb2duaXRpb25FcnJvciYgZXJyb3IpIHsgcmV0dXJuIGVycm9yOyB9
LAorICAgICAgICBbXSAoY29uc3QgU3BlZWNoUmVjb2duaXRpb25FcnJvciYgZXJyb3IpIHsgcmV0
dXJuIGVycm9yOyB9LAogICAgICAgICBbXSAoY29uc3QgYXV0byYpIHsgcmV0dXJuIFNwZWVjaFJl
Y29nbml0aW9uRXJyb3IoKTsgfQogICAgICk7CiB9CkBAIC05MSw3ICs5MSw3IEBAIFNwZWVjaFJl
Y29nbml0aW9uRXJyb3IgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmVycm9yKCkgY29uc3QKIFZl
Y3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+IFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
OjpyZXN1bHQoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fY29udGVudCwK
LSAgICAgICAgW10gKFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+JiBkYXRhKSB7
IHJldHVybiBkYXRhOyB9LAorICAgICAgICBbXSAoY29uc3QgVmVjdG9yPFNwZWVjaFJlY29nbml0
aW9uUmVzdWx0RGF0YT4mIGRhdGEpIHsgcmV0dXJuIGRhdGE7IH0sCiAgICAgICAgIFtdIChjb25z
dCBhdXRvJikgeyByZXR1cm4gVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4geyB9
OyB9CiAgICAgKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCmluZGV4IDNhODJiZjZiYWY1NGNlMGM0YjEzMzRl
ZjZmOGI1ODkzZjNiODk4MmUuLjg5MTQ5MTc5M2Y0ZTAxZWMyZmY2MDEwN2NiNDg1ZjQ4OGZhNDNl
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uVXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25VcGRhdGUuaApAQCAtNTIsOCArNTIsOCBAQCBTdHJpbmcgY29udmVydEVudW1l
cmF0aW9uVG9TdHJpbmcoU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlKTsKIGNsYXNzIFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSk7Ci0gICAgc3Rh
dGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIGNyZWF0ZUVycm9yKFNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXJyb3Im
KTsKLSAgICBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlUmVzdWx0KFNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdERhdGE+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlIGNyZWF0ZUVycm9yKFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXJyb3ImKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlUmVz
dWx0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFZl
Y3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+Jik7CiAKICAgICBTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2NsaWVudElkZW50aWZpZXI7IH0KICAgICBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpAQCAtNjUsNyArNjUsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdXNpbmcgQ29udGVudCA9IFZhcmlhbnQ8V1RGOjpNb25v
c3RhdGUsIFNwZWVjaFJlY29nbml0aW9uRXJyb3IsIFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdERhdGE+PjsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIENvbnRlbnQgPSBXVEY6Ok1vbm9zdGF0ZSgpKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZShTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUs
IENvbnRlbnQpOwogCiAgICAgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllciBtX2NsaWVudElkZW50aWZpZXI7CiAgICAgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
IG1fdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNv
Z25pdGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2du
aXRpb25Qcm92aWRlci5oCmluZGV4IGNmOWU3MmI5M2MwNjRhNTVkZGRmYWI3YjNjYWZiNDg5MGUw
MzVmNDYuLjI0MGFhM2Q0ODRhOTczYjQ0MTEyYWVmNjFlOGVhYWE4NDdiNThkMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIu
aApAQCAtMzksMTAgKzM5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IER1bW15U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uKCkpOwogICAgICAgICB9CiAg
ICAgICAgIHZvaWQgcmVnaXN0ZXJDbGllbnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50JikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgYm9vbCwgYm9vbCwgdWludDY0
X3QpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wsIHVpbnQ2NF90
LCBDbGllbnRPcmlnaW4mJikgZmluYWwgeyB9CiAgICAgICAgIHZvaWQgc3RvcChTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbCB7IH0KICAgICAgICAgdm9p
ZCBhYm9ydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5h
bCB7IH0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZSYmKSBmaW5hbCB7IH0KICAgICB9OwogICAgIER1bW15U3BlZWNo
UmVjb2duaXRpb25Qcm92aWRlcigpID0gZGVmYXVsdDsKICAgICBTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb24mIHNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQVBJT2JqZWN0LmgKaW5kZXggNmQwNjU2NDVkY2VlNjJlNTlkNTBkYmVmMzc0MzVhNDlhODBl
YjY4Mi4uY2QxY2FkOTZiNDAzMTJkYjNiMTg4ZGU3MWY2MDg4YmY3MjhmZDg3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTY1LDYgKzE2NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgUnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1bkphdmFT
Y3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1bkphdmFTY3JpcHRQcm9tcHRS
ZXN1bHRMaXN0ZW5lciwKKyAgICAgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2ssCiAgICAgICAgIFRleHRDaGVja2VyLAogICAgICAgICBVUkxTY2hlbWVUYXNrLAogICAgICAg
ICBVc2VyQ29udGVudENvbnRyb2xsZXIsCkBAIC00MTAsNiArNDExLDcgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxBUEk6Ok9iamVjdDo6VHlwZT4gewogICAgICAgICBBUEk6Ok9iamVj
dDo6VHlwZTo6UnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIEFQSTo6
T2JqZWN0OjpUeXBlOjpSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVyLAogICAgICAg
ICBBUEk6Ok9iamVjdDo6VHlwZTo6UnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExpc3RlbmVyLAor
ICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2ssCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpUZXh0Q2hlY2tlciwKICAgICAgICAg
QVBJOjpPYmplY3Q6OlR5cGU6OlVSTFNjaGVtZVRhc2ssCiAgICAgICAgIEFQSTo6T2JqZWN0OjpU
eXBlOjpVc2VyQ29udGVudENvbnRyb2xsZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5o
CmluZGV4IDllODJlNTYwMDE4N2VjMWNmOGFmOWJlZTc5ZTcxZDBlOGQ3ZmQxNWEuLjg0ZWU2YzI4
OGY2ZDJlYmQ1MWZhNzNlYTcyNzA4ZjMyOTQ2YmRkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L1dLQmFzZS5oCkBAIC0xNDEsNiArMTQxLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tXZWJzaXRlRGF0YUNvbmZpZ3VyYXRpb25TdG9yZSogV0tXZWJzaXRlRGF0YVN0b3JlQ28KIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2Vic2l0ZURhdGFTdG9yZSogV0tXZWJzaXRlRGF0
YVN0b3JlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tXZWJzaXRlUG9saWNpZXMq
IFdLV2Vic2l0ZVBvbGljaWVzUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tXaW5k
b3dGZWF0dXJlcyogV0tXaW5kb3dGZWF0dXJlc1JlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sqIFdLU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWY7CiAKIC8qIFdlYktpdDIgQnVuZGxlIHR5cGVzICov
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CmluZGV4IDgzZDI4MGM3NWVmNWY1YmIwYTJlYjZkMTFhYThjMGZhOTE5Yjc0
ZDAuLmE5MGJiYTA5Y2M3NGVlYmEwNWIwM2QzZjZlNDhkNzU1ZDEwMmZhYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dApAQCAtMjkwLDYgKzI5MCw3IEBAIFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcAog
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAogVUlQcm9jZXNzL1N1c3BlbmRl
ZFBhZ2VQcm94eS5jcHAKIFVJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5jcHAKK1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAogVUlQcm9jZXNz
L1RleHRDaGVja2VyLmNwcAogVUlQcm9jZXNzL1RleHRDaGVja2VyQ29tcGxldGlvbi5jcHAKIFVJ
UHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAKQEAgLTQwMyw2ICs0MDQs
NyBAQCBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9X
S1Byb3RlY3Rpb25TcGFjZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5h
Z2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRlUmVmLmNwcAorVUlQcm9jZXNz
L0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwCiBVSVByb2Nl
c3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50
Q29udHJvbGxlclJlZi5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50RXh0ZW5zaW9u
U3RvcmVSZWYuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMDg0ZDUxMzUyZDQ0YTQ1MDk0
OWIzZmJkMWQxZDc2MTM1ZmIyYmViMi4uNjNiZDQwYzNlZjYwMWVlMTQ5NGExYjQ3MTRhY2UwZTFm
YTE3NDhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMzczLDEyICszNzMsMTQgQEAgVUlQ
cm9jZXNzL0NvY29hL0dsb2JhbEZpbmRJblBhZ2VTdGF0ZS5tbQogVUlQcm9jZXNzL0NvY29hL0lj
b25Mb2FkaW5nRGVsZWdhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQubW0KIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVV0aWxpdGllcy5tbQorVUlQ
cm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQogVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2Eu
bW0KIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KIFVJUHJv
Y2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1NhZmVC
cm93c2luZ1dhcm5pbmdDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1Nlc3Npb25TdGF0ZUNvZGlu
Zy5tbQorVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJD
b2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0K
IFVJUHJvY2Vzcy9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQu
aAppbmRleCBhYTdkODljMDFlNzM1MjBjZTNlZTA0MjI2YjlhZTg1OTcwYmZhYTZlLi5hMGRiYTgz
NzI3YTk2YWQ2MTA0N2I5ZWQxNWI2NGIzMTM0ZWVkYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtMjAyLDYgKzIwMiw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgfQog
CisgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCBiNTJjNDRiYWVhOWFjZjlm
YzAzMzJkNWE5ZjM3MzU2ZTlkMjM4NjI5Li4xOGNiZmQ1Yjc0ZWI4NzcwYTU3OGYxNWM4YTAxNjE0
OTkwMjE0NTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaApA
QCAtNzksNiArNzksNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI7CiBj
bGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsK
IGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworY2xhc3MgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQ
cm94eTsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CiBjbGFzcyBXZWJC
YWNrRm9yd2FyZExpc3Q7CkBAIC0xNTIsNiArMTUzLDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdL
UHJlZmVyZW5jZXNSZWYsIFdlYlByZWZlcmVuY2VzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJv
dGVjdGlvblNwYWNlUmVmLCBXZWJQcm90ZWN0aW9uU3BhY2UpCiBXS19BRERfQVBJX01BUFBJTkco
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclJlZiwgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tTZXNzaW9uU3RhdGVSZWYsIEFQSTo6
U2Vzc2lvblN0YXRlKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2tSZWYsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKQog
V0tfQUREX0FQSV9NQVBQSU5HKFdLVGV4dENoZWNrZXJSZWYsIFdlYlRleHRDaGVja2VyKQogV0tf
QUREX0FQSV9NQVBQSU5HKFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJDb250ZW50RXh0ZW5z
aW9uU3RvcmVSZWYsIEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA0MzY5Y2RkODI1YjUxNTdmYjAxMGMzZjgxYWU3
OGU2NjBkYWE3NGZjLi41ZTEwOWQ1NzllYjc1ZjFkOGZiZmIxZDAzYThmOGMwZDdiY2U2ZGZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTYzLDYgKzYzLDcg
QEAKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb3JtYXRpb24u
aCIKICNpbmNsdWRlICJQcmludEluZm8uaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tQ
YWdlUG9saWN5Q2xpZW50SW50ZXJuYWwuaCIKICNpbmNsdWRlICJXS1BhZ2VSZW5kZXJpbmdQcm9n
cmVzc0V2ZW50c0ludGVybmFsLmgiCkBAIC0xMTUsNyArMTE2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVBvbGljeUNsaWVudEJhc2U+IHsKIH07CiAKIHRlbXBsYXRl
PD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VVSUNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlD
bGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdlVUlDbGllbnRWNCwgV0tQYWdlVUlDbGll
bnRWNSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQYWdlVUlDbGllbnRWNywgV0tQYWdlVUlDbGllbnRW
OCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQYWdlVUlDbGllbnRWMTAsIFdLUGFnZVVJQ2xpZW50VjEx
LCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQYWdlVUlDbGllbnRWMTMsIFdLUGFnZVVJQ2xpZW50VjE0
PiBWZXJzaW9uczsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQ
YWdlVUlDbGllbnRWMSwgV0tQYWdlVUlDbGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdl
VUlDbGllbnRWNCwgV0tQYWdlVUlDbGllbnRWNSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQYWdlVUlD
bGllbnRWNywgV0tQYWdlVUlDbGllbnRWOCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQYWdlVUlDbGll
bnRWMTAsIFdLUGFnZVVJQ2xpZW50VjExLCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQYWdlVUlDbGll
bnRWMTMsIFdLUGFnZVVJQ2xpZW50VjE0LCBXS1BhZ2VVSUNsaWVudFYxNT4gVmVyc2lvbnM7CiB9
OwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0yMTEwLDYgKzIxMTEsMTMgQEAgdm9p
ZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJ
Q2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktp
dDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6UHJlc2VudGVkKTsKICAgICAgICAgfQog
I2VuZGlmCisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIG9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
ZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lG
b3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKCZvcmlnaW4pLCB0b0FQ
SShTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKS5wdHIoKSkpOworICAgICAgICB9CiAgICAgfTsKIAogICAgIHRvSW1w
bChwYWdlUmVmKS0+c2V0VUlDbGllbnQobWFrZVVuaXF1ZTxVSUNsaWVudD4od2tDbGllbnQpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCmluZGV4
IGI2Mzg4MTU1Y2QzMDM2ZTY2NjExMGYxOTI1NjE2YWZkMzdlODY4YmEuLjYzNjM1NTU2NGQwMGIx
MTIyYTg3ZTIyOWEzMGI5NGQ3ZTk5ZTRlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaApAQCAtMTM2LDYgKzEzNiw3IEBAIHR5cGVkZWYgdm9p
ZCAoKldLUGFnZURpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZUNh
bGxiYWNrKShXS1BhCiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VTaG91bGRBbGxvd0RldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uQWNjZXNzQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5
T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIAogdHlw
ZWRlZiB2b2lkICgqV0tQYWdlUnVuV2ViQXV0aGVudGljYXRpb25QYW5lbENhbGxiYWNrKSgpOwor
dHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTZWN1cml0eU9yaWdpblJl
ZiB0b3BPcmlnaW4sIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgY2Fs
bGJhY2spOwogCiAvLyBEZXByZWNhdGVkCiB0eXBlZGVmIFdLUGFnZVJlZiAoKldLUGFnZUNyZWF0
ZU5ld1BhZ2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwKShXS1BhZ2VSZWYgcGFnZSwg
V0tEaWN0aW9uYXJ5UmVmIGZlYXR1cmVzLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tF
dmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKQEAg
LTEzNTMsNiArMTM1NCwxMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMTQgewog
ICAgIFdLUGFnZVJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDsKIH0gV0tQYWdlVUlDbGll
bnRWMTQ7CiAKK3R5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjE1IHsKKyAgICBXS1BhZ2VV
SUNsaWVudEJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJhc2U7CisKKyAgICAvLyBWZXJzaW9uIDAuCisgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNh
bGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQ
YWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93UGFnZTsKKyAg
ICBXS1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNsb3NlOworICAgIFdLUGFnZVRha2VGb2N1c0NhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZUZvY3VzOworICAgIFdLUGFn
ZUZvY3VzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm9jdXM7CisgICAgV0tQYWdlVW5mb2N1c0NhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmZvY3VzOworICAgIFdLUGFnZVJ1bkphdmFT
Y3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgICAgcnVu
SmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICAgICBy
dW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZVJ1
bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICAg
ICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFn
ZVNldFN0YXR1c1RleHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0U3RhdHVzVGV4dDsKKyAgICBXS1BhZ2VNb3VzZURpZE1vdmVPdmVyRWxlbWVudENh
bGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVt
ZW50X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlTWlzc2luZ1BsdWdpbkJ1dHRv
bkNsaWNrZWRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICBtaXNzaW5nUGx1Z2lu
QnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZURpZE5vdEhh
bmRsZUtleUV2ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlk
Tm90SGFuZGxlS2V5RXZlbnQ7CisgICAgV0tQYWdlRGlkTm90SGFuZGxlV2hlZWxFdmVudENhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWROb3RIYW5kbGVXaGVlbEV2ZW50
OworICAgIFdLUGFnZUdldFRvb2xiYXJzQXJlVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdG9vbGJhcnNBcmVWaXNpYmxlOworICAgIFdLUGFnZVNldFRvb2xi
YXJzQXJlVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
VG9vbGJhcnNBcmVWaXNpYmxlOworICAgIFdLUGFnZUdldE1lbnVCYXJJc1Zpc2libGVDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudUJhcklzVmlzaWJsZTsKKyAg
ICBXS1BhZ2VTZXRNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE1lbnVCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlR2V0U3RhdHVzQmFy
SXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNC
YXJJc1Zpc2libGU7CisgICAgV0tQYWdlU2V0U3RhdHVzQmFySXNWaXNpYmxlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0dXNCYXJJc1Zpc2libGU7CisgICAg
V0tQYWdlR2V0SXNSZXNpemFibGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpc1Jlc2l6YWJsZTsKKyAgICBXS1BhZ2VTZXRJc1Jlc2l6YWJsZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzUmVzaXphYmxlOwor
ICAgIFdLUGFnZUdldFdpbmRvd0ZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2V0V2luZG93RnJhbWU7CisgICAgV0tQYWdlU2V0V2luZG93RnJhbWVD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRXaW5kb3dG
cmFtZTsKKyAgICBXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxDYWxsYmFja19kZXBy
ZWNhdGVkRm9yVXNlV2l0aFY2ICAgIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXByZWNh
dGVkRm9yVXNlV2l0aFY2OworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRHJhdzsKKyAgICBXS1BhZ2VVSUNs
aWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhZ2VEaWRTY3JvbGw7CisgICAgV0tQYWdlRXhjZWVkZWREYXRhYmFzZVF1b3RhQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlZWRlZERhdGFiYXNlUXVvdGE7Cisg
ICAgV0tQYWdlUnVuT3BlblBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydW5PcGVuUGFuZWw7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgICBkZWNpZGVQb2xpY3lG
b3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZUhlYWRlckhlaWdodENh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVySGVp
Z2h0OworICAgIFdLUGFnZUZvb3RlckhlaWdodENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9vdGVySGVpZ2h0OworICAgIFdLUGFnZURyYXdIZWFkZXJD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0hl
YWRlcjsKKyAgICBXS1BhZ2VEcmF3Rm9vdGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRyYXdGb290ZXI7CisgICAgV0tQYWdlUHJpbnRGcmFtZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludEZy
YW1lOworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnVuTW9kYWw7CisgICAgdm9pZCogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQxOyAv
LyBVc2VkIHRvIGJlIGRpZENvbXBsZXRlUnViYmVyQmFuZEZvck1haW5GcmFtZQorICAgIFdLUGFn
ZVNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXJDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcjsKKyAgICB2b2lkKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo
b3VsZEludGVycnVwdEphdmFTY3JpcHRfdW5hdmFpbGFibGU7CisKKyAgICAvLyBWZXJzaW9uIDEu
CisgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEg
ICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjE7Cisg
ICAgV0tQYWdlTW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDsKKyAgICBXS1BhZ2VEZWNpZGVQ
b2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgIGRl
Y2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZVVu
YXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjEgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjE7
CisKKyAgICAvLyBWZXJzaW9uIDIuCisgICAgV0tQYWdlU2hvd0NvbG9yUGlja2VyQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q29sb3JQaWNrZXI7Cisg
ICAgV0tQYWdlSGlkZUNvbG9yUGlja2VyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoaWRlQ29sb3JQaWNrZXI7CisgICAgV0tQYWdlVW5hdmFpbGFibGVQbHVn
aW5CdXR0b25DbGlja2VkQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICB1bmF2YWlsYWJs
ZVBsdWdpbkJ1dHRvbkNsaWNrZWQ7CisKKyAgICAvLyBWZXJzaW9uIDMuCisgICAgV0tQYWdlUGlu
bmVkU3RhdGVEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwaW5uZWRTdGF0ZURpZENoYW5nZTsKKworICAgIC8vIFZlcnNpb24gNC4KKyAgICB2b2lkKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVudXNlZDI7IC8vIFVzZWQgdG8gYmUgZGlkQmVnaW5UcmFja2luZ1BvdGVudGlhbExvbmdN
b3VzZVByZXNzLgorICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkMzsgLy8gVXNlZCB0byBiZSBkaWRSZWNv
Z25pemVMb25nTW91c2VQcmVzcy4KKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDQ7IC8vIFVzZWQgdG8g
YmUgZGlkQ2FuY2VsVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcy4KKyAgICBXS1BhZ2VJ
c1BsYXlpbmdBdWRpb0RpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlOworCisgICAgLy8gVmVyc2lvbiA1LgorICAgIFdL
UGFnZURlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAg
ICAgICAgICAgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q7CisgICAg
V0tQYWdlRGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWRDbGlja0F1dG9GaWxsQnV0dG9uOworICAgIFdLUGFnZVJ1bkphdmFTY3Jp
cHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVuSmF2
YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CisgICAgV0tQYWdlUnVuSmF2YVNj
cmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBydW5K
YXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OworICAgIFdLUGFnZVJ1bkph
dmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAg
cnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OworICAgIHZvaWQqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4K
KworICAgIC8vIFZlcnNpb24gNi4KKyAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CisgICAg
V0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnQ7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENv
bmZpcm1DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5KYXZhU2Ny
aXB0Q29uZmlybTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHQ7CisgICAgV0tD
aGVja1VzZXJNZWRpYVBlcm1pc3Npb25DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW47CisKKyAgICAvLyBWZXJz
aW9uIDcuCisgICAgV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CisgICAg
V0tGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmU7CisKKyAgICAvLyBWZXJzaW9u
IDguCisgICAgV0tSZXF1ZXN0UG9pbnRlckxvY2tDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0UG9pbnRlckxvY2s7CisgICAgV0tEaWRMb3NlUG9p
bnRlckxvY2tDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWRMb3NlUG9pbnRlckxvY2s7CisKKyAgICAvLyBWZXJzaW9uIDkuCisgICAgV0tIYW5kbGVBdXRv
cGxheUV2ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
YW5kbGVBdXRvcGxheUV2ZW50OworCisgICAgLy8gVmVyc2lvbiAxMC4KKyAgICBXS0hhc1ZpZGVv
SW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
IGhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlOworICAgIFdLRGlkRXhjZWVkQmFj
a2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZENhbGxiYWNrICAgICAgICAgZGlk
RXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDsKKworICAgIC8v
IFZlcnNpb24gMTEuCisgICAgV0tQYWdlRGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dv
cmRBcHBlYXJhbmNlQ2FsbGJhY2sgICAgICAgICBkaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQ
YXNzd29yZEFwcGVhcmFuY2U7CisKKyAgICAvLyBWZXJzaW9uIDEyLgorICAgIFdLUGFnZVJlcXVl
c3RTdG9yYWdlQWNjZXNzQ29uZmlybUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtOworCisgICAgLy8gVmVyc2lvbiAxMy4KKyAgICBX
S1BhZ2VTaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ2FsbGJhY2sg
ICAgICAgICAgIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3M7CisK
KyAgICAvLyBWZXJzaW9uIDE0LgorICAgIFdLUGFnZVJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25Q
YW5lbDsKKworICAgIC8vIFZlcnNpb24gMTUuCisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICBkZWNpZGVQb2xpY3lG
b3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIAorfSBXS1BhZ2VVSUNs
aWVudFYxNTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNjOGY5YTM1ZGI4NDEx
ZTAzODVhN2FlMTU0OWEzOWFmODEzMmVkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
Y3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIgorCisjaW5j
bHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4g
dG9BUEkoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OkFQSVR5cGUpOworfQor
Cit2b2lkIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tDb21wbGV0ZShXS1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIHNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrLCBib29sIGdyYW50ZWQpCit7CisgICAgcmV0dXJuIHRvSW1wbChzcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayktPmNvbXBsZXRlKGdyYW50ZWQpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4YWVh
ZmM2OTg0YmE5NmY1NDg5MmU3MzJhZmVhM2EwNjNjOWM3MmQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVy
biAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKHZvaWQpOworCitXS19FWFBPUlQgdm9pZCBXS1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUoV0tTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBzcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjaywgYm9vbCBncmFudGVkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRl
UHJpdmF0ZS5oCmluZGV4IGQxZWFlMjAxZTY1NDJmNGZhYjYwMTk4MGRjNjYxMjQ5MTMxOTc5M2Yu
LmYwYTliYTQxZjUxNWVmNzE4Zjc0NmM3ZmRmZmZlYTRhMzVlOGRlMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUu
aApAQCAtMTUyLDYgKzE1Miw4IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAKIC0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2lsbFNoYXJlQWN0aXZpdHlJdGVtczooTlNBcnJh
eSAqKWFjdGl2aXR5SXRlbXMgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogCist
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gZGVjaXNp
b25IYW5kbGVyOih2b2lkICheKShCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlciBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAjaWYg
VEFSR0VUX09TX0lQSE9ORQogCiAtIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHNob3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1l
bnRJbmZvICopZWxlbWVudCBXS19BUElfQVZBSUxBQkxFKGlvcyg5LjApKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWZiNGY1NWQwYmU5YmYzZmFlNjlkNTZkNjVlM2Q4Mjg3ZmFiMDI3ZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVy
bWlzc2lvblV0aWxpdGllcy5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWTWVkaWFGb3JtYXQuaD4KKyNpbXBvcnQg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBNZWRpYVBlcm1pc3Npb25UeXBlIHsKKyAgICBB
dWRpbywKKyAgICBWaWRlbworfTsKKworZW51bSBjbGFzcyBNZWRpYVBlcm1pc3Npb25SZXN1bHQg
eworICAgIERlbmllZCwKKyAgICBHcmFudGVkLAorICAgIFVua25vd24KK307CisKKyNpZiBIQVZF
KEFWQ0FQVFVSRURFVklDRSkKK3ZvaWQgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVk
aWFQZXJtaXNzaW9uVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQp
PiYmKTsKK01lZGlhUGVybWlzc2lvblJlc3VsdCBjaGVja0FWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUo
TWVkaWFQZXJtaXNzaW9uVHlwZSk7CisjZW5kaWYKKworYm9vbCBjaGVja1NhbmRib3hSZXF1aXJl
bWVudEZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSk7Citib29sIGNoZWNrVXNhZ2VEZXNjcmlw
dGlvblN0cmluZ0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSk7CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9NZWRp
YVBlcm1pc3Npb25VdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9N
ZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhlY2RiOGJmNzA5MmU4NzFj
Y2NhMTRlODRmYmMwZmE4ZjJhNjY0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQpAQCAtMCwwICsxLDEx
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTWVkaWFQZXJt
aXNzaW9uVXRpbGl0aWVzLmgiCisKKyNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKKyNpbXBv
cnQgIlRDQ1NQSS5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvc3Bp
L2Rhcndpbi9TYW5kYm94U1BJLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29m
dExpbmsuaD4KKworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFRDQykKK1NPRlRfTElOSyhU
Q0MsIFRDQ0FjY2Vzc1ByZWZsaWdodCwgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0LCAoQ0ZTdHJp
bmdSZWYgc2VydmljZSwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpLCAoc2VydmljZSwgb3B0aW9u
cykpCitTT0ZUX0xJTktfQ09OU1RBTlQoVENDLCBrVENDU2VydmljZU1pY3JvcGhvbmUsIENGU3Ry
aW5nUmVmKQorU09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RDQ1NlcnZpY2VDYW1lcmEsIENGU3Ry
aW5nUmVmKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2lmIEhBVkUoQVZDQVBUVVJFREVWSUNF
KQorCit2b2lkIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5
cGUgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBBVk1l
ZGlhVHlwZSBtZWRpYVR5cGUgPSB0eXBlID09IE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvID8g
QVZNZWRpYVR5cGVBdWRpbyA6IEFWTWVkaWFUeXBlVmlkZW87CisgICAgYXV0byBkZWNpc2lvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKEJPT0wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChpc01h
aW5UaHJlYWQoKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBhdXRo
b3JpemVkXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9y
aXplZCk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIFtQQUw6OmdldEFWQ2FwdHVyZURldmlj
ZUNsYXNzKCkgcmVxdWVzdEFjY2Vzc0Zvck1lZGlhVHlwZTptZWRpYVR5cGUgY29tcGxldGlvbkhh
bmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKK30KKworTWVkaWFQZXJtaXNzaW9uUmVzdWx0
IGNoZWNrQVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlIHR5cGUpCit7
CisgICAgQVZNZWRpYVR5cGUgbWVkaWFUeXBlID0gdHlwZSA9PSBNZWRpYVBlcm1pc3Npb25UeXBl
OjpBdWRpbyA/IEFWTWVkaWFUeXBlQXVkaW8gOiBBVk1lZGlhVHlwZVZpZGVvOworICAgIGF1dG8g
YXV0aG9yaXphdGlvblN0YXR1cyA9IFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgYXV0
aG9yaXphdGlvblN0YXR1c0Zvck1lZGlhVHlwZTptZWRpYVR5cGVdOworICAgIGlmIChhdXRob3Jp
emF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCB8fCBhdXRob3JpemF0
aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpCisgICAgICAgIHJl
dHVybiBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkRlbmllZDsKKyAgICBpZiAoYXV0aG9yaXphdGlv
blN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkKQorICAgICAgICBy
ZXR1cm4gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duOworICAgIHJldHVybiBNZWRpYVBl
cm1pc3Npb25SZXN1bHQ6OkdyYW50ZWQ7Cit9CisKKyNlbmRpZgorCitib29sIGNoZWNrU2FuZGJv
eFJlcXVpcmVtZW50Rm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlIHR5cGUpCit7CisjaWYgUExB
VEZPUk0oTUFDKQorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBhdWRpb0ZsYWc7CisgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIHZpZGVvRmxhZzsKKyAgICBzdGF0aWMgYm9vbCBpc0F1ZGlvRW50
aXRsZWQgPSB0cnVlOworICAgIHN0YXRpYyBib29sIGlzVmlkZW9FbnRpdGxlZCA9IHRydWU7Cisg
ICAgCisgICAgYXV0byBjaGVja0Z1bmN0aW9uID0gW10oY29uc3QgY2hhciogb3BlcmF0aW9uLCBi
b29sKiBlbnRpdGxlZCkgeworICAgICAgICBpZiAoIWN1cnJlbnRQcm9jZXNzSXNTYW5kYm94ZWQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpbnQgcmVzdWx0ID0gc2FuZGJveF9j
aGVjayhnZXRwaWQoKSwgb3BlcmF0aW9uLCBTQU5EQk9YX0ZJTFRFUl9OT05FKTsKKyAgICAgICAg
aWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3IgY2hlY2tp
bmcgJyVzJyBzYW5kYm94IGFjY2VzcywgZXJybm89JWxkIiwgb3BlcmF0aW9uLCAobG9uZyllcnJu
byk7CisgICAgICAgICplbnRpdGxlZCA9ICFyZXN1bHQ7CisgICAgfTsKKworICAgIGlmICh0eXBl
ID09IE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKSB7CisgICAgICAgIHN0ZDo6Y2FsbF9vbmNl
KGF1ZGlvRmxhZywgY2hlY2tGdW5jdGlvbiwgImRldmljZS1taWNyb3Bob25lIiwgJmlzQXVkaW9F
bnRpdGxlZCk7CisgICAgICAgIHJldHVybiBpc0F1ZGlvRW50aXRsZWQ7CisgICAgfQorCisgICAg
c3RkOjpjYWxsX29uY2UodmlkZW9GbGFnLCBjaGVja0Z1bmN0aW9uLCAiZGV2aWNlLWNhbWVyYSIs
ICZpc1ZpZGVvRW50aXRsZWQpOworICAgIHJldHVybiBpc1ZpZGVvRW50aXRsZWQ7CisjZW5kaWYK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdG
b3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGUgdHlwZSkKK3sKKyAgICBpZiAodHlwZSA9PSBNZWRp
YVBlcm1pc3Npb25UeXBlOjpBdWRpbykgeworICAgICAgICBzdGF0aWMgVENDQWNjZXNzUHJlZmxp
Z2h0UmVzdWx0IGF1ZGlvQWNjZXNzID0gVENDQWNjZXNzUHJlZmxpZ2h0KGdldGtUQ0NTZXJ2aWNl
TWljcm9waG9uZSgpLCBOVUxMKTsKKyAgICAgICAgaWYgKGF1ZGlvQWNjZXNzID09IGtUQ0NBY2Nl
c3NQcmVmbGlnaHRHcmFudGVkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJl
dHVybiBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZv
RGljdGlvbmFyeVtAIk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb24iXSkubGVuZ3RoID4gMDsK
KyAgICB9CisKKyAgICBzdGF0aWMgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0IHZpZGVvQWNjZXNz
ID0gVENDQWNjZXNzUHJlZmxpZ2h0KGdldGtUQ0NTZXJ2aWNlQ2FtZXJhKCksIE5VTEwpOworICAg
IGlmICh2aWRlb0FjY2VzcyA9PSBrVENDQWNjZXNzUHJlZmxpZ2h0R3JhbnRlZCkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihOU0J1
bmRsZS5tYWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNDYW1lcmFVc2FnZURlc2NyaXB0aW9u
Il0pLmxlbmd0aCA+IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwMmUwZTViMzBi
ZTQ0NDAyNWUyMDk3YjIyMTAzOTQ3NWNjYTc3YzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
Q29jb2EubW0KQEAgLTAsMCArMSwxODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIKKworI2lt
cG9ydCAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKKyNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCisjaW1w
b3J0ICJNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTkla
RVIpCisjaW1wb3J0IDxTcGVlY2gvU3BlZWNoLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUksoU3Bl
ZWNoKQorU09GVF9MSU5LX0NMQVNTKFNwZWVjaCwgU0ZTcGVlY2hSZWNvZ25pemVyKQorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OnN0YXJ0UHJvY2Vzc2luZ1JlcXVlc3QoKQoreworICAgIGlmICghY2hlY2tTYW5k
Ym94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKSkgeworICAg
ICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRl
Y2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghY2hlY2tN
aWNyb3Bob25lQWNjZXNzKCkgfHwgIWNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNz
KCkgfHwgbV91c2VyUGVybWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAg
ICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25E
ZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb250aW51ZVBy
b2Nlc3NpbmdSZXF1ZXN0KCk7Cit9CisKK2Jvb2wgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKCkKK3sKKyAgICBpZiAobV9wYWdlLnByZWZl
cmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIGlmIChtX21pY3JvcGhvbmVDaGVjayA9PSBDaGVja1Jlc3VsdDo6VW5rbm93bikg
eworI2lmIEhBVkUoQVZDQVBUVVJFREVWSUNFKQorICAgICAgICBhdXRvIHJlc3VsdCA9IGNoZWNr
QVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbyk7CisgICAg
ICAgIGlmIChyZXN1bHQgIT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duKQorICAgICAg
ICAgICAgbV9taWNyb3Bob25lQ2hlY2sgPSByZXN1bHQgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0
OjpHcmFudGVkID8gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBDaGVja1Jlc3VsdDo6RGVuaWVkOwor
ICAgICAgICBlbHNlIGlmICghY2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yVHlwZShNZWRp
YVBlcm1pc3Npb25UeXBlOjpBdWRpbykpCisgICAgICAgICAgICBtX21pY3JvcGhvbmVDaGVjayA9
IENoZWNrUmVzdWx0OjpEZW5pZWQ7CisjZWxzZQorICAgICAgICBtX21pY3JvcGhvbmVDaGVjayA9
IENoZWNrUmVzdWx0OjpHcmFudGVkOworI2VuZGlmCisgICAgfQorCisgICAgcmV0dXJuIG1fbWlj
cm9waG9uZUNoZWNrICE9IENoZWNrUmVzdWx0OjpEZW5pZWQ7Cit9CisKK2Jvb2wgU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VB
Y2Nlc3MoKQoreworICAgIGlmIChtX3BhZ2UucHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmlj
ZXNFbmFibGVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG1fc3BlZWNoUmVj
b2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyNpZiBIQVZF
KFNQRUVDSFJFQ09HTklaRVIpCisgICAgICAgIGF1dG8gc3RhdHVzID0gW2dldFNGU3BlZWNoUmVj
b2duaXplckNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c107CisgICAgICAgIGlmIChzdGF0dXMg
IT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQpCisg
ICAgICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrID0gc3RhdHVzID09IFNG
U3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkID8gQ2hlY2tSZXN1
bHQ6OkdyYW50ZWQgOiBDaGVja1Jlc3VsdDo6RGVuaWVkOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIGJvb2wgaGFzRGVzY3JpcHRpb25TdHJpbmcgPSBkeW5hbWljX29iamNfY2FzdDxOU1N0
cmluZz4oTlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TU3BlZWNoUmVjb2du
aXRpb25Vc2FnZURlc2NyaXB0aW9uIl0pLmxlbmd0aDsKKyAgICAgICAgICAgIG1fc3BlZWNoUmVj
b2duaXRpb25TZXJ2aWNlQ2hlY2sgPSBoYXNEZXNjcmlwdGlvblN0cmluZyA/IENoZWNrUmVzdWx0
OjpVbmtub3duIDogQ2hlY2tSZXN1bHQ6OkRlbmllZDsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAg
ICAgbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VDaGVjayA9IENoZWNrUmVzdWx0OjpHcmFudGVk
OworI2VuZGlmCisgICAgfQorCisgICAgcmV0dXJuIG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNl
Q2hlY2sgIT0gQ2hlY2tSZXN1bHQ6OkRlbmllZDsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNz
KCkKK3sKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQobV9zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VDaGVjayA9PSBDaGVj
a1Jlc3VsdDo6VW5rbm93bik7CisKKyAgICBhdXRvIG1haW5UaHJlYWRIYW5kbGVyID0gKFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShib29sIGF1dGhvcml6ZWQpIG11dGFibGUg
eworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPSAgYXV0aG9yaXplZCA/IENoZWNrUmVz
dWx0OjpHcmFudGVkIDogQ2hlY2tSZXN1bHQ6OkRlbmllZDsKKyAgICAgICAgaWYgKG1fc3BlZWNo
UmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OkRlbmllZCkgeworICAgICAg
ICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25E
ZWNpc2lvbjo6RGVueSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCk7CisgICAgfSk7CisgICAgYXV0byBkZWNpc2lv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW21haW5UaHJlYWRIYW5kbGVyID0gV1RGTW92ZShtYWlu
VGhyZWFkSGFuZGxlcildKFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXMgc3Rh
dHVzKSBtdXRhYmxlIHsKKyAgICAgICAgYm9vbCBhdXRob3JpemVkID0gc3RhdHVzID09IFNGU3Bl
ZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkOworICAgICAgICBpZiAo
IWlzTWFpblRocmVhZCgpKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFttYWluVGhy
ZWFkSGFuZGxlciA9IFdURk1vdmUobWFpblRocmVhZEhhbmRsZXIpLCBhdXRob3JpemVkXSgpIG11
dGFibGUgeworICAgICAgICAgICAgICAgIG1haW5UaHJlYWRIYW5kbGVyKGF1dGhvcml6ZWQpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
bWFpblRocmVhZEhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgfSk7CisgICAgW2dldFNGU3BlZWNo
UmVjb2duaXplckNsYXNzKCkgcmVxdWVzdEF1dGhvcml6YXRpb246ZGVjaXNpb25IYW5kbGVyLmdl
dCgpXTsKKyNlbmRpZgorfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNjZXNzKCkKK3sKKyNpZiBIQVZFKEFWQ0FQVFVSRURFVklD
RSkKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX21pY3JvcGhvbmVD
aGVjayA9PSBDaGVja1Jlc3VsdDo6VW5rbm93bik7CisKKyAgICByZXF1ZXN0QVZDYXB0dXJlQWNj
ZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbywgW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyldKGJvb2wgYXV0aG9yaXplZCkgeworICAgICAgICBpZiAoIXdlYWtU
aGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fbWljcm9waG9uZUNoZWNrID0g
YXV0aG9yaXplZCA/IENoZWNrUmVzdWx0OjpHcmFudGVkIDogQ2hlY2tSZXN1bHQ6OkRlbmllZDsK
KyAgICAgICAgaWYgKG1fbWljcm9waG9uZUNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsK
KyAgICAgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgpOworICAgIH0pOworI2VuZGlmCit9
CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdFVzZXJQ
ZXJtaXNzaW9uKCkKK3sKKyAgICBBU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKyAgICBh
dXRvJiBjdXJyZW50UmVxdWVzdCA9IG1fcmVxdWVzdHMuZmlyc3QoKTsKKworICAgIGF1dG8gY2xp
ZW50T3JpZ2luID0gY3VycmVudFJlcXVlc3QtPm9yaWdpbigpOworICAgIGF1dG8gcmVxdWVzdGlu
Z09yaWdpbiA9IGNsaWVudE9yaWdpbi5jbGllbnRPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKKyAg
ICBhdXRvIHRvcE9yaWdpbiA9IGNsaWVudE9yaWdpbi50b3BPcmlnaW4uc2VjdXJpdHlPcmlnaW4o
KTsKKyAgICBpZiAocmVxdWVzdGluZ09yaWdpbi0+aXNTYW1lT3JpZ2luQXModG9wT3JpZ2luKSkg
eworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8g
ZGVjaXNpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShi
b29sIGdyYW50ZWQpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPSBncmFudGVkID8gQ2hlY2tSZXN1
bHQ6OkdyYW50ZWQgOiBDaGVja1Jlc3VsdDo6RGVuaWVkOworICAgICAgICBpZiAobV91c2VyUGVy
bWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAgICAgICAgICAgIGNvbXBs
ZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRl
bnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29udGludWVQ
cm9jZXNzaW5nUmVxdWVzdCgpOworICAgIH07CisgICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRl
UG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsIEFQSTo6
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0b3BPcmlnaW4uZ2V0KCkpLmdldCgpLCBXVEZNb3ZlKGRl
Y2lzaW9uSGFuZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDhhMDk0NzQ1YzFmMjRiZTEw
NWRiYjAyYWI5MWUzMDdiMzFkNDg2YjEuLjYyZDdhOGExOGY2ZWI4Mzk0Y2JlMDJjZmFjNDM3NmE1
NGQwYTFmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgK
QEAgLTE2MSw2ICsxNjEsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAg
ICAgIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkmLCBBUEk6Oldl
YkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJGcmFtZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmKSBm
aW5hbDsKICNlbmRpZgorICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogCiAgICAgICAgIFVJRGVs
ZWdhdGUmIG1fdWlEZWxlZ2F0ZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUubW0KaW5kZXggZDAzMzhmOGQ2ZTNiOWExM2RmMmFmMTUzYWNiNWRlYjM4
ZTFmY2Q5Yi4uMGY5ZWE5MDlhNmVmOTk5MTFiZTgxZWVlOWUwOTM4OTg1N2EyNjhmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0xMzMyLDQgKzEz
MzIsMjYgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6aW1hZ2VPck1lZGlhRG9jdW1lbnRT
aXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXoKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdL
VUlEZWxlZ2F0ZVByaXZhdGU+PihkZWxlZ2F0ZSkgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2Vi
VmlldyBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkOm5ld1NpemVdOwogfQogCit2b2lk
IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6OlNlY3VyaXR5
T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IChpZCA8V0tVSURlbGVnYXRlUHJpdmF0
ZT4pbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46ZGVjaXNpb25I
YW5kbGVyOildKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2Fs
bENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46ZGVjaXNpb25IYW5kbGVyOikpOworICAg
IFtkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJlcXVlc3RTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46d3JhcHBlcihvcmlnaW4pIGRlY2lzaW9uSGFu
ZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShjb21w
bGV0aW9uSGFuZGxlciwgeyB9KSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildIChCT09MIGdy
YW50ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJI
YXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNoZWNrZXItPmRp
ZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihncmFu
dGVkKTsKKyAgICB9KS5nZXQoKV07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5tbQppbmRleCA5OTc1NzVkZTAyMTZh
OWMwY2Q3NmFmY2I0MWM3NjQxZGIxMzE1YWZiLi44ZWJlYzUyY2M2YjY2ZDE1YTIzZTU0NGUyMzRl
ZWQ4NWFjZWYwYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgogCisjaW1wb3J0ICJNZWRpYVBl
cm1pc3Npb25VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBv
cnQgIlRDQ1NQSS5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCkBAIC0zNyw0MCArMzgsMTIg
QEAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogI2ltcG9ydCA8
d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogCi1TT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdP
UksoVENDKQotU09GVF9MSU5LKFRDQywgVENDQWNjZXNzUHJlZmxpZ2h0LCBUQ0NBY2Nlc3NQcmVm
bGlnaHRSZXN1bHQsIChDRlN0cmluZ1JlZiBzZXJ2aWNlLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9u
cyksIChzZXJ2aWNlLCBvcHRpb25zKSkKLVNPRlRfTElOSyhUQ0MsIFRDQ0FjY2Vzc1ByZWZsaWdo
dFdpdGhBdWRpdFRva2VuLCBUQ0NBY2Nlc3NQcmVmbGlnaHRSZXN1bHQsIChDRlN0cmluZ1JlZiBz
ZXJ2aWNlLCBhdWRpdF90b2tlbl90IHRva2VuLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucyksIChz
ZXJ2aWNlLCB0b2tlbiwgb3B0aW9ucykpCi1TT0ZUX0xJTktfQ09OU1RBTlQoVENDLCBrVENDU2Vy
dmljZU1pY3JvcGhvbmUsIENGU3RyaW5nUmVmKQotU09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RD
Q1NlcnZpY2VDYW1lcmEsIENGU3RyaW5nUmVmKQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogYm9v
bCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cGVybWl0dGVkVG9DYXB0
dXJlQXVkaW8oKQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpZiBQTEFURk9STShN
QUMpCi0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0YXRpYyBib29s
IGVudGl0bGVkID0gdHJ1ZTsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAg
ICAgICBpZiAoIWN1cnJlbnRQcm9jZXNzSXNTYW5kYm94ZWQoKSkKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBpbnQgcmVzdWx0ID0gc2FuZGJveF9jaGVjayhnZXRwaWQoKSwgImRldmlj
ZS1taWNyb3Bob25lIiwgU0FOREJPWF9GSUxURVJfTk9ORSk7Ci0gICAgICAgIGVudGl0bGVkID0g
IXJlc3VsdDsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKLSAgICAgICAgICAgIFdURkxvZ0Fs
d2F5cygiRXJyb3IgY2hlY2tpbmcgJ2RldmljZS1taWNyb3Bob25lJyBzYW5kYm94IGFjY2Vzcywg
ZXJybm89JWxkIiwgKGxvbmcpZXJybm8pOwotICAgIH0pOwotICAgIGlmICghZW50aXRsZWQpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCi0KLSAgICBzdGF0
aWMgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0IGFjY2VzcyA9IFRDQ0FjY2Vzc1ByZWZsaWdodChn
ZXRrVENDU2VydmljZU1pY3JvcGhvbmUoKSwgTlVMTCk7Ci0gICAgaWYgKGFjY2VzcyA9PSBrVEND
QWNjZXNzUHJlZmxpZ2h0R3JhbnRlZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBzdGF0
aWMgYm9vbCBpc1Blcm1pdHRlZCA9IGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihOU0J1bmRs
ZS5tYWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlv
biJdKS5sZW5ndGg7Ci0gICAgcmV0dXJuIGlzUGVybWl0dGVkOworICAgIHJldHVybiBjaGVja1Nh
bmRib3hSZXF1aXJlbWVudEZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6QXVkaW8pICYmIGNo
ZWNrVXNhZ2VEZXNjcmlwdGlvblN0cmluZ0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6QXVk
aW8pOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTc5LDQ5ICs1MiwxMyBA
QCBib29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpwZXJtaXR0ZWRU
b0NhcHR1cmVBdWRpbygpCiBib29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5OjpwZXJtaXR0ZWRUb0NhcHR1cmVWaWRlbygpCiB7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZs
YWc7Ci0gICAgc3RhdGljIGJvb2wgZW50aXRsZWQgPSB0cnVlOwotICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIGlmICghY3VycmVudFByb2Nlc3NJc1NhbmRib3hlZCgp
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGludCByZXN1bHQgPSBzYW5kYm94X2No
ZWNrKGdldHBpZCgpLCAiZGV2aWNlLWNhbWVyYSIsIFNBTkRCT1hfRklMVEVSX05PTkUpOwotICAg
ICAgICBlbnRpdGxlZCA9ICFyZXN1bHQ7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAg
ICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGNoZWNraW5nICdkZXZpY2UtY2FtZXJhJyBzYW5k
Ym94IGFjY2VzcywgZXJybm89JWxkIiwgKGxvbmcpZXJybm8pOwotICAgIH0pOwotICAgIGlmICgh
ZW50aXRsZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAvLyBQTEFURk9STShNQUMp
Ci0KLSAgICBzdGF0aWMgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0IGFjY2VzcyA9IFRDQ0FjY2Vz
c1ByZWZsaWdodChnZXRrVENDU2VydmljZUNhbWVyYSgpLCBOVUxMKTsKLSAgICBpZiAoYWNjZXNz
ID09IGtUQ0NBY2Nlc3NQcmVmbGlnaHRHcmFudGVkKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIHN0YXRpYyBib29sIGlzUGVybWl0dGVkID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNTdHJpbmc+
KE5TQnVuZGxlLm1haW5CdW5kbGUuaW5mb0RpY3Rpb25hcnlbQCJOU0NhbWVyYVVzYWdlRGVzY3Jp
cHRpb24iXSkubGVuZ3RoOwotICAgIHJldHVybiBpc1Blcm1pdHRlZDsKKyAgICByZXR1cm4gY2hl
Y2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OlZpZGVvKSAm
JiBjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6
OlZpZGVvKTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiB9CiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotc3RhdGljIHZvaWQgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1l
ZGlhVHlwZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEJPT0wgYXV0aG9yaXplZCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIsIEFWTWVkaWFUeXBlIHR5cGUpCi17Ci0gICAgYXV0byBkZWNpc2lvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKEJPT0wgYXV0aG9yaXplZCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghaXNNYWlu
VGhyZWFkKCkpIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGF1dGhvcml6ZWRdKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7Ci0gICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihhdXRob3JpemVkKTsKLSAgICB9KTsKLSAgICBbUEFMOjpnZXRBVkNhcHR1cmVE
ZXZpY2VDbGFzcygpIHJlcXVlc3RBY2Nlc3NGb3JNZWRpYVR5cGU6dHlwZSBjb21wbGV0aW9uSGFu
ZGxlcjpkZWNpc2lvbkhhbmRsZXIuZ2V0KCldOwotfQotCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lzdGVtVmFsaWRhdGlvbihjb25zdCBXZWJQ
YWdlUHJveHkmIHBhZ2UsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkmIHJlcXVlc3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKHBh
Z2UucHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCkpIHsKQEAgLTEzMCwz
NiArNjcsNDAgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
cmVxdWVzdFN5c3RlbVZhbGlkYXRpb24oY29uc3QgV2ViUGEKICAgICB9CiAKICAgICAvLyBGSVhN
RTogQWRkIFRDQyBlbnRpdGxlbWVudCBjaGVjayBmb3Igc2NyZWVuc2hhcmluZy4KLSAgICBib29s
IHJlcXVpcmVzQXVkaW9DYXB0dXJlID0gcmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpOwot
ICAgIGJvb2wgcmVxdWlyZXNWaWRlb0NhcHR1cmUgPSByZXF1ZXN0LnJlcXVpcmVzVmlkZW9DYXB0
dXJlKCk7Ci0KLSAgICBhdXRvIG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID0gIXJlcXVp
cmVzQXVkaW9DYXB0dXJlID8gQVZBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZCA6IFtQQUw6
OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c0Zvck1lZGlhVHlw
ZTpBVk1lZGlhVHlwZUF1ZGlvXTsKLSAgICBpZiAobWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0
dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IG1pY3JvcGhvbmVBdXRob3JpemF0
aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpIHsKKyAgICBhdXRv
IGF1ZGlvU3RhdHVzID0gcmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpID8gY2hlY2tBVkNh
cHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKSA6IE1lZGlhUGVy
bWlzc2lvblJlc3VsdDo6R3JhbnRlZDsKKyAgICBpZiAoYXVkaW9TdGF0dXMgPT0gTWVkaWFQZXJt
aXNzaW9uUmVzdWx0OjpEZW5pZWQpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYW1lcmFBdXRob3JpemF0aW9uU3RhdHVzID0g
IXJlcXVpcmVzVmlkZW9DYXB0dXJlID8gQVZBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZCA6
IFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c0Zvck1l
ZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvXTsKLSAgICBpZiAoY2FtZXJhQXV0aG9yaXphdGlvblN0
YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQgfHwgY2FtZXJhQXV0aG9yaXphdGlv
blN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkKSB7CisgICAgYXV0byB2
aWRlb1N0YXR1cyA9IHJlcXVlc3QucmVxdWlyZXNWaWRlb0NhcHR1cmUoKSA/IGNoZWNrQVZDYXB0
dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpWaWRlbykgOiBNZWRpYVBlcm1p
c3Npb25SZXN1bHQ6OkdyYW50ZWQ7CisgICAgaWYgKGF1ZGlvU3RhdHVzID09IE1lZGlhUGVybWlz
c2lvblJlc3VsdDo6RGVuaWVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgcmVxdWlyZXNWaWRlb1RDQ1Byb21wdCA9IHJlcXVp
cmVzVmlkZW9DYXB0dXJlICYmIGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3Jp
emF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDsKLSAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
cmVxdWlyZXNWaWRlb1RDQ1Byb21wdCA/IFtyZXF1ZXN0ID0gbWFrZVJlZihyZXF1ZXN0KSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBpc09LKSBtdXRhYmxlIHsKLSAgICAgICAg
aWYgKCFpc09LKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlh
VHlwZShXVEZNb3ZlKGNhbGxiYWNrKSwgQVZNZWRpYVR5cGVWaWRlbyk7Ci0gICAgfSA6IFdURk1v
dmUoY2FsbGJhY2spOworICAgIGlmIChhdWRpb1N0YXR1cyA9PSBNZWRpYVBlcm1pc3Npb25SZXN1
bHQ6OlVua25vd24pIHsKKyAgICAgICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVk
aWFQZXJtaXNzaW9uVHlwZTo6QXVkaW8sIFt2aWRlb1N0YXR1cywgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBhdXRob3JpemVkKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGlmICh2aWRlb1N0YXR1cyA9PSBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkdyYW50ZWQpIHsK
KyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpW
aWRlbywgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJv
b2wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoYXV0aG9yaXplZCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKLSAgICBib29sIHJlcXVpcmVzQXVkaW9UQ0NQcm9tcHQgPSByZXF1aXJl
c0F1ZGlvQ2FwdHVyZSAmJiBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhv
cml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOwotICAgIGlmICghcmVxdWlyZXNBdWRpb1RDQ1By
b21wdCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICBpZiAodmlkZW9T
dGF0dXMgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIHJlcXVl
c3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OlZpZGVvLCBbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBhdXRob3JpemVkKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQpOworICAgICAg
ICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNz
Rm9yTWVkaWFUeXBlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBBVk1lZGlhVHlwZUF1ZGlv
KTsKKworICAgIGNhbGxiYWNrKHRydWUpOwogfQogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Byb3h5Q29jb2EubW0KaW5kZXggODY2MjM4YmFmZThmMDVjMTdhMjNkNmY5Y2M5OWEyMTAxNGRk
OTMxMC4uY2QzMDE0MWZjZWE2MjIyZGU1YmE3Y2YxYzY3YTlhMmY2NGQwMjBmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2Eu
bW0KQEAgLTQxLDYgKzQxLDEwIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4K
ICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KIAorI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5oIgorI2VuZGlmCisK
ICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1Jl
bW90ZUluc3BlY3RvckNvbnN0YW50cy5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg3YWVhYWUzYjQ0ZTI4ZGJkYjVhOWM4MjEwOTFlMjQ4ZGFiMWNhZWYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKFdlYlBh
Z2VQcm94eSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCitTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cigpCit7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9yZXF1ZXN0cykKKyAgICAgICAgcmVx
dWVzdC0+Y29tcGxldGUoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkp
OworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3Qo
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0aW9udEhhbmRsZXIp
Cit7CisgICAgbV9yZXF1ZXN0cy5hcHBlbmQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdDo6Y3JlYXRlKFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9udEhhbmRsZXIp
KSk7CisgICAgaWYgKG1fcmVxdWVzdHMuc2l6ZSgpID09IDEpCisgICAgICAgIHN0YXJ0TmV4dFJl
cXVlc3QoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpz
dGFydE5leHRSZXF1ZXN0KCkKK3sKKyAgICBpZiAobV9yZXF1ZXN0cy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIHN0YXJ0UHJvY2Vzc2luZ1JlcXVlc3QoKTsKK30KKwordm9pZCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb250aW51ZVByb2Nlc3NpbmdSZXF1
ZXN0KCkKK3sKKyAgICBpZiAoIW1fcGFnZS5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2aWNl
c0VuYWJsZWQoKSkgeworICAgICAgICBpZiAobV9zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VDaGVj
ayA9PSBDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICAgICAgcmVxdWVzdFNwZWVjaFJl
Y29nbml0aW9uU2VydmljZUFjY2VzcygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIEFTU0VSVChtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrID09IENoZWNr
UmVzdWx0OjpHcmFudGVkKTsKKworICAgICAgICBpZiAobV9taWNyb3Bob25lQ2hlY2sgPT0gQ2hl
Y2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgICAgIHJlcXVlc3RNaWNyb3Bob25lQWNjZXNz
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKG1fbWlj
cm9waG9uZUNoZWNrID09IENoZWNrUmVzdWx0OjpHcmFudGVkKTsKKyAgICB9CisKKyAgICBpZiAo
bV91c2VyUGVybWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAg
IHJlcXVlc3RVc2VyUGVybWlzc2lvbigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFT
U0VSVChtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQpOworCisg
ICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNp
c2lvbjo6R3JhbnQpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI6OmNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVj
aXNpb24gZGVjaXNpb24pCit7CisgICAgQVNTRVJUKCFtX3JlcXVlc3RzLmlzRW1wdHkoKSk7Cisg
ICAgYXV0byBjdXJyZW50UmVxdWVzdCA9IG1fcmVxdWVzdHMudGFrZUZpcnN0KCk7CisgICAgY3Vy
cmVudFJlcXVlc3QtPmNvbXBsZXRlKGRlY2lzaW9uKTsKKworICAgIHN0YXJ0TmV4dFJlcXVlc3Qo
KTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXNldCgp
Cit7CisgICAgbV91c2VyUGVybWlzc2lvbkNoZWNrID0gQ2hlY2tSZXN1bHQ6OlVua25vd247Cit9
CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6c3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgpCit7CisgICAgY29tcGxldGVDdXJy
ZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbjo6R3JhbnQpOwor
fQorCitib29sIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrTWljcm9w
aG9uZUFjY2VzcygpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nl
c3MoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNjZXNzKCkKK3sKK30KKwordm9pZCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRp
b25TZXJ2aWNlQWNjZXNzKCkKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyOjpyZXF1ZXN0VXNlclBlcm1pc3Npb24oKQoreworfQorCisjZW5kaWYKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
NDgyN2FhN2MzZTYzYzI0MWYzMDU0NGQzNzEwODdhOTAwYzQxOTU3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKFdlYlBhZ2VQ
cm94eSYpOworICAgIH5TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKCk7CisgICAg
dm9pZCByZXF1ZXN0KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJik7CisgICAgdm9pZCBy
ZXNldCgpOworCitwcml2YXRlOgorICAgIHZvaWQgc3RhcnROZXh0UmVxdWVzdCgpOworICAgIHZv
aWQgc3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgpOworICAgIHZvaWQgY29udGludWVQcm9jZXNzaW5n
UmVxdWVzdCgpOworICAgIHZvaWQgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25EZWNpc2lvbik7CisgICAgYm9vbCBjaGVja01pY3JvcGhvbmVBY2Nlc3Mo
KTsKKyAgICBib29sIGNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7CisgICAg
dm9pZCByZXF1ZXN0TWljcm9waG9uZUFjY2VzcygpOworICAgIHZvaWQgcmVxdWVzdFNwZWVjaFJl
Y29nbml0aW9uU2VydmljZUFjY2VzcygpOworICAgIHZvaWQgcmVxdWVzdFVzZXJQZXJtaXNzaW9u
KCk7CisKKyAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKKyAgICBEZXF1ZTxSZWY8U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4+IG1fcmVxdWVzdHM7CisgICAgZW51bSBjbGFzcyBD
aGVja1Jlc3VsdCB7IERlbmllZCwgR3JhbnRlZCwgVW5rbm93biB9OworICAgIENoZWNrUmVzdWx0
IG1fc2FuZGJveENoZWNrIHsgQ2hlY2tSZXN1bHQ6OlVua25vd24gfTsKKyAgICBDaGVja1Jlc3Vs
dCBtX21pY3JvcGhvbmVDaGVjayB7IENoZWNrUmVzdWx0OjpVbmtub3duIH07CisgICAgQ2hlY2tS
ZXN1bHQgbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VDaGVjayB7IENoZWNrUmVzdWx0OjpVbmtu
b3duIH07CisgICAgQ2hlY2tSZXN1bHQgbV91c2VyUGVybWlzc2lvbkNoZWNrIHsgQ2hlY2tSZXN1
bHQ6OlVua25vd24gfTsKKyAgICBib29sIG1faXNVc2luZ01vY2tlZENhcHR1cmVEZXZpY2UgeyBm
YWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjZkYTk5YzE3ODI3ZDZlNTg1MWJlOGY2MzdhYmRmYzljYTdhODJkOAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Ns
aWVudE9yaWdpbi5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25E
ZWNpc2lvbiA6IGJvb2wgeyBEZW55LCBHcmFudCB9OworCitjbGFzcyBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdD4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gY3JlYXRlKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25E
ZWNpc2lvbik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdURk1vdmUob3Jp
Z2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICB9CisKKyAgICB2b2lkIGNv
bXBsZXRlKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKQorICAg
IHsKKyAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21w
bGV0aW9uSGFuZGxlciwgeyB9KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGVjaXNpb24p
OworICAgIH0KKworICAgIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKCkgY29u
c3QgeyByZXR1cm4gbV9vcmlnaW47IH0KKworcHJpdmF0ZToKKyAgICBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogbV9vcmlnaW4ob3JpZ2luKQorICAgICAgICAs
IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgeyB9
CisKKyAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gbV9vcmlnaW47CisgICAgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+IG1fY29tcGxl
dGlvbkhhbmRsZXI7Cit9OworCitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjayA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaz4gY3JlYXRlKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayhXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIH0KKworICAgIHZvaWQgY29tcGxldGUoYm9v
bCBncmFudGVkKSB7IG1fY29tcGxldGlvbkhhbmRsZXIoZ3JhbnRlZCk7IH0KKworcHJpdmF0ZToK
KyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICA6IG1fY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgeyB9CisKKyAgICBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblNlcnZlci5jcHAKaW5kZXggOWNlOTc0Y2Y5ZGFhNTY1ODJlZWJjZmEwMzA2
NzBiN2EzNzViZTcxZS4uZDczYjA4YzcyNTI1NDdlNWYzNzg2NTBmMzFlYjNkNzJlNTI0MTU1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2Vy
dmVyLmNwcApAQCAtMzIsMTUgKzMyLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1TcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29u
bmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIg
aWRlbnRpZmllcikKK1NwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNwZWVjaFJlY29nbml0aW9u
U2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
aGVja2VyJiYgcGVybWlzc2lvbkNoZWNrZXIpCiAgICAgOiBtX2Nvbm5lY3Rpb24oV1RGTW92ZShj
b25uZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9wZXJt
aXNzaW9uQ2hlY2tlcihXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSkKIHsKIH0KIAotdm9pZCBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mbyYmIHJlcXVlc3RJbmZvKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6
c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciBjbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wg
aW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiYgb3JpZ2luKQogewotICAgIGF1dG8gcmVxdWVzdCA9IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdDo6Y3JlYXRlKFdURk1vdmUocmVxdWVzdEluZm8pKTsKKyAgICBhdXRv
IHJlcXVlc3QgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4o
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7IGNsaWVudElkZW50aWZpZXIsIFdURk1vdmUo
bGFuZyksIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMsIFdURk1v
dmUob3JpZ2luKSB9KTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShyZXF1
ZXN0KSk7CiAKICAgICBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsKQEAgLTcy
LDggKzczLDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWQKIHsKICAgICBpZiAobV9jdXJyZW50
UmVxdWVzdCAmJiBtX2N1cnJlbnRSZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCkgPT0gY2xpZW50
SWRlbnRpZmllcikgewogICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbnVsbHB0cjsKLSAgICAg
ICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRl
KGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6
RW5kKTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uOjpEaWRSZWNlaXZlVXBkYXRlKHVwZGF0ZSksIG1faWRlbnRpZmllcik7CisgICAgICAgIHNl
bmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRh
dGVUeXBlOjpFbmQpOwogCiAgICAgICAgIHByb2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJZk5lZWRl
ZCgpOwogICAgICAgICByZXR1cm47CkBAIC04NCwxMyArODQsMTIgQEAgdm9pZCBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcjo6YWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWQKIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVtb3ZlUGVuZGluZ1Jl
cXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciBjbGllbnRJZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3Q+IHRha2VuUmVxdWVzdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiB0YWtlblJlcXVlc3Q7CiAgICAgYXV0byBwZW5kaW5n
UmVxdWVzdHMgPSBzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1JlcXVlc3RzLCB7IH0pOwogICAgIHdo
aWxlICghcGVuZGluZ1JlcXVlc3RzLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIHJlcXVlc3Qg
PSBwZW5kaW5nUmVxdWVzdHMudGFrZUZpcnN0KCk7CiAgICAgICAgIGlmIChyZXF1ZXN0LT5jbGll
bnRJZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikgewotICAgICAgICAgICAgYXV0byB1
cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVudElk
ZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKTsKLSAg
ICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6
RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50aWZpZXIpOworICAgICAgICAgICAgc2Vu
ZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZVR5cGU6OkVuZCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBt
X3BlbmRpbmdSZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShyZXF1ZXN0KSk7CkBAIC0xMDUsMTIgKzEw
NCw1MSBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjppbnZhbGlkYXRlKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaQogICAgIH0KIH0KIAotdm9pZCBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcjo6c3RhcnRQb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdCYpCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydFBv
Y2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JiByZXF1ZXN0
KQogeworICAgIG1fcGVybWlzc2lvbkNoZWNrZXIocmVxdWVzdC5jbGllbnRPcmlnaW4oKSwgW3Ro
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYWtSZXF1ZXN0ID0gbWFrZVdlYWtQ
dHIocmVxdWVzdCldKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9u
KSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgaWYgKCF3ZWFrUmVxdWVzdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NF
UlQobV9jdXJyZW50UmVxdWVzdC5nZXQoKSA9PSB3ZWFrUmVxdWVzdC5nZXQoKSk7CisgICAgICAg
IGlmIChkZWNpc2lvbiA9PSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbjo6RGVu
eSkgeworICAgICAgICAgICAgYXV0byBlcnJvciA9IFNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBT
cGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6Tm90QWxsb3dlZCwgIlBlcm1pc3Npb24gY2hlY2sg
ZmFpbGVkIl9zIH07CisgICAgICAgICAgICBzZW5kVXBkYXRlKHdlYWtSZXF1ZXN0LT5jbGllbnRJ
ZGVudGlmaWVyKCksIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3Is
IGVycm9yKTsKKyAgICAgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBudWxscHRyOworICAgICAg
ICAgICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCp3
ZWFrUmVxdWVzdCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6
OmNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0JikKK3sKKyAgICAvLyBUT0RPOiBzdGFydCBjYXB0dXJpbmcgYXVkaW8gYW5kIHJlY29nbml6
aW5nLgogfQogCi12b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdG9wUHJvY2Vzc2luZ1Jl
cXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JikKK3ZvaWQgU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXI6OnNlbmRVcGRhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5
cGUgdHlwZSwgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gZXJyb3IsIE9wdGlvbmFs
PFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PiByZXN1bHQpCiB7CisgICAgYXV0
byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNsaWVu
dElkZW50aWZpZXIsIHR5cGUpOworICAgIGlmICh0eXBlID09IFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlVHlwZTo6RXJyb3IpCisgICAgICAgIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihjbGllbnRJZGVudGlmaWVyLCAqZXJyb3IpOworICAgIGlm
ICh0eXBlID09IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6UmVzdWx0KQorICAgICAgICB1
cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVzdWx0KGNs
aWVudElkZW50aWZpZXIsICpyZXN1bHQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbjo6RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50aWZp
ZXIpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdG9wUHJvY2Vzc2luZ1Jl
cXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JiByZXF1ZXN0KQoreworICAg
IC8vIFRPRE86IHN0b3AgY2FwdHVyaW5nIGF1ZGlvIGFuZCBmaW5hbGl6aW5nIHJlY29nbml0aW9u
IHJlc3VsdCB3aXRoIGNhcHR1cmVkIGF1ZGlvLgorICAgIHNlbmRVcGRhdGUocmVxdWVzdC5jbGll
bnRJZGVudGlmaWVyKCksIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6Tm9N
YXRjaCk7CisgICAgc2VuZFVwZGF0ZShyZXF1ZXN0LmNsaWVudElkZW50aWZpZXIoKSwgV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOworICAgIEFTU0VSVChtX2N1cnJl
bnRSZXF1ZXN0LmdldCgpID09ICZyZXF1ZXN0KTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbnVs
bHB0cjsKKyAgICBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsKIH0KIAogSVBD
OjpDb25uZWN0aW9uKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6bWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uU2VydmVyLmgKaW5kZXggN2FhMjQxNjM4YjljMzUxNDk2Njk4NDQzMmRiYzUzMGRmODQ4
NGEzNy4uZWE4ZTNlNWUwYmZmYzA1ZjMxOWU3ZDBmMzc5ZTUxZDljMWJiOWRhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC0y
OCwyMSArMjgsMzAgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJN
ZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2duaXRpb25FcnJvci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdERhdGEuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAorbmFtZXNw
YWNlIFdlYkNvcmUgeworZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU7Citz
dHJ1Y3QgQ2xpZW50T3JpZ2luOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2Vi
UHJvY2Vzc1Byb3h5OworZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNp
c2lvbiA6IGJvb2w7CiAKIHVzaW5nIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciA9
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyOwordXNpbmcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2hlY2tlciA9IEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYm
KT47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmVyIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVy
LCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVj
dGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyKTsKKyAgICBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJik7
CiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8m
Jik7CisgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50
ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiYpOwogICAgIHZvaWQgc3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyKTsKICAgICB2b2lkIGFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogICAgIHZvaWQgaW52YWxpZGF0ZShX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKQEAg
LTUxLDkgKzYwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1
ZXN0SWZOZWVkZWQoKTsKICAgICB2b2lkIHJlbW92ZVBlbmRpbmdSZXF1ZXN0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogCi0gICAgLy8gVE9E
TzogaW1wbGVtZW50IHRoZXNlLgogICAgIHZvaWQgc3RhcnRQb2Nlc3NpbmdSZXF1ZXN0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOworICAgIHZvaWQgY29udGludWVQcm9jZXNz
aW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKICAgICB2b2lk
IHN0b3BQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Qm
KTsKKyAgICB2b2lkIHNlbmRVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
LCBPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiA9IFdURjo6bnVsbG9w
dCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+
ID0gV1RGOjpudWxsb3B0KTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3Zl
cnJpZGU7CkBAIC02NCw4ICs3NCw5IEBAIHByaXZhdGU6CiAKICAgICBSZWY8SVBDOjpDb25uZWN0
aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVy
IG1faWRlbnRpZmllcjsKLSAgICBEZXF1ZTxSZWY8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0Pj4gbV9wZW5kaW5nUmVxdWVzdHM7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Pj4gbV9wZW5kaW5nUmVxdWVz
dHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVj
a2VyIG1fcGVybWlzc2lvbkNoZWNrZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVy
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIubWVzc2FnZXMuaW4KaW5kZXggZTMxYmVmYjA5NWFkODhkYWRjMzBmMDk5NWM1N2U0MTUz
NzNmMTJmNC4uYTI4YjkyMWNiOTY0YWZhZjJmZjIyYzkxNmJiZTQ2ZTgyOTkxMzI5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogIAogIG1lc3NhZ2VzIC0+
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyIE5vdFJlZkNvdW50ZWQgewotICAgIFN0YXJ0KHN0cnVj
dCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIGluZm8pCisgICAgU3RhcnQo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVu
dGlmaWVyLCBTdHJpbmcgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRz
LCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4g
b3JpZ2luKQogICAgIFN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBJbnZhbGlk
YXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIg
aWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IGM2NjBlNTY2YjA4ZGQzNjc5MTNkMjI0NTA2YmRmMWVkZjAwZDVkODcuLmZlYjZiZjUzZGNhMjZi
MGJjNDEyNGM2ZTlmZTU3ZTJiNzViZmRiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtODYsNiArODYsNyBAQAogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFn
ZVByb3h5LmgiCiAjaW5jbHVkZSAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgogI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRl
LmgiCkBAIC00ODkyLDYgKzQ4OTMsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlTWFp
bkRvY3VtZW50KEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIFVOVVNFRF9QQVJBTShmcmFt
ZUlEKTsKICNlbmRpZgogICAgIG1faXNRdW90YUluY3JlYXNlRGVuaWVkID0gZmFsc2U7CisKKyAg
ICBpZiAobV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKQorICAgICAgICBtX3Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXItPnJlc2V0KCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojp2aWV3SXNCZWNvbWluZ1Zpc2libGUoKQpAQCAtNzYwNSw2ICs3NjA5LDkgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRl
UmVhc29uKQogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5h
dXRoZW50aWNhdG9yTWFuYWdlcigpLmNhbmNlbFJlcXVlc3QobV93ZWJQYWdlSUQsIFdURjo6bnVs
bG9wdCk7CiAjZW5kaWYKKworICAgIGlmIChtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIpCisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci0+cmVz
ZXQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0
ZWQoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHRlcm1pbmF0aW9uUmVhc29uKQpAQCAtMTAxNzMs
NiArMTAxODAsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZVVw
ZGF0ZUZvclRlc3RpbmcoKQogICAgIH0pOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVz
dFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGll
bnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uRGVjaXNpb24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9zcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKQorICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI+KCp0aGlzKTsKKworICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlci0+cmVxdWVzdChXVEZNb3ZlKGNsaWVudE9yaWdpbiksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xP
R19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDdj
ZWZiZmM2OTQ1ZWRmZTQzYWU1NmMyZDU2NGMwZTgxZTk1YmI0YTYuLjIzOGMwYmU3YjA2MDY1MWE1
ZGUxYWNmYTNkNjc2Njc3MjVhZjNlZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0zMDUsNiArMzA1LDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5n
UGVyZm9ybWFuY2VEYXRhOwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb247CiBjbGFz
cyBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OwogY2xhc3MgU2VjS2V5UHJveHlTdG9y
ZTsKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI7CiBjbGFzcyBVc2Vy
RGF0YTsKIGNsYXNzIFZpZXdTbmFwc2hvdDsKIGNsYXNzIFZpc2l0ZWRMaW5rU3RvcmU7CkBAIC0z
NjUsNiArMzY2LDcgQEAgc3RydWN0IFVzZXJNZXNzYWdlOwogCiBlbnVtIGNsYXNzIE5lZ290aWF0
ZWRMZWdhY3lUTFMgOiBib29sOwogZW51bSBjbGFzcyBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50IDogYm9vbDsKK2VudW0gY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNp
b24gOiBib29sOwogZW51bSBjbGFzcyBVbmRvT3JSZWRvIDogYm9vbDsKIGVudW0gY2xhc3MgV2Vi
Q29udGVudE1vZGUgOiB1aW50OF90OwogCkBAIC0xODE5LDYgKzE4MjEsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheShTZWNvbmRzIGNhcHR1cmVSZXBv
cnRpbmdEZWxheSkgeyBtX21lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5ID0gY2FwdHVyZVJlcG9y
dGluZ0RlbGF5OyB9CiAgICAgc2l6ZV90IHN1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlcigpIHsg
cmV0dXJuIG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyOyB9CiAKKyAgICB2b2lkIHJlcXVl
c3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24oV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24p
PiYmKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nl
c3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRm
b3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjg4OCw2ICsyODkyLDggQEAgcHJpdmF0ZToKICAgICBzaXpl
X3QgbV9zdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXIgeyAwIH07CiAKICAgICBPcHRpb25hbDxX
ZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24+IG1fbmV3UGFnZU5hdmlnYXRpb25BZENsaWNrQXR0
cmlidXRpb247CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcj4gbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCA3ZjgzMTViNzNjZjQyOTAzZjI2N2ExNDQxYjRjNjgyNGZlNWJmODg5
Li5jZmVhMjhjN2Q2ZWMzMjE3NjkxOTUzMTcwM2JiNzU1MTk3NzkzZmRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNp
bmNsdWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFuYWdl
ci5oIgogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0
aW9uU2VydmVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUg
IlRleHRDaGVja2VyU3RhdGUuaCIKQEAgLTE3MTMsNyArMTcxNCwxOSBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXJJZGVudAogewogICAgIGF1dG8gc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtX3NwZWVj
aFJlY29nbml0aW9uU2VydmVyTWFwLmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsKICAgICBBU1NF
UlQoc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXNOZXdFbnRyeSk7Ci0gICAgc3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmllcik7CisgICAgc3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmllciwgW2lkZW50
aWZpZXIsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKENsaWVudE9yaWdpbiYmIG9yaWdp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNp
c2lvbik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGF1dG8qIHBhZ2UgOiB3ZWFrVGhpcy0+
cGFnZXMoKSkgeworICAgICAgICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+d2ViUGFnZUlEKCkgPT0g
aWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgIHBhZ2UtPnJlcXVlc3RTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb24oV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVj
aXNpb246OkRlbnkpOworICAgIH0pOwogICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmll
ciwgKnNwZWVjaFJlY29nbml0aW9uU2VydmVyLml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMwMjc0
OTRiNzNhY2NlYzVlZmQ4MWM2OTRkM2E4NTNiNGVkZWYwY2EuLmM4ZDY4ODk4MWU1M2JjYzY0M2Nj
ZTk3Njg3MWZhNGI4NjM0NGQ0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM3NCw2ICsxMzc0LDcgQEAKIAkJOTMzRTgzNTUyM0Ew
N0MwNjAwREVGMjg5IC8qIFdlYklEQlNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzRTgzNTMyM0EwN0JGODAwREVGMjg5IC8qIFdlYklEQlNl
cnZlci5oICovOyB9OwogCQk5MzNFODM1QTIzQTFBRTI4MDBERUYyODkgLyogV2ViSURCU2VydmVy
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzM0U4MzU5MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlcy5oICovOyB9
OwogCQk5MzNFODM1QjIzQTFCNzUwMDBERUYyODkgLyogV2ViSURCU2VydmVyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
M0U4MzU4MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OworCQk5MzQyNTg5MDI1NTVEREM2MDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzQyNTg4RTI1NTVEQzQ3MDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggKi87
IH07CiAJCTkzNEI3MjQ0MTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlwZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEI3MjQz
MTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzU2RjJEQzIxNTJCNkI1MDBF
NkQ1REYgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTMwMjFGNDc5M0IyMDBEQ0RDMEEgLyogV2ViU1dD
bGllbnRDb25uZWN0aW9uLmggKi87IH07CiAJCTkzNTZGMkREMjE1MkI2RjYwMEU2RDVERiAvKiBX
ZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzQkEwNEUwMjE1MUFERjQwMDdGNDU1RiAvKiBXZWJTV1NlcnZlckNvbm5l
Y3Rpb24uaCAqLzsgfTsKQEAgLTE0MDgsNiArMTQwOSw5IEBACiAJCTkzRDZCNzg3MjU0Q0NEOEMw
MDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3ODYyNTRDQ0Q4
QjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi87
IH07CiAJCTkzRDZCNzg4MjU0Q0NEOTQwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRDZCNzdFMjU0Q0NBQkIwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKIAkJOTNENkI3OEEyNTRD
RDQzRTAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0Q2Qjc3RDI1NENDQUJCMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTNENkI3QjQyNTUyNjhENTAwNThERDNBIC8q
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi87IH07CisJCTkzRDZCN0I1MjU1
MjY4RDcwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdCMjI1NTI2
OEEyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovOyB9
OworCQk5M0Q2QjdCOTI1NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNkE0RUQx
QkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y1NDlCNDFFMzE3NEI3MDAwRTcyMzkg
LyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90
Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKIAkJOTUwRjI4ODAyNTI0MTRFQTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwRjI4
N0UyNTI0MTRFOTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oICovOyB9OwpAQCAt
NDQ2OCw2ICs0NDcyLDggQEAKIAkJOTMzRTgzNTcyM0ExQTg3MjAwREVGMjg5IC8qIFdlYklEQlNl
cnZlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJREJTZXJ2ZXIubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzM0U4MzU4MjNBMUFERjUw
MERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSURCU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSURCU2VydmVyTWVzc2FnZVJlY2VpdmVy
LmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTMzRTgzNTkyM0Ex
QURGNTAwREVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdlYklEQlNlcnZlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQyL1dlYklEQlNlcnZlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CisJCTkzNDI1ODhFMjU1NURDNDcwMDU5RUVERCAvKiBNZWRpYVBlcm1p
c3Npb25VdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNDI1ODhGMjU1NURDQTUwMDU5RUVE
RCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBN
ZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzNEI3MjQzMTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tBY3Rpb25NZW51SXRlbVR5cGVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUVFQjk1MTI3NzYxNkQwMDMzMjJCOCAvKiBX
S0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzNUVFQjk2MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJk
TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZUJhY2tGb3J3
YXJkTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDUyOCw2ICs0NTM0LDEy
IEBACiAJCTkzRDZCNzgwMjU0Q0NBQkMwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
ck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29n
bml0aW9uU2VydmVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNE
NkI3ODEyNTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNENkI3ODYyNTRDQ0Q4QjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNENkI3QjAyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNENkI3QjMyNTUyNjhCRjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdCODI1NTM0QTEyMDA1OEREM0EgLyogV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNkE0RUQxQkM1REQzOTAwRjhB
MEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y1
NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjUxRTMxNzREQTAwMEU3MjM5IC8qIFdL
U25hcHNob3RDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02NDU4LDYgKzY0NzAsOCBAQAogCQkJCTdBODIxRjREMUUyRjY3OUUwMDYwNDU3
NyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0gKi8sCiAJCQkJQTFERjYz
MTExOEUwQjdDODAwM0EzRTJBIC8qIExlZ2FjeURvd25sb2FkQ2xpZW50LmggKi8sCiAJCQkJQTFE
RjYzMTAxOEUwQjdDODAwM0EzRTJBIC8qIExlZ2FjeURvd25sb2FkQ2xpZW50Lm1tICovLAorCQkJ
CTkzNDI1ODhFMjU1NURDNDcwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCAq
LywKKwkJCQk5MzQyNTg4RjI1NTVEQ0E1MDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0
aWVzLm1tICovLAogCQkJCTQxMTI4NkVGMjFDOEE5MEMwMDNBODU1MCAvKiBNZWRpYVV0aWxpdGll
cy5oICovLAogCQkJCTQxMTI4NkYwMjFDOEE5MEQwMDNBODU1MCAvKiBNZWRpYVV0aWxpdGllcy5t
bSAqLywKIAkJCQkxQUJDM0RGNDE4OTlFNDM3MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRlLmgg
Ki8sCkBAIC02NDc0LDYgKzY0ODgsNyBAQAogCQkJCTVDQTk4NTRCMjEwQkVCNzMwMDU3RUI2QiAv
KiBTYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gKi8sCiAJCQkJMUEwMDJENDcxOTZCMzQ1RDAw
QjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oICovLAogCQkJCTFBMDAyRDQ2MTk2QjM0NUQw
MEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcubW0gKi8sCisJCQkJOTNENkI3QjMyNTUyNjhC
RjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbSAq
LywKIAkJCQkzMTU3MTM1QzIwNDBBOUIyMDA4NEY5Q0YgLyogU3lzdGVtUHJldmlld0NvbnRyb2xs
ZXJDb2NvYS5tbSAqLywKIAkJCQkyRDBDRjY0QzIxRjJBODAzMDA3ODc1NjYgLyogVGV4dENoZWNr
aW5nQ29udHJvbGxlci5oICovLAogCQkJCTJEMENGNjRCMjFGMkE4MDMwMDc4NzU2NiAvKiBUZXh0
Q2hlY2tpbmdDb250cm9sbGVyLm1tICovLApAQCAtOTIwNyw2ICs5MjIyLDkgQEAKIAkJCQlCQzEx
MUIwODExMkY1RTNDMDAzMzdCQUIgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8sCiAJCQkJ
MUEzMDA2NkMxMTEwRjRGNzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLywKIAkJ
CQk1Q0E5ODU0OTIxMEJFQjVBMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2FybmluZy5oICovLAor
CQkJCTkzRDZCN0IwMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyLmNwcCAqLywKKwkJCQk5M0Q2QjdCMjI1NTI2OEEyMDA1OEREM0EgLyogU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovLAorCQkJCTkzRDZCN0FGMjU1MjY4QTEw
MDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi8sCiAJCQkJ
OTNENkI3NkIyNTRCODk1ODAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcCAq
LywKIAkJCQk5M0Q2Qjc2QzI1NEI4OTU4MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIuaCAqLywKIAkJCQk5M0Q2Qjc3QTI1NEM5ODREMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIubWVzc2FnZXMuaW4gKi8sCkBAIC05NTQ3LDYgKzk1NjUsOCBAQAogCQkJCTMzMzY3
NjM5MTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmggKi8sCiAJCQkJ
MUFERTQ2QjAxOTU0RUM2MTAwMEY3OTg1IC8qIFdLU2Vzc2lvblN0YXRlUmVmLmNwcCAqLywKIAkJ
CQkxQURFNDZCMTE5NTRFQzYxMDAwRjc5ODUgLyogV0tTZXNzaW9uU3RhdGVSZWYuaCAqLywKKwkJ
CQk5M0Q2QjdCODI1NTM0QTEyMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25DYWxsYmFjay5jcHAgKi8sCisJCQkJOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLywKIAkJCQk1MUY4ODZBMzFGMkMy
MTRBMDBDMTkzRUYgLyogV0tUZXN0aW5nU3VwcG9ydC5jcHAgKi8sCiAJCQkJNTFGODg2QTQxRjJD
MjE0QTAwQzE5M0VGIC8qIFdLVGVzdGluZ1N1cHBvcnQuaCAqLywKIAkJCQkzMTQ4ODhGRTFEOTFC
MTFEMDAzNzcwNDIgLyogV0tUZXh0Q2hlY2tlci5jcHAgKi8sCkBAIC0xMTE0NCw2ICsxMTE2NCw3
IEBACiAJCQkJMUE2RDg2QzIxREY3NTI2NTAwNzc0NUU4IC8qIE1hY2hNZXNzYWdlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0M1NkY3OTExNTk5NTdEMDAxQ0NBRjkgLyogTWFjaFBvcnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBMjRCNUYzMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzQyNTg5MDI1NTVEREM2MDA1OUVFREQgLyogTWVkaWFQ
ZXJtaXNzaW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0UxOUVGQzIzRDQwMUYx
MDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA3RTE5RUZEMjNENDAxRjEwMDk0RkZCNCAvKiBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOTMzREVGMTk2NUVC
MzEwMDhBQzNFQSAvKiBNZW51VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTExMzg1LDYg
KzExNDA2LDggQEAKIAkJCQk1N0JCRUE2RDIyQkMwQkZFMDAyNzM5OTUgLyogU09BdXRob3JpemF0
aW9uTG9hZFBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc2Q0E5RDcyMkI4NjIxODAwMzAx
NDNDIC8qIFNPQXV0aG9yaXphdGlvbk5TVVJMRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
N0ZEMzE4NTIyQjM1MTY5MDA4RDBFOEIgLyogU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTNENkI3QjUyNTUyNjhENzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDZCN0I0MjU1MjY4
RDUwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzg0MjU0Q0NEMEUwMDU4REQzQSAv
KiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0Q2Qjc4NTI1NENDRDQzMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdl
c1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTE5OTgsNiArMTIwMjEsNyBAQAogCQkJCTUx
M0U0NjJEMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjU0OUI0MUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBz
aG90Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODcyMkIzNTE3MDAw
OEQwRThCIC8qIFdLU09BdXRob3JpemF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTkzRDZCN0I5MjU1MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTc4RkYzMjIyNDE5MTk2MDA5NjQ4M0Ug
LyogV0tTdG9yYWdlQWNjZXNzQWxlcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjA2MTI0
RkYwMjcwMDY4RjIwQSAvKiBXS1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2MUEx
MjRGRjAzNzAwNjhGMjBBIC8qIFdLU3RyaW5nQ0YuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcAppbmRleCBlYTE2YjJlZDc2
NjViMzJiZDM5Y2FjNDYzMmI0YjlhNTFhNzVkNmIxLi4zZjM1MzE5NGEzMmMzZTY3OWJjYTI5ZmJl
YTg1MDMxYzkyMWU0ZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uLmNwcApAQCAtNTksMTAgKzU5LDkgQEAgdm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb246OnJlZ2lzdGVyQ2xpZW50KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ28K
ICAgICBtX2NsaWVudE1hcC5hZGQoY2xpZW50LmlkZW50aWZpZXIoKSwgbWFrZVdlYWtQdHIoY2xp
ZW50KSk7CiB9CiAKLXZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpzdGFydChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVu
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGlu
dGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpCit2b2lkIFdlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxh
bmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0
ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4pCiB7Ci0gICAg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyBpbmZvIHsgY2xpZW50SWRlbnRp
ZmllciwgbGFuZywgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVybmF0aXZlcyB9
OwotICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTdGFydChpbmZv
KSk7CisgICAgc2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlN0YXJ0KGNs
aWVudElkZW50aWZpZXIsIGxhbmcsIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRl
cm5hdGl2ZXMsIFdURk1vdmUoY2xpZW50T3JpZ2luKSkpOwogfQogCiB2b2lkIFdlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbjo6c3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCkBAIC04MCw3ICs3OSw3IEBA
IHZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjppbnZhbGlkYXRlKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjCiAgICAgc2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXI6OkludmFsaWRhdGUoY2xpZW50SWRlbnRpZmllcikpOwogfQogCi12b2lkIFdl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVVwZGF0ZShjb25zdCBXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYgdXBkYXRlKQordm9pZCBXZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb246OmRpZFJlY2VpdmVVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25VcGRhdGUmJiB1cGRhdGUpCiB7CiAgICAgYXV0byBjbGllbnRJZGVudGlmaWVyID0gdXBk
YXRlLmNsaWVudElkZW50aWZpZXIoKTsKICAgICBpZiAoIW1fY2xpZW50TWFwLmNvbnRhaW5zKGNs
aWVudElkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5oCmluZGV4IDI4ZGJkMTk3Y2IzZjc5OGZjNzYzMTk5ZWJiMTJkZTEzYWVkNzUxYjEuLjQ0
M2IwNGYxY2NhYWIwYTBlNmFhNTM4MzFlOTg1ZDEwYTZhNTMzMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKQEAgLTQzLDExICs0MywxMSBAQCBjbGFz
cyBXZWJQYWdlOwogCiB1c2luZyBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25JZGVudGlmaWVy
ID0gV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI7CiAKLWNsYXNzIFdlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24s
IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVy
IHsKK2NsYXNzIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbj4gY3JlYXRlKFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgdm9pZCBzdGFydChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4
QWx0ZXJuYXRpdmVzKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9v
bCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2
ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmKSBmaW5hbDsKICAgICB2b2lkIHN0b3AoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmluYWw7CiAg
ICAgdm9pZCBhYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyKSBmaW5hbDsKIApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIH5XZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJDbGllbnQo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50JikgZmluYWw7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBk
YXRlJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlJiYpIGZpbmFsOwogICAgIHZvaWQgaW52YWxpZGF0ZShXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKIAogICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyLgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDNjNDEyMjFhZWUyMzk1NjU2ZDUwYzYyNTljMDkyYmEwODYxZDk4NDku
Ljk5NzNkYWM2ZTlmNGExZjdkOGI4M2ZmNGFjNWVlMTBmNTg0OWJlNzMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAy
MC0xMS0wOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQ3NgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNzEyMjI2Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdDoKKyAgICAg
ICAgKiBNb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBsaXN0OgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0SXNTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25HcmFudGVkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjb21w
bGV0ZVNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrKToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCk6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMpOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVl
cyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZSk6CisKIDIwMjAtMTEtMDkgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtidWlsZC53ZWJraXQub3JnXSBEbyBub3QgcHJpbnQgbWFzdGVyIGVudmly
b25tZW50IHZhcmlhYmxlcyBpbiBidWlsZCBzdGVwcwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJy
b3dzZXIvbWFjL0luZm8ucGxpc3QgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdApp
bmRleCA0ZTJiMWY0ODE5YWQ1MTAzZTRjZjE3MDliN2M1M2E2NmU4YjM5NWU1Li4zM2EzY2ExYmU3
MzUwOGUxZmZjYjAyOTU3Yzg2NGU4NTkyZGFhYTRlIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJv
d3Nlci9tYWMvSW5mby5wbGlzdAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlz
dApAQCAtNTIsOSArNTIsMTEgQEAKIAkJCTxzdHJpbmc+RWRpdG9yPC9zdHJpbmc+CiAJCTwvZGlj
dD4KIAk8L2FycmF5PgotICAgIDxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uPC9rZXk+Ci0g
ICAgPHN0cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+
Ci0gICAgPGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+Ci0gICAgPHN0cmlu
Zz5SZWNvcmRpbmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5O
U0NhbWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyB2aWRlbyBv
biBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TTWljcm9waG9uZVVzYWdlRGVz
Y3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vi
c2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TU3BlZWNoUmVjb2duaXRpb25Vc2FnZURlc2NyaXB0aW9u
PC9rZXk+CisJPHN0cmluZz5SZWNvZ25pemluZyBjYXB0dXJlZCBhdWRpbyBvbiBiZWhhbGYgb2Yg
d2Vic2l0ZXM8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9N
b2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBsaXN0IGIvVG9vbHMvTW9i
aWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5mby5wbGlzdAppbmRleCAyZDFiYzU4
MmZiZTc2NWNmZGM0MTA1ZWZlOWVjYzFkODMyMGNjOTU5Li41Mzg3YjM3NDlhNDc0ZmUwYjNkOWM2
MDk1Y2IyODgxN2I4ZjkyMzBhIDEwMDY0NAotLS0gYS9Ub29scy9Nb2JpbGVNaW5pQnJvd3Nlci9N
b2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBsaXN0CisrKyBiL1Rvb2xzL01vYmlsZU1pbmlCcm93c2Vy
L01vYmlsZU1pbmlCcm93c2VyL0luZm8ucGxpc3QKQEAgLTU0LDkgKzU0LDExIEBACiAJCTxrZXk+
TlNBbGxvd3NBcmJpdHJhcnlMb2Fkc0luV2ViQ29udGVudDwva2V5PgogCQk8dHJ1ZS8+CiAJPC9k
aWN0PgotICAgIDxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uPC9rZXk+Ci0gICAgPHN0cmlu
Zz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+Ci0gICAgPGtl
eT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+Ci0gICAgPHN0cmluZz5SZWNvcmRp
bmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5OU0NhbWVyYVVz
YWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyB2aWRlbyBvbiBiZWhhbGYg
b2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb248
L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0
cmluZz4KKwk8a2V5Pk5TU3BlZWNoUmVjb2duaXRpb25Vc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJ
PHN0cmluZz5SZWNvZ25pemluZyBjYXB0dXJlZCBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8
L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRl
eCA1NTE2MmZmMzQzZDI1ZjY5MDZjMzkyNzZmZDVhODkxZWRmMjliODY5Li42ZmRjZTIzZmI4NGQz
MGJjY2Q1OTc0YWI3MjAzMzFjOTI5OTg0Y2NiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwK
QEAgLTQwMyw0ICs0MDMsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdW5kZWZpbmVk
IHNldEFkQ2xpY2tBdHRyaWJ1dGlvbk92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2xlYW4gdmFs
dWUpOwogICAgIHVuZGVmaW5lZCBzZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9y
VGVzdGluZyhET01TdHJpbmcgdXJsKTsKICAgICB1bmRlZmluZWQgbWFya0FkQ2xpY2tBdHRyaWJ1
dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CisKKyAgICAvLyBTcGVlY2hSZWNvZ25pdGlvbgor
ICAgIHVuZGVmaW5lZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9v
bGVhbiB2YWx1ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZGZkMDFhMzJmMzExZTEyNDRhYTc4NzliNDM3
NTk3YWZhYzNlZmQ5ZS4uYjE4YWIyNzYzNzYzNjAyZWY3ZjY2YjM5MWJhNjIzNGU2NDI3YTkxNCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCkBAIC0yMDY5LDYgKzIwNjksMTEgQEAgdm9pZCBUZXN0UnVubmVyOjpkaWRTZXRB
cHBCb3VuZERvbWFpbnNDYWxsYmFjaygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhEaWRT
ZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFja0lEKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRJ
c1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCBncmFudGVkKQoreworICAg
IHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkdyYW50ZWQiLCBncmFudGVkKTsKK30KKwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAwYmQzYTA5ZTMyZDcxYjM1MTZl
NGY4ZTA1YmVhMjJhZjk5NGIxZDIzLi45NzkzYzc3N2FkMzhhYWQzNGNmNTI1ZDEyY2E4N2RlYTMx
OWEyZDNlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaApAQCAtNTE1LDYgKzUxNSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFk
Q2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKEpTU3RyaW5nUmVmKTsKICAg
ICB2b2lkIG1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZygpOwogCisg
ICAgdm9pZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCk7CisK
IHByaXZhdGU6CiAgICAgVGVzdFJ1bm5lcigpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCmluZGV4IDZkYmM2ODRlODg1MGFmZTA0NTkxMzlmYmUxOWQ1ZTVjY2Ri
NzI2ZTcuLjFjN2EwMWY4NjZkOGUzNGFiM2YzNWE2ZjdlOWU5ZjNhM2FlMjQ4YzkgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAj
aW5jbHVkZSA8V2ViS2l0L1dLUHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dL
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW5SZWYuaD4KKyNp
bmNsdWRlIDxXZWJLaXQvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oPgog
I2luY2x1ZGUgPFdlYktpdC9XS1RleHRDaGVja2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVVJM
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmg+CkBAIC0y
OTcsNiArMjk4LDIxIEBAIHN0YXRpYyB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoKQog
ewogfQogCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBjYWxsYmFjaykKK3sKKyAgICBUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkuY29tcGxldGVTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVj
ayhjYWxsYmFjayk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNvbXBsZXRlU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2hlY2soV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFja1JlZiBjYWxsYmFjaykKK3sKKyAgICBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrQ29tcGxldGUoY2FsbGJhY2ssIG1faXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25H
cmFudGVkKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0SXNTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25HcmFudGVkKGJvb2wgZ3JhbnRlZCkKK3sKKyAgICBtX2lzU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uR3JhbnRlZCA9IGdyYW50ZWQ7Cit9CisKIFdLUGFnZVJlZiBUZXN0Q29u
dHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFdLUGFnZVJlZiwgV0tQYWdlQ29uZmlndXJhdGlvblJl
ZiBjb25maWd1cmF0aW9uLCBXS05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvbiwg
V0tXaW5kb3dGZWF0dXJlc1JlZiB3aW5kb3dGZWF0dXJlcywgY29uc3Qgdm9pZCAqY2xpZW50SW5m
bykKIHsKICAgICBQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcgPSBzdGF0aWNfY2FzdDxQbGF0
Zm9ybVdlYlZpZXcqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CkBAIC02NTAsOCAr
NjY2LDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKGNv
bnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogICAgIFdLSFRUUENvb2tpZVN0b3JlRGVsZXRlQWxs
Q29va2llcyhXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29va2llU3RvcmUod2Vic2l0ZURhdGFT
dG9yZSgpKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAKICAgICBwbGF0Zm9ybUNyZWF0ZVdlYlZpZXco
Y29uZmlndXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7Ci0gICAgV0tQYWdlVUlDbGllbnRWMTQgcGFn
ZVVJQ2xpZW50ID0gewotICAgICAgICB7IDE0LCBtX21haW5XZWJWaWV3LmdldCgpIH0sCisgICAg
V0tQYWdlVUlDbGllbnRWMTUgcGFnZVVJQ2xpZW50ID0geworICAgICAgICB7IDE1LCBtX21haW5X
ZWJWaWV3LmdldCgpIH0sCiAgICAgICAgIDAsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZv
clVzZVdpdGhWMAogICAgICAgICAwLCAvLyBzaG93UGFnZQogICAgICAgICAwLCAvLyBjbG9zZQpA
QCAtNzI0LDcgKzc0MCw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRo
T3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKICAgICAgICAgMCwgLy8gZGlkUmVz
aWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlCiAgICAgICAgIDAsIC8vIHJl
cXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybQogICAgICAgICBzaG91bGRBbGxvd0RldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uQWNjZXNzLAotICAgICAgICBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVs
CisgICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwsCisgICAgICAgIGRlY2lkZVBvbGlj
eUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QKICAgICB9OwogICAgIFdLUGFn
ZVNldFBhZ2VVSUNsaWVudChtX21haW5XZWJWaWV3LT5wYWdlKCksICZwYWdlVUlDbGllbnQuYmFz
ZSk7CiAKQEAgLTEwNTMsNiArMTA3MCw4IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3Rh
dGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAg
bV9zZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQgPSAwOwogICAgIG1fc2hv
dWxkRGlzbWlzc0phdmFTY3JpcHRBbGVydHNBc3luY2hyb25vdXNseSA9IGZhbHNlOwogCisgICAg
c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKHRydWUpOworCiAgICAgYXV0
byBsb2FkQWJvdXRCbGFuayA9IFt0aGlzXSB7CiAgICAgICAgIG1fZG9uZVJlc2V0dGluZyA9IGZh
bHNlOwogICAgICAgICBXS1BhZ2VMb2FkVVJMKG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgYmxhbmtV
UkwoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggMzNiNjQ5
NGFjNjI0NGI5MmZjYjc4MDlhNThkNzIwM2M3YzEyNThhOC4uMDVjOGY4YmRhYTk1YWQ4N2U0Mzll
MzA5M2I4YTRmMzRmNWY4MmM1NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaApAQCAtMzUxLDYgKzM1MSw5IEBAIHB1YmxpYzoKIAogICAgIFdLVVJMUmVmIGN1cnJlbnRU
ZXN0VVJMKCkgY29uc3Q7CiAKKyAgICB2b2lkIGNvbXBsZXRlU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2hlY2soV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZik7Cisg
ICAgdm9pZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCk7CisK
IHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gZ2VuZXJh
dGVQYWdlQ29uZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9ucyYpOwogICAgIFdLUmV0YWluUHRy
PFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlQ29udGV4dENvbmZpZ3VyYXRpb24o
Y29uc3QgVGVzdE9wdGlvbnMmKSBjb25zdDsKQEAgLTY0MCw2ICs2NDMsOCBAQCBwcml2YXRlOgog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgbV9oYXNTZXRBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIgeyBmYWxzZSB9OwogI2VuZGlmCisKKyAgICBib29sIG1faXNTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25HcmFudGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdU
UgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAxNGMwNGVk
MWZhOTM5NGY1NzJmNjQ5YTkxYjQ3ZWZiMjA2ZWY4NTRlLi41YjY2NjE3YmVlMDE2YjY3NTFjN2Ji
MmJjZTZiYjhiYWU0NGViMGEwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcApAQCAtMTM0NSw2ICsxMzQ1LDExIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVz
dEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAic2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25HcmFudGVkIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldElz
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChib29sZWFuVmFsdWUobWVzc2FnZUJv
ZHkpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDVlN2U4NGM2YTllMzYw
ZWVkOTY4OGRmY2NmMTlmNjJlODA1ODFiMy4uMjZiYWMzNTQ4NDU3OWFhZGM4OGQ5MGY2OWRjYjQ2
ZTIyYWFkYTMxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTExLTA5ICBTaWh1aSBMaXUg
IDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyBwZXJtaXNz
aW9uIGNoZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83
MTIyMjYzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9w
ZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zcGVl
Y2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTExLTA5ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5leHBvc2Ugb2Jzb2xldGUgSFRNTEFwcGxl
dEVsZW1lbnQgaW50ZXJmYWNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiYjMyMTlkYWE1MDk5MjBj
YjQyMDk3NjFmZDYyNTE4MTBiMTJmODM0Li5mOTdjYjYyYTE2YzM4YmJmOTlmZDAyYmRlMDUzNWQ0
NDkyNGM5YmMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE3Nyw2ICsxNzcsNyBAQCBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2guaHRtbCBb
IFNraXAgXQogc3RvcmFnZS9pbmRleGVkZGIvSURCT2JqZWN0LWxlYWsuaHRtbCBbIFNraXAgXQog
ZmFzdC9mb3Jtcy9jYWxsLXRleHQtZGlkLWNoYW5nZS1pbi10ZXh0LWZpZWxkLXdoZW4tdHlwaW5n
Lmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS8gWyBTa2lw
IF0KK2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sIFsgU2tpcCBd
CiAKICMgT25seSBwYXJ0aWFsIHN1cHBvcnQgb24gQ29jb2EgcGxhdGZvcm1zLgogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zcGVlY2gtYXBpLyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1l
cnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDI5YjhhYjA0ZDA4M2ZhMjdhMDg0NTg1ZGFh
OThmZDdiNjA2YjQ2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
cmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBA
QAorVmVyaWZ5IHRoYXQgZXJyb3IgZXZlbnQgaXMgZmlyZWQgd2hlbiBwZXJtaXNzaW9uIGlzIGRl
bmllZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgcmVjb2duaXRpb24g
PSBuZXcgU3BlZWNoUmVjb2duaXRpb24oKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mg
cmVjb2duaXRpb24uc3RhcnQoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgZXZlbnQu
ZXJyb3IgaXMgIm5vdC1hbGxvd2VkIgorUEFTUyBldmVudC5tZXNzYWdlIGlzICJwZXJtaXNzaW9u
IGNoZWNrIGZhaWxzIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24v
cGVybWlzc2lvbi1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlv
bi9wZXJtaXNzaW9uLWVycm9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2ZTlmM2E3NzY0MDlhYTNkZjQx
OTJiZmJjNTg3NTkwMTVlMzZjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
c3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCkBAIC0wLDAgKzEsMjQgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlZlcmlm
eSB0aGF0IGVycm9yIGV2ZW50IGlzIGZpcmVkIHdoZW4gcGVybWlzc2lvbiBpcyBkZW5pZWQuIik7
CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwor
ICAgIHRlc3RSdW5uZXIuc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGZh
bHNlKTsKK30KKworc2hvdWxkTm90VGhyb3coInJlY29nbml0aW9uID0gbmV3IFNwZWVjaFJlY29n
bml0aW9uKCkiKTsKK3Nob3VsZE5vdFRocm93KCJyZWNvZ25pdGlvbi5zdGFydCgpIik7CityZWNv
Z25pdGlvbi5vbmVycm9yID0gKGV2ZW50KSA9PiB7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC5lcnJvciIsICJub3QtYWxsb3dlZCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQubWVzc2FnZSIsICJwZXJtaXNzaW9uIGNoZWNrIGZhaWxzIik7CisKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCA4ZDdkNDkwZWIzMjg0YzMwOWRjY2QyYTBlMTg2ZDk4MDQzNjI3ZTk0Li5hNzQxOTgw
ZTViMmU1YjBiMWEwZTkxNjlkYWE5YTRiNTI3MzBmMDY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtODAzLDQgKzgwMyw1IEBAIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvY2xvc2VkLXBvcnQtZGVsYXkuaHRtbCBbIFBhc3MgXQogCiAjIFdl
YktpdDIgb25seS4KIGpzL3Rocm93LWxhcmdlLXN0cmluZy1vb20uaHRtbCBbIFBhc3MgXQorZmFz
dC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwgWyBQYXNzIF0KIGZ1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tZW50ZXItd2hpbGUtZXhpdGluZy5odG1sIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413693</attachid>
            <date>2020-11-10 07:13:11 -0800</date>
            <delta_ts>2020-11-10 08:40:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201110071309.patch</filename>
            <type>text/plain</type>
            <size>124549</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRiY2QyNGY5YjcxNzVhZjUwNzhhNzJj
ZDA1MGJiNzJmYTI1YzMwNWQuLjI0NzYwYzZlYWIxMWRhMTM1OTNiZDRiMzI4YzJhN2JjYTBlZmI2
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMTEtMDkgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1Bs
YXRmb3JtSGF2ZS5oOgorCiAyMDIwLTExLTA5ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2OTYwMy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBiZWIzYTZiNzJiYjJiZDUyMDZhNGQyNGM0OWM3MTJiNTA3YjdjZjdlLi4yYTc2YjY0Zjk1ZDNk
M2IxYTczMTY3ZjhkMDgyNzExNDliNGM2OGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMjAtMTEtMDkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVy
bWlzc2lvbi1lcnJvci5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnRS
ZWNvZ25pdGlvbik6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6
Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dDo6Y2xpZW50T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3RJbmZvOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjplcnJvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZTo6cmVzdWx0IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oOgorICAgICAgICAqIHBhZ2UvRHVtbXlTcGVlY2hSZWNv
Z25pdGlvblByb3ZpZGVyLmg6CisKIDIwMjAtMTEtMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fp
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRoZSBsaWZlIGN5
Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBOYXRpdmVJbWFn
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA4OWRmM2NkZjZmN2Y1NzFhZDM5MjJjMjQyMzdjMDY3NGZiMTdkYzYzLi4z
MmI2YWJkNWJiYTNkZjY1ZTczYzYxYjgxNjE2OTA4YzFjNGU2MzRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEwOCBAQAorMjAyMC0xMS0wOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3IgU3BlZWNoUmVj
b2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxODQ3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMjI2Mzg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIsIHdoaWNoIGNoZWNrcyBhbmQgcmVxdWVzdHMgc3BlZWNo
IHJlY29nbml0aW9uIHBlcm1pc3Npb25zIGJlZm9yZSAKKyAgICAgICAgd2UgYWN0dWFsbHkgc3Rh
cnQgY2FwdHVyaW5nIGF1ZGlvIGFuZCBwZXJmb3JtIHJlY29nbml0aW9uLiBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyIGlzIHBlci1wYWdlLCBsaWtlCisgICAgICAgIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyLiBUaGUgY2hlY2tzIGluY2x1ZGU6CisgICAgICAgIDEuIFNhbmRib3gg
cmVxdWlyZW1lbnQgZm9yIG1pY3JvcGhvbmUKKyAgICAgICAgMi4gVENDIGNoZWNrIGZvciBtaWNy
b3Bob25lCisgICAgICAgIDMuIFRDQyBjaGVjayBmb3IgU0ZTcGVlY2hSZWNvZ25pemVyCisgICAg
ICAgIDQuIFVzZXIgcGVybWlzc2lvbiBvbiBzcGVlY2ggcmVjb2duaXRpb24gZm9yIG9yaWdpbnMK
KworICAgICAgICBBZGQgYSBkZWxlZ2F0ZSBmdW5jdGlvbiBmb3IgcmVxdWVzdGluZyB1c2VyIHBl
cm1pc3Npb24sIHdoaWNoIGlzIGRlbmllZCBieSBkZWZhdWx0LgorCisgICAgICAgIFRlc3Q6IGZh
c3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCisKKyAgICAgICAgKiBI
ZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAg
ICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJ
Q2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdl
VUlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV0tTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFja0dldFR5cGVJRCk6CisgICAgICAgIChXS1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OnJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKToKKyAg
ICAgICAgKFdlYktpdDo6Y2hlY2tBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKToKKyAgICAgICAgKFdl
YktpdDo6Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6
Y2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yVHlwZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbTogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0
YXJ0UHJvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja01pY3JvcGhvbmVBY2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1NwZWVjaFJlY29n
bml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpy
ZXF1ZXN0TWljcm9waG9uZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RVc2VyUGVybWlzc2lvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRl
Y2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZUF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZVZpZGVv
KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHk6OnJlcXVlc3RTeXN0ZW1WYWxpZGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6cmVxdWVzdEFW
Q2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
OjpzdGFydE5leHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlcjo6Y29udGludWVQcm9jZXNzaW5nUmVxdWVzdCk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVu
dFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI6OnN0YXJ0UHJvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja01pY3JvcGhvbmVBY2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpj
aGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNjZXNz
KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6
cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RVc2VyUGVybWlzc2lv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXIuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6Y29tcGxldGUpOgorICAgICAgICAoV2ViS2l0
OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpy
ZW1vdmVQZW5kaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
U2VydmVyOjpzdGFydFBvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcjo6Y29udGludWVQcm9jZXNzaW5nUmVxdWVzdCk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzZW5kVXBkYXRlKToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0b3BQcm9jZXNzaW5nUmVxdWVzdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZENoYW5nZU1haW5Eb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVy
KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6
c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246
OmRpZFJlY2VpdmVVcGRhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisKIDIwMjAtMTEtMDkgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250
cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBu
YW1lZCBOYXRpdmVJbWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZl
LmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCAyMDNlOGVjN2Q2MTVlODc1
ZjNiMzE0NWYyZjhiZGQxZTViN2IwODNkLi45M2U3YjQ1Mzg1YWU4ODcwNThlZDZmNGQwNmVkNzUy
ZWYyYjE4MDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtNzU1LDMgKzc1NSwxMSBAQAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0o
QVBQTEVUVikKICNkZWZpbmUgSEFWRV9DTkNPTlRBQ1RQSUNLRVJWSUVXQ09OVFJPTExFUiAxCiAj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpIHx8IChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAw
KQorI2RlZmluZSBIQVZFX1NQRUVDSFJFQ09HTklaRVIgMQorI2VuZGlmCisKKyNpZiBQTEFURk9S
TShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSB8fCBQTEFURk9STShNQUMpCisjZGVmaW5l
IEhBVkVfQVZDQVBUVVJFREVWSUNFIDEKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCmluZGV4IDUxYTMyY2RhYWNhYTFl
ZDAxMTQyNzY3ZDIyZTMwMjUyNmRlYmY1OTUuLmYxMTdjMWZiMWI1YmQwNGFlNzU1MjU2NWZiYWE4
ODkxYzVjMWFlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbi5oIgogCisjaW5jbHVkZSAiQ2xpZW50T3Jp
Z2luLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgpAQCAtNjksNyArNzAsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTcGVl
Y2hSZWNvZ25pdGlvbjo6c3RhcnRSZWNvZ25pdGlvbigpCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24p
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJSZWNvZ25pdGlvbiBk
b2VzIG5vdCBoYXZlIGEgdmFsaWQgY29ubmVjdGlvbiJfcyB9OwogCi0gICAgbV9jb25uZWN0aW9u
LT5zdGFydChpZGVudGlmaWVyKCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVyaW1SZXN1
bHRzLCBtX21heEFsdGVybmF0aXZlcyk7CisgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxE
b2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5z
dGFydChpZGVudGlmaWVyKCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVyaW1SZXN1bHRz
LCBtX21heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2luIHsgZG9jdW1lbnQudG9wT3JpZ2luKCku
ZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9KTsKICAgICBtX3N0YXRl
ID0gU3RhdGU6OlN0YXJ0aW5nOwogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bi5oCmluZGV4IDNmZDJkMzNhY2EwMjA1MjYzNDA1OGQwZmI1NjUyZWI3MDA3ZmE1MmEuLjY5ZWVi
YzI5M2Q1YjdkZTFlMzhjZWVhZDJhM2VlMzhmMDBkMWNhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bi5oCkBAIC0zMSwxNSArMzEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQ7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZTsKK3N0cnVjdCBDbGllbnRPcmlnaW47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbj4g
ewogcHVibGljOgogICAgIHZpcnR1YWwgflNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbigpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNsaWVudChTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBj
b250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJv
b2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2lu
JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVVwZGF0ZShjb25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZSYmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmNw
cAppbmRleCA0YTVlOGMxNjMwM2MxODY1YzJiMWZmY2U5YjU2ZWUyNjIwM2E3ZmM1Li5kM2JkN2E5
NGE0MmI5ZDVlMDU5MjBjNWJmZTdkYmM0NGE5MTg4N2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5jcHAK
QEAgLTI4LDExICsyOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdD4gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpjcmVhdGUoU3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmIHJlcXVlc3RJbmZvKQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3RJbmZvKSkp
OwotfQotCiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dChTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYgcmVxdWVzdEluZm8pCiAgICAgOiBtX2lu
Zm8oV1RGTW92ZShyZXF1ZXN0SW5mbykpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCmluZGV4IDVjZWVhMDFj
NzM4NjU1NmQ0MjUxZjhjOGI5NWMzMTI0YmFmYzYwMTIuLjM5NmRiMjY5ODRmOTEyNDY4MjRiMDY1
ODY2NWNhNzNlN2JjNGNjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Qg
OiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IHsKK2NsYXNzIFNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3Q+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4g
Y3JlYXRlKFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8mJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdEluZm8mJik7CiAKICAgICBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyIGNsaWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2luZm8uY2xpZW50SWRl
bnRpZmllcjsgfQogICAgIGNvbnN0IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1faW5m
by5sYW5nOyB9CiAgICAgYm9vbCBjb250aW51b3VzKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmNv
bnRpbnVvdXM7OyB9CiAgICAgYm9vbCBpbnRlcmltUmVzdWx0cygpIGNvbnN0IHsgcmV0dXJuIG1f
aW5mby5pbnRlcmltUmVzdWx0czsgfQogICAgIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcygpIGNv
bnN0IHsgcmV0dXJuIG1faW5mby5tYXhBbHRlcm5hdGl2ZXM7IH0KKyAgICBDbGllbnRPcmlnaW4g
Y2xpZW50T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmNsaWVudE9yaWdpbjsgfQogCiBw
cml2YXRlOgotICAgIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdChTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvJiYpOwotCiAgICAgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5m
byBtX2luZm87CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKaW5kZXggYWIxZTFhZTZlZjM4
ODk4YzIxYTJhOWRmN2FmMWYwMDdlMjRiMTdkMC4uMWVmZTllMDY0NmU3NDdjYjU1ZDdjY2IwZjdi
MThmZjVlMGIzYzRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaApAQCAtMjUsNiArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgogI2luY2x1ZGUg
IlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzUsNiArMzYsNyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mbyB7CiAgICAgYm9vbCBjb250aW51b3VzIHsgZmFsc2UgfTsKICAgICBib29sIGlu
dGVyaW1SZXN1bHRzIHsgZmFsc2UgfTsKICAgICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMgeyAx
IH07CisgICAgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbjsKIAogICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbz4g
ZGVjb2RlKERlY29kZXImKTsKQEAgLTQzLDcgKzQ1LDcgQEAgc3RydWN0IFNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdEluZm8gewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0SW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0g
ICAgZW5jb2RlciA8PCBjbGllbnRJZGVudGlmaWVyIDw8IGxhbmcgPDwgY29udGludW91cyA8PCBp
bnRlcmltUmVzdWx0cyA8PCBtYXhBbHRlcm5hdGl2ZXM7CisgICAgZW5jb2RlciA8PCBjbGllbnRJ
ZGVudGlmaWVyIDw8IGxhbmcgPDwgY29udGludW91cyA8PCBpbnRlcmltUmVzdWx0cyA8PCBtYXhB
bHRlcm5hdGl2ZXMgPDwgY2xpZW50T3JpZ2luOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgpAQCAtNzQsMTIgKzc2LDE4IEBAIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8+IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmRlY29kZShEZWNvCiAgICAgaWYgKCFt
YXhBbHRlcm5hdGl2ZXMpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBPcHRp
b25hbDxDbGllbnRPcmlnaW4+IGNsaWVudE9yaWdpbjsKKyAgICBkZWNvZGVyID4+IGNsaWVudE9y
aWdpbjsKKyAgICBpZiAoIWNsaWVudE9yaWdpbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKwogICAgIHJldHVybiB7ewogICAgICAgICBXVEZNb3ZlKCpjbGllbnRJZGVudGlmaWVyKSwK
ICAgICAgICAgV1RGTW92ZSgqbGFuZyksCiAgICAgICAgIFdURk1vdmUoKmNvbnRpbnVvdXMpLAog
ICAgICAgICBXVEZNb3ZlKCppbnRlcmltUmVzdWx0cyksCi0gICAgICAgIFdURk1vdmUoKm1heEFs
dGVybmF0aXZlcykKKyAgICAgICAgV1RGTW92ZSgqbWF4QWx0ZXJuYXRpdmVzKSwKKyAgICAgICAg
V1RGTW92ZSgqY2xpZW50T3JpZ2luKQogICAgIH19OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAKaW5k
ZXggNTM0ZWRhM2QyNDc3ZWUxYzZmMTdlYzZhZjE3OTMyNmJiNzlmMDIwNy4uOWE5YTdkOTIwNjk2
NTVjNDU3MTYwN2RkYTE4YzRlNmIzMzBmNzJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcApAQCAtNjAs
NyArNjAsNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoU3BlZWNoUmVjb2du
aXRpb25VcGRhdGVUeXBlIGVudW1lcmF0aW9uVmFsdWUpCiAKIFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gU3BlZWNoUmVjb2duaXRpb25VcGRhdGUg
eyBjbGllbnRJZGVudGlmaWVyLCB0eXBlIH07CisgICAgcmV0dXJuIFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlIHsgY2xpZW50SWRlbnRpZmllciwgdHlwZSwgV1RGOjpNb25vc3RhdGUoKSB9OwogfQog
CiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRl
RXJyb3IoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJ
ZGVudGlmaWVyLCBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yJiBlcnJvcikKQEAgLTgzLDcg
KzgzLDcgQEAgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWUKIFNwZWVjaFJlY29nbml0aW9uRXJyb3Ig
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmVycm9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihtX2NvbnRlbnQsCi0gICAgICAgIFtdIChTcGVlY2hSZWNvZ25pdGlvbkVycm9y
JiBlcnJvcikgeyByZXR1cm4gZXJyb3I7IH0sCisgICAgICAgIFtdIChjb25zdCBTcGVlY2hSZWNv
Z25pdGlvbkVycm9yJiBlcnJvcikgeyByZXR1cm4gZXJyb3I7IH0sCiAgICAgICAgIFtdIChjb25z
dCBhdXRvJikgeyByZXR1cm4gU3BlZWNoUmVjb2duaXRpb25FcnJvcigpOyB9CiAgICAgKTsKIH0K
QEAgLTkxLDcgKzkxLDcgQEAgU3BlZWNoUmVjb2duaXRpb25FcnJvciBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZTo6ZXJyb3IoKSBjb25zdAogVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0
YT4gU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OnJlc3VsdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24obV9jb250ZW50LAotICAgICAgICBbXSAoVmVjdG9yPFNwZWVjaFJlY29n
bml0aW9uUmVzdWx0RGF0YT4mIGRhdGEpIHsgcmV0dXJuIGRhdGE7IH0sCisgICAgICAgIFtdIChj
b25zdCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYgZGF0YSkgeyByZXR1cm4g
ZGF0YTsgfSwKICAgICAgICAgW10gKGNvbnN0IGF1dG8mKSB7IHJldHVybiBWZWN0b3I8U3BlZWNo
UmVjb2duaXRpb25SZXN1bHREYXRhPiB7IH07IH0KICAgICApOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKaW5k
ZXggM2E4MmJmNmJhZjU0Y2UwYzRiMTMzNGVmNmY4YjU4OTNmM2I4OTgyZS4uODkxNDkxNzkzZjRl
MDFlYzJmZjYwMTA3Y2I0ODVmNDg4ZmE0M2U4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCkBAIC01Miw4ICs1
Miw4IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGUpOwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgewogcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGUo
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2du
aXRpb25VcGRhdGVUeXBlKTsKLSAgICBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3Jl
YXRlRXJyb3IoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29u
c3QgU3BlZWNoUmVjb2duaXRpb25FcnJvciYpOwotICAgIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZSBjcmVhdGVSZXN1bHQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciwgY29uc3QgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4mKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlRXJy
b3IoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3Bl
ZWNoUmVjb2duaXRpb25FcnJvciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVSZXN1bHQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0
YT4mKTsKIAogICAgIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIg
Y2xpZW50SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50SWRlbnRpZmllcjsgfQog
ICAgIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB1c2luZyBD
b250ZW50ID0gVmFyaWFudDxXVEY6Ok1vbm9zdGF0ZSwgU3BlZWNoUmVjb2duaXRpb25FcnJvciwg
VmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+OwotICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSwgQ29udGVu
dCA9IFdURjo6TW9ub3N0YXRlKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSwgQ29udGVudCk7CiAKICAgICBTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIG1fY2xpZW50SWRlbnRpZmllcjsKICAgICBT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKaW5kZXggY2Y5ZTcyYjkz
YzA2NGE1NWRkZGZhYjdiM2NhZmI0ODkwZTAzNWY0Ni4uMjQwYWEzZDQ4NGE5NzNiNDQxMTJhZWY2
MWU4ZWFhYTg0N2I1OGQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNw
ZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15
U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oCkBAIC0zOSwxMCArMzksMTAgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHVtbXlTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb24oKSk7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCByZWdpc3RlckNsaWVudChTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQmKSBmaW5hbCB7IH0KLSAgICAgICAgdm9pZCBz
dGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCkgZmluYWwgeyB9CisgICAgICAgIHZvaWQgc3Rh
cnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiwgYm9vbCwgYm9vbCwgdWludDY0X3QsIENsaWVudE9yaWdpbiYmKSBmaW5hbCB7IH0KICAg
ICAgICAgdm9pZCBzdG9wKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIGFib3J0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFsIHsgfQotICAgICAgICB2b2lkIGRpZFJlY2VpdmVV
cGRhdGUoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSBmaW5hbCB7IH0KKyAgICAgICAg
dm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYpIGZpbmFsIHsg
fQogICAgIH07CiAgICAgRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyKCkgPSBkZWZhdWx0
OwogICAgIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiYgc3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQvSGVhZGVycy5jbWFrZQppbmRleCA0MzYzOTcwZjFhZTAzNjZlYTAzOTU1N2EyNzNk
OGI4M2U2NjE2NDQ4Li4zZTdlNTk1ODRmZjI4MDAwZTEwZDk5YWU0NGFiZWMzZmZhMjEzOWEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYktp
dC9IZWFkZXJzLmNtYWtlCkBAIC05OSw2ICs5OSw3IEBAIHNldChXZWJLaXRfUFVCTElDX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlVHlwZXMu
aAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmgKICAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgKICAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tUZXN0aW5nU3VwcG9ydC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLVGV4dENoZWNrZXIuaAog
ICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggNmQwNjU2NDVkY2VlNjJlNTlkNTBkYmVmMzc0
MzVhNDlhODBlYjY4Mi4uY2QxY2FkOTZiNDAzMTJkYjNiMTg4ZGU3MWY2MDg4YmY3MjhmZDg3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTY1LDYgKzE2NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgUnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXIsCiAgICAgICAg
IFJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1bkphdmFTY3Jp
cHRQcm9tcHRSZXN1bHRMaXN0ZW5lciwKKyAgICAgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2ssCiAgICAgICAgIFRleHRDaGVja2VyLAogICAgICAgICBVUkxTY2hlbWVUYXNr
LAogICAgICAgICBVc2VyQ29udGVudENvbnRyb2xsZXIsCkBAIC00MTAsNiArNDExLDcgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxBUEk6Ok9iamVjdDo6VHlwZT4gewogICAgICAgICBB
UEk6Ok9iamVjdDo6VHlwZTo6UnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXIsCiAgICAg
ICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVy
LAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6UnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExp
c3RlbmVyLAorICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2ssCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpUZXh0Q2hlY2tlciwK
ICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlVSTFNjaGVtZVRhc2ssCiAgICAgICAgIEFQSTo6
T2JqZWN0OjpUeXBlOjpVc2VyQ29udGVudENvbnRyb2xsZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L1dLQmFzZS5oCmluZGV4IDllODJlNTYwMDE4N2VjMWNmOGFmOWJlZTc5ZTcxZDBlOGQ3ZmQxNWEu
Ljg0ZWU2YzI4OGY2ZDJlYmQ1MWZhNzNlYTcyNzA4ZjMyOTQ2YmRkODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL1dLQmFzZS5oCkBAIC0xNDEsNiArMTQxLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tXZWJzaXRlRGF0YUNvbmZpZ3VyYXRpb25TdG9yZSogV0tXZWJzaXRlRGF0YVN0
b3JlQ28KIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2Vic2l0ZURhdGFTdG9yZSogV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tXZWJzaXRl
UG9saWNpZXMqIFdLV2Vic2l0ZVBvbGljaWVzUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tXaW5kb3dGZWF0dXJlcyogV0tXaW5kb3dGZWF0dXJlc1JlZjsKK3R5cGVkZWYgY29uc3Qg
c3RydWN0IE9wYXF1ZVdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sqIFdLU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWY7CiAKIC8qIFdlYktpdDIgQnVuZGxl
IHR5cGVzICovCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDgzZDI4MGM3NWVmNWY1YmIwYTJlYjZkMTFhYThj
MGZhOTE5Yjc0ZDAuLmE5MGJiYTA5Y2M3NGVlYmEwNWIwM2QzZjZlNDhkNzU1ZDEwMmZhYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dApAQCAtMjkwLDYgKzI5MCw3IEBAIFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1Rp
bWVyLmNwcAogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAogVUlQcm9jZXNz
L1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKIFVJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxl
ci5jcHAKK1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAog
VUlQcm9jZXNzL1RleHRDaGVja2VyLmNwcAogVUlQcm9jZXNzL1RleHRDaGVja2VyQ29tcGxldGlv
bi5jcHAKIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAKQEAgLTQw
Myw2ICs0MDQsNyBAQCBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKIFVJUHJvY2Vz
cy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNl
Q2FjaGVNYW5hZ2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRlUmVmLmNwcAor
VUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3Bw
CiBVSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1Vz
ZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50
RXh0ZW5zaW9uU3RvcmVSZWYuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMDg0ZDUxMzUy
ZDQ0YTQ1MDk0OWIzZmJkMWQxZDc2MTM1ZmIyYmViMi4uNjNiZDQwYzNlZjYwMWVlMTQ5NGExYjQ3
MTRhY2UwZTFmYTE3NDhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMzczLDEyICszNzMs
MTQgQEAgVUlQcm9jZXNzL0NvY29hL0dsb2JhbEZpbmRJblBhZ2VTdGF0ZS5tbQogVUlQcm9jZXNz
L0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0KIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVV0aWxpdGll
cy5tbQorVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQogVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJ
bXBsQ29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHku
bW0KIFVJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQogVUlQcm9jZXNzL0Nv
Y29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1Nlc3Npb25T
dGF0ZUNvZGluZy5tbQorVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXJDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVy
Q29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tCiBVSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VUlDbGllbnQuaAppbmRleCBhYTdkODljMDFlNzM1MjBjZTNlZTA0MjI2YjlhZTg1OTcwYmZhYTZl
Li5hMGRiYTgzNzI3YTk2YWQ2MTA0N2I5ZWQxNWI2NGIzMTM0ZWVkYWIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtMjAyLDYgKzIwMiw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7
CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5
T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCBiNTJjNDRi
YWVhOWFjZjlmYzAzMzJkNWE5ZjM3MzU2ZTlkMjM4NjI5Li4xOGNiZmQ1Yjc0ZWI4NzcwYTU3OGYx
NWM4YTAxNjE0OTkwMjE0NTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0FQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaApAQCAtNzksNiArNzksNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXI7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdDsKIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworY2xhc3MgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2tQcm94eTsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CiBj
bGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CkBAIC0xNTIsNiArMTUzLDcgQEAgV0tfQUREX0FQSV9N
QVBQSU5HKFdLUHJlZmVyZW5jZXNSZWYsIFdlYlByZWZlcmVuY2VzKQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLUHJvdGVjdGlvblNwYWNlUmVmLCBXZWJQcm90ZWN0aW9uU3BhY2UpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclJlZiwgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tTZXNzaW9uU3RhdGVS
ZWYsIEFQSTo6U2Vzc2lvblN0YXRlKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVGV4dENoZWNrZXJSZWYsIFdlYlRleHRDaGVj
a2VyKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJDb250
ZW50RXh0ZW5zaW9uU3RvcmVSZWYsIEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA0MzY5Y2RkODI1YjUxNTdmYjAx
MGMzZjgxYWU3OGU2NjBkYWE3NGZjLi41ZTEwOWQ1NzllYjc1ZjFkOGZiZmIxZDAzYThmOGMwZDdi
Y2U2ZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTYz
LDYgKzYzLDcgQEAKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5m
b3JtYXRpb24uaCIKICNpbmNsdWRlICJQcmludEluZm8uaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5j
bHVkZSAiV0tQYWdlUG9saWN5Q2xpZW50SW50ZXJuYWwuaCIKICNpbmNsdWRlICJXS1BhZ2VSZW5k
ZXJpbmdQcm9ncmVzc0V2ZW50c0ludGVybmFsLmgiCkBAIC0xMTUsNyArMTE2LDcgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVBvbGljeUNsaWVudEJhc2U+IHsKIH07CiAK
IHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VVSUNsaWVudEJhc2U+IHsKLSAg
ICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQYWdlVUlDbGllbnRWMSwg
V0tQYWdlVUlDbGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdlVUlDbGllbnRWNCwgV0tQ
YWdlVUlDbGllbnRWNSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQYWdlVUlDbGllbnRWNywgV0tQYWdl
VUlDbGllbnRWOCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQYWdlVUlDbGllbnRWMTAsIFdLUGFnZVVJ
Q2xpZW50VjExLCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQYWdlVUlDbGllbnRWMTMsIFdLUGFnZVVJ
Q2xpZW50VjE0PiBWZXJzaW9uczsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGll
bnRWMCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlDbGllbnRWMiwgV0tQYWdlVUlDbGllbnRW
MywgV0tQYWdlVUlDbGllbnRWNCwgV0tQYWdlVUlDbGllbnRWNSwgV0tQYWdlVUlDbGllbnRWNiwg
V0tQYWdlVUlDbGllbnRWNywgV0tQYWdlVUlDbGllbnRWOCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQ
YWdlVUlDbGllbnRWMTAsIFdLUGFnZVVJQ2xpZW50VjExLCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQ
YWdlVUlDbGllbnRWMTMsIFdLUGFnZVVJQ2xpZW50VjE0LCBXS1BhZ2VVSUNsaWVudFYxNT4gVmVy
c2lvbnM7CiB9OwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0yMTEwLDYgKzIxMTEs
MTMgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0
IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6UHJlc2VudGVkKTsKICAg
ICAgICAgfQogI2VuZGlmCisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6U2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNp
ZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKCZvcmln
aW4pLCB0b0FQSShTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6Y3JlYXRlKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5wdHIoKSkpOworICAgICAgICB9CiAgICAgfTsKIAog
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0VUlDbGllbnQobWFrZVVuaXF1ZTxVSUNsaWVudD4od2tD
bGllbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVu
dC5oCmluZGV4IGI2Mzg4MTU1Y2QzMDM2ZTY2NjExMGYxOTI1NjE2YWZkMzdlODY4YmEuLjYzNjM1
NTU2NGQwMGIxMTIyYTg3ZTIyOWEzMGI5NGQ3ZTk5ZTRlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaApAQCAtMTM2LDYgKzEzNiw3IEBAIHR5
cGVkZWYgdm9pZCAoKldLUGFnZURpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBw
ZWFyYW5jZUNhbGxiYWNrKShXS1BhCiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VTaG91bGRBbGxvd0Rl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBX
S1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KTsKIAogdHlwZWRlZiB2b2lkICgqV0tQYWdlUnVuV2ViQXV0aGVudGljYXRpb25QYW5lbENhbGxi
YWNrKSgpOwordHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTZWN1cml0
eU9yaWdpblJlZiB0b3BPcmlnaW4sIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2tSZWYgY2FsbGJhY2spOwogCiAvLyBEZXByZWNhdGVkCiB0eXBlZGVmIFdLUGFnZVJlZiAoKldL
UGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwKShXS1BhZ2VS
ZWYgcGFnZSwgV0tEaWN0aW9uYXJ5UmVmIGZlYXR1cmVzLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlm
aWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKQEAgLTEzNTMsNiArMTM1NCwxMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGll
bnRWMTQgewogICAgIFdLUGFnZVJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDsKIH0gV0tQ
YWdlVUlDbGllbnRWMTQ7CiAKK3R5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjE1IHsKKyAg
ICBXS1BhZ2VVSUNsaWVudEJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJhc2U7CisKKyAgICAvLyBWZXJzaW9uIDAuCisgICAgV0tQYWdlQ3JlYXRl
TmV3UGFnZUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgICAgICAgICBj
cmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlVUlDbGllbnRD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93
UGFnZTsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsb3NlOworICAgIFdLUGFnZVRha2VGb2N1c0NhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZUZvY3VzOwor
ICAgIFdLUGFnZUZvY3VzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9jdXM7CisgICAgV0tQYWdlVW5mb2N1c0NhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmZvY3VzOworICAgIFdLUGFn
ZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAg
ICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQ
YWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAg
ICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAg
IFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYw
ICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOwor
ICAgIFdLUGFnZVNldFN0YXR1c1RleHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0U3RhdHVzVGV4dDsKKyAgICBXS1BhZ2VNb3VzZURpZE1vdmVPdmVy
RWxlbWVudENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgIG1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlTWlzc2luZ1Bs
dWdpbkJ1dHRvbkNsaWNrZWRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICBtaXNz
aW5nUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFn
ZURpZE5vdEhhbmRsZUtleUV2ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlkTm90SGFuZGxlS2V5RXZlbnQ7CisgICAgV0tQYWdlRGlkTm90SGFuZGxlV2hlZWxF
dmVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWROb3RIYW5kbGVX
aGVlbEV2ZW50OworICAgIFdLUGFnZUdldFRvb2xiYXJzQXJlVmlzaWJsZUNhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhcnNBcmVWaXNpYmxlOworICAgIFdLUGFn
ZVNldFRvb2xiYXJzQXJlVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0VG9vbGJhcnNBcmVWaXNpYmxlOworICAgIFdLUGFnZUdldE1lbnVCYXJJc1Zpc2li
bGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudUJhcklzVmlz
aWJsZTsKKyAgICBXS1BhZ2VTZXRNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldE1lbnVCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlR2V0
U3RhdHVzQmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0dXNCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlU2V0U3RhdHVzQmFySXNWaXNpYmxlQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0dXNCYXJJc1Zpc2li
bGU7CisgICAgV0tQYWdlR2V0SXNSZXNpemFibGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpc1Jlc2l6YWJsZTsKKyAgICBXS1BhZ2VTZXRJc1Jlc2l6YWJs
ZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzUmVz
aXphYmxlOworICAgIFdLUGFnZUdldFdpbmRvd0ZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2V0V2luZG93RnJhbWU7CisgICAgV0tQYWdlU2V0V2lu
ZG93RnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRXaW5kb3dGcmFtZTsKKyAgICBXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxDYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY2ICAgIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bF9kZXByZWNhdGVkRm9yVXNlV2l0aFY2OworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRHJhdzsKKyAgICBX
S1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhZ2VEaWRTY3JvbGw7CisgICAgV0tQYWdlRXhjZWVkZWREYXRhYmFzZVF1b3Rh
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlZWRlZERhdGFiYXNl
UXVvdGE7CisgICAgV0tQYWdlUnVuT3BlblBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBydW5PcGVuUGFuZWw7CisgICAgV0tQYWdlRGVjaWRlUG9s
aWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgICBkZWNp
ZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZUhlYWRl
ckhlaWdodENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVhZGVySGVpZ2h0OworICAgIFdLUGFnZUZvb3RlckhlaWdodENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVySGVpZ2h0OworICAgIFdLUGFnZURy
YXdIZWFkZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZHJhd0hlYWRlcjsKKyAgICBXS1BhZ2VEcmF3Rm9vdGVyQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdGb290ZXI7CisgICAgV0tQYWdlUHJp
bnRGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcmludEZyYW1lOworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuTW9kYWw7CisgICAgdm9pZCogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnVzZWQxOyAvLyBVc2VkIHRvIGJlIGRpZENvbXBsZXRlUnViYmVyQmFuZEZvck1haW5GcmFtZQor
ICAgIFdLUGFnZVNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXJDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcjsKKyAgICB2b2lk
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNob3VsZEludGVycnVwdEphdmFTY3JpcHRfdW5hdmFpbGFibGU7CisKKyAgICAvLyBW
ZXJzaW9uIDEuCisgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjEgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjE7CisgICAgV0tQYWdlTW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDsKKyAgICBXS1Bh
Z2VEZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAg
ICAgICAgIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAg
IFdLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrX2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjEgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjE7CisKKyAgICAvLyBWZXJzaW9uIDIuCisgICAgV0tQYWdlU2hvd0NvbG9yUGlja2Vy
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q29sb3JQ
aWNrZXI7CisgICAgV0tQYWdlSGlkZUNvbG9yUGlja2VyQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoaWRlQ29sb3JQaWNrZXI7CisgICAgV0tQYWdlVW5hdmFp
bGFibGVQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICB1
bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQ7CisKKyAgICAvLyBWZXJzaW9uIDMuCisgICAg
V0tQYWdlUGlubmVkU3RhdGVEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwaW5uZWRTdGF0ZURpZENoYW5nZTsKKworICAgIC8vIFZlcnNpb24gNC4KKyAg
ICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVudXNlZDI7IC8vIFVzZWQgdG8gYmUgZGlkQmVnaW5UcmFja2luZ1BvdGVu
dGlhbExvbmdNb3VzZVByZXNzLgorICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkMzsgLy8gVXNlZCB0byBi
ZSBkaWRSZWNvZ25pemVMb25nTW91c2VQcmVzcy4KKyAgICB2b2lkKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDQ7IC8v
IFVzZWQgdG8gYmUgZGlkQ2FuY2VsVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcy4KKyAg
ICBXS1BhZ2VJc1BsYXlpbmdBdWRpb0RpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlOworCisgICAgLy8gVmVyc2lvbiA1
LgorICAgIFdLUGFnZURlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2Fs
bGJhY2sgICAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3Q7CisgICAgV0tQYWdlRGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbkNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaWRDbGlja0F1dG9GaWxsQnV0dG9uOworICAgIFdLUGFnZVJ1
bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAg
ICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CisgICAgV0tQYWdl
UnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAg
ICAgICBydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OworICAgIFdL
UGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAg
ICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OworICAg
IHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURp
ZENoYW5nZS4KKworICAgIC8vIFZlcnNpb24gNi4KKyAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1Bh
Z2U7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnQ7CisgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdENvbmZpcm1DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dW5KYXZhU2NyaXB0Q29uZmlybTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHQ7
CisgICAgV0tDaGVja1VzZXJNZWRpYVBlcm1pc3Npb25DYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW47CisKKyAg
ICAvLyBWZXJzaW9uIDcuCisgICAgV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWw7CisgICAgV0tGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmVDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmU7CisKKyAgICAv
LyBWZXJzaW9uIDguCisgICAgV0tSZXF1ZXN0UG9pbnRlckxvY2tDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0UG9pbnRlckxvY2s7CisgICAgV0tE
aWRMb3NlUG9pbnRlckxvY2tDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWRMb3NlUG9pbnRlckxvY2s7CisKKyAgICAvLyBWZXJzaW9uIDkuCisgICAgV0tI
YW5kbGVBdXRvcGxheUV2ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoYW5kbGVBdXRvcGxheUV2ZW50OworCisgICAgLy8gVmVyc2lvbiAxMC4KKyAgICBX
S0hhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgIGhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlOworICAgIFdLRGlk
RXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZENhbGxiYWNrICAg
ICAgICAgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDsK
KworICAgIC8vIFZlcnNpb24gMTEuCisgICAgV0tQYWdlRGlkUmVzaWduSW5wdXRFbGVtZW50U3Ry
b25nUGFzc3dvcmRBcHBlYXJhbmNlQ2FsbGJhY2sgICAgICAgICBkaWRSZXNpZ25JbnB1dEVsZW1l
bnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2U7CisKKyAgICAvLyBWZXJzaW9uIDEyLgorICAgIFdL
UGFnZVJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtOworCisgICAgLy8gVmVyc2lvbiAx
My4KKyAgICBXS1BhZ2VTaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
Q2FsbGJhY2sgICAgICAgICAgIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25B
Y2Nlc3M7CisKKyAgICAvLyBWZXJzaW9uIDE0LgorICAgIFdLUGFnZVJ1bldlYkF1dGhlbnRpY2F0
aW9uUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuV2ViQXV0aGVu
dGljYXRpb25QYW5lbDsKKworICAgIC8vIFZlcnNpb24gMTUuCisgICAgV0tQYWdlRGVjaWRlUG9s
aWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICBkZWNp
ZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIAorfSBX
S1BhZ2VVSUNsaWVudFYxNTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNjOGY5
YTM1ZGI4NDExZTAzODVhN2FlMTU0OWEzOWFmODEzMmVkNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5o
IgorCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgorI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJ
RCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKCkKK3sKKyAg
ICByZXR1cm4gdG9BUEkoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OkFQSVR5
cGUpOworfQorCit2b2lkIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tDb21w
bGV0ZShXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIHNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLCBib29sIGdyYW50ZWQpCit7CisgICAgcmV0dXJuIHRv
SW1wbChzcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayktPmNvbXBsZXRlKGdyYW50
ZWQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmI4YWVhZmM2OTg0YmE5NmY1NDg5MmU3MzJhZmVhM2EwNjNjOWM3MmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3Bs
dXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKHZvaWQpOworCitXS19FWFBPUlQg
dm9pZCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUoV0tTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBzcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjaywgYm9vbCBncmFudGVkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9Cisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJ
RGVsZWdhdGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
SURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IGQxZWFlMjAxZTY1NDJmNGZhYjYwMTk4MGRjNjYxMjQ5
MTMxOTc5M2YuLmYwYTliYTQxZjUxNWVmNzE4Zjc0NmM3ZmRmZmZlYTRhMzVlOGRlMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0
ZVByaXZhdGUuaApAQCAtMTUyLDYgKzE1Miw4IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAKIC0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2lsbFNoYXJlQWN0aXZpdHlJdGVt
czooTlNBcnJheSAqKWFjdGl2aXR5SXRlbXMgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RC
QSkpOwogCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmln
aW4gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFu
ZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OworCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogCiAtIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHNob3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2
YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudCBXS19BUElfQVZBSUxBQkxFKGlvcyg5LjApKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0
aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9u
VXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZiNGY1NWQwYmU5YmYzZmFlNjlkNTZkNjVlM2Q4Mjg3
ZmFiMDI3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWTWVkaWFGb3JtYXQuaD4K
KyNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBNZWRpYVBlcm1pc3Npb25UeXBl
IHsKKyAgICBBdWRpbywKKyAgICBWaWRlbworfTsKKworZW51bSBjbGFzcyBNZWRpYVBlcm1pc3Np
b25SZXN1bHQgeworICAgIERlbmllZCwKKyAgICBHcmFudGVkLAorICAgIFVua25vd24KK307CisK
KyNpZiBIQVZFKEFWQ0FQVFVSRURFVklDRSkKK3ZvaWQgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zv
clR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1
dGhvcml6ZWQpPiYmKTsKK01lZGlhUGVybWlzc2lvblJlc3VsdCBjaGVja0FWQ2FwdHVyZUFjY2Vz
c0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSk7CisjZW5kaWYKKworYm9vbCBjaGVja1NhbmRi
b3hSZXF1aXJlbWVudEZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSk7Citib29sIGNoZWNrVXNh
Z2VEZXNjcmlwdGlvblN0cmluZ0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSk7CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhlY2RiOGJm
NzA5MmU4NzFjY2NhMTRlODRmYmMwZmE4ZjJhNjY0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQpAQCAt
MCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
TWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgiCisKKyNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMu
aCIKKyNpbXBvcnQgIlRDQ1NQSS5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0
IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3Vu
ZGF0aW9uU29mdExpbmsuaD4KKworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFRDQykKK1NP
RlRfTElOSyhUQ0MsIFRDQ0FjY2Vzc1ByZWZsaWdodCwgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0
LCAoQ0ZTdHJpbmdSZWYgc2VydmljZSwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpLCAoc2Vydmlj
ZSwgb3B0aW9ucykpCitTT0ZUX0xJTktfQ09OU1RBTlQoVENDLCBrVENDU2VydmljZU1pY3JvcGhv
bmUsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RDQ1NlcnZpY2VDYW1l
cmEsIENGU3RyaW5nUmVmKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2lmIEhBVkUoQVZDQVBU
VVJFREVWSUNFKQorCit2b2lkIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVy
bWlzc2lvblR5cGUgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisK
KyAgICBBVk1lZGlhVHlwZSBtZWRpYVR5cGUgPSB0eXBlID09IE1lZGlhUGVybWlzc2lvblR5cGU6
OkF1ZGlvID8gQVZNZWRpYVR5cGVBdWRpbyA6IEFWTWVkaWFUeXBlVmlkZW87CisgICAgYXV0byBk
ZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAg
IGlmIChpc01haW5UaHJlYWQoKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0
aG9yaXplZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBhdXRob3JpemVkXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoYXV0aG9yaXplZCk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIFtQQUw6OmdldEFWQ2Fw
dHVyZURldmljZUNsYXNzKCkgcmVxdWVzdEFjY2Vzc0Zvck1lZGlhVHlwZTptZWRpYVR5cGUgY29t
cGxldGlvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKK30KKworTWVkaWFQZXJtaXNz
aW9uUmVzdWx0IGNoZWNrQVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBl
IHR5cGUpCit7CisgICAgQVZNZWRpYVR5cGUgbWVkaWFUeXBlID0gdHlwZSA9PSBNZWRpYVBlcm1p
c3Npb25UeXBlOjpBdWRpbyA/IEFWTWVkaWFUeXBlQXVkaW8gOiBBVk1lZGlhVHlwZVZpZGVvOwor
ICAgIGF1dG8gYXV0aG9yaXphdGlvblN0YXR1cyA9IFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNs
YXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c0Zvck1lZGlhVHlwZTptZWRpYVR5cGVdOworICAgIGlm
IChhdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCB8fCBh
dXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpCisg
ICAgICAgIHJldHVybiBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkRlbmllZDsKKyAgICBpZiAoYXV0
aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkKQor
ICAgICAgICByZXR1cm4gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duOworICAgIHJldHVy
biBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkdyYW50ZWQ7Cit9CisKKyNlbmRpZgorCitib29sIGNo
ZWNrU2FuZGJveFJlcXVpcmVtZW50Rm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlIHR5cGUpCit7
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBhdWRpb0ZsYWc7
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHZpZGVvRmxhZzsKKyAgICBzdGF0aWMgYm9vbCBp
c0F1ZGlvRW50aXRsZWQgPSB0cnVlOworICAgIHN0YXRpYyBib29sIGlzVmlkZW9FbnRpdGxlZCA9
IHRydWU7CisgICAgCisgICAgYXV0byBjaGVja0Z1bmN0aW9uID0gW10oY29uc3QgY2hhciogb3Bl
cmF0aW9uLCBib29sKiBlbnRpdGxlZCkgeworICAgICAgICBpZiAoIWN1cnJlbnRQcm9jZXNzSXNT
YW5kYm94ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpbnQgcmVzdWx0ID0g
c2FuZGJveF9jaGVjayhnZXRwaWQoKSwgb3BlcmF0aW9uLCBTQU5EQk9YX0ZJTFRFUl9OT05FKTsK
KyAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJy
b3IgY2hlY2tpbmcgJyVzJyBzYW5kYm94IGFjY2VzcywgZXJybm89JWxkIiwgb3BlcmF0aW9uLCAo
bG9uZyllcnJubyk7CisgICAgICAgICplbnRpdGxlZCA9ICFyZXN1bHQ7CisgICAgfTsKKworICAg
IGlmICh0eXBlID09IE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKSB7CisgICAgICAgIHN0ZDo6
Y2FsbF9vbmNlKGF1ZGlvRmxhZywgY2hlY2tGdW5jdGlvbiwgImRldmljZS1taWNyb3Bob25lIiwg
JmlzQXVkaW9FbnRpdGxlZCk7CisgICAgICAgIHJldHVybiBpc0F1ZGlvRW50aXRsZWQ7CisgICAg
fQorCisgICAgc3RkOjpjYWxsX29uY2UodmlkZW9GbGFnLCBjaGVja0Z1bmN0aW9uLCAiZGV2aWNl
LWNhbWVyYSIsICZpc1ZpZGVvRW50aXRsZWQpOworICAgIHJldHVybiBpc1ZpZGVvRW50aXRsZWQ7
CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBjaGVja1VzYWdlRGVzY3JpcHRp
b25TdHJpbmdGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGUgdHlwZSkKK3sKKyAgICBpZiAodHlw
ZSA9PSBNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbykgeworICAgICAgICBzdGF0aWMgVENDQWNj
ZXNzUHJlZmxpZ2h0UmVzdWx0IGF1ZGlvQWNjZXNzID0gVENDQWNjZXNzUHJlZmxpZ2h0KGdldGtU
Q0NTZXJ2aWNlTWljcm9waG9uZSgpLCBOVUxMKTsKKyAgICAgICAgaWYgKGF1ZGlvQWNjZXNzID09
IGtUQ0NBY2Nlc3NQcmVmbGlnaHRHcmFudGVkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIHJldHVybiBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1
bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb24iXSkubGVu
Z3RoID4gMDsKKyAgICB9CisKKyAgICBzdGF0aWMgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0IHZp
ZGVvQWNjZXNzID0gVENDQWNjZXNzUHJlZmxpZ2h0KGdldGtUQ0NTZXJ2aWNlQ2FtZXJhKCksIE5V
TEwpOworICAgIGlmICh2aWRlb0FjY2VzcyA9PSBrVENDQWNjZXNzUHJlZmxpZ2h0R3JhbnRlZCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGR5bmFtaWNfb2JqY19jYXN0PE5TU3Ry
aW5nPihOU0J1bmRsZS5tYWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNDYW1lcmFVc2FnZURl
c2NyaXB0aW9uIl0pLmxlbmd0aCA+IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcw
MmUwZTViMzBiZTQ0NDAyNWUyMDk3YjIyMTAzOTQ3NWNjYTc3YzkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyQ29jb2EubW0KQEAgLTAsMCArMSwxODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIu
aCIKKworI2ltcG9ydCAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKKyNpbXBvcnQgIkFQSVVJQ2xpZW50
LmgiCisjaW1wb3J0ICJNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCIKKyNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBIQVZFKFNQRUVD
SFJFQ09HTklaRVIpCisjaW1wb3J0IDxTcGVlY2gvU3BlZWNoLmg+CisKK1NPRlRfTElOS19GUkFN
RVdPUksoU3BlZWNoKQorU09GVF9MSU5LX0NMQVNTKFNwZWVjaCwgU0ZTcGVlY2hSZWNvZ25pemVy
KQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0UHJvY2Vzc2luZ1JlcXVlc3QoKQoreworICAgIGlmICgh
Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlv
KSkgeworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghY2hlY2tNaWNyb3Bob25lQWNjZXNzKCkgfHwgIWNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2
aWNlQWNjZXNzKCkgfHwgbV91c2VyUGVybWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5p
ZWQpIHsKKyAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25EZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBj
b250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCk7Cit9CisKK2Jvb2wgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKCkKK3sKKyAgICBpZiAobV9w
YWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX21pY3JvcGhvbmVDaGVjayA9PSBDaGVja1Jlc3VsdDo6
VW5rbm93bikgeworI2lmIEhBVkUoQVZDQVBUVVJFREVWSUNFKQorICAgICAgICBhdXRvIHJlc3Vs
dCA9IGNoZWNrQVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRp
byk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3du
KQorICAgICAgICAgICAgbV9taWNyb3Bob25lQ2hlY2sgPSByZXN1bHQgPT0gTWVkaWFQZXJtaXNz
aW9uUmVzdWx0OjpHcmFudGVkID8gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBDaGVja1Jlc3VsdDo6
RGVuaWVkOworICAgICAgICBlbHNlIGlmICghY2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9y
VHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbykpCisgICAgICAgICAgICBtX21pY3JvcGhv
bmVDaGVjayA9IENoZWNrUmVzdWx0OjpEZW5pZWQ7CisjZWxzZQorICAgICAgICBtX21pY3JvcGhv
bmVDaGVjayA9IENoZWNrUmVzdWx0OjpHcmFudGVkOworI2VuZGlmCisgICAgfQorCisgICAgcmV0
dXJuIG1fbWljcm9waG9uZUNoZWNrICE9IENoZWNrUmVzdWx0OjpEZW5pZWQ7Cit9CisKK2Jvb2wg
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlv
blNlcnZpY2VBY2Nlc3MoKQoreworICAgIGlmIChtX3BhZ2UucHJlZmVyZW5jZXMoKS5tb2NrQ2Fw
dHVyZURldmljZXNFbmFibGVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG1f
c3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsK
KyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisgICAgICAgIGF1dG8gc3RhdHVzID0gW2dldFNG
U3BlZWNoUmVjb2duaXplckNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c107CisgICAgICAgIGlm
IChzdGF0dXMgIT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVy
bWluZWQpCisgICAgICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrID0gc3Rh
dHVzID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkID8g
Q2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBDaGVja1Jlc3VsdDo6RGVuaWVkOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGJvb2wgaGFzRGVzY3JpcHRpb25TdHJpbmcgPSBkeW5hbWljX29iamNf
Y2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TU3Bl
ZWNoUmVjb2duaXRpb25Vc2FnZURlc2NyaXB0aW9uIl0pLmxlbmd0aDsKKyAgICAgICAgICAgIG1f
c3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPSBoYXNEZXNjcmlwdGlvblN0cmluZyA/IENo
ZWNrUmVzdWx0OjpVbmtub3duIDogQ2hlY2tSZXN1bHQ6OkRlbmllZDsKKyAgICAgICAgfQorI2Vs
c2UKKyAgICAgICAgbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VDaGVjayA9IENoZWNrUmVzdWx0
OjpHcmFudGVkOworI2VuZGlmCisgICAgfQorCisgICAgcmV0dXJuIG1fc3BlZWNoUmVjb2duaXRp
b25TZXJ2aWNlQ2hlY2sgIT0gQ2hlY2tSZXN1bHQ6OkRlbmllZDsKK30KKwordm9pZCBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2
aWNlQWNjZXNzKCkKK3sKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VDaGVj
ayA9PSBDaGVja1Jlc3VsdDo6VW5rbm93bik7CisKKyAgICBhdXRvIG1haW5UaHJlYWRIYW5kbGVy
ID0gKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShib29sIGF1dGhvcml6ZWQp
IG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPSAgYXV0aG9yaXplZCA/
IENoZWNrUmVzdWx0OjpHcmFudGVkIDogQ2hlY2tSZXN1bHQ6OkRlbmllZDsKKyAgICAgICAgaWYg
KG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OkRlbmllZCkg
eworICAgICAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25EZWNpc2lvbjo6RGVueSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCk7CisgICAgfSk7CisgICAgYXV0
byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW21haW5UaHJlYWRIYW5kbGVyID0gV1RG
TW92ZShtYWluVGhyZWFkSGFuZGxlcildKFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25T
dGF0dXMgc3RhdHVzKSBtdXRhYmxlIHsKKyAgICAgICAgYm9vbCBhdXRob3JpemVkID0gc3RhdHVz
ID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkOworICAg
ICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFttYWluVGhyZWFkSGFuZGxlciA9IFdURk1vdmUobWFpblRocmVhZEhhbmRsZXIpLCBhdXRob3Jp
emVkXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIG1haW5UaHJlYWRIYW5kbGVyKGF1dGhv
cml6ZWQpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgbWFpblRocmVhZEhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgfSk7CisgICAgW2dl
dFNGU3BlZWNoUmVjb2duaXplckNsYXNzKCkgcmVxdWVzdEF1dGhvcml6YXRpb246ZGVjaXNpb25I
YW5kbGVyLmdldCgpXTsKKyNlbmRpZgorfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNjZXNzKCkKK3sKKyNpZiBIQVZFKEFWQ0FQ
VFVSRURFVklDRSkKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX21p
Y3JvcGhvbmVDaGVjayA9PSBDaGVja1Jlc3VsdDo6VW5rbm93bik7CisKKyAgICByZXF1ZXN0QVZD
YXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbywgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGJvb2wgYXV0aG9yaXplZCkgeworICAgICAgICBp
ZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fbWljcm9waG9u
ZUNoZWNrID0gYXV0aG9yaXplZCA/IENoZWNrUmVzdWx0OjpHcmFudGVkIDogQ2hlY2tSZXN1bHQ6
OkRlbmllZDsKKyAgICAgICAgaWYgKG1fbWljcm9waG9uZUNoZWNrID09IENoZWNrUmVzdWx0OjpE
ZW5pZWQpIHsKKyAgICAgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgpOworICAgIH0pOwor
I2VuZGlmCit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVx
dWVzdFVzZXJQZXJtaXNzaW9uKCkKK3sKKyAgICBBU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgp
KTsKKyAgICBhdXRvJiBjdXJyZW50UmVxdWVzdCA9IG1fcmVxdWVzdHMuZmlyc3QoKTsKKworICAg
IGF1dG8gY2xpZW50T3JpZ2luID0gY3VycmVudFJlcXVlc3QtPm9yaWdpbigpOworICAgIGF1dG8g
cmVxdWVzdGluZ09yaWdpbiA9IGNsaWVudE9yaWdpbi5jbGllbnRPcmlnaW4uc2VjdXJpdHlPcmln
aW4oKTsKKyAgICBhdXRvIHRvcE9yaWdpbiA9IGNsaWVudE9yaWdpbi50b3BPcmlnaW4uc2VjdXJp
dHlPcmlnaW4oKTsKKyAgICBpZiAocmVxdWVzdGluZ09yaWdpbi0+aXNTYW1lT3JpZ2luQXModG9w
T3JpZ2luKSkgeworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpXShib29sIGdyYW50ZWQpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPSBncmFudGVkID8g
Q2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBDaGVja1Jlc3VsdDo6RGVuaWVkOworICAgICAgICBpZiAo
bV91c2VyUGVybWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVj
aXNpb246OkRlbnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
Y29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgpOworICAgIH07CisgICAgbV9wYWdlLnVpQ2xpZW50
KCkuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChtX3Bh
Z2UsIEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0b3BPcmlnaW4uZ2V0KCkpLmdldCgpLCBX
VEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDhhMDk0NzQ1
YzFmMjRiZTEwNWRiYjAyYWI5MWUzMDdiMzFkNDg2YjEuLjYyZDdhOGExOGY2ZWI4Mzk0Y2JlMDJj
ZmFjNDM3NmE1NGQwYTFmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLmgKQEAgLTE2MSw2ICsxNjEsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShXRUJfQVVU
SE4pCiAgICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkm
LCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJGcmFtZVByb3h5JiwgRnJhbWVJbmZv
RGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1
bHQpPiYmKSBmaW5hbDsKICNlbmRpZgorICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0
eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogCiAgICAg
ICAgIFVJRGVsZWdhdGUmIG1fdWlEZWxlZ2F0ZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggZDAzMzhmOGQ2ZTNiOWExM2RmMmFmMTUz
YWNiNWRlYjM4ZTFmY2Q5Yi4uMGY5ZWE5MDlhNmVmOTk5MTFiZTgxZWVlOWUwOTM4OTg1N2EyNjhm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0x
MzMyLDQgKzEzMzIsMjYgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6aW1hZ2VPck1lZGlh
RG9jdW1lbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXoKICAgICBbc3RhdGljX2Nh
c3Q8aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+PihkZWxlZ2F0ZSkgX3dlYlZpZXc6bV91aURlbGVn
YXRlLm1fd2ViVmlldyBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkOm5ld1NpemVdOwog
fQogCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6
OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IChpZCA8V0tVSURlbGVn
YXRlUHJpdmF0ZT4pbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxl
Z2F0ZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF93ZWJWaWV3OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46
ZGVjaXNpb25IYW5kbGVyOildKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25I
YW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJl
cXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46ZGVjaXNpb25IYW5kbGVy
OikpOworICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJlcXVl
c3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46d3JhcHBlcihvcmlnaW4pIGRl
Y2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNo
YW5nZShjb21wbGV0aW9uSGFuZGxlciwgeyB9KSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcild
IChCT09MIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlv
bkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNo
ZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihncmFudGVkKTsKKyAgICB9KS5nZXQoKV07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5tbQppbmRleCA5OTc1
NzVkZTAyMTZhOWMwY2Q3NmFmY2I0MWM3NjQxZGIxMzE1YWZiLi44ZWJlYzUyY2M2YjY2ZDE1YTIz
ZTU0NGUyMzRlZWQ4NWFjZWYwYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgogCisjaW1wb3J0
ICJNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMu
aCIKICNpbXBvcnQgIlRDQ1NQSS5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCkBAIC0zNyw0
MCArMzgsMTIgQEAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgog
I2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogCi1TT0ZUX0xJTktfUFJJVkFU
RV9GUkFNRVdPUksoVENDKQotU09GVF9MSU5LKFRDQywgVENDQWNjZXNzUHJlZmxpZ2h0LCBUQ0NB
Y2Nlc3NQcmVmbGlnaHRSZXN1bHQsIChDRlN0cmluZ1JlZiBzZXJ2aWNlLCBDRkRpY3Rpb25hcnlS
ZWYgb3B0aW9ucyksIChzZXJ2aWNlLCBvcHRpb25zKSkKLVNPRlRfTElOSyhUQ0MsIFRDQ0FjY2Vz
c1ByZWZsaWdodFdpdGhBdWRpdFRva2VuLCBUQ0NBY2Nlc3NQcmVmbGlnaHRSZXN1bHQsIChDRlN0
cmluZ1JlZiBzZXJ2aWNlLCBhdWRpdF90b2tlbl90IHRva2VuLCBDRkRpY3Rpb25hcnlSZWYgb3B0
aW9ucyksIChzZXJ2aWNlLCB0b2tlbiwgb3B0aW9ucykpCi1TT0ZUX0xJTktfQ09OU1RBTlQoVEND
LCBrVENDU2VydmljZU1pY3JvcGhvbmUsIENGU3RyaW5nUmVmKQotU09GVF9MSU5LX0NPTlNUQU5U
KFRDQywga1RDQ1NlcnZpY2VDYW1lcmEsIENGU3RyaW5nUmVmKQotCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cGVybWl0
dGVkVG9DYXB0dXJlQXVkaW8oKQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0
YXRpYyBib29sIGVudGl0bGVkID0gdHJ1ZTsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywg
W10gewotICAgICAgICBpZiAoIWN1cnJlbnRQcm9jZXNzSXNTYW5kYm94ZWQoKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBpbnQgcmVzdWx0ID0gc2FuZGJveF9jaGVjayhnZXRwaWQo
KSwgImRldmljZS1taWNyb3Bob25lIiwgU0FOREJPWF9GSUxURVJfTk9ORSk7Ci0gICAgICAgIGVu
dGl0bGVkID0gIXJlc3VsdDsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKLSAgICAgICAgICAg
IFdURkxvZ0Fsd2F5cygiRXJyb3IgY2hlY2tpbmcgJ2RldmljZS1taWNyb3Bob25lJyBzYW5kYm94
IGFjY2VzcywgZXJybm89JWxkIiwgKGxvbmcpZXJybm8pOwotICAgIH0pOwotICAgIGlmICghZW50
aXRsZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCi0K
LSAgICBzdGF0aWMgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0IGFjY2VzcyA9IFRDQ0FjY2Vzc1By
ZWZsaWdodChnZXRrVENDU2VydmljZU1pY3JvcGhvbmUoKSwgTlVMTCk7Ci0gICAgaWYgKGFjY2Vz
cyA9PSBrVENDQWNjZXNzUHJlZmxpZ2h0R3JhbnRlZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBzdGF0aWMgYm9vbCBpc1Blcm1pdHRlZCA9IGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5n
PihOU0J1bmRsZS5tYWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNNaWNyb3Bob25lVXNhZ2VE
ZXNjcmlwdGlvbiJdKS5sZW5ndGg7Ci0gICAgcmV0dXJuIGlzUGVybWl0dGVkOworICAgIHJldHVy
biBjaGVja1NhbmRib3hSZXF1aXJlbWVudEZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6QXVk
aW8pICYmIGNoZWNrVXNhZ2VEZXNjcmlwdGlvblN0cmluZ0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9u
VHlwZTo6QXVkaW8pOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTc5LDQ5
ICs1MiwxMyBAQCBib29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpw
ZXJtaXR0ZWRUb0NhcHR1cmVBdWRpbygpCiBib29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpwZXJtaXR0ZWRUb0NhcHR1cmVWaWRlbygpCiB7CiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUZsYWc7Ci0gICAgc3RhdGljIGJvb2wgZW50aXRsZWQgPSB0cnVlOwotICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIGlmICghY3VycmVudFByb2Nlc3NJc1Nh
bmRib3hlZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGludCByZXN1bHQgPSBz
YW5kYm94X2NoZWNrKGdldHBpZCgpLCAiZGV2aWNlLWNhbWVyYSIsIFNBTkRCT1hfRklMVEVSX05P
TkUpOwotICAgICAgICBlbnRpdGxlZCA9ICFyZXN1bHQ7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0g
LTEpCi0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGNoZWNraW5nICdkZXZpY2UtY2Ft
ZXJhJyBzYW5kYm94IGFjY2VzcywgZXJybm89JWxkIiwgKGxvbmcpZXJybm8pOwotICAgIH0pOwot
ICAgIGlmICghZW50aXRsZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCi0KLSAgICBzdGF0aWMgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0IGFjY2VzcyA9
IFRDQ0FjY2Vzc1ByZWZsaWdodChnZXRrVENDU2VydmljZUNhbWVyYSgpLCBOVUxMKTsKLSAgICBp
ZiAoYWNjZXNzID09IGtUQ0NBY2Nlc3NQcmVmbGlnaHRHcmFudGVkKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIHN0YXRpYyBib29sIGlzUGVybWl0dGVkID0gZHluYW1pY19vYmpjX2Nhc3Q8
TlNTdHJpbmc+KE5TQnVuZGxlLm1haW5CdW5kbGUuaW5mb0RpY3Rpb25hcnlbQCJOU0NhbWVyYVVz
YWdlRGVzY3JpcHRpb24iXSkubGVuZ3RoOwotICAgIHJldHVybiBpc1Blcm1pdHRlZDsKKyAgICBy
ZXR1cm4gY2hlY2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6
OlZpZGVvKSAmJiBjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdGb3JUeXBlKE1lZGlhUGVybWlz
c2lvblR5cGU6OlZpZGVvKTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiB9CiAK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotc3RhdGljIHZvaWQgcmVxdWVzdEFWQ2FwdHVyZUFj
Y2Vzc0Zvck1lZGlhVHlwZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEJPT0wgYXV0aG9yaXplZCk+
JiYgY29tcGxldGlvbkhhbmRsZXIsIEFWTWVkaWFUeXBlIHR5cGUpCi17Ci0gICAgYXV0byBkZWNp
c2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKEJPT0wgYXV0aG9yaXplZCkgbXV0YWJsZSB7Ci0gICAgICAgIGlm
ICghaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGF1dGhvcml6ZWRdKCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKLSAgICB9KTsKLSAgICBbUEFMOjpnZXRB
VkNhcHR1cmVEZXZpY2VDbGFzcygpIHJlcXVlc3RBY2Nlc3NGb3JNZWRpYVR5cGU6dHlwZSBjb21w
bGV0aW9uSGFuZGxlcjpkZWNpc2lvbkhhbmRsZXIuZ2V0KCldOwotfQotCiB2b2lkIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lzdGVtVmFsaWRhdGlvbihj
b25zdCBXZWJQYWdlUHJveHkmIHBhZ2UsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkm
IHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAg
ICAgaWYgKHBhZ2UucHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCkpIHsK
QEAgLTEzMCwzNiArNjcsNDAgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6cmVxdWVzdFN5c3RlbVZhbGlkYXRpb24oY29uc3QgV2ViUGEKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogQWRkIFRDQyBlbnRpdGxlbWVudCBjaGVjayBmb3Igc2NyZWVuc2hhcmluZy4K
LSAgICBib29sIHJlcXVpcmVzQXVkaW9DYXB0dXJlID0gcmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2Fw
dHVyZSgpOwotICAgIGJvb2wgcmVxdWlyZXNWaWRlb0NhcHR1cmUgPSByZXF1ZXN0LnJlcXVpcmVz
VmlkZW9DYXB0dXJlKCk7Ci0KLSAgICBhdXRvIG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVz
ID0gIXJlcXVpcmVzQXVkaW9DYXB0dXJlID8gQVZBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXpl
ZCA6IFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c0Zv
ck1lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvXTsKLSAgICBpZiAobWljcm9waG9uZUF1dGhvcml6
YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IG1pY3JvcGhvbmVB
dXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpIHsK
KyAgICBhdXRvIGF1ZGlvU3RhdHVzID0gcmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpID8g
Y2hlY2tBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKSA6
IE1lZGlhUGVybWlzc2lvblJlc3VsdDo6R3JhbnRlZDsKKyAgICBpZiAoYXVkaW9TdGF0dXMgPT0g
TWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpEZW5pZWQpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYW1lcmFBdXRob3JpemF0aW9u
U3RhdHVzID0gIXJlcXVpcmVzVmlkZW9DYXB0dXJlID8gQVZBdXRob3JpemF0aW9uU3RhdHVzQXV0
aG9yaXplZCA6IFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgYXV0aG9yaXphdGlvblN0
YXR1c0Zvck1lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvXTsKLSAgICBpZiAoY2FtZXJhQXV0aG9y
aXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQgfHwgY2FtZXJhQXV0
aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkKSB7Cisg
ICAgYXV0byB2aWRlb1N0YXR1cyA9IHJlcXVlc3QucmVxdWlyZXNWaWRlb0NhcHR1cmUoKSA/IGNo
ZWNrQVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpWaWRlbykgOiBN
ZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkdyYW50ZWQ7CisgICAgaWYgKGF1ZGlvU3RhdHVzID09IE1l
ZGlhUGVybWlzc2lvblJlc3VsdDo6RGVuaWVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgcmVxdWlyZXNWaWRlb1RDQ1Byb21w
dCA9IHJlcXVpcmVzVmlkZW9DYXB0dXJlICYmIGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPT0g
QVZBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDsKLSAgICBhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gcmVxdWlyZXNWaWRlb1RDQ1Byb21wdCA/IFtyZXF1ZXN0ID0gbWFrZVJlZihyZXF1
ZXN0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBpc09LKSBtdXRhYmxlIHsK
LSAgICAgICAgaWYgKCFpc09LKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vz
c0Zvck1lZGlhVHlwZShXVEZNb3ZlKGNhbGxiYWNrKSwgQVZNZWRpYVR5cGVWaWRlbyk7Ci0gICAg
fSA6IFdURk1vdmUoY2FsbGJhY2spOworICAgIGlmIChhdWRpb1N0YXR1cyA9PSBNZWRpYVBlcm1p
c3Npb25SZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zv
clR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6QXVkaW8sIFt2aWRlb1N0YXR1cywgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBhdXRob3JpemVkKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGlmICh2aWRlb1N0YXR1cyA9PSBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6Okdy
YW50ZWQpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Np
b25UeXBlOjpWaWRlbywgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKGJvb2wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBib29sIHJlcXVpcmVzQXVkaW9UQ0NQcm9tcHQg
PSByZXF1aXJlc0F1ZGlvQ2FwdHVyZSAmJiBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9
PSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOwotICAgIGlmICghcmVxdWlyZXNB
dWRpb1RDQ1Byb21wdCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICBp
ZiAodmlkZW9TdGF0dXMgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duKSB7CisgICAg
ICAgIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OlZp
ZGVvLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBhdXRob3Jp
emVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQp
OworICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICByZXF1ZXN0QVZDYXB0
dXJlQWNjZXNzRm9yTWVkaWFUeXBlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBBVk1lZGlh
VHlwZUF1ZGlvKTsKKworICAgIGNhbGxiYWNrKHRydWUpOwogfQogI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggODY2MjM4YmFmZThmMDVjMTdhMjNkNmY5Y2M5
OWEyMTAxNGRkOTMxMC4uY2QzMDE0MWZjZWE2MjIyZGU1YmE3Y2YxYzY3YTlhMmY2NGQwMjBmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1By
b3h5Q29jb2EubW0KQEAgLTQxLDYgKzQxLDEwIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9y
Q29jb2EuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KIAorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5oIgor
I2VuZGlmCisKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICNpbXBvcnQgPEphdmFTY3Jp
cHRDb3JlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3YWVhYWUzYjQ0ZTI4ZGJkYjVhOWM4MjEwOTFlMjQ4
ZGFiMWNhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtMCwwICsxLDEyOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyKFdlYlBhZ2VQcm94eSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCitTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcigpCit7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9yZXF1ZXN0cykKKyAg
ICAgICAgcmVxdWVzdC0+Y29tcGxldGUoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNp
b246OkRlbnkpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6
OnJlcXVlc3QoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0aW9u
dEhhbmRsZXIpCit7CisgICAgbV9yZXF1ZXN0cy5hcHBlbmQoU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdDo6Y3JlYXRlKFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9u
dEhhbmRsZXIpKSk7CisgICAgaWYgKG1fcmVxdWVzdHMuc2l6ZSgpID09IDEpCisgICAgICAgIHN0
YXJ0TmV4dFJlcXVlc3QoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpzdGFydE5leHRSZXF1ZXN0KCkKK3sKKyAgICBpZiAobV9yZXF1ZXN0cy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXJ0UHJvY2Vzc2luZ1JlcXVlc3QoKTsKK30K
Kwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb250aW51ZVByb2Nl
c3NpbmdSZXF1ZXN0KCkKK3sKKyAgICBpZiAoIW1fcGFnZS5wcmVmZXJlbmNlcygpLm1vY2tDYXB0
dXJlRGV2aWNlc0VuYWJsZWQoKSkgeworICAgICAgICBpZiAobV9zcGVlY2hSZWNvZ25pdGlvblNl
cnZpY2VDaGVjayA9PSBDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICAgICAgcmVxdWVz
dFNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIEFTU0VSVChtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNr
ID09IENoZWNrUmVzdWx0OjpHcmFudGVkKTsKKworICAgICAgICBpZiAobV9taWNyb3Bob25lQ2hl
Y2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgICAgIHJlcXVlc3RNaWNyb3Bo
b25lQWNjZXNzKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQVNT
RVJUKG1fbWljcm9waG9uZUNoZWNrID09IENoZWNrUmVzdWx0OjpHcmFudGVkKTsKKyAgICB9CisK
KyAgICBpZiAobV91c2VyUGVybWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0OjpVbmtub3duKSB7
CisgICAgICAgIHJlcXVlc3RVc2VyUGVybWlzc2lvbigpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIEFTU0VSVChtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OkdyYW50
ZWQpOworCisgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25EZWNpc2lvbjo6R3JhbnQpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uRGVjaXNpb24gZGVjaXNpb24pCit7CisgICAgQVNTRVJUKCFtX3JlcXVlc3RzLmlzRW1w
dHkoKSk7CisgICAgYXV0byBjdXJyZW50UmVxdWVzdCA9IG1fcmVxdWVzdHMudGFrZUZpcnN0KCk7
CisgICAgY3VycmVudFJlcXVlc3QtPmNvbXBsZXRlKGRlY2lzaW9uKTsKKworICAgIHN0YXJ0TmV4
dFJlcXVlc3QoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
OjpyZXNldCgpCit7CisgICAgbV91c2VyUGVybWlzc2lvbkNoZWNrID0gQ2hlY2tSZXN1bHQ6OlVu
a25vd247Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisKK3ZvaWQgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgpCit7CisgICAgY29t
cGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbjo6
R3JhbnQpOworfQorCitib29sIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNo
ZWNrTWljcm9waG9uZUFjY2VzcygpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNl
cnZpY2VBY2Nlc3MoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNjZXNzKCkKK3sKK30K
Kwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0U3BlZWNo
UmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCkKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0VXNlclBlcm1pc3Npb24oKQoreworfQorCisjZW5k
aWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jNDgyN2FhN2MzZTYzYzI0MWYzMDU0NGQzNzEwODdhOTAwYzQxOTU3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKyNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
KFdlYlBhZ2VQcm94eSYpOworICAgIH5TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
KCk7CisgICAgdm9pZCByZXF1ZXN0KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJik7Cisg
ICAgdm9pZCByZXNldCgpOworCitwcml2YXRlOgorICAgIHZvaWQgc3RhcnROZXh0UmVxdWVzdCgp
OworICAgIHZvaWQgc3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgpOworICAgIHZvaWQgY29udGludWVQ
cm9jZXNzaW5nUmVxdWVzdCgpOworICAgIHZvaWQgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik7CisgICAgYm9vbCBjaGVja01pY3JvcGhv
bmVBY2Nlc3MoKTsKKyAgICBib29sIGNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNz
KCk7CisgICAgdm9pZCByZXF1ZXN0TWljcm9waG9uZUFjY2VzcygpOworICAgIHZvaWQgcmVxdWVz
dFNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpOworICAgIHZvaWQgcmVxdWVzdFVzZXJQ
ZXJtaXNzaW9uKCk7CisKKyAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKKyAgICBEZXF1ZTxSZWY8
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4+IG1fcmVxdWVzdHM7CisgICAgZW51
bSBjbGFzcyBDaGVja1Jlc3VsdCB7IERlbmllZCwgR3JhbnRlZCwgVW5rbm93biB9OworICAgIENo
ZWNrUmVzdWx0IG1fc2FuZGJveENoZWNrIHsgQ2hlY2tSZXN1bHQ6OlVua25vd24gfTsKKyAgICBD
aGVja1Jlc3VsdCBtX21pY3JvcGhvbmVDaGVjayB7IENoZWNrUmVzdWx0OjpVbmtub3duIH07Cisg
ICAgQ2hlY2tSZXN1bHQgbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VDaGVjayB7IENoZWNrUmVz
dWx0OjpVbmtub3duIH07CisgICAgQ2hlY2tSZXN1bHQgbV91c2VyUGVybWlzc2lvbkNoZWNrIHsg
Q2hlY2tSZXN1bHQ6OlVua25vd24gfTsKKyAgICBib29sIG1faXNVc2luZ01vY2tlZENhcHR1cmVE
ZXZpY2UgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZkYTk5YzE3ODI3ZDZlNTg1MWJlOGY2MzdhYmRmYzlj
YTdhODJkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaApAQCAtMCwwICsxLDc4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0NsaWVudE9yaWdpbi5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25EZWNpc2lvbiA6IGJvb2wgeyBEZW55LCBHcmFudCB9OworCitjbGFzcyBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gY3JlYXRlKFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25EZWNpc2lvbik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdU
Rk1vdmUob3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICB9CisKKyAg
ICB2b2lkIGNvbXBsZXRlKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lz
aW9uKQorICAgIHsKKyAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFu
Z2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZGVjaXNpb24pOworICAgIH0KKworICAgIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3Jp
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KKworcHJpdmF0ZToKKyAgICBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNp
c2lvbik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogbV9vcmlnaW4ob3JpZ2luKQor
ICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
CisgICAgeyB9CisKKyAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gbV9vcmlnaW47CisgICAgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+
IG1fY29tcGxldGlvbkhhbmRsZXI7Cit9OworCitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjayA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6
OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaz4gY3JlYXRlKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIH0KKworICAgIHZvaWQgY29t
cGxldGUoYm9vbCBncmFudGVkKSB7IG1fY29tcGxldGlvbkhhbmRsZXIoZ3JhbnRlZCk7IH0KKwor
cHJpdmF0ZToKKyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICA6IG1f
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgeyB9CisK
KyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX2NvbXBsZXRpb25IYW5kbGVyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKaW5kZXggOWNlOTc0Y2Y5ZGFhNTY1ODJl
ZWJjZmEwMzA2NzBiN2EzNzViZTcxZS4uZDczYjA4YzcyNTI1NDdlNWYzNzg2NTBmMzFlYjNkNzJl
NTI0MTU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uU2VydmVyLmNwcApAQCAtMzIsMTUgKzMyLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1TcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVm
PElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKK1NwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DaGVja2VyJiYgcGVybWlzc2lvbkNoZWNrZXIpCiAgICAgOiBtX2Nvbm5lY3Rpb24o
V1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAg
ICwgbV9wZXJtaXNzaW9uQ2hlY2tlcihXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSkKIHsKIH0K
IAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0SW5mbyYmIHJlcXVlc3RJbmZvKQordm9pZCBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVv
dXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luKQogewotICAgIGF1dG8gcmVxdWVzdCA9IFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6Y3JlYXRlKFdURk1vdmUocmVxdWVzdEluZm8pKTsK
KyAgICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdD4oU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7IGNsaWVudElkZW50aWZpZXIs
IFdURk1vdmUobGFuZyksIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2
ZXMsIFdURk1vdmUob3JpZ2luKSB9KTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hcHBlbmQoV1RG
TW92ZShyZXF1ZXN0KSk7CiAKICAgICBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQo
KTsKQEAgLTcyLDggKzczLDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWQKIHsKICAgICBpZiAo
bV9jdXJyZW50UmVxdWVzdCAmJiBtX2N1cnJlbnRSZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCkg
PT0gY2xpZW50SWRlbnRpZmllcikgewogICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbnVsbHB0
cjsKLSAgICAgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBk
YXRlVHlwZTo6RW5kKTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uOjpEaWRSZWNlaXZlVXBkYXRlKHVwZGF0ZSksIG1faWRlbnRpZmllcik7Cisg
ICAgICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25VcGRhdGVUeXBlOjpFbmQpOwogCiAgICAgICAgIHByb2Nlc3NOZXh0UGVuZGluZ1JlcXVl
c3RJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm47CkBAIC04NCwxMyArODQsMTIgQEAgdm9pZCBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWQKIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVtb3Zl
UGVuZGluZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3Q+IHRha2VuUmVxdWVzdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiB0YWtlblJlcXVlc3Q7CiAgICAgYXV0
byBwZW5kaW5nUmVxdWVzdHMgPSBzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1JlcXVlc3RzLCB7IH0p
OwogICAgIHdoaWxlICghcGVuZGluZ1JlcXVlc3RzLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRv
IHJlcXVlc3QgPSBwZW5kaW5nUmVxdWVzdHMudGFrZUZpcnN0KCk7CiAgICAgICAgIGlmIChyZXF1
ZXN0LT5jbGllbnRJZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikgewotICAgICAgICAg
ICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRl
KGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6
RW5kKTsKLSAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbjo6RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50aWZpZXIpOworICAgICAg
ICAgICAgc2VuZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZVR5cGU6OkVuZCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQog
ICAgICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShyZXF1ZXN0KSk7CkBAIC0x
MDUsMTIgKzEwNCw1MSBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjppbnZhbGlkYXRl
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaQogICAgIH0KIH0KIAotdm9p
ZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnRQb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
OjpzdGFydFBvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
JiByZXF1ZXN0KQogeworICAgIG1fcGVybWlzc2lvbkNoZWNrZXIocmVxdWVzdC5jbGllbnRPcmln
aW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYWtSZXF1ZXN0ID0g
bWFrZVdlYWtQdHIocmVxdWVzdCldKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9u
IGRlY2lzaW9uKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKCF3ZWFrUmVxdWVzdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBBU1NFUlQobV9jdXJyZW50UmVxdWVzdC5nZXQoKSA9PSB3ZWFrUmVxdWVzdC5nZXQoKSk7
CisgICAgICAgIGlmIChkZWNpc2lvbiA9PSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNp
c2lvbjo6RGVueSkgeworICAgICAgICAgICAgYXV0byBlcnJvciA9IFNwZWVjaFJlY29nbml0aW9u
RXJyb3IgeyBTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6Tm90QWxsb3dlZCwgIlBlcm1pc3Np
b24gY2hlY2sgZmFpbGVkIl9zIH07CisgICAgICAgICAgICBzZW5kVXBkYXRlKHdlYWtSZXF1ZXN0
LT5jbGllbnRJZGVudGlmaWVyKCksIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlw
ZTo6RXJyb3IsIGVycm9yKTsKKyAgICAgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBudWxscHRy
OworICAgICAgICAgICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250aW51ZVByb2Nlc3NpbmdS
ZXF1ZXN0KCp3ZWFrUmVxdWVzdCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OmNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0JikKK3sKKyAgICAvLyBUT0RPOiBzdGFydCBjYXB0dXJpbmcgYXVkaW8gYW5k
IHJlY29nbml6aW5nLgogfQogCi12b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdG9wUHJv
Y2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JikKK3ZvaWQg
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnNlbmRVcGRhdGUoU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGUgdHlwZSwgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gZXJyb3Is
IE9wdGlvbmFsPFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PiByZXN1bHQpCiB7
CisgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3Jl
YXRlKGNsaWVudElkZW50aWZpZXIsIHR5cGUpOworICAgIGlmICh0eXBlID09IFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZTo6RXJyb3IpCisgICAgICAgIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihjbGllbnRJZGVudGlmaWVyLCAqZXJyb3Ip
OworICAgIGlmICh0eXBlID09IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6UmVzdWx0KQor
ICAgICAgICB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRl
UmVzdWx0KGNsaWVudElkZW50aWZpZXIsICpyZXN1bHQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBt
X2lkZW50aWZpZXIpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdG9wUHJv
Y2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JiByZXF1ZXN0
KQoreworICAgIC8vIFRPRE86IHN0b3AgY2FwdHVyaW5nIGF1ZGlvIGFuZCBmaW5hbGl6aW5nIHJl
Y29nbml0aW9uIHJlc3VsdCB3aXRoIGNhcHR1cmVkIGF1ZGlvLgorICAgIHNlbmRVcGRhdGUocmVx
dWVzdC5jbGllbnRJZGVudGlmaWVyKCksIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZTo6Tm9NYXRjaCk7CisgICAgc2VuZFVwZGF0ZShyZXF1ZXN0LmNsaWVudElkZW50aWZpZXIo
KSwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOworICAgIEFTU0VS
VChtX2N1cnJlbnRSZXF1ZXN0LmdldCgpID09ICZyZXF1ZXN0KTsKKyAgICBtX2N1cnJlbnRSZXF1
ZXN0ID0gbnVsbHB0cjsKKyAgICBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsK
IH0KIAogSVBDOjpDb25uZWN0aW9uKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6bWVzc2FnZVNl
bmRlckNvbm5lY3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5kZXggN2FhMjQxNjM4YjljMzUxNDk2Njk4NDQzMmRi
YzUzMGRmODQ4NGEzNy4uZWE4ZTNlNWUwYmZmYzA1ZjMxOWU3ZDBmMzc5ZTUxZDljMWJiOWRhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5oCkBAIC0yOCwyMSArMjgsMzAgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNp
bmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2duaXRpb25FcnJvci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGEuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
IAorbmFtZXNwYWNlIFdlYkNvcmUgeworZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZVR5cGU7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgV2ViUHJvY2Vzc1Byb3h5OworZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25EZWNpc2lvbiA6IGJvb2w7CiAKIHVzaW5nIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRl
bnRpZmllciA9IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyOwordXNpbmcgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2hlY2tlciA9IEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVj
aXNpb24pPiYmKT47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmVyIDogcHVibGljIENh
bk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPiwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyKTsKKyAg
ICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNo
ZWNrZXImJik7CiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdEluZm8mJik7CisgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVvdXMs
IGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiYpOwogICAgIHZvaWQgc3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKICAgICB2b2lkIGFib3J0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogICAgIHZvaWQgaW52
YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyKTsKQEAgLTUxLDkgKzYwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzTmV4dFBl
bmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsKICAgICB2b2lkIHJlbW92ZVBlbmRpbmdSZXF1ZXN0KFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogCi0g
ICAgLy8gVE9ETzogaW1wbGVtZW50IHRoZXNlLgogICAgIHZvaWQgc3RhcnRQb2Nlc3NpbmdSZXF1
ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOworICAgIHZvaWQgY29udGlu
dWVQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsK
ICAgICB2b2lkIHN0b3BQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3QmKTsKKyAgICB2b2lkIHNlbmRVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25V
cGRhdGVUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiA9IFdU
Rjo6bnVsbG9wdCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVz
dWx0RGF0YT4+ID0gV1RGOjpudWxsb3B0KTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
LgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgb3ZlcnJpZGU7CkBAIC02NCw4ICs3NCw5IEBAIHByaXZhdGU6CiAKICAgICBSZWY8SVBD
OjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBEZXF1ZTxSZWY8V2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0Pj4gbV9wZW5kaW5nUmVxdWVzdHM7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBEZXF1ZTxz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Pj4gbV9wZW5k
aW5nUmVxdWVzdHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DaGVja2VyIG1fcGVybWlzc2lvbkNoZWNrZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KaW5kZXggZTMxYmVmYjA5NWFkODhkYWRjMzBmMDk5
NWM1N2U0MTUzNzNmMTJmNC4uYTI4YjkyMWNiOTY0YWZhZjJmZjIyYzkxNmJiZTQ2ZTgyOTkxMzI5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogIAogIG1l
c3NhZ2VzIC0+IFNwZWVjaFJlY29nbml0aW9uU2VydmVyIE5vdFJlZkNvdW50ZWQgewotICAgIFN0
YXJ0KHN0cnVjdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIGluZm8pCisg
ICAgU3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVy
aW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIHN0cnVjdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4gb3JpZ2luKQogICAgIFN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEFib3J0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICBJbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IGM2NjBlNTY2YjA4ZGQzNjc5MTNkMjI0NTA2YmRmMWVkZjAwZDVkODcuLmZlYjZi
ZjUzZGNhMjZiMGJjNDEyNGM2ZTlmZTU3ZTJiNzViZmRiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODYsNiArODYsNyBAQAogI2luY2x1ZGUgIlByb3Zp
c2lvbmFsUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgogI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3ludGhldGljRWRpdGluZ0Nv
bW1hbmRUeXBlLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hl
Y2tlclN0YXRlLmgiCkBAIC00ODkyLDYgKzQ4OTMsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Q2hhbmdlTWFpbkRvY3VtZW50KEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIFVOVVNFRF9Q
QVJBTShmcmFtZUlEKTsKICNlbmRpZgogICAgIG1faXNRdW90YUluY3JlYXNlRGVuaWVkID0gZmFs
c2U7CisKKyAgICBpZiAobV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKQorICAg
ICAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXItPnJlc2V0KCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3SXNCZWNvbWluZ1Zpc2libGUoKQpAQCAtNzYwNSw2ICs3
NjA5LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiBy
ZXNldFN0YXRlUmVhc29uKQogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgbV93ZWJzaXRlRGF0
YVN0b3JlLT5hdXRoZW50aWNhdG9yTWFuYWdlcigpLmNhbmNlbFJlcXVlc3QobV93ZWJQYWdlSUQs
IFdURjo6bnVsbG9wdCk7CiAjZW5kaWYKKworICAgIGlmIChtX3NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIpCisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlci0+cmVzZXQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclBy
b2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHRlcm1pbmF0aW9uUmVhc29uKQpA
QCAtMTAxNzMsNiArMTAxODAsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZp
dHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoKQogICAgIH0pOwogfQogCit2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihXZWJDb3JlOjpDbGllbnRPcmln
aW4mJiBjbGllbnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uRGVjaXNpb24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICgh
bV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKQorICAgICAgICBtX3NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXI+KCp0aGlzKTsKKworICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlci0+cmVxdWVzdChXVEZNb3ZlKGNsaWVudE9yaWdpbiksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBS
RUxFQVNFX0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDdjZWZiZmM2OTQ1ZWRmZTQzYWU1NmMyZDU2NGMwZTgxZTk1YmI0YTYuLjIzOGMwYmU3
YjA2MDY1MWE1ZGUxYWNmYTNkNjc2Njc3MjVhZjNlZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0zMDUsNiArMzA1LDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVl
U2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhOwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b247CiBjbGFzcyBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OwogY2xhc3MgU2VjS2V5
UHJveHlTdG9yZTsKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI7CiBj
bGFzcyBVc2VyRGF0YTsKIGNsYXNzIFZpZXdTbmFwc2hvdDsKIGNsYXNzIFZpc2l0ZWRMaW5rU3Rv
cmU7CkBAIC0zNjUsNiArMzY2LDcgQEAgc3RydWN0IFVzZXJNZXNzYWdlOwogCiBlbnVtIGNsYXNz
IE5lZ290aWF0ZWRMZWdhY3lUTFMgOiBib29sOwogZW51bSBjbGFzcyBQcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50IDogYm9vbDsKK2VudW0gY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uRGVjaXNpb24gOiBib29sOwogZW51bSBjbGFzcyBVbmRvT3JSZWRvIDogYm9vbDsKIGVudW0g
Y2xhc3MgV2ViQ29udGVudE1vZGUgOiB1aW50OF90OwogCkBAIC0xODE5LDYgKzE4MjEsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheShTZWNvbmRzIGNh
cHR1cmVSZXBvcnRpbmdEZWxheSkgeyBtX21lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5ID0gY2Fw
dHVyZVJlcG9ydGluZ0RlbGF5OyB9CiAgICAgc2l6ZV90IHN1c3BlbmRNZWRpYVBsYXliYWNrQ291
bnRlcigpIHsgcmV0dXJuIG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyOyB9CiAKKyAgICB2
b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24oV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
RGVjaXNpb24pPiYmKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYs
IFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2
b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjg4OCw2ICsyODkyLDggQEAgcHJpdmF0ZToK
ICAgICBzaXplX3QgbV9zdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXIgeyAwIH07CiAKICAgICBP
cHRpb25hbDxXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24+IG1fbmV3UGFnZU5hdmlnYXRpb25B
ZENsaWNrQXR0cmlidXRpb247CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcj4gbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA3ZjgzMTViNzNjZjQyOTAzZjI2N2ExNDQxYjRjNjgy
NGZlNWJmODg5Li5jZmVhMjhjN2Q2ZWMzMjE3NjkxOTUzMTcwM2JiNzU1MTk3NzkzZmRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTM3LDYgKzM3
LDcgQEAKICNpbmNsdWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9j
ZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCisjaW5jbHVk
ZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNwZWVj
aFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgog
I2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKQEAgLTE3MTMsNyArMTcxNCwxOSBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXJJZGVudAogewogICAgIGF1dG8gc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIg
PSBtX3NwZWVjaFJlY29nbml0aW9uU2VydmVyTWFwLmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsK
ICAgICBBU1NFUlQoc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXNOZXdFbnRyeSk7Ci0gICAgc3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmllcik7Cisg
ICAgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmll
ciwgW2lkZW50aWZpZXIsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKENsaWVudE9yaWdp
biYmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25EZWNpc2lvbik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGF1dG8qIHBhZ2UgOiB3
ZWFrVGhpcy0+cGFnZXMoKSkgeworICAgICAgICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+d2ViUGFn
ZUlEKCkgPT0gaWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgIHBhZ2UtPnJlcXVlc3RTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb24oV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgIH0pOwogICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
aWRlbnRpZmllciwgKnNwZWVjaFJlY29nbml0aW9uU2VydmVyLml0ZXJhdG9yLT52YWx1ZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGMwMjc0OTRiNzNhY2NlYzVlZmQ4MWM2OTRkM2E4NTNiNGVkZWYwY2EuLmM4ZDY4ODk4MWU1
M2JjYzY0M2NjZTk3Njg3MWZhNGI4NjM0NGQ0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM3NCw2ICsxMzc0LDcgQEAKIAkJOTMz
RTgzNTUyM0EwN0MwNjAwREVGMjg5IC8qIFdlYklEQlNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzRTgzNTMyM0EwN0JGODAwREVGMjg5IC8q
IFdlYklEQlNlcnZlci5oICovOyB9OwogCQk5MzNFODM1QTIzQTFBRTI4MDBERUYyODkgLyogV2Vi
SURCU2VydmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzM0U4MzU5MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdl
cy5oICovOyB9OwogCQk5MzNFODM1QjIzQTFCNzUwMDBERUYyODkgLyogV2ViSURCU2VydmVyTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzM0U4MzU4MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OworCQk5MzQyNTg5MDI1NTVEREM2MDA1OUVFREQgLyogTWVkaWFQZXJt
aXNzaW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzQyNTg4RTI1NTVEQzQ3MDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0
aWVzLmggKi87IH07CiAJCTkzNEI3MjQ0MTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJ
dGVtVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzNEI3MjQzMTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzU2RjJEQzIx
NTJCNkI1MDBFNkQ1REYgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTMwMjFGNDc5M0IyMDBEQ0RDMEEg
LyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmggKi87IH07CiAJCTkzNTZGMkREMjE1MkI2RjYwMEU2
RDVERiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQkEwNEUwMjE1MUFERjQwMDdGNDU1RiAvKiBXZWJTV1Nl
cnZlckNvbm5lY3Rpb24uaCAqLzsgfTsKQEAgLTE0MDgsNiArMTQwOSw5IEBACiAJCTkzRDZCNzg3
MjU0Q0NEOEMwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3
ODYyNTRDQ0Q4QjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3Nh
Z2VzLmggKi87IH07CiAJCTkzRDZCNzg4MjU0Q0NEOTQwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzdFMjU0Q0NBQkIwMDU4REQzQSAvKiBXZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKIAkJOTNE
NkI3OEEyNTRDRDQzRTAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0Q2Qjc3RDI1NENDQUJCMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTNENkI3QjQyNTUyNjhENTAw
NThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0FGMjU1MjY4QTEwMDU4
REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi87IH07CisJCTkz
RDZCN0I1MjU1MjY4RDcwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2
QjdCMjI1NTI2OEEyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
ci5oICovOyB9OworCQk5M0Q2QjdCOTI1NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVz
dFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y1NDlCNDFFMzE3NEI3
MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBX
S1NuYXBzaG90Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1
YmxpYywgKTsgfTsgfTsKIAkJOTUwRjI4ODAyNTI0MTRFQTAwQjc0RjFDIC8qIFdLTW91c2VEZXZp
Y2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTUwRjI4N0UyNTI0MTRFOTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oICov
OyB9OwpAQCAtNDQ2OCw2ICs0NDcyLDggQEAKIAkJOTMzRTgzNTcyM0ExQTg3MjAwREVGMjg5IC8q
IFdlYklEQlNlcnZlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJREJT
ZXJ2ZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzM0U4MzU4
MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSURCU2VydmVyTWVzc2FnZVJlY2Vp
dmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSURCU2VydmVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTMz
RTgzNTkyM0ExQURGNTAwREVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYklEQlNlcnZlck1lc3NhZ2VzLmg7IHBhdGggPSBE
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklEQlNlcnZlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTkzNDI1ODhFMjU1NURDNDcwMDU5RUVERCAvKiBN
ZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQZXJtaXNzaW9u
VXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNDI1ODhGMjU1NURD
QTUwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzNEI3MjQzMTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlw
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tBY3Rpb25NZW51SXRlbVR5
cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUVFQjk1MTI3NzYxNkQwMDMz
MjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzNUVFQjk2MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJh
Y2tGb3J3YXJkTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDUyOCw2
ICs0NTM0LDEyIEBACiAJCTkzRDZCNzgwMjU0Q0NBQkMwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25p
dGlvblNlcnZlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNw
ZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNENkI3ODEyNTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3ODYyNTRDQ0Q4QjAwNThERDNBIC8qIFdlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjAyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjMyNTUyNjhCRjAwNThERDNBIC8qIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjcyNTUzNEExMTAwNThERDNB
IC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdCODI1NTM0QTEyMDA1OERE
M0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNkE0RUQxQkM1
REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjUxRTMxNzREQTAwMEU3
MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02NDU4LDYgKzY0NzAsOCBAQAogCQkJCTdBODIxRjREMUUyRjY3
OUUwMDYwNDU3NyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0gKi8sCiAJ
CQkJQTFERjYzMTExOEUwQjdDODAwM0EzRTJBIC8qIExlZ2FjeURvd25sb2FkQ2xpZW50LmggKi8s
CiAJCQkJQTFERjYzMTAxOEUwQjdDODAwM0EzRTJBIC8qIExlZ2FjeURvd25sb2FkQ2xpZW50Lm1t
ICovLAorCQkJCTkzNDI1ODhFMjU1NURDNDcwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGls
aXRpZXMuaCAqLywKKwkJCQk5MzQyNTg4RjI1NTVEQ0E1MDA1OUVFREQgLyogTWVkaWFQZXJtaXNz
aW9uVXRpbGl0aWVzLm1tICovLAogCQkJCTQxMTI4NkVGMjFDOEE5MEMwMDNBODU1MCAvKiBNZWRp
YVV0aWxpdGllcy5oICovLAogCQkJCTQxMTI4NkYwMjFDOEE5MEQwMDNBODU1MCAvKiBNZWRpYVV0
aWxpdGllcy5tbSAqLywKIAkJCQkxQUJDM0RGNDE4OTlFNDM3MDA0RjA2MjYgLyogTmF2aWdhdGlv
blN0YXRlLmggKi8sCkBAIC02NDc0LDYgKzY0ODgsNyBAQAogCQkJCTVDQTk4NTRCMjEwQkVCNzMw
MDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gKi8sCiAJCQkJMUEwMDJENDcx
OTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oICovLAogCQkJCTFBMDAyRDQ2
MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcubW0gKi8sCisJCQkJOTNENkI3
QjMyNTUyNjhCRjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJD
b2NvYS5tbSAqLywKIAkJCQkzMTU3MTM1QzIwNDBBOUIyMDA4NEY5Q0YgLyogU3lzdGVtUHJldmll
d0NvbnRyb2xsZXJDb2NvYS5tbSAqLywKIAkJCQkyRDBDRjY0QzIxRjJBODAzMDA3ODc1NjYgLyog
VGV4dENoZWNraW5nQ29udHJvbGxlci5oICovLAogCQkJCTJEMENGNjRCMjFGMkE4MDMwMDc4NzU2
NiAvKiBUZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tICovLApAQCAtOTIwNyw2ICs5MjIyLDkgQEAK
IAkJCQlCQzExMUIwODExMkY1RTNDMDAzMzdCQUIgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAg
Ki8sCiAJCQkJMUEzMDA2NkMxMTEwRjRGNzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIu
aCAqLywKIAkJCQk1Q0E5ODU0OTIxMEJFQjVBMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2Fybmlu
Zy5oICovLAorCQkJCTkzRDZCN0IwMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyLmNwcCAqLywKKwkJCQk5M0Q2QjdCMjI1NTI2OEEyMDA1OEREM0Eg
LyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovLAorCQkJCTkzRDZCN0FG
MjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmgg
Ki8sCiAJCQkJOTNENkI3NkIyNTRCODk1ODAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyLmNwcCAqLywKIAkJCQk5M0Q2Qjc2QzI1NEI4OTU4MDA1OEREM0EgLyogU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaCAqLywKIAkJCQk5M0Q2Qjc3QTI1NEM5ODREMDA1OEREM0EgLyogU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4gKi8sCkBAIC05NTQ3LDYgKzk1NjUsOCBAQAog
CQkJCTMzMzY3NjM5MTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmgg
Ki8sCiAJCQkJMUFERTQ2QjAxOTU0RUM2MTAwMEY3OTg1IC8qIFdLU2Vzc2lvblN0YXRlUmVmLmNw
cCAqLywKIAkJCQkxQURFNDZCMTE5NTRFQzYxMDAwRjc5ODUgLyogV0tTZXNzaW9uU3RhdGVSZWYu
aCAqLywKKwkJCQk5M0Q2QjdCODI1NTM0QTEyMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi8sCisJCQkJOTNENkI3QjcyNTUzNEExMTAwNThERDNB
IC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLywKIAkJCQk1MUY4
ODZBMzFGMkMyMTRBMDBDMTkzRUYgLyogV0tUZXN0aW5nU3VwcG9ydC5jcHAgKi8sCiAJCQkJNTFG
ODg2QTQxRjJDMjE0QTAwQzE5M0VGIC8qIFdLVGVzdGluZ1N1cHBvcnQuaCAqLywKIAkJCQkzMTQ4
ODhGRTFEOTFCMTFEMDAzNzcwNDIgLyogV0tUZXh0Q2hlY2tlci5jcHAgKi8sCkBAIC0xMTE0NCw2
ICsxMTE2NCw3IEBACiAJCQkJMUE2RDg2QzIxREY3NTI2NTAwNzc0NUU4IC8qIE1hY2hNZXNzYWdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0M1NkY3OTExNTk5NTdEMDAxQ0NBRjkgLyogTWFjaFBv
cnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjRCNUYzMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNo
VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzQyNTg5MDI1NTVEREM2MDA1OUVFREQg
LyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0UxOUVG
QzIzRDQwMUYxMDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3RTE5RUZEMjNENDAxRjEwMDk0RkZCNCAvKiBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOTMz
REVGMTk2NUVCMzEwMDhBQzNFQSAvKiBNZW51VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAg
LTExMzg1LDYgKzExNDA2LDggQEAKIAkJCQk1N0JCRUE2RDIyQkMwQkZFMDAyNzM5OTUgLyogU09B
dXRob3JpemF0aW9uTG9hZFBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc2Q0E5RDcyMkI4
NjIxODAwMzAxNDNDIC8qIFNPQXV0aG9yaXphdGlvbk5TVVJMRXh0cmFzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1N0ZEMzE4NTIyQjM1MTY5MDA4RDBFOEIgLyogU09BdXRob3JpemF0aW9uU2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENkI3QjUyNTUyNjhENzAwNThERDNBIC8qIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDZC
N0I0MjU1MjY4RDUwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyogU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzg0MjU0Q0NEMEUw
MDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5M0Q2Qjc4NTI1NENDRDQzMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXJNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTE5OTgsNiArMTIwMjEsNyBA
QAogCQkJCTUxM0U0NjJEMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2Vy
RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjU0OUI0MUUzMTc0QjcwMDBFNzIzOSAv
KiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODcy
MkIzNTE3MDAwOEQwRThCIC8qIFdLU09BdXRob3JpemF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTkzRDZCN0I5MjU1MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTc4RkYzMjIyNDE5MTk2
MDA5NjQ4M0UgLyogV0tTdG9yYWdlQWNjZXNzQWxlcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NDA3NjA2MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM0MDc2MUExMjRGRjAzNzAwNjhGMjBBIC8qIFdLU3RyaW5nQ0YuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcAppbmRleCBl
YTE2YjJlZDc2NjViMzJiZDM5Y2FjNDYzMmI0YjlhNTFhNzVkNmIxLi4zZjM1MzE5NGEzMmMzZTY3
OWJjYTI5ZmJlYTg1MDMxYzkyMWU0ZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uLmNwcApAQCAtNTksMTAgKzU5LDkgQEAgdm9pZCBXZWJTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb246OnJlZ2lzdGVyQ2xpZW50KFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ28KICAgICBtX2NsaWVudE1hcC5hZGQoY2xpZW50LmlkZW50aWZpZXIoKSwgbWFrZVdl
YWtQdHIoY2xpZW50KSk7CiB9CiAKLXZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
OjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyIGNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3Vz
LCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpCit2b2lkIFdl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0
X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4p
CiB7Ci0gICAgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyBpbmZvIHsgY2xp
ZW50SWRlbnRpZmllciwgbGFuZywgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVy
bmF0aXZlcyB9OwotICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpT
dGFydChpbmZvKSk7CisgICAgc2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6
OlN0YXJ0KGNsaWVudElkZW50aWZpZXIsIGxhbmcsIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRz
LCBtYXhBbHRlcm5hdGl2ZXMsIFdURk1vdmUoY2xpZW50T3JpZ2luKSkpOwogfQogCiB2b2lkIFdl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCkBAIC04MCw3
ICs3OSw3IEBAIHZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjppbnZhbGlkYXRl
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjCiAgICAgc2VuZChNZXNzYWdlczo6U3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI6OkludmFsaWRhdGUoY2xpZW50SWRlbnRpZmllcikpOwogfQog
Ci12b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVVwZGF0ZShj
b25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYgdXBkYXRlKQordm9pZCBXZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OmRpZFJlY2VpdmVVcGRhdGUoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGUmJiB1cGRhdGUpCiB7CiAgICAgYXV0byBjbGllbnRJZGVudGlm
aWVyID0gdXBkYXRlLmNsaWVudElkZW50aWZpZXIoKTsKICAgICBpZiAoIW1fY2xpZW50TWFwLmNv
bnRhaW5zKGNsaWVudElkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbi5oCmluZGV4IDI4ZGJkMTk3Y2IzZjc5OGZjNzYzMTk5ZWJiMTJkZTEzYWVk
NzUxYjEuLjQ0M2IwNGYxY2NhYWIwYTBlNmFhNTM4MzFlOTg1ZDEwYTZhNTMzMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKQEAgLTQzLDExICs0Mywx
MSBAQCBjbGFzcyBXZWJQYWdlOwogCiB1c2luZyBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25J
ZGVudGlmaWVyID0gV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI7CiAKLWNsYXNzIFdlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNz
YWdlU2VuZGVyIHsKK2NsYXNzIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24sIHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbj4gY3JlYXRlKFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgdm9pZCBzdGFydChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWlu
dDY0X3QgbWF4QWx0ZXJuYXRpdmVzKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhB
bHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmKSBmaW5hbDsKICAgICB2b2lkIHN0
b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikg
ZmluYWw7CiAgICAgdm9pZCBhYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyKSBmaW5hbDsKIApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgog
ICAgIH5XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgcmVnaXN0
ZXJDbGllbnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50JikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYpIGZpbmFsOwogICAgIHZvaWQgaW52YWxpZGF0ZShX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKIAog
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDNjNDEyMjFhZWUyMzk1NjU2ZDUwYzYyNTljMDkyYmEw
ODYxZDk4NDkuLjk5NzNkYWM2ZTlmNGExZjdkOGI4M2ZmNGFjNWVlMTBmNTg0OWJlNzMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NyBAQAorMjAyMC0xMS0wOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3IgU3BlZWNoUmVjb2duaXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQ3
NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMjI2Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlz
dDoKKyAgICAgICAgKiBNb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBs
aXN0OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0SXNTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpjb21wbGV0ZVNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrKToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3Jh
bnRlZCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9w
dGlvbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lz
dGVudFZhbHVlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAg
ICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSk6CisKIDIwMjAtMTEtMDkgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtidWlsZC53ZWJraXQub3JnXSBEbyBub3QgcHJpbnQgbWFz
dGVyIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiBidWlsZCBzdGVwcwpkaWZmIC0tZ2l0IGEvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5m
by5wbGlzdAppbmRleCA0ZTJiMWY0ODE5YWQ1MTAzZTRjZjE3MDliN2M1M2E2NmU4YjM5NWU1Li4z
M2EzY2ExYmU3MzUwOGUxZmZjYjAyOTU3Yzg2NGU4NTkyZGFhYTRlIDEwMDY0NAotLS0gYS9Ub29s
cy9NaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMv
SW5mby5wbGlzdApAQCAtNTIsOSArNTIsMTEgQEAKIAkJCTxzdHJpbmc+RWRpdG9yPC9zdHJpbmc+
CiAJCTwvZGljdD4KIAk8L2FycmF5PgotICAgIDxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9u
PC9rZXk+Ci0gICAgPHN0cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVz
PC9zdHJpbmc+Ci0gICAgPGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+Ci0g
ICAgPHN0cmluZz5SZWNvcmRpbmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+
CisJPGtleT5OU0NhbWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGlu
ZyB2aWRlbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TTWljcm9waG9u
ZVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBiZWhh
bGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TU3BlZWNoUmVjb2duaXRpb25Vc2FnZURl
c2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvZ25pemluZyBjYXB0dXJlZCBhdWRpbyBvbiBi
ZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQg
YS9Ub29scy9Nb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBsaXN0IGIv
VG9vbHMvTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5mby5wbGlzdAppbmRl
eCAyZDFiYzU4MmZiZTc2NWNmZGM0MTA1ZWZlOWVjYzFkODMyMGNjOTU5Li41Mzg3YjM3NDlhNDc0
ZmUwYjNkOWM2MDk1Y2IyODgxN2I4ZjkyMzBhIDEwMDY0NAotLS0gYS9Ub29scy9Nb2JpbGVNaW5p
QnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBsaXN0CisrKyBiL1Rvb2xzL01vYmlsZU1p
bmlCcm93c2VyL01vYmlsZU1pbmlCcm93c2VyL0luZm8ucGxpc3QKQEAgLTU0LDkgKzU0LDExIEBA
CiAJCTxrZXk+TlNBbGxvd3NBcmJpdHJhcnlMb2Fkc0luV2ViQ29udGVudDwva2V5PgogCQk8dHJ1
ZS8+CiAJPC9kaWN0PgotICAgIDxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uPC9rZXk+Ci0g
ICAgPHN0cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+
Ci0gICAgPGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+Ci0gICAgPHN0cmlu
Zz5SZWNvcmRpbmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5O
U0NhbWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyB2aWRlbyBv
biBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TTWljcm9waG9uZVVzYWdlRGVz
Y3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vi
c2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TU3BlZWNoUmVjb2duaXRpb25Vc2FnZURlc2NyaXB0aW9u
PC9rZXk+CisJPHN0cmluZz5SZWNvZ25pemluZyBjYXB0dXJlZCBhdWRpbyBvbiBiZWhhbGYgb2Yg
d2Vic2l0ZXM8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbAppbmRleCA1NTE2MmZmMzQzZDI1ZjY5MDZjMzkyNzZmZDVhODkxZWRmMjliODY5Li42ZmRj
ZTIzZmI4NGQzMGJjY2Q1OTc0YWI3MjAzMzFjOTI5OTg0Y2NiIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKQEAgLTQwMyw0ICs0MDMsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAg
dW5kZWZpbmVkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbk92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJv
b2xlYW4gdmFsdWUpOwogICAgIHVuZGVmaW5lZCBzZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJz
aW9uVVJMRm9yVGVzdGluZyhET01TdHJpbmcgdXJsKTsKICAgICB1bmRlZmluZWQgbWFya0FkQ2xp
Y2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CisKKyAgICAvLyBTcGVlY2hSZWNv
Z25pdGlvbgorICAgIHVuZGVmaW5lZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdy
YW50ZWQoYm9vbGVhbiB2YWx1ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZGZkMDFhMzJmMzExZTEyNDRh
YTc4NzliNDM3NTk3YWZhYzNlZmQ5ZS4uYjE4YWIyNzYzNzYzNjAyZWY3ZjY2YjM5MWJhNjIzNGU2
NDI3YTkxNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yMDY5LDYgKzIwNjksMTEgQEAgdm9pZCBUZXN0UnVubmVy
OjpkaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFjaygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxs
YmFjayhEaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFja0lEKTsKIH0KIAordm9pZCBUZXN0UnVu
bmVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCBncmFudGVk
KQoreworICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJzZXRJc1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkdyYW50ZWQiLCBncmFudGVkKTsKK30KKwogQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAwYmQzYTA5ZTMy
ZDcxYjM1MTZlNGY4ZTA1YmVhMjJhZjk5NGIxZDIzLi45NzkzYzc3N2FkMzhhYWQzNGNmNTI1ZDEy
Y2E4N2RlYTMxOWEyZDNlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNTE1LDYgKzUxNSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKEpTU3RyaW5n
UmVmKTsKICAgICB2b2lkIG1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGlu
ZygpOwogCisgICAgdm9pZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQo
Ym9vbCk7CisKIHByaXZhdGU6CiAgICAgVGVzdFJ1bm5lcigpOwogCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDZkYmM2ODRlODg1MGFmZTA0NTkxMzlmYmUx
OWQ1ZTVjY2RiNzI2ZTcuLjFjN2EwMWY4NjZkOGUzNGFiM2YzNWE2ZjdlOWU5ZjNhM2FlMjQ4Yzkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC02Miw2ICs2
Miw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8
V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW5S
ZWYuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjay5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1RleHRDaGVja2VyLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0L1dLVVJMLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVm
Lmg+CkBAIC0yOTcsNiArMjk4LDIxIEBAIHN0YXRpYyB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9u
UGFuZWwoKQogewogfQogCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBjYWxsYmFjaykKK3sKKyAgICBU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29tcGxldGVTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DaGVjayhjYWxsYmFjayk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNvbXBsZXRl
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2soV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFja1JlZiBjYWxsYmFjaykKK3sKKyAgICBXS1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrQ29tcGxldGUoY2FsbGJhY2ssIG1faXNTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25HcmFudGVkKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0SXNTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wgZ3JhbnRlZCkKK3sKKyAgICBtX2lzU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCA9IGdyYW50ZWQ7Cit9CisKIFdLUGFnZVJl
ZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFdLUGFnZVJlZiwgV0tQYWdlQ29uZmln
dXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlv
bkFjdGlvbiwgV0tXaW5kb3dGZWF0dXJlc1JlZiB3aW5kb3dGZWF0dXJlcywgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbykKIHsKICAgICBQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcgPSBzdGF0aWNf
Y2FzdDxQbGF0Zm9ybVdlYlZpZXcqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CkBA
IC02NTAsOCArNjY2LDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhP
cHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogICAgIFdLSFRUUENvb2tpZVN0b3Jl
RGVsZXRlQWxsQ29va2llcyhXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29va2llU3RvcmUod2Vi
c2l0ZURhdGFTdG9yZSgpKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAKICAgICBwbGF0Zm9ybUNyZWF0
ZVdlYlZpZXcoY29uZmlndXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7Ci0gICAgV0tQYWdlVUlDbGll
bnRWMTQgcGFnZVVJQ2xpZW50ID0gewotICAgICAgICB7IDE0LCBtX21haW5XZWJWaWV3LmdldCgp
IH0sCisgICAgV0tQYWdlVUlDbGllbnRWMTUgcGFnZVVJQ2xpZW50ID0geworICAgICAgICB7IDE1
LCBtX21haW5XZWJWaWV3LmdldCgpIH0sCiAgICAgICAgIDAsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVw
cmVjYXRlZEZvclVzZVdpdGhWMAogICAgICAgICAwLCAvLyBzaG93UGFnZQogICAgICAgICAwLCAv
LyBjbG9zZQpAQCAtNzI0LDcgKzc0MCw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdl
YlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKICAgICAgICAgMCwg
Ly8gZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlCiAgICAgICAg
IDAsIC8vIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybQogICAgICAgICBzaG91bGRBbGxvd0Rl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzLAotICAgICAgICBydW5XZWJBdXRoZW50aWNh
dGlvblBhbmVsCisgICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwsCisgICAgICAgIGRl
Y2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QKICAgICB9Owog
ICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChtX21haW5XZWJWaWV3LT5wYWdlKCksICZwYWdlVUlD
bGllbnQuYmFzZSk7CiAKQEAgLTEwNTMsNiArMTA3MCw4IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6
OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMs
IFJlCiAgICAgbV9zZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQgPSAwOwog
ICAgIG1fc2hvdWxkRGlzbWlzc0phdmFTY3JpcHRBbGVydHNBc3luY2hyb25vdXNseSA9IGZhbHNl
OwogCisgICAgc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKHRydWUpOwor
CiAgICAgYXV0byBsb2FkQWJvdXRCbGFuayA9IFt0aGlzXSB7CiAgICAgICAgIG1fZG9uZVJlc2V0
dGluZyA9IGZhbHNlOwogICAgICAgICBXS1BhZ2VMb2FkVVJMKG1fbWFpbldlYlZpZXctPnBhZ2Uo
KSwgYmxhbmtVUkwoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5k
ZXggMzNiNjQ5NGFjNjI0NGI5MmZjYjc4MDlhNThkNzIwM2M3YzEyNThhOC4uMDVjOGY4YmRhYTk1
YWQ4N2U0MzllMzA5M2I4YTRmMzRmNWY4MmM1NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaApAQCAtMzUxLDYgKzM1MSw5IEBAIHB1YmxpYzoKIAogICAgIFdLVVJMUmVm
IGN1cnJlbnRUZXN0VVJMKCkgY29uc3Q7CiAKKyAgICB2b2lkIGNvbXBsZXRlU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2hlY2soV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
a1JlZik7CisgICAgdm9pZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQo
Ym9vbCk7CisKIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJl
Zj4gZ2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9ucyYpOwogICAgIFdL
UmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlQ29udGV4dENvbmZp
Z3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnMmKSBjb25zdDsKQEAgLTY0MCw2ICs2NDMsOCBAQCBw
cml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgbV9oYXNTZXRBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIgeyBmYWxzZSB9OwogI2VuZGlmCisKKyAgICBib29sIG1faXNTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRl
eCAxNGMwNGVkMWZhOTM5NGY1NzJmNjQ5YTkxYjQ3ZWZiMjA2ZWY4NTRlLi41YjY2NjE3YmVlMDE2
YjY3NTFjN2JiMmJjZTZiYjhiYWU0NGViMGEwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcApAQCAtMTM0NSw2ICsxMzQ1LDExIEBAIFdLUmV0YWluUHRyPFdLVHlw
ZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5q
ZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAic2V0SXNTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25HcmFudGVkIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChib29sZWFuVmFsdWUo
bWVzc2FnZUJvZHkpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDVlN2U4
NGM2YTllMzYwZWVkOTY4OGRmY2NmMTlmNjJlODA1ODFiMy4uMjZiYWMzNTQ4NDU3OWFhZGM4OGQ5
MGY2OWRjYjQ2ZTIyYWFkYTMxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTExLTA5ICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNp
YyBwZXJtaXNzaW9uIGNoZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc2CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83MTIyMjYzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC9zcGVlY2hyZWNv
Z25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTExLTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5leHBvc2Ugb2Jzb2xldGUg
SFRNTEFwcGxldEVsZW1lbnQgaW50ZXJmYWNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiYjMyMTlk
YWE1MDk5MjBjYjQyMDk3NjFmZDYyNTE4MTBiMTJmODM0Li5mOTdjYjYyYTE2YzM4YmJmOTlmZDAy
YmRlMDUzNWQ0NDkyNGM5YmMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE3Nyw2ICsxNzcsNyBA
QCBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jh
c2guaHRtbCBbIFNraXAgXQogc3RvcmFnZS9pbmRleGVkZGIvSURCT2JqZWN0LWxlYWsuaHRtbCBb
IFNraXAgXQogZmFzdC9mb3Jtcy9jYWxsLXRleHQtZGlkLWNoYW5nZS1pbi10ZXh0LWZpZWxkLXdo
ZW4tdHlwaW5nLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS8gWyBTa2lwIF0KK2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1s
IFsgU2tpcCBdCiAKICMgT25seSBwYXJ0aWFsIHN1cHBvcnQgb24gQ29jb2EgcGxhdGZvcm1zLgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zcGVlY2gtYXBpLyBbIFNraXAgXQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVy
cm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVy
bWlzc2lvbi1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDI5YjhhYjA0ZDA4M2ZhMjdh
MDg0NTg1ZGFhOThmZDdiNjA2YjQ2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMyBAQAorVmVyaWZ5IHRoYXQgZXJyb3IgZXZlbnQgaXMgZmlyZWQgd2hlbiBwZXJtaXNz
aW9uIGlzIGRlbmllZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgcmVj
b2duaXRpb24gPSBuZXcgU3BlZWNoUmVjb2duaXRpb24oKSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KK1BBU1MgcmVjb2duaXRpb24uc3RhcnQoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1MgZXZlbnQuZXJyb3IgaXMgIm5vdC1hbGxvd2VkIgorUEFTUyBldmVudC5tZXNzYWdlIGlzICJw
ZXJtaXNzaW9uIGNoZWNrIGZhaWxzIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVj
b2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hy
ZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2ZTlmM2E3NzY0
MDlhYTNkZjQxOTJiZmJjNTg3NTkwMTVlMzZjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCkBAIC0wLDAg
KzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oIlZlcmlmeSB0aGF0IGVycm9yIGV2ZW50IGlzIGZpcmVkIHdoZW4gcGVybWlzc2lvbiBpcyBk
ZW5pZWQuIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIGpzVGVzdElzQXN5bmMg
PSB0cnVlOworICAgIHRlc3RSdW5uZXIuc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25H
cmFudGVkKGZhbHNlKTsKK30KKworc2hvdWxkTm90VGhyb3coInJlY29nbml0aW9uID0gbmV3IFNw
ZWVjaFJlY29nbml0aW9uKCkiKTsKK3Nob3VsZE5vdFRocm93KCJyZWNvZ25pdGlvbi5zdGFydCgp
Iik7CityZWNvZ25pdGlvbi5vbmVycm9yID0gKGV2ZW50KSA9PiB7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC5lcnJvciIsICJub3QtYWxsb3dlZCIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZXZlbnQubWVzc2FnZSIsICJwZXJtaXNzaW9uIGNoZWNrIGZhaWxzIik7CisK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCA4ZDdkNDkwZWIzMjg0YzMwOWRjY2QyYTBlMTg2ZDk4MDQzNjI3ZTk0
Li5hNzQxOTgwZTViMmU1YjBiMWEwZTkxNjlkYWE5YTRiNTI3MzBmMDY4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtODAzLDQgKzgwMyw1IEBAIGh0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2VkLXBvcnQtZGVsYXkuaHRtbCBbIFBhc3Mg
XQogCiAjIFdlYktpdDIgb25seS4KIGpzL3Rocm93LWxhcmdlLXN0cmluZy1vb20uaHRtbCBbIFBh
c3MgXQorZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwgWyBQYXNz
IF0KIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tZW50ZXItd2hpbGUtZXhpdGluZy5odG1sIFsgUGFz
cyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413699</attachid>
            <date>2020-11-10 08:40:37 -0800</date>
            <delta_ts>2020-11-10 20:36:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201110084035.patch</filename>
            <type>text/plain</type>
            <size>124551</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRiY2QyNGY5YjcxNzVhZjUwNzhhNzJj
ZDA1MGJiNzJmYTI1YzMwNWQuLjI0NzYwYzZlYWIxMWRhMTM1OTNiZDRiMzI4YzJhN2JjYTBlZmI2
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMTEtMDkgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1Bs
YXRmb3JtSGF2ZS5oOgorCiAyMDIwLTExLTA5ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2OTYwMy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBiZWIzYTZiNzJiYjJiZDUyMDZhNGQyNGM0OWM3MTJiNTA3YjdjZjdlLi4yYTc2YjY0Zjk1ZDNk
M2IxYTczMTY3ZjhkMDgyNzExNDliNGM2OGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMjAtMTEtMDkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVy
bWlzc2lvbi1lcnJvci5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbjo6c3RhcnRS
ZWNvZ25pdGlvbik6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6
Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dDo6Y2xpZW50T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3RJbmZvOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjplcnJvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZTo6cmVzdWx0IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oOgorICAgICAgICAqIHBhZ2UvRHVtbXlTcGVlY2hSZWNv
Z25pdGlvblByb3ZpZGVyLmg6CisKIDIwMjAtMTEtMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fp
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRoZSBsaWZlIGN5
Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBOYXRpdmVJbWFn
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA4OWRmM2NkZjZmN2Y1NzFhZDM5MjJjMjQyMzdjMDY3NGZiMTdkYzYzLi4z
MmI2YWJkNWJiYTNkZjY1ZTczYzYxYjgxNjE2OTA4YzFjNGU2MzRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEwOCBAQAorMjAyMC0xMS0wOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3IgU3BlZWNoUmVj
b2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxODQ3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMjI2Mzg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIsIHdoaWNoIGNoZWNrcyBhbmQgcmVxdWVzdHMgc3BlZWNo
IHJlY29nbml0aW9uIHBlcm1pc3Npb25zIGJlZm9yZSAKKyAgICAgICAgd2UgYWN0dWFsbHkgc3Rh
cnQgY2FwdHVyaW5nIGF1ZGlvIGFuZCBwZXJmb3JtIHJlY29nbml0aW9uLiBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyIGlzIHBlci1wYWdlLCBsaWtlCisgICAgICAgIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyLiBUaGUgY2hlY2tzIGluY2x1ZGU6CisgICAgICAgIDEuIFNhbmRib3gg
cmVxdWlyZW1lbnQgZm9yIG1pY3JvcGhvbmUKKyAgICAgICAgMi4gVENDIGNoZWNrIGZvciBtaWNy
b3Bob25lCisgICAgICAgIDMuIFRDQyBjaGVjayBmb3IgU0ZTcGVlY2hSZWNvZ25pemVyCisgICAg
ICAgIDQuIFVzZXIgcGVybWlzc2lvbiBvbiBzcGVlY2ggcmVjb2duaXRpb24gZm9yIG9yaWdpbnMK
KworICAgICAgICBBZGQgYSBkZWxlZ2F0ZSBmdW5jdGlvbiBmb3IgcmVxdWVzdGluZyB1c2VyIHBl
cm1pc3Npb24sIHdoaWNoIGlzIGRlbmllZCBieSBkZWZhdWx0LgorCisgICAgICAgIFRlc3Q6IGZh
c3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCisKKyAgICAgICAgKiBI
ZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAg
ICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJ
Q2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdl
VUlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV0tTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFja0dldFR5cGVJRCk6CisgICAgICAgIChXS1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OnJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKToKKyAg
ICAgICAgKFdlYktpdDo6Y2hlY2tBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKToKKyAgICAgICAgKFdl
YktpdDo6Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6
Y2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yVHlwZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbTogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0
YXJ0UHJvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja01pY3JvcGhvbmVBY2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja1NwZWVjaFJlY29n
bml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpy
ZXF1ZXN0TWljcm9waG9uZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RVc2VyUGVybWlzc2lvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRl
Y2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZUF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZVZpZGVv
KToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHk6OnJlcXVlc3RTeXN0ZW1WYWxpZGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6cmVxdWVzdEFW
Q2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
OjpzdGFydE5leHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlcjo6Y29udGludWVQcm9jZXNzaW5nUmVxdWVzdCk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVu
dFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI6OnN0YXJ0UHJvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja01pY3JvcGhvbmVBY2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpj
aGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNjZXNz
KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6
cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RVc2VyUGVybWlzc2lv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXIuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6Y29tcGxldGUpOgorICAgICAgICAoV2ViS2l0
OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpy
ZW1vdmVQZW5kaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
U2VydmVyOjpzdGFydFBvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcjo6Y29udGludWVQcm9jZXNzaW5nUmVxdWVzdCk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzZW5kVXBkYXRlKToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0b3BQcm9jZXNzaW5nUmVxdWVzdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZENoYW5nZU1haW5Eb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVy
KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6
c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246
OmRpZFJlY2VpdmVVcGRhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisKIDIwMjAtMTEtMDkgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250
cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBu
YW1lZCBOYXRpdmVJbWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZl
LmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCAyMDNlOGVjN2Q2MTVlODc1
ZjNiMzE0NWYyZjhiZGQxZTViN2IwODNkLi45M2U3YjQ1Mzg1YWU4ODcwNThlZDZmNGQwNmVkNzUy
ZWYyYjE4MDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtNzU1LDMgKzc1NSwxMSBAQAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0o
QVBQTEVUVikKICNkZWZpbmUgSEFWRV9DTkNPTlRBQ1RQSUNLRVJWSUVXQ09OVFJPTExFUiAxCiAj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpIHx8IChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAw
KQorI2RlZmluZSBIQVZFX1NQRUVDSFJFQ09HTklaRVIgMQorI2VuZGlmCisKKyNpZiBQTEFURk9S
TShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSB8fCBQTEFURk9STShNQUMpCisjZGVmaW5l
IEhBVkVfQVZDQVBUVVJFREVWSUNFIDEKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCmluZGV4IDUxYTMyY2RhYWNhYTFl
ZDAxMTQyNzY3ZDIyZTMwMjUyNmRlYmY1OTUuLmYxMTdjMWZiMWI1YmQwNGFlNzU1MjU2NWZiYWE4
ODkxYzVjMWFlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbi5oIgogCisjaW5jbHVkZSAiQ2xpZW50T3Jp
Z2luLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgpAQCAtNjksNyArNzAsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTcGVl
Y2hSZWNvZ25pdGlvbjo6c3RhcnRSZWNvZ25pdGlvbigpCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24p
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJSZWNvZ25pdGlvbiBk
b2VzIG5vdCBoYXZlIGEgdmFsaWQgY29ubmVjdGlvbiJfcyB9OwogCi0gICAgbV9jb25uZWN0aW9u
LT5zdGFydChpZGVudGlmaWVyKCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVyaW1SZXN1
bHRzLCBtX21heEFsdGVybmF0aXZlcyk7CisgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxE
b2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5z
dGFydChpZGVudGlmaWVyKCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVyaW1SZXN1bHRz
LCBtX21heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2luIHsgZG9jdW1lbnQudG9wT3JpZ2luKCku
ZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9KTsKICAgICBtX3N0YXRl
ID0gU3RhdGU6OlN0YXJ0aW5nOwogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bi5oCmluZGV4IDNmZDJkMzNhY2EwMjA1MjYzNDA1OGQwZmI1NjUyZWI3MDA3ZmE1MmEuLjY5ZWVi
YzI5M2Q1YjdkZTFlMzhjZWVhZDJhM2VlMzhmMDBkMWNhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bi5oCkBAIC0zMSwxNSArMzEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQ7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZTsKK3N0cnVjdCBDbGllbnRPcmlnaW47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbj4g
ewogcHVibGljOgogICAgIHZpcnR1YWwgflNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbigpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNsaWVudChTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBj
b250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJv
b2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2lu
JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVVwZGF0ZShjb25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZSYmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmNw
cAppbmRleCA0YTVlOGMxNjMwM2MxODY1YzJiMWZmY2U5YjU2ZWUyNjIwM2E3ZmM1Li5kM2JkN2E5
NGE0MmI5ZDVlMDU5MjBjNWJmZTdkYmM0NGE5MTg4N2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5jcHAK
QEAgLTI4LDExICsyOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdD4gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpjcmVhdGUoU3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmIHJlcXVlc3RJbmZvKQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3RJbmZvKSkp
OwotfQotCiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dChTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYgcmVxdWVzdEluZm8pCiAgICAgOiBtX2lu
Zm8oV1RGTW92ZShyZXF1ZXN0SW5mbykpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCmluZGV4IDVjZWVhMDFj
NzM4NjU1NmQ0MjUxZjhjOGI5NWMzMTI0YmFmYzYwMTIuLjM5NmRiMjY5ODRmOTEyNDY4MjRiMDY1
ODY2NWNhNzNlN2JjNGNjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Qg
OiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IHsKK2NsYXNzIFNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3Q+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4g
Y3JlYXRlKFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8mJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdEluZm8mJik7CiAKICAgICBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyIGNsaWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2luZm8uY2xpZW50SWRl
bnRpZmllcjsgfQogICAgIGNvbnN0IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1faW5m
by5sYW5nOyB9CiAgICAgYm9vbCBjb250aW51b3VzKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmNv
bnRpbnVvdXM7OyB9CiAgICAgYm9vbCBpbnRlcmltUmVzdWx0cygpIGNvbnN0IHsgcmV0dXJuIG1f
aW5mby5pbnRlcmltUmVzdWx0czsgfQogICAgIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcygpIGNv
bnN0IHsgcmV0dXJuIG1faW5mby5tYXhBbHRlcm5hdGl2ZXM7IH0KKyAgICBDbGllbnRPcmlnaW4g
Y2xpZW50T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmNsaWVudE9yaWdpbjsgfQogCiBw
cml2YXRlOgotICAgIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdChTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvJiYpOwotCiAgICAgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5m
byBtX2luZm87CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKaW5kZXggYWIxZTFhZTZlZjM4
ODk4YzIxYTJhOWRmN2FmMWYwMDdlMjRiMTdkMC4uMWVmZTllMDY0NmU3NDdjYjU1ZDdjY2IwZjdi
MThmZjVlMGIzYzRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaApAQCAtMjUsNiArMjUsNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgogI2luY2x1ZGUg
IlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMzUsNiArMzYsNyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mbyB7CiAgICAgYm9vbCBjb250aW51b3VzIHsgZmFsc2UgfTsKICAgICBib29sIGlu
dGVyaW1SZXN1bHRzIHsgZmFsc2UgfTsKICAgICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMgeyAx
IH07CisgICAgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbjsKIAogICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbz4g
ZGVjb2RlKERlY29kZXImKTsKQEAgLTQzLDcgKzQ1LDcgQEAgc3RydWN0IFNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdEluZm8gewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0SW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0g
ICAgZW5jb2RlciA8PCBjbGllbnRJZGVudGlmaWVyIDw8IGxhbmcgPDwgY29udGludW91cyA8PCBp
bnRlcmltUmVzdWx0cyA8PCBtYXhBbHRlcm5hdGl2ZXM7CisgICAgZW5jb2RlciA8PCBjbGllbnRJ
ZGVudGlmaWVyIDw8IGxhbmcgPDwgY29udGludW91cyA8PCBpbnRlcmltUmVzdWx0cyA8PCBtYXhB
bHRlcm5hdGl2ZXMgPDwgY2xpZW50T3JpZ2luOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgpAQCAtNzQsMTIgKzc2LDE4IEBAIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8+IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmRlY29kZShEZWNvCiAgICAgaWYgKCFt
YXhBbHRlcm5hdGl2ZXMpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBPcHRp
b25hbDxDbGllbnRPcmlnaW4+IGNsaWVudE9yaWdpbjsKKyAgICBkZWNvZGVyID4+IGNsaWVudE9y
aWdpbjsKKyAgICBpZiAoIWNsaWVudE9yaWdpbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKwogICAgIHJldHVybiB7ewogICAgICAgICBXVEZNb3ZlKCpjbGllbnRJZGVudGlmaWVyKSwK
ICAgICAgICAgV1RGTW92ZSgqbGFuZyksCiAgICAgICAgIFdURk1vdmUoKmNvbnRpbnVvdXMpLAog
ICAgICAgICBXVEZNb3ZlKCppbnRlcmltUmVzdWx0cyksCi0gICAgICAgIFdURk1vdmUoKm1heEFs
dGVybmF0aXZlcykKKyAgICAgICAgV1RGTW92ZSgqbWF4QWx0ZXJuYXRpdmVzKSwKKyAgICAgICAg
V1RGTW92ZSgqY2xpZW50T3JpZ2luKQogICAgIH19OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAKaW5k
ZXggNTM0ZWRhM2QyNDc3ZWUxYzZmMTdlYzZhZjE3OTMyNmJiNzlmMDIwNy4uOWE5YTdkOTIwNjk2
NTVjNDU3MTYwN2RkYTE4YzRlNmIzMzBmNzJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcApAQCAtNjAs
NyArNjAsNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoU3BlZWNoUmVjb2du
aXRpb25VcGRhdGVUeXBlIGVudW1lcmF0aW9uVmFsdWUpCiAKIFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gU3BlZWNoUmVjb2duaXRpb25VcGRhdGUg
eyBjbGllbnRJZGVudGlmaWVyLCB0eXBlIH07CisgICAgcmV0dXJuIFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlIHsgY2xpZW50SWRlbnRpZmllciwgdHlwZSwgV1RGOjpNb25vc3RhdGUoKSB9OwogfQog
CiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRl
RXJyb3IoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJ
ZGVudGlmaWVyLCBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yJiBlcnJvcikKQEAgLTgzLDcg
KzgzLDcgQEAgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWUKIFNwZWVjaFJlY29nbml0aW9uRXJyb3Ig
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmVycm9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihtX2NvbnRlbnQsCi0gICAgICAgIFtdIChTcGVlY2hSZWNvZ25pdGlvbkVycm9y
JiBlcnJvcikgeyByZXR1cm4gZXJyb3I7IH0sCisgICAgICAgIFtdIChjb25zdCBTcGVlY2hSZWNv
Z25pdGlvbkVycm9yJiBlcnJvcikgeyByZXR1cm4gZXJyb3I7IH0sCiAgICAgICAgIFtdIChjb25z
dCBhdXRvJikgeyByZXR1cm4gU3BlZWNoUmVjb2duaXRpb25FcnJvcigpOyB9CiAgICAgKTsKIH0K
QEAgLTkxLDcgKzkxLDcgQEAgU3BlZWNoUmVjb2duaXRpb25FcnJvciBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZTo6ZXJyb3IoKSBjb25zdAogVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0
YT4gU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OnJlc3VsdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24obV9jb250ZW50LAotICAgICAgICBbXSAoVmVjdG9yPFNwZWVjaFJlY29n
bml0aW9uUmVzdWx0RGF0YT4mIGRhdGEpIHsgcmV0dXJuIGRhdGE7IH0sCisgICAgICAgIFtdIChj
b25zdCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYgZGF0YSkgeyByZXR1cm4g
ZGF0YTsgfSwKICAgICAgICAgW10gKGNvbnN0IGF1dG8mKSB7IHJldHVybiBWZWN0b3I8U3BlZWNo
UmVjb2duaXRpb25SZXN1bHREYXRhPiB7IH07IH0KICAgICApOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKaW5k
ZXggM2E4MmJmNmJhZjU0Y2UwYzRiMTMzNGVmNmY4YjU4OTNmM2I4OTgyZS4uODkxNDkxNzkzZjRl
MDFlYzJmZjYwMTA3Y2I0ODVmNDg4ZmE0M2U4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCkBAIC01Miw4ICs1
Miw4IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGUpOwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgewogcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGUo
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2du
aXRpb25VcGRhdGVUeXBlKTsKLSAgICBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3Jl
YXRlRXJyb3IoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29u
c3QgU3BlZWNoUmVjb2duaXRpb25FcnJvciYpOwotICAgIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZSBjcmVhdGVSZXN1bHQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciwgY29uc3QgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4mKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlRXJy
b3IoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3Bl
ZWNoUmVjb2duaXRpb25FcnJvciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVSZXN1bHQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0
YT4mKTsKIAogICAgIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIg
Y2xpZW50SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50SWRlbnRpZmllcjsgfQog
ICAgIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB1c2luZyBD
b250ZW50ID0gVmFyaWFudDxXVEY6Ok1vbm9zdGF0ZSwgU3BlZWNoUmVjb2duaXRpb25FcnJvciwg
VmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+OwotICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSwgQ29udGVu
dCA9IFdURjo6TW9ub3N0YXRlKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSwgQ29udGVudCk7CiAKICAgICBTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIG1fY2xpZW50SWRlbnRpZmllcjsKICAgICBT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKaW5kZXggY2Y5ZTcyYjkz
YzA2NGE1NWRkZGZhYjdiM2NhZmI0ODkwZTAzNWY0Ni4uMjQwYWEzZDQ4NGE5NzNiNDQxMTJhZWY2
MWU4ZWFhYTg0N2I1OGQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNw
ZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15
U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oCkBAIC0zOSwxMCArMzksMTAgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHVtbXlTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb24oKSk7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCByZWdpc3RlckNsaWVudChTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQmKSBmaW5hbCB7IH0KLSAgICAgICAgdm9pZCBz
dGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCkgZmluYWwgeyB9CisgICAgICAgIHZvaWQgc3Rh
cnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiwgYm9vbCwgYm9vbCwgdWludDY0X3QsIENsaWVudE9yaWdpbiYmKSBmaW5hbCB7IH0KICAg
ICAgICAgdm9pZCBzdG9wKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIGFib3J0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFsIHsgfQotICAgICAgICB2b2lkIGRpZFJlY2VpdmVV
cGRhdGUoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSBmaW5hbCB7IH0KKyAgICAgICAg
dm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYpIGZpbmFsIHsg
fQogICAgIH07CiAgICAgRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyKCkgPSBkZWZhdWx0
OwogICAgIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiYgc3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQvSGVhZGVycy5jbWFrZQppbmRleCA0MzYzOTcwZjFhZTAzNjZlYTAzOTU1N2EyNzNk
OGI4M2U2NjE2NDQ4Li4zZTdlNTk1ODRmZjI4MDAwZTEwZDk5YWU0NGFiZWMzZmZhMjEzOWEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYktp
dC9IZWFkZXJzLmNtYWtlCkBAIC05OSw2ICs5OSw3IEBAIHNldChXZWJLaXRfUFVCTElDX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlVHlwZXMu
aAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmgKICAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgKICAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tUZXN0aW5nU3VwcG9ydC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLVGV4dENoZWNrZXIuaAog
ICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggNmQwNjU2NDVkY2VlNjJlNTlkNTBkYmVmMzc0
MzVhNDlhODBlYjY4Mi4uY2QxY2FkOTZiNDAzMTJkYjNiMTg4ZGU3MWY2MDg4YmY3MjhmZDg3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTY1LDYgKzE2NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgUnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXIsCiAgICAgICAg
IFJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1bkphdmFTY3Jp
cHRQcm9tcHRSZXN1bHRMaXN0ZW5lciwKKyAgICAgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2ssCiAgICAgICAgIFRleHRDaGVja2VyLAogICAgICAgICBVUkxTY2hlbWVUYXNr
LAogICAgICAgICBVc2VyQ29udGVudENvbnRyb2xsZXIsCkBAIC00MTAsNiArNDExLDcgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxBUEk6Ok9iamVjdDo6VHlwZT4gewogICAgICAgICBB
UEk6Ok9iamVjdDo6VHlwZTo6UnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXIsCiAgICAg
ICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVy
LAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6UnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExp
c3RlbmVyLAorICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2ssCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpUZXh0Q2hlY2tlciwK
ICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlVSTFNjaGVtZVRhc2ssCiAgICAgICAgIEFQSTo6
T2JqZWN0OjpUeXBlOjpVc2VyQ29udGVudENvbnRyb2xsZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L1dLQmFzZS5oCmluZGV4IDllODJlNTYwMDE4N2VjMWNmOGFmOWJlZTc5ZTcxZDBlOGQ3ZmQxNWEu
Ljg0ZWU2YzI4OGY2ZDJlYmQ1MWZhNzNlYTcyNzA4ZjMyOTQ2YmRkODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL1dLQmFzZS5oCkBAIC0xNDEsNiArMTQxLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tXZWJzaXRlRGF0YUNvbmZpZ3VyYXRpb25TdG9yZSogV0tXZWJzaXRlRGF0YVN0
b3JlQ28KIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2Vic2l0ZURhdGFTdG9yZSogV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tXZWJzaXRl
UG9saWNpZXMqIFdLV2Vic2l0ZVBvbGljaWVzUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tXaW5kb3dGZWF0dXJlcyogV0tXaW5kb3dGZWF0dXJlc1JlZjsKK3R5cGVkZWYgY29uc3Qg
c3RydWN0IE9wYXF1ZVdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sqIFdLU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWY7CiAKIC8qIFdlYktpdDIgQnVuZGxl
IHR5cGVzICovCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDgzZDI4MGM3NWVmNWY1YmIwYTJlYjZkMTFhYThj
MGZhOTE5Yjc0ZDAuLmE5MGJiYTA5Y2M3NGVlYmEwNWIwM2QzZjZlNDhkNzU1ZDEwMmZhYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dApAQCAtMjkwLDYgKzI5MCw3IEBAIFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1Rp
bWVyLmNwcAogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAogVUlQcm9jZXNz
L1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKIFVJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxl
ci5jcHAKK1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAog
VUlQcm9jZXNzL1RleHRDaGVja2VyLmNwcAogVUlQcm9jZXNzL1RleHRDaGVja2VyQ29tcGxldGlv
bi5jcHAKIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAKQEAgLTQw
Myw2ICs0MDQsNyBAQCBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKIFVJUHJvY2Vz
cy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNl
Q2FjaGVNYW5hZ2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRlUmVmLmNwcAor
VUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3Bw
CiBVSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1Vz
ZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50
RXh0ZW5zaW9uU3RvcmVSZWYuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMDg0ZDUxMzUy
ZDQ0YTQ1MDk0OWIzZmJkMWQxZDc2MTM1ZmIyYmViMi4uNjNiZDQwYzNlZjYwMWVlMTQ5NGExYjQ3
MTRhY2UwZTFmYTE3NDhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMzczLDEyICszNzMs
MTQgQEAgVUlQcm9jZXNzL0NvY29hL0dsb2JhbEZpbmRJblBhZ2VTdGF0ZS5tbQogVUlQcm9jZXNz
L0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0KIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVV0aWxpdGll
cy5tbQorVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQogVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJ
bXBsQ29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHku
bW0KIFVJUHJvY2Vzcy9Db2NvYS9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQogVUlQcm9jZXNzL0Nv
Y29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1Nlc3Npb25T
dGF0ZUNvZGluZy5tbQorVUlQcm9jZXNzL0NvY29hL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXJDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVy
Q29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tCiBVSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VUlDbGllbnQuaAppbmRleCBhYTdkODljMDFlNzM1MjBjZTNlZTA0MjI2YjlhZTg1OTcwYmZhYTZl
Li5hMGRiYTgzNzI3YTk2YWQ2MTA0N2I5ZWQxNWI2NGIzMTM0ZWVkYWIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtMjAyLDYgKzIwMiw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7
CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5
T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCBiNTJjNDRi
YWVhOWFjZjlmYzAzMzJkNWE5ZjM3MzU2ZTlkMjM4NjI5Li4xOGNiZmQ1Yjc0ZWI4NzcwYTU3OGYx
NWM4YTAxNjE0OTkwMjE0NTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0FQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaApAQCAtNzksNiArNzksNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXI7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdDsKIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworY2xhc3MgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2tQcm94eTsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CiBj
bGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CkBAIC0xNTIsNiArMTUzLDcgQEAgV0tfQUREX0FQSV9N
QVBQSU5HKFdLUHJlZmVyZW5jZXNSZWYsIFdlYlByZWZlcmVuY2VzKQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLUHJvdGVjdGlvblNwYWNlUmVmLCBXZWJQcm90ZWN0aW9uU3BhY2UpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclJlZiwgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbmFnZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tTZXNzaW9uU3RhdGVS
ZWYsIEFQSTo6U2Vzc2lvblN0YXRlKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVGV4dENoZWNrZXJSZWYsIFdlYlRleHRDaGVj
a2VyKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJDb250
ZW50RXh0ZW5zaW9uU3RvcmVSZWYsIEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA0MzY5Y2RkODI1YjUxNTdmYjAx
MGMzZjgxYWU3OGU2NjBkYWE3NGZjLi41ZTEwOWQ1NzllYjc1ZjFkOGZiZmIxZDAzYThmOGMwZDdi
Y2U2ZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTYz
LDYgKzYzLDcgQEAKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5m
b3JtYXRpb24uaCIKICNpbmNsdWRlICJQcmludEluZm8uaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5j
bHVkZSAiV0tQYWdlUG9saWN5Q2xpZW50SW50ZXJuYWwuaCIKICNpbmNsdWRlICJXS1BhZ2VSZW5k
ZXJpbmdQcm9ncmVzc0V2ZW50c0ludGVybmFsLmgiCkBAIC0xMTUsNyArMTE2LDcgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVBvbGljeUNsaWVudEJhc2U+IHsKIH07CiAK
IHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VVSUNsaWVudEJhc2U+IHsKLSAg
ICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQYWdlVUlDbGllbnRWMSwg
V0tQYWdlVUlDbGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdlVUlDbGllbnRWNCwgV0tQ
YWdlVUlDbGllbnRWNSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQYWdlVUlDbGllbnRWNywgV0tQYWdl
VUlDbGllbnRWOCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQYWdlVUlDbGllbnRWMTAsIFdLUGFnZVVJ
Q2xpZW50VjExLCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQYWdlVUlDbGllbnRWMTMsIFdLUGFnZVVJ
Q2xpZW50VjE0PiBWZXJzaW9uczsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGll
bnRWMCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlDbGllbnRWMiwgV0tQYWdlVUlDbGllbnRW
MywgV0tQYWdlVUlDbGllbnRWNCwgV0tQYWdlVUlDbGllbnRWNSwgV0tQYWdlVUlDbGllbnRWNiwg
V0tQYWdlVUlDbGllbnRWNywgV0tQYWdlVUlDbGllbnRWOCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQ
YWdlVUlDbGllbnRWMTAsIFdLUGFnZVVJQ2xpZW50VjExLCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQ
YWdlVUlDbGllbnRWMTMsIFdLUGFnZVVJQ2xpZW50VjE0LCBXS1BhZ2VVSUNsaWVudFYxNT4gVmVy
c2lvbnM7CiB9OwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0yMTEwLDYgKzIxMTEs
MTMgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0
IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6UHJlc2VudGVkKTsKICAg
ICAgICAgfQogI2VuZGlmCisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6U2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNp
ZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKCZvcmln
aW4pLCB0b0FQSShTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6Y3JlYXRlKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5wdHIoKSkpOworICAgICAgICB9CiAgICAgfTsKIAog
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0VUlDbGllbnQobWFrZVVuaXF1ZTxVSUNsaWVudD4od2tD
bGllbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVu
dC5oCmluZGV4IGI2Mzg4MTU1Y2QzMDM2ZTY2NjExMGYxOTI1NjE2YWZkMzdlODY4YmEuLjYzNjM1
NTU2NGQwMGIxMTIyYTg3ZTIyOWEzMGI5NGQ3ZTk5ZTRlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaApAQCAtMTM2LDYgKzEzNiw3IEBAIHR5
cGVkZWYgdm9pZCAoKldLUGFnZURpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBw
ZWFyYW5jZUNhbGxiYWNrKShXS1BhCiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VTaG91bGRBbGxvd0Rl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBX
S1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KTsKIAogdHlwZWRlZiB2b2lkICgqV0tQYWdlUnVuV2ViQXV0aGVudGljYXRpb25QYW5lbENhbGxi
YWNrKSgpOwordHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTZWN1cml0
eU9yaWdpblJlZiB0b3BPcmlnaW4sIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2tSZWYgY2FsbGJhY2spOwogCiAvLyBEZXByZWNhdGVkCiB0eXBlZGVmIFdLUGFnZVJlZiAoKldL
UGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwKShXS1BhZ2VS
ZWYgcGFnZSwgV0tEaWN0aW9uYXJ5UmVmIGZlYXR1cmVzLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlm
aWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKQEAgLTEzNTMsNiArMTM1NCwxMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGll
bnRWMTQgewogICAgIFdLUGFnZVJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDsKIH0gV0tQ
YWdlVUlDbGllbnRWMTQ7CiAKK3R5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjE1IHsKKyAg
ICBXS1BhZ2VVSUNsaWVudEJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJhc2U7CisKKyAgICAvLyBWZXJzaW9uIDAuCisgICAgV0tQYWdlQ3JlYXRl
TmV3UGFnZUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgICAgICAgICBj
cmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlVUlDbGllbnRD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93
UGFnZTsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsb3NlOworICAgIFdLUGFnZVRha2VGb2N1c0NhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZUZvY3VzOwor
ICAgIFdLUGFnZUZvY3VzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9jdXM7CisgICAgV0tQYWdlVW5mb2N1c0NhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmZvY3VzOworICAgIFdLUGFn
ZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAg
ICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQ
YWdlUnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAg
ICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAg
IFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYw
ICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOwor
ICAgIFdLUGFnZVNldFN0YXR1c1RleHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0U3RhdHVzVGV4dDsKKyAgICBXS1BhZ2VNb3VzZURpZE1vdmVPdmVy
RWxlbWVudENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgIG1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlTWlzc2luZ1Bs
dWdpbkJ1dHRvbkNsaWNrZWRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICBtaXNz
aW5nUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFn
ZURpZE5vdEhhbmRsZUtleUV2ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlkTm90SGFuZGxlS2V5RXZlbnQ7CisgICAgV0tQYWdlRGlkTm90SGFuZGxlV2hlZWxF
dmVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWROb3RIYW5kbGVX
aGVlbEV2ZW50OworICAgIFdLUGFnZUdldFRvb2xiYXJzQXJlVmlzaWJsZUNhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhcnNBcmVWaXNpYmxlOworICAgIFdLUGFn
ZVNldFRvb2xiYXJzQXJlVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0VG9vbGJhcnNBcmVWaXNpYmxlOworICAgIFdLUGFnZUdldE1lbnVCYXJJc1Zpc2li
bGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudUJhcklzVmlz
aWJsZTsKKyAgICBXS1BhZ2VTZXRNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldE1lbnVCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlR2V0
U3RhdHVzQmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0dXNCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlU2V0U3RhdHVzQmFySXNWaXNpYmxlQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0dXNCYXJJc1Zpc2li
bGU7CisgICAgV0tQYWdlR2V0SXNSZXNpemFibGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpc1Jlc2l6YWJsZTsKKyAgICBXS1BhZ2VTZXRJc1Jlc2l6YWJs
ZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzUmVz
aXphYmxlOworICAgIFdLUGFnZUdldFdpbmRvd0ZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2V0V2luZG93RnJhbWU7CisgICAgV0tQYWdlU2V0V2lu
ZG93RnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRXaW5kb3dGcmFtZTsKKyAgICBXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxDYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY2ICAgIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bF9kZXByZWNhdGVkRm9yVXNlV2l0aFY2OworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRHJhdzsKKyAgICBX
S1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhZ2VEaWRTY3JvbGw7CisgICAgV0tQYWdlRXhjZWVkZWREYXRhYmFzZVF1b3Rh
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlZWRlZERhdGFiYXNl
UXVvdGE7CisgICAgV0tQYWdlUnVuT3BlblBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBydW5PcGVuUGFuZWw7CisgICAgV0tQYWdlRGVjaWRlUG9s
aWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgICBkZWNp
ZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZUhlYWRl
ckhlaWdodENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVhZGVySGVpZ2h0OworICAgIFdLUGFnZUZvb3RlckhlaWdodENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVySGVpZ2h0OworICAgIFdLUGFnZURy
YXdIZWFkZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZHJhd0hlYWRlcjsKKyAgICBXS1BhZ2VEcmF3Rm9vdGVyQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdGb290ZXI7CisgICAgV0tQYWdlUHJp
bnRGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcmludEZyYW1lOworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuTW9kYWw7CisgICAgdm9pZCogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnVzZWQxOyAvLyBVc2VkIHRvIGJlIGRpZENvbXBsZXRlUnViYmVyQmFuZEZvck1haW5GcmFtZQor
ICAgIFdLUGFnZVNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXJDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcjsKKyAgICB2b2lk
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNob3VsZEludGVycnVwdEphdmFTY3JpcHRfdW5hdmFpbGFibGU7CisKKyAgICAvLyBW
ZXJzaW9uIDEuCisgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjEgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjE7CisgICAgV0tQYWdlTW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDsKKyAgICBXS1Bh
Z2VEZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAg
ICAgICAgIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAg
IFdLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrX2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjEgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjE7CisKKyAgICAvLyBWZXJzaW9uIDIuCisgICAgV0tQYWdlU2hvd0NvbG9yUGlja2Vy
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q29sb3JQ
aWNrZXI7CisgICAgV0tQYWdlSGlkZUNvbG9yUGlja2VyQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoaWRlQ29sb3JQaWNrZXI7CisgICAgV0tQYWdlVW5hdmFp
bGFibGVQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICB1
bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQ7CisKKyAgICAvLyBWZXJzaW9uIDMuCisgICAg
V0tQYWdlUGlubmVkU3RhdGVEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwaW5uZWRTdGF0ZURpZENoYW5nZTsKKworICAgIC8vIFZlcnNpb24gNC4KKyAg
ICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVudXNlZDI7IC8vIFVzZWQgdG8gYmUgZGlkQmVnaW5UcmFja2luZ1BvdGVu
dGlhbExvbmdNb3VzZVByZXNzLgorICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkMzsgLy8gVXNlZCB0byBi
ZSBkaWRSZWNvZ25pemVMb25nTW91c2VQcmVzcy4KKyAgICB2b2lkKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDQ7IC8v
IFVzZWQgdG8gYmUgZGlkQ2FuY2VsVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcy4KKyAg
ICBXS1BhZ2VJc1BsYXlpbmdBdWRpb0RpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlOworCisgICAgLy8gVmVyc2lvbiA1
LgorICAgIFdLUGFnZURlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2Fs
bGJhY2sgICAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3Q7CisgICAgV0tQYWdlRGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbkNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaWRDbGlja0F1dG9GaWxsQnV0dG9uOworICAgIFdLUGFnZVJ1
bkphdmFTY3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAg
ICAgcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CisgICAgV0tQYWdl
UnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAg
ICAgICBydW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OworICAgIFdL
UGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAg
ICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OworICAg
IHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURp
ZENoYW5nZS4KKworICAgIC8vIFZlcnNpb24gNi4KKyAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1Bh
Z2U7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnQ7CisgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdENvbmZpcm1DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
dW5KYXZhU2NyaXB0Q29uZmlybTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHQ7
CisgICAgV0tDaGVja1VzZXJNZWRpYVBlcm1pc3Npb25DYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW47CisKKyAg
ICAvLyBWZXJzaW9uIDcuCisgICAgV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWw7CisgICAgV0tGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmVDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmU7CisKKyAgICAv
LyBWZXJzaW9uIDguCisgICAgV0tSZXF1ZXN0UG9pbnRlckxvY2tDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0UG9pbnRlckxvY2s7CisgICAgV0tE
aWRMb3NlUG9pbnRlckxvY2tDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWRMb3NlUG9pbnRlckxvY2s7CisKKyAgICAvLyBWZXJzaW9uIDkuCisgICAgV0tI
YW5kbGVBdXRvcGxheUV2ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoYW5kbGVBdXRvcGxheUV2ZW50OworCisgICAgLy8gVmVyc2lvbiAxMC4KKyAgICBX
S0hhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgIGhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlOworICAgIFdLRGlk
RXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZENhbGxiYWNrICAg
ICAgICAgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDsK
KworICAgIC8vIFZlcnNpb24gMTEuCisgICAgV0tQYWdlRGlkUmVzaWduSW5wdXRFbGVtZW50U3Ry
b25nUGFzc3dvcmRBcHBlYXJhbmNlQ2FsbGJhY2sgICAgICAgICBkaWRSZXNpZ25JbnB1dEVsZW1l
bnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2U7CisKKyAgICAvLyBWZXJzaW9uIDEyLgorICAgIFdL
UGFnZVJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtOworCisgICAgLy8gVmVyc2lvbiAx
My4KKyAgICBXS1BhZ2VTaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
Q2FsbGJhY2sgICAgICAgICAgIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25B
Y2Nlc3M7CisKKyAgICAvLyBWZXJzaW9uIDE0LgorICAgIFdLUGFnZVJ1bldlYkF1dGhlbnRpY2F0
aW9uUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuV2ViQXV0aGVu
dGljYXRpb25QYW5lbDsKKworICAgIC8vIFZlcnNpb24gMTUuCisgICAgV0tQYWdlRGVjaWRlUG9s
aWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICBkZWNp
ZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIAorfSBX
S1BhZ2VVSUNsaWVudFYxNTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNjOGY5
YTM1ZGI4NDExZTAzODVhN2FlMTU0OWEzOWFmODEzMmVkNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5o
IgorCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgorI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJ
RCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKCkKK3sKKyAg
ICByZXR1cm4gdG9BUEkoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OkFQSVR5
cGUpOworfQorCit2b2lkIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tDb21w
bGV0ZShXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIHNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLCBib29sIGdyYW50ZWQpCit7CisgICAgcmV0dXJuIHRv
SW1wbChzcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayktPmNvbXBsZXRlKGdyYW50
ZWQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmI4YWVhZmM2OTg0YmE5NmY1NDg5MmU3MzJhZmVhM2EwNjNjOWM3MmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3Bs
dXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKHZvaWQpOworCitXS19FWFBPUlQg
dm9pZCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUoV0tTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBzcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjaywgYm9vbCBncmFudGVkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9Cisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJ
RGVsZWdhdGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
SURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IGQxZWFlMjAxZTY1NDJmNGZhYjYwMTk4MGRjNjYxMjQ5
MTMxOTc5M2YuLmYwYTliYTQxZjUxNWVmNzE4Zjc0NmM3ZmRmZmZlYTRhMzVlOGRlMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0
ZVByaXZhdGUuaApAQCAtMTUyLDYgKzE1Miw4IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAKIC0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2lsbFNoYXJlQWN0aXZpdHlJdGVt
czooTlNBcnJheSAqKWFjdGl2aXR5SXRlbXMgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RC
QSkpOwogCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmln
aW4gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFu
ZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OworCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogCiAtIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHNob3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2
YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudCBXS19BUElfQVZBSUxBQkxFKGlvcyg5LjApKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0
aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9u
VXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZiNGY1NWQwYmU5YmYzZmFlNjlkNTZkNjVlM2Q4Mjg3
ZmFiMDI3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWTWVkaWFGb3JtYXQuaD4K
KyNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBNZWRpYVBlcm1pc3Npb25UeXBl
IHsKKyAgICBBdWRpbywKKyAgICBWaWRlbworfTsKKworZW51bSBjbGFzcyBNZWRpYVBlcm1pc3Np
b25SZXN1bHQgeworICAgIERlbmllZCwKKyAgICBHcmFudGVkLAorICAgIFVua25vd24KK307CisK
KyNpZiBIQVZFKEFWQ0FQVFVSRURFVklDRSkKK3ZvaWQgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zv
clR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1
dGhvcml6ZWQpPiYmKTsKK01lZGlhUGVybWlzc2lvblJlc3VsdCBjaGVja0FWQ2FwdHVyZUFjY2Vz
c0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSk7CisjZW5kaWYKKworYm9vbCBjaGVja1NhbmRi
b3hSZXF1aXJlbWVudEZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSk7Citib29sIGNoZWNrVXNh
Z2VEZXNjcmlwdGlvblN0cmluZ0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSk7CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhlY2RiOGJm
NzA5MmU4NzFjY2NhMTRlODRmYmMwZmE4ZjJhNjY0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQpAQCAt
MCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
TWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgiCisKKyNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMu
aCIKKyNpbXBvcnQgIlRDQ1NQSS5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0
IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3Vu
ZGF0aW9uU29mdExpbmsuaD4KKworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFRDQykKK1NP
RlRfTElOSyhUQ0MsIFRDQ0FjY2Vzc1ByZWZsaWdodCwgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0
LCAoQ0ZTdHJpbmdSZWYgc2VydmljZSwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpLCAoc2Vydmlj
ZSwgb3B0aW9ucykpCitTT0ZUX0xJTktfQ09OU1RBTlQoVENDLCBrVENDU2VydmljZU1pY3JvcGhv
bmUsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RDQ1NlcnZpY2VDYW1l
cmEsIENGU3RyaW5nUmVmKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2lmIEhBVkUoQVZDQVBU
VVJFREVWSUNFKQorCit2b2lkIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVy
bWlzc2lvblR5cGUgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisK
KyAgICBBVk1lZGlhVHlwZSBtZWRpYVR5cGUgPSB0eXBlID09IE1lZGlhUGVybWlzc2lvblR5cGU6
OkF1ZGlvID8gQVZNZWRpYVR5cGVBdWRpbyA6IEFWTWVkaWFUeXBlVmlkZW87CisgICAgYXV0byBk
ZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAg
IGlmIChpc01haW5UaHJlYWQoKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0
aG9yaXplZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBhdXRob3JpemVkXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoYXV0aG9yaXplZCk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIFtQQUw6OmdldEFWQ2Fw
dHVyZURldmljZUNsYXNzKCkgcmVxdWVzdEFjY2Vzc0Zvck1lZGlhVHlwZTptZWRpYVR5cGUgY29t
cGxldGlvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKK30KKworTWVkaWFQZXJtaXNz
aW9uUmVzdWx0IGNoZWNrQVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBl
IHR5cGUpCit7CisgICAgQVZNZWRpYVR5cGUgbWVkaWFUeXBlID0gdHlwZSA9PSBNZWRpYVBlcm1p
c3Npb25UeXBlOjpBdWRpbyA/IEFWTWVkaWFUeXBlQXVkaW8gOiBBVk1lZGlhVHlwZVZpZGVvOwor
ICAgIGF1dG8gYXV0aG9yaXphdGlvblN0YXR1cyA9IFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNs
YXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c0Zvck1lZGlhVHlwZTptZWRpYVR5cGVdOworICAgIGlm
IChhdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCB8fCBh
dXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpCisg
ICAgICAgIHJldHVybiBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkRlbmllZDsKKyAgICBpZiAoYXV0
aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkKQor
ICAgICAgICByZXR1cm4gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duOworICAgIHJldHVy
biBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkdyYW50ZWQ7Cit9CisKKyNlbmRpZgorCitib29sIGNo
ZWNrU2FuZGJveFJlcXVpcmVtZW50Rm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlIHR5cGUpCit7
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBhdWRpb0ZsYWc7
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHZpZGVvRmxhZzsKKyAgICBzdGF0aWMgYm9vbCBp
c0F1ZGlvRW50aXRsZWQgPSB0cnVlOworICAgIHN0YXRpYyBib29sIGlzVmlkZW9FbnRpdGxlZCA9
IHRydWU7CisgICAgCisgICAgYXV0byBjaGVja0Z1bmN0aW9uID0gW10oY29uc3QgY2hhciogb3Bl
cmF0aW9uLCBib29sKiBlbnRpdGxlZCkgeworICAgICAgICBpZiAoIWN1cnJlbnRQcm9jZXNzSXNT
YW5kYm94ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpbnQgcmVzdWx0ID0g
c2FuZGJveF9jaGVjayhnZXRwaWQoKSwgb3BlcmF0aW9uLCBTQU5EQk9YX0ZJTFRFUl9OT05FKTsK
KyAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJy
b3IgY2hlY2tpbmcgJyVzJyBzYW5kYm94IGFjY2VzcywgZXJybm89JWxkIiwgb3BlcmF0aW9uLCAo
bG9uZyllcnJubyk7CisgICAgICAgICplbnRpdGxlZCA9ICFyZXN1bHQ7CisgICAgfTsKKworICAg
IGlmICh0eXBlID09IE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKSB7CisgICAgICAgIHN0ZDo6
Y2FsbF9vbmNlKGF1ZGlvRmxhZywgY2hlY2tGdW5jdGlvbiwgImRldmljZS1taWNyb3Bob25lIiwg
JmlzQXVkaW9FbnRpdGxlZCk7CisgICAgICAgIHJldHVybiBpc0F1ZGlvRW50aXRsZWQ7CisgICAg
fQorCisgICAgc3RkOjpjYWxsX29uY2UodmlkZW9GbGFnLCBjaGVja0Z1bmN0aW9uLCAiZGV2aWNl
LWNhbWVyYSIsICZpc1ZpZGVvRW50aXRsZWQpOworICAgIHJldHVybiBpc1ZpZGVvRW50aXRsZWQ7
CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBjaGVja1VzYWdlRGVzY3JpcHRp
b25TdHJpbmdGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGUgdHlwZSkKK3sKKyAgICBpZiAodHlw
ZSA9PSBNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbykgeworICAgICAgICBzdGF0aWMgVENDQWNj
ZXNzUHJlZmxpZ2h0UmVzdWx0IGF1ZGlvQWNjZXNzID0gVENDQWNjZXNzUHJlZmxpZ2h0KGdldGtU
Q0NTZXJ2aWNlTWljcm9waG9uZSgpLCBOVUxMKTsKKyAgICAgICAgaWYgKGF1ZGlvQWNjZXNzID09
IGtUQ0NBY2Nlc3NQcmVmbGlnaHRHcmFudGVkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIHJldHVybiBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1
bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb24iXSkubGVu
Z3RoID4gMDsKKyAgICB9CisKKyAgICBzdGF0aWMgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0IHZp
ZGVvQWNjZXNzID0gVENDQWNjZXNzUHJlZmxpZ2h0KGdldGtUQ0NTZXJ2aWNlQ2FtZXJhKCksIE5V
TEwpOworICAgIGlmICh2aWRlb0FjY2VzcyA9PSBrVENDQWNjZXNzUHJlZmxpZ2h0R3JhbnRlZCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGR5bmFtaWNfb2JqY19jYXN0PE5TU3Ry
aW5nPihOU0J1bmRsZS5tYWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNDYW1lcmFVc2FnZURl
c2NyaXB0aW9uIl0pLmxlbmd0aCA+IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlckNvY29hLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcw
MmUwZTViMzBiZTQ0NDAyNWUyMDk3YjIyMTAzOTQ3NWNjYTc3YzkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyQ29jb2EubW0KQEAgLTAsMCArMSwxODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIu
aCIKKworI2ltcG9ydCAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKKyNpbXBvcnQgIkFQSVVJQ2xpZW50
LmgiCisjaW1wb3J0ICJNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCIKKyNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKKyNpZiBIQVZFKFNQRUVD
SFJFQ09HTklaRVIpCisjaW1wb3J0IDxTcGVlY2gvU3BlZWNoLmg+CisKK1NPRlRfTElOS19GUkFN
RVdPUksoU3BlZWNoKQorU09GVF9MSU5LX0NMQVNTKFNwZWVjaCwgU0ZTcGVlY2hSZWNvZ25pemVy
KQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0UHJvY2Vzc2luZ1JlcXVlc3QoKQoreworICAgIGlmICgh
Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlv
KSkgeworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghY2hlY2tNaWNyb3Bob25lQWNjZXNzKCkgfHwgIWNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2
aWNlQWNjZXNzKCkgfHwgbV91c2VyUGVybWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5p
ZWQpIHsKKyAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25EZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBj
b250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCk7Cit9CisKK2Jvb2wgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKCkKK3sKKyAgICBpZiAobV9w
YWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX21pY3JvcGhvbmVDaGVjayA9PSBDaGVja1Jlc3VsdDo6
VW5rbm93bikgeworI2lmIEhBVkUoQVZDQVBUVVJFREVWSUNFKQorICAgICAgICBhdXRvIHJlc3Vs
dCA9IGNoZWNrQVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRp
byk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3du
KQorICAgICAgICAgICAgbV9taWNyb3Bob25lQ2hlY2sgPSByZXN1bHQgPT0gTWVkaWFQZXJtaXNz
aW9uUmVzdWx0OjpHcmFudGVkID8gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBDaGVja1Jlc3VsdDo6
RGVuaWVkOworICAgICAgICBlbHNlIGlmICghY2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9y
VHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbykpCisgICAgICAgICAgICBtX21pY3JvcGhv
bmVDaGVjayA9IENoZWNrUmVzdWx0OjpEZW5pZWQ7CisjZWxzZQorICAgICAgICBtX21pY3JvcGhv
bmVDaGVjayA9IENoZWNrUmVzdWx0OjpHcmFudGVkOworI2VuZGlmCisgICAgfQorCisgICAgcmV0
dXJuIG1fbWljcm9waG9uZUNoZWNrICE9IENoZWNrUmVzdWx0OjpEZW5pZWQ7Cit9CisKK2Jvb2wg
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlv
blNlcnZpY2VBY2Nlc3MoKQoreworICAgIGlmIChtX3BhZ2UucHJlZmVyZW5jZXMoKS5tb2NrQ2Fw
dHVyZURldmljZXNFbmFibGVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG1f
c3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsK
KyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisgICAgICAgIGF1dG8gc3RhdHVzID0gW2dldFNG
U3BlZWNoUmVjb2duaXplckNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c107CisgICAgICAgIGlm
IChzdGF0dXMgIT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVy
bWluZWQpCisgICAgICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrID0gc3Rh
dHVzID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkID8g
Q2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBDaGVja1Jlc3VsdDo6RGVuaWVkOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGJvb2wgaGFzRGVzY3JpcHRpb25TdHJpbmcgPSBkeW5hbWljX29iamNf
Y2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TU3Bl
ZWNoUmVjb2duaXRpb25Vc2FnZURlc2NyaXB0aW9uIl0pLmxlbmd0aDsKKyAgICAgICAgICAgIG1f
c3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPSBoYXNEZXNjcmlwdGlvblN0cmluZyA/IENo
ZWNrUmVzdWx0OjpVbmtub3duIDogQ2hlY2tSZXN1bHQ6OkRlbmllZDsKKyAgICAgICAgfQorI2Vs
c2UKKyAgICAgICAgbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VDaGVjayA9IENoZWNrUmVzdWx0
OjpHcmFudGVkOworI2VuZGlmCisgICAgfQorCisgICAgcmV0dXJuIG1fc3BlZWNoUmVjb2duaXRp
b25TZXJ2aWNlQ2hlY2sgIT0gQ2hlY2tSZXN1bHQ6OkRlbmllZDsKK30KKwordm9pZCBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2
aWNlQWNjZXNzKCkKK3sKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VDaGVj
ayA9PSBDaGVja1Jlc3VsdDo6VW5rbm93bik7CisKKyAgICBhdXRvIG1haW5UaHJlYWRIYW5kbGVy
ID0gKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShib29sIGF1dGhvcml6ZWQp
IG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPSAgYXV0aG9yaXplZCA/
IENoZWNrUmVzdWx0OjpHcmFudGVkIDogQ2hlY2tSZXN1bHQ6OkRlbmllZDsKKyAgICAgICAgaWYg
KG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OkRlbmllZCkg
eworICAgICAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25EZWNpc2lvbjo6RGVueSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCk7CisgICAgfSk7CisgICAgYXV0
byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW21haW5UaHJlYWRIYW5kbGVyID0gV1RG
TW92ZShtYWluVGhyZWFkSGFuZGxlcildKFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25T
dGF0dXMgc3RhdHVzKSBtdXRhYmxlIHsKKyAgICAgICAgYm9vbCBhdXRob3JpemVkID0gc3RhdHVz
ID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkOworICAg
ICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFttYWluVGhyZWFkSGFuZGxlciA9IFdURk1vdmUobWFpblRocmVhZEhhbmRsZXIpLCBhdXRob3Jp
emVkXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIG1haW5UaHJlYWRIYW5kbGVyKGF1dGhv
cml6ZWQpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgbWFpblRocmVhZEhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgfSk7CisgICAgW2dl
dFNGU3BlZWNoUmVjb2duaXplckNsYXNzKCkgcmVxdWVzdEF1dGhvcml6YXRpb246ZGVjaXNpb25I
YW5kbGVyLmdldCgpXTsKKyNlbmRpZgorfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNjZXNzKCkKK3sKKyNpZiBIQVZFKEFWQ0FQ
VFVSRURFVklDRSkKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX21p
Y3JvcGhvbmVDaGVjayA9PSBDaGVja1Jlc3VsdDo6VW5rbm93bik7CisKKyAgICByZXF1ZXN0QVZD
YXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbywgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGJvb2wgYXV0aG9yaXplZCkgeworICAgICAgICBp
ZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fbWljcm9waG9u
ZUNoZWNrID0gYXV0aG9yaXplZCA/IENoZWNrUmVzdWx0OjpHcmFudGVkIDogQ2hlY2tSZXN1bHQ6
OkRlbmllZDsKKyAgICAgICAgaWYgKG1fbWljcm9waG9uZUNoZWNrID09IENoZWNrUmVzdWx0OjpE
ZW5pZWQpIHsKKyAgICAgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgpOworICAgIH0pOwor
I2VuZGlmCit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVx
dWVzdFVzZXJQZXJtaXNzaW9uKCkKK3sKKyAgICBBU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgp
KTsKKyAgICBhdXRvJiBjdXJyZW50UmVxdWVzdCA9IG1fcmVxdWVzdHMuZmlyc3QoKTsKKworICAg
IGF1dG8gY2xpZW50T3JpZ2luID0gY3VycmVudFJlcXVlc3QtPm9yaWdpbigpOworICAgIGF1dG8g
cmVxdWVzdGluZ09yaWdpbiA9IGNsaWVudE9yaWdpbi5jbGllbnRPcmlnaW4uc2VjdXJpdHlPcmln
aW4oKTsKKyAgICBhdXRvIHRvcE9yaWdpbiA9IGNsaWVudE9yaWdpbi50b3BPcmlnaW4uc2VjdXJp
dHlPcmlnaW4oKTsKKyAgICBpZiAocmVxdWVzdGluZ09yaWdpbi0+aXNTYW1lT3JpZ2luQXModG9w
T3JpZ2luKSkgeworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpXShib29sIGdyYW50ZWQpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPSBncmFudGVkID8g
Q2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBDaGVja1Jlc3VsdDo6RGVuaWVkOworICAgICAgICBpZiAo
bV91c2VyUGVybWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVj
aXNpb246OkRlbnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
Y29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgpOworICAgIH07CisgICAgbV9wYWdlLnVpQ2xpZW50
KCkuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChtX3Bh
Z2UsIEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0b3BPcmlnaW4uZ2V0KCkpLmdldCgpLCBX
VEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4IDhhMDk0NzQ1
YzFmMjRiZTEwNWRiYjAyYWI5MWUzMDdiMzFkNDg2YjEuLjYyZDdhOGExOGY2ZWI4Mzk0Y2JlMDJj
ZmFjNDM3NmE1NGQwYTFmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLmgKQEAgLTE2MSw2ICsxNjEsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShXRUJfQVVU
SE4pCiAgICAgICAgIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbChXZWJQYWdlUHJveHkm
LCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBXZWJGcmFtZVByb3h5JiwgRnJhbWVJbmZv
RGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1
bHQpPiYmKSBmaW5hbDsKICNlbmRpZgorICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0
eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogCiAgICAg
ICAgIFVJRGVsZWdhdGUmIG1fdWlEZWxlZ2F0ZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggZDAzMzhmOGQ2ZTNiOWExM2RmMmFmMTUz
YWNiNWRlYjM4ZTFmY2Q5Yi4uMGY5ZWE5MDlhNmVmOTk5MTFiZTgxZWVlOWUwOTM4OTg1N2EyNjhm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0x
MzMyLDQgKzEzMzIsMjYgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6aW1hZ2VPck1lZGlh
RG9jdW1lbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXoKICAgICBbc3RhdGljX2Nh
c3Q8aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+PihkZWxlZ2F0ZSkgX3dlYlZpZXc6bV91aURlbGVn
YXRlLm1fd2ViVmlldyBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkOm5ld1NpemVdOwog
fQogCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6
OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IChpZCA8V0tVSURlbGVn
YXRlUHJpdmF0ZT4pbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxl
Z2F0ZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF93ZWJWaWV3OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46
ZGVjaXNpb25IYW5kbGVyOildKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25I
YW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJl
cXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46ZGVjaXNpb25IYW5kbGVy
OikpOworICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJlcXVl
c3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46d3JhcHBlcihvcmlnaW4pIGRl
Y2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNo
YW5nZShjb21wbGV0aW9uSGFuZGxlciwgeyB9KSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcild
IChCT09MIGdyYW50ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlv
bkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNo
ZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihncmFudGVkKTsKKyAgICB9KS5nZXQoKV07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5tbQppbmRleCA5OTc1
NzVkZTAyMTZhOWMwY2Q3NmFmY2I0MWM3NjQxZGIxMzE1YWZiLi44ZWJlYzUyY2M2YjY2ZDE1YTIz
ZTU0NGUyMzRlZWQ4NWFjZWYwYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgogCisjaW1wb3J0
ICJNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMu
aCIKICNpbXBvcnQgIlRDQ1NQSS5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCkBAIC0zNyw0
MCArMzgsMTIgQEAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgog
I2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogCi1TT0ZUX0xJTktfUFJJVkFU
RV9GUkFNRVdPUksoVENDKQotU09GVF9MSU5LKFRDQywgVENDQWNjZXNzUHJlZmxpZ2h0LCBUQ0NB
Y2Nlc3NQcmVmbGlnaHRSZXN1bHQsIChDRlN0cmluZ1JlZiBzZXJ2aWNlLCBDRkRpY3Rpb25hcnlS
ZWYgb3B0aW9ucyksIChzZXJ2aWNlLCBvcHRpb25zKSkKLVNPRlRfTElOSyhUQ0MsIFRDQ0FjY2Vz
c1ByZWZsaWdodFdpdGhBdWRpdFRva2VuLCBUQ0NBY2Nlc3NQcmVmbGlnaHRSZXN1bHQsIChDRlN0
cmluZ1JlZiBzZXJ2aWNlLCBhdWRpdF90b2tlbl90IHRva2VuLCBDRkRpY3Rpb25hcnlSZWYgb3B0
aW9ucyksIChzZXJ2aWNlLCB0b2tlbiwgb3B0aW9ucykpCi1TT0ZUX0xJTktfQ09OU1RBTlQoVEND
LCBrVENDU2VydmljZU1pY3JvcGhvbmUsIENGU3RyaW5nUmVmKQotU09GVF9MSU5LX0NPTlNUQU5U
KFRDQywga1RDQ1NlcnZpY2VDYW1lcmEsIENGU3RyaW5nUmVmKQotCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cGVybWl0
dGVkVG9DYXB0dXJlQXVkaW8oKQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0
YXRpYyBib29sIGVudGl0bGVkID0gdHJ1ZTsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywg
W10gewotICAgICAgICBpZiAoIWN1cnJlbnRQcm9jZXNzSXNTYW5kYm94ZWQoKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBpbnQgcmVzdWx0ID0gc2FuZGJveF9jaGVjayhnZXRwaWQo
KSwgImRldmljZS1taWNyb3Bob25lIiwgU0FOREJPWF9GSUxURVJfTk9ORSk7Ci0gICAgICAgIGVu
dGl0bGVkID0gIXJlc3VsdDsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKLSAgICAgICAgICAg
IFdURkxvZ0Fsd2F5cygiRXJyb3IgY2hlY2tpbmcgJ2RldmljZS1taWNyb3Bob25lJyBzYW5kYm94
IGFjY2VzcywgZXJybm89JWxkIiwgKGxvbmcpZXJybm8pOwotICAgIH0pOwotICAgIGlmICghZW50
aXRsZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCi0K
LSAgICBzdGF0aWMgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0IGFjY2VzcyA9IFRDQ0FjY2Vzc1By
ZWZsaWdodChnZXRrVENDU2VydmljZU1pY3JvcGhvbmUoKSwgTlVMTCk7Ci0gICAgaWYgKGFjY2Vz
cyA9PSBrVENDQWNjZXNzUHJlZmxpZ2h0R3JhbnRlZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBzdGF0aWMgYm9vbCBpc1Blcm1pdHRlZCA9IGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5n
PihOU0J1bmRsZS5tYWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNNaWNyb3Bob25lVXNhZ2VE
ZXNjcmlwdGlvbiJdKS5sZW5ndGg7Ci0gICAgcmV0dXJuIGlzUGVybWl0dGVkOworICAgIHJldHVy
biBjaGVja1NhbmRib3hSZXF1aXJlbWVudEZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6QXVk
aW8pICYmIGNoZWNrVXNhZ2VEZXNjcmlwdGlvblN0cmluZ0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9u
VHlwZTo6QXVkaW8pOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTc5LDQ5
ICs1MiwxMyBAQCBib29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpw
ZXJtaXR0ZWRUb0NhcHR1cmVBdWRpbygpCiBib29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpwZXJtaXR0ZWRUb0NhcHR1cmVWaWRlbygpCiB7CiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUZsYWc7Ci0gICAgc3RhdGljIGJvb2wgZW50aXRsZWQgPSB0cnVlOwotICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIGlmICghY3VycmVudFByb2Nlc3NJc1Nh
bmRib3hlZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGludCByZXN1bHQgPSBz
YW5kYm94X2NoZWNrKGdldHBpZCgpLCAiZGV2aWNlLWNhbWVyYSIsIFNBTkRCT1hfRklMVEVSX05P
TkUpOwotICAgICAgICBlbnRpdGxlZCA9ICFyZXN1bHQ7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0g
LTEpCi0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGNoZWNraW5nICdkZXZpY2UtY2Ft
ZXJhJyBzYW5kYm94IGFjY2VzcywgZXJybm89JWxkIiwgKGxvbmcpZXJybm8pOwotICAgIH0pOwot
ICAgIGlmICghZW50aXRsZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCi0KLSAgICBzdGF0aWMgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0IGFjY2VzcyA9
IFRDQ0FjY2Vzc1ByZWZsaWdodChnZXRrVENDU2VydmljZUNhbWVyYSgpLCBOVUxMKTsKLSAgICBp
ZiAoYWNjZXNzID09IGtUQ0NBY2Nlc3NQcmVmbGlnaHRHcmFudGVkKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIHN0YXRpYyBib29sIGlzUGVybWl0dGVkID0gZHluYW1pY19vYmpjX2Nhc3Q8
TlNTdHJpbmc+KE5TQnVuZGxlLm1haW5CdW5kbGUuaW5mb0RpY3Rpb25hcnlbQCJOU0NhbWVyYVVz
YWdlRGVzY3JpcHRpb24iXSkubGVuZ3RoOwotICAgIHJldHVybiBpc1Blcm1pdHRlZDsKKyAgICBy
ZXR1cm4gY2hlY2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6
OlZpZGVvKSAmJiBjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdGb3JUeXBlKE1lZGlhUGVybWlz
c2lvblR5cGU6OlZpZGVvKTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiB9CiAK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotc3RhdGljIHZvaWQgcmVxdWVzdEFWQ2FwdHVyZUFj
Y2Vzc0Zvck1lZGlhVHlwZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEJPT0wgYXV0aG9yaXplZCk+
JiYgY29tcGxldGlvbkhhbmRsZXIsIEFWTWVkaWFUeXBlIHR5cGUpCi17Ci0gICAgYXV0byBkZWNp
c2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKEJPT0wgYXV0aG9yaXplZCkgbXV0YWJsZSB7Ci0gICAgICAgIGlm
ICghaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGF1dGhvcml6ZWRdKCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKLSAgICB9KTsKLSAgICBbUEFMOjpnZXRB
VkNhcHR1cmVEZXZpY2VDbGFzcygpIHJlcXVlc3RBY2Nlc3NGb3JNZWRpYVR5cGU6dHlwZSBjb21w
bGV0aW9uSGFuZGxlcjpkZWNpc2lvbkhhbmRsZXIuZ2V0KCldOwotfQotCiB2b2lkIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lzdGVtVmFsaWRhdGlvbihj
b25zdCBXZWJQYWdlUHJveHkmIHBhZ2UsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkm
IHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAg
ICAgaWYgKHBhZ2UucHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCkpIHsK
QEAgLTEzMCwzNiArNjcsNDAgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6cmVxdWVzdFN5c3RlbVZhbGlkYXRpb24oY29uc3QgV2ViUGEKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogQWRkIFRDQyBlbnRpdGxlbWVudCBjaGVjayBmb3Igc2NyZWVuc2hhcmluZy4K
LSAgICBib29sIHJlcXVpcmVzQXVkaW9DYXB0dXJlID0gcmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2Fw
dHVyZSgpOwotICAgIGJvb2wgcmVxdWlyZXNWaWRlb0NhcHR1cmUgPSByZXF1ZXN0LnJlcXVpcmVz
VmlkZW9DYXB0dXJlKCk7Ci0KLSAgICBhdXRvIG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVz
ID0gIXJlcXVpcmVzQXVkaW9DYXB0dXJlID8gQVZBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXpl
ZCA6IFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c0Zv
ck1lZGlhVHlwZTpBVk1lZGlhVHlwZUF1ZGlvXTsKLSAgICBpZiAobWljcm9waG9uZUF1dGhvcml6
YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IG1pY3JvcGhvbmVB
dXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpIHsK
KyAgICBhdXRvIGF1ZGlvU3RhdHVzID0gcmVxdWVzdC5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpID8g
Y2hlY2tBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKSA6
IE1lZGlhUGVybWlzc2lvblJlc3VsdDo6R3JhbnRlZDsKKyAgICBpZiAoYXVkaW9TdGF0dXMgPT0g
TWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpEZW5pZWQpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjYW1lcmFBdXRob3JpemF0aW9u
U3RhdHVzID0gIXJlcXVpcmVzVmlkZW9DYXB0dXJlID8gQVZBdXRob3JpemF0aW9uU3RhdHVzQXV0
aG9yaXplZCA6IFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgYXV0aG9yaXphdGlvblN0
YXR1c0Zvck1lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvXTsKLSAgICBpZiAoY2FtZXJhQXV0aG9y
aXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQgfHwgY2FtZXJhQXV0
aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkKSB7Cisg
ICAgYXV0byB2aWRlb1N0YXR1cyA9IHJlcXVlc3QucmVxdWlyZXNWaWRlb0NhcHR1cmUoKSA/IGNo
ZWNrQVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpWaWRlbykgOiBN
ZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkdyYW50ZWQ7CisgICAgaWYgKGF1ZGlvU3RhdHVzID09IE1l
ZGlhUGVybWlzc2lvblJlc3VsdDo6RGVuaWVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgcmVxdWlyZXNWaWRlb1RDQ1Byb21w
dCA9IHJlcXVpcmVzVmlkZW9DYXB0dXJlICYmIGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPT0g
QVZBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZDsKLSAgICBhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gcmVxdWlyZXNWaWRlb1RDQ1Byb21wdCA/IFtyZXF1ZXN0ID0gbWFrZVJlZihyZXF1
ZXN0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBpc09LKSBtdXRhYmxlIHsK
LSAgICAgICAgaWYgKCFpc09LKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vz
c0Zvck1lZGlhVHlwZShXVEZNb3ZlKGNhbGxiYWNrKSwgQVZNZWRpYVR5cGVWaWRlbyk7Ci0gICAg
fSA6IFdURk1vdmUoY2FsbGJhY2spOworICAgIGlmIChhdWRpb1N0YXR1cyA9PSBNZWRpYVBlcm1p
c3Npb25SZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zv
clR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6QXVkaW8sIFt2aWRlb1N0YXR1cywgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBhdXRob3JpemVkKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGlmICh2aWRlb1N0YXR1cyA9PSBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6Okdy
YW50ZWQpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Np
b25UeXBlOjpWaWRlbywgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKGJvb2wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBib29sIHJlcXVpcmVzQXVkaW9UQ0NQcm9tcHQg
PSByZXF1aXJlc0F1ZGlvQ2FwdHVyZSAmJiBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9
PSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOwotICAgIGlmICghcmVxdWlyZXNB
dWRpb1RDQ1Byb21wdCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICBp
ZiAodmlkZW9TdGF0dXMgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duKSB7CisgICAg
ICAgIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OlZp
ZGVvLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBhdXRob3Jp
emVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQp
OworICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICByZXF1ZXN0QVZDYXB0
dXJlQWNjZXNzRm9yTWVkaWFUeXBlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBBVk1lZGlh
VHlwZUF1ZGlvKTsKKworICAgIGNhbGxiYWNrKHRydWUpOwogfQogI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggODY2MjM4YmFmZThmMDVjMTdhMjNkNmY5Y2M5
OWEyMTAxNGRkOTMxMC4uY2QzMDE0MWZjZWE2MjIyZGU1YmE3Y2YxYzY3YTlhMmY2NGQwMjBmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1By
b3h5Q29jb2EubW0KQEAgLTQxLDYgKzQxLDEwIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9y
Q29jb2EuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KIAorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5oIgor
I2VuZGlmCisKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICNpbXBvcnQgPEphdmFTY3Jp
cHRDb3JlL1JlbW90ZUluc3BlY3RvckNvbnN0YW50cy5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3YWVhYWUzYjQ0ZTI4ZGJkYjVhOWM4MjEwOTFlMjQ4
ZGFiMWNhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtMCwwICsxLDEyOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyKFdlYlBhZ2VQcm94eSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCitTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcigpCit7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9yZXF1ZXN0cykKKyAg
ICAgICAgcmVxdWVzdC0+Y29tcGxldGUoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNp
b246OkRlbnkpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6
OnJlcXVlc3QoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0aW9u
dEhhbmRsZXIpCit7CisgICAgbV9yZXF1ZXN0cy5hcHBlbmQoU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdDo6Y3JlYXRlKFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9u
dEhhbmRsZXIpKSk7CisgICAgaWYgKG1fcmVxdWVzdHMuc2l6ZSgpID09IDEpCisgICAgICAgIHN0
YXJ0TmV4dFJlcXVlc3QoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpzdGFydE5leHRSZXF1ZXN0KCkKK3sKKyAgICBpZiAobV9yZXF1ZXN0cy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXJ0UHJvY2Vzc2luZ1JlcXVlc3QoKTsKK30K
Kwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb250aW51ZVByb2Nl
c3NpbmdSZXF1ZXN0KCkKK3sKKyAgICBpZiAoIW1fcGFnZS5wcmVmZXJlbmNlcygpLm1vY2tDYXB0
dXJlRGV2aWNlc0VuYWJsZWQoKSkgeworICAgICAgICBpZiAobV9zcGVlY2hSZWNvZ25pdGlvblNl
cnZpY2VDaGVjayA9PSBDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICAgICAgcmVxdWVz
dFNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIEFTU0VSVChtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNr
ID09IENoZWNrUmVzdWx0OjpHcmFudGVkKTsKKworICAgICAgICBpZiAobV9taWNyb3Bob25lQ2hl
Y2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgICAgIHJlcXVlc3RNaWNyb3Bo
b25lQWNjZXNzKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQVNT
RVJUKG1fbWljcm9waG9uZUNoZWNrID09IENoZWNrUmVzdWx0OjpHcmFudGVkKTsKKyAgICB9CisK
KyAgICBpZiAobV91c2VyUGVybWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0OjpVbmtub3duKSB7
CisgICAgICAgIHJlcXVlc3RVc2VyUGVybWlzc2lvbigpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIEFTU0VSVChtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OkdyYW50
ZWQpOworCisgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25EZWNpc2lvbjo6R3JhbnQpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uRGVjaXNpb24gZGVjaXNpb24pCit7CisgICAgQVNTRVJUKCFtX3JlcXVlc3RzLmlzRW1w
dHkoKSk7CisgICAgYXV0byBjdXJyZW50UmVxdWVzdCA9IG1fcmVxdWVzdHMudGFrZUZpcnN0KCk7
CisgICAgY3VycmVudFJlcXVlc3QtPmNvbXBsZXRlKGRlY2lzaW9uKTsKKworICAgIHN0YXJ0TmV4
dFJlcXVlc3QoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
OjpyZXNldCgpCit7CisgICAgbV91c2VyUGVybWlzc2lvbkNoZWNrID0gQ2hlY2tSZXN1bHQ6OlVu
a25vd247Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisKK3ZvaWQgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgpCit7CisgICAgY29t
cGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbjo6
R3JhbnQpOworfQorCitib29sIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNo
ZWNrTWljcm9waG9uZUFjY2VzcygpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNl
cnZpY2VBY2Nlc3MoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNjZXNzKCkKK3sKK30K
Kwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0U3BlZWNo
UmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCkKK3sKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0VXNlclBlcm1pc3Npb24oKQoreworfQorCisjZW5k
aWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jNDgyN2FhN2MzZTYzYzI0MWYzMDU0NGQzNzEwODdhOTAwYzQxOTU3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKyNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
KFdlYlBhZ2VQcm94eSYpOworICAgIH5TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
KCk7CisgICAgdm9pZCByZXF1ZXN0KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJik7Cisg
ICAgdm9pZCByZXNldCgpOworCitwcml2YXRlOgorICAgIHZvaWQgc3RhcnROZXh0UmVxdWVzdCgp
OworICAgIHZvaWQgc3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgpOworICAgIHZvaWQgY29udGludWVQ
cm9jZXNzaW5nUmVxdWVzdCgpOworICAgIHZvaWQgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik7CisgICAgYm9vbCBjaGVja01pY3JvcGhv
bmVBY2Nlc3MoKTsKKyAgICBib29sIGNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNz
KCk7CisgICAgdm9pZCByZXF1ZXN0TWljcm9waG9uZUFjY2VzcygpOworICAgIHZvaWQgcmVxdWVz
dFNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpOworICAgIHZvaWQgcmVxdWVzdFVzZXJQ
ZXJtaXNzaW9uKCk7CisKKyAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKKyAgICBEZXF1ZTxSZWY8
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4+IG1fcmVxdWVzdHM7CisgICAgZW51
bSBjbGFzcyBDaGVja1Jlc3VsdCB7IERlbmllZCwgR3JhbnRlZCwgVW5rbm93biB9OworICAgIENo
ZWNrUmVzdWx0IG1fc2FuZGJveENoZWNrIHsgQ2hlY2tSZXN1bHQ6OlVua25vd24gfTsKKyAgICBD
aGVja1Jlc3VsdCBtX21pY3JvcGhvbmVDaGVjayB7IENoZWNrUmVzdWx0OjpVbmtub3duIH07Cisg
ICAgQ2hlY2tSZXN1bHQgbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VDaGVjayB7IENoZWNrUmVz
dWx0OjpVbmtub3duIH07CisgICAgQ2hlY2tSZXN1bHQgbV91c2VyUGVybWlzc2lvbkNoZWNrIHsg
Q2hlY2tSZXN1bHQ6OlVua25vd24gfTsKKyAgICBib29sIG1faXNVc2luZ01vY2tlZENhcHR1cmVE
ZXZpY2UgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZkYTk5YzE3ODI3ZDZlNTg1MWJlOGY2MzdhYmRmYzlj
YTdhODJkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaApAQCAtMCwwICsxLDc4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0NsaWVudE9yaWdpbi5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25EZWNpc2lvbiA6IGJvb2wgeyBEZW55LCBHcmFudCB9OworCitjbGFzcyBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gY3JlYXRlKFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25EZWNpc2lvbik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdU
Rk1vdmUob3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICB9CisKKyAg
ICB2b2lkIGNvbXBsZXRlKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lz
aW9uKQorICAgIHsKKyAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFu
Z2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZGVjaXNpb24pOworICAgIH0KKworICAgIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3Jp
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KKworcHJpdmF0ZToKKyAgICBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNp
c2lvbik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogbV9vcmlnaW4ob3JpZ2luKQor
ICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
CisgICAgeyB9CisKKyAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gbV9vcmlnaW47CisgICAgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+
IG1fY29tcGxldGlvbkhhbmRsZXI7Cit9OworCitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjayA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6
OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaz4gY3JlYXRlKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIH0KKworICAgIHZvaWQgY29t
cGxldGUoYm9vbCBncmFudGVkKSB7IG1fY29tcGxldGlvbkhhbmRsZXIoZ3JhbnRlZCk7IH0KKwor
cHJpdmF0ZToKKyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICA6IG1f
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgeyB9CisK
KyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX2NvbXBsZXRpb25IYW5kbGVyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKaW5kZXggOWNlOTc0Y2Y5ZGFhNTY1ODJl
ZWJjZmEwMzA2NzBiN2EzNzViZTcxZS4uZDczYjA4YzcyNTI1NDdlNWYzNzg2NTBmMzFlYjNkNzJl
NTI0MTU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uU2VydmVyLmNwcApAQCAtMzIsMTUgKzMyLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1TcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVm
PElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKK1NwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DaGVja2VyJiYgcGVybWlzc2lvbkNoZWNrZXIpCiAgICAgOiBtX2Nvbm5lY3Rpb24o
V1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAg
ICwgbV9wZXJtaXNzaW9uQ2hlY2tlcihXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSkKIHsKIH0K
IAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0SW5mbyYmIHJlcXVlc3RJbmZvKQordm9pZCBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVv
dXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luKQogewotICAgIGF1dG8gcmVxdWVzdCA9IFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6Y3JlYXRlKFdURk1vdmUocmVxdWVzdEluZm8pKTsK
KyAgICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdD4oU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7IGNsaWVudElkZW50aWZpZXIs
IFdURk1vdmUobGFuZyksIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2
ZXMsIFdURk1vdmUob3JpZ2luKSB9KTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hcHBlbmQoV1RG
TW92ZShyZXF1ZXN0KSk7CiAKICAgICBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQo
KTsKQEAgLTcyLDggKzczLDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWQKIHsKICAgICBpZiAo
bV9jdXJyZW50UmVxdWVzdCAmJiBtX2N1cnJlbnRSZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCkg
PT0gY2xpZW50SWRlbnRpZmllcikgewogICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbnVsbHB0
cjsKLSAgICAgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBk
YXRlVHlwZTo6RW5kKTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uOjpEaWRSZWNlaXZlVXBkYXRlKHVwZGF0ZSksIG1faWRlbnRpZmllcik7Cisg
ICAgICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25VcGRhdGVUeXBlOjpFbmQpOwogCiAgICAgICAgIHByb2Nlc3NOZXh0UGVuZGluZ1JlcXVl
c3RJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm47CkBAIC04NCwxMyArODQsMTIgQEAgdm9pZCBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWQKIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVtb3Zl
UGVuZGluZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3Q+IHRha2VuUmVxdWVzdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiB0YWtlblJlcXVlc3Q7CiAgICAgYXV0
byBwZW5kaW5nUmVxdWVzdHMgPSBzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1JlcXVlc3RzLCB7IH0p
OwogICAgIHdoaWxlICghcGVuZGluZ1JlcXVlc3RzLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRv
IHJlcXVlc3QgPSBwZW5kaW5nUmVxdWVzdHMudGFrZUZpcnN0KCk7CiAgICAgICAgIGlmIChyZXF1
ZXN0LT5jbGllbnRJZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikgewotICAgICAgICAg
ICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRl
KGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6
RW5kKTsKLSAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbjo6RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50aWZpZXIpOworICAgICAg
ICAgICAgc2VuZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZVR5cGU6OkVuZCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQog
ICAgICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShyZXF1ZXN0KSk7CkBAIC0x
MDUsMTIgKzEwNCw1MSBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjppbnZhbGlkYXRl
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaQogICAgIH0KIH0KIAotdm9p
ZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnRQb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
OjpzdGFydFBvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
JiByZXF1ZXN0KQogeworICAgIG1fcGVybWlzc2lvbkNoZWNrZXIocmVxdWVzdC5jbGllbnRPcmln
aW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYWtSZXF1ZXN0ID0g
bWFrZVdlYWtQdHIocmVxdWVzdCldKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9u
IGRlY2lzaW9uKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKCF3ZWFrUmVxdWVzdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBBU1NFUlQobV9jdXJyZW50UmVxdWVzdC5nZXQoKSA9PSB3ZWFrUmVxdWVzdC5nZXQoKSk7
CisgICAgICAgIGlmIChkZWNpc2lvbiA9PSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNp
c2lvbjo6RGVueSkgeworICAgICAgICAgICAgYXV0byBlcnJvciA9IFNwZWVjaFJlY29nbml0aW9u
RXJyb3IgeyBTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6Tm90QWxsb3dlZCwgIlBlcm1pc3Np
b24gY2hlY2sgZmFpbGVkIl9zIH07CisgICAgICAgICAgICBzZW5kVXBkYXRlKHdlYWtSZXF1ZXN0
LT5jbGllbnRJZGVudGlmaWVyKCksIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlw
ZTo6RXJyb3IsIGVycm9yKTsKKyAgICAgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBudWxscHRy
OworICAgICAgICAgICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250aW51ZVByb2Nlc3NpbmdS
ZXF1ZXN0KCp3ZWFrUmVxdWVzdCk7CisgICAgfSk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OmNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0JikKK3sKKyAgICAvLyBUT0RPOiBzdGFydCBjYXB0dXJpbmcgYXVkaW8gYW5k
IHJlY29nbml6aW5nLgogfQogCi12b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdG9wUHJv
Y2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JikKK3ZvaWQg
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnNlbmRVcGRhdGUoU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGUgdHlwZSwgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gZXJyb3Is
IE9wdGlvbmFsPFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PiByZXN1bHQpCiB7
CisgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3Jl
YXRlKGNsaWVudElkZW50aWZpZXIsIHR5cGUpOworICAgIGlmICh0eXBlID09IFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZTo6RXJyb3IpCisgICAgICAgIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihjbGllbnRJZGVudGlmaWVyLCAqZXJyb3Ip
OworICAgIGlmICh0eXBlID09IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6UmVzdWx0KQor
ICAgICAgICB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRl
UmVzdWx0KGNsaWVudElkZW50aWZpZXIsICpyZXN1bHQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBt
X2lkZW50aWZpZXIpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdG9wUHJv
Y2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JiByZXF1ZXN0
KQoreworICAgIC8vIFRPRE86IHN0b3AgY2FwdHVyaW5nIGF1ZGlvIGFuZCBmaW5hbGl6aW5nIHJl
Y29nbml0aW9uIHJlc3VsdCB3aXRoIGNhcHR1cmVkIGF1ZGlvLgorICAgIHNlbmRVcGRhdGUocmVx
dWVzdC5jbGllbnRJZGVudGlmaWVyKCksIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZTo6Tm9NYXRjaCk7CisgICAgc2VuZFVwZGF0ZShyZXF1ZXN0LmNsaWVudElkZW50aWZpZXIo
KSwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOworICAgIEFTU0VS
VChtX2N1cnJlbnRSZXF1ZXN0LmdldCgpID09ICZyZXF1ZXN0KTsKKyAgICBtX2N1cnJlbnRSZXF1
ZXN0ID0gbnVsbHB0cjsKKyAgICBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsK
IH0KIAogSVBDOjpDb25uZWN0aW9uKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6bWVzc2FnZVNl
bmRlckNvbm5lY3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5kZXggN2FhMjQxNjM4YjljMzUxNDk2Njk4NDQzMmRi
YzUzMGRmODQ4NGEzNy4uZWE4ZTNlNWUwYmZmYzA1ZjMxOWU3ZDBmMzc5ZTUxZDljMWJiOWRhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5oCkBAIC0yOCwyMSArMjgsMzAgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNp
bmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2duaXRpb25FcnJvci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGEuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
IAorbmFtZXNwYWNlIFdlYkNvcmUgeworZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZVR5cGU7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgV2ViUHJvY2Vzc1Byb3h5OworZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25EZWNpc2lvbiA6IGJvb2w7CiAKIHVzaW5nIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRl
bnRpZmllciA9IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyOwordXNpbmcgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2hlY2tlciA9IEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVj
aXNpb24pPiYmKT47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmVyIDogcHVibGljIENh
bk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPiwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyKTsKKyAg
ICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNo
ZWNrZXImJik7CiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdEluZm8mJik7CisgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVvdXMs
IGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiYpOwogICAgIHZvaWQgc3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKICAgICB2b2lkIGFib3J0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogICAgIHZvaWQgaW52
YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyKTsKQEAgLTUxLDkgKzYwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzTmV4dFBl
bmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsKICAgICB2b2lkIHJlbW92ZVBlbmRpbmdSZXF1ZXN0KFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogCi0g
ICAgLy8gVE9ETzogaW1wbGVtZW50IHRoZXNlLgogICAgIHZvaWQgc3RhcnRQb2Nlc3NpbmdSZXF1
ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOworICAgIHZvaWQgY29udGlu
dWVQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsK
ICAgICB2b2lkIHN0b3BQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3QmKTsKKyAgICB2b2lkIHNlbmRVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25V
cGRhdGVUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiA9IFdU
Rjo6bnVsbG9wdCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVz
dWx0RGF0YT4+ID0gV1RGOjpudWxsb3B0KTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
LgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgb3ZlcnJpZGU7CkBAIC02NCw4ICs3NCw5IEBAIHByaXZhdGU6CiAKICAgICBSZWY8SVBD
OjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBEZXF1ZTxSZWY8V2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0Pj4gbV9wZW5kaW5nUmVxdWVzdHM7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBEZXF1ZTxz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Pj4gbV9wZW5k
aW5nUmVxdWVzdHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DaGVja2VyIG1fcGVybWlzc2lvbkNoZWNrZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KaW5kZXggZTMxYmVmYjA5NWFkODhkYWRjMzBmMDk5
NWM1N2U0MTUzNzNmMTJmNC4uYTI4YjkyMWNiOTY0YWZhZjJmZjIyYzkxNmJiZTQ2ZTgyOTkxMzI5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogIAogIG1l
c3NhZ2VzIC0+IFNwZWVjaFJlY29nbml0aW9uU2VydmVyIE5vdFJlZkNvdW50ZWQgewotICAgIFN0
YXJ0KHN0cnVjdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIGluZm8pCisg
ICAgU3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllciBpZGVudGlmaWVyLCBTdHJpbmcgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVy
aW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIHN0cnVjdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4gb3JpZ2luKQogICAgIFN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEFib3J0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICBJbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IGM2NjBlNTY2YjA4ZGQzNjc5MTNkMjI0NTA2YmRmMWVkZjAwZDVkODcuLmZlYjZi
ZjUzZGNhMjZiMGJjNDEyNGM2ZTlmZTU3ZTJiNzViZmRiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODYsNiArODYsNyBAQAogI2luY2x1ZGUgIlByb3Zp
c2lvbmFsUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgogI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3ludGhldGljRWRpdGluZ0Nv
bW1hbmRUeXBlLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hl
Y2tlclN0YXRlLmgiCkBAIC00ODkyLDYgKzQ4OTMsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Q2hhbmdlTWFpbkRvY3VtZW50KEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIFVOVVNFRF9Q
QVJBTShmcmFtZUlEKTsKICNlbmRpZgogICAgIG1faXNRdW90YUluY3JlYXNlRGVuaWVkID0gZmFs
c2U7CisKKyAgICBpZiAobV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKQorICAg
ICAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXItPnJlc2V0KCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3SXNCZWNvbWluZ1Zpc2libGUoKQpAQCAtNzYwNSw2ICs3
NjA5LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiBy
ZXNldFN0YXRlUmVhc29uKQogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgbV93ZWJzaXRlRGF0
YVN0b3JlLT5hdXRoZW50aWNhdG9yTWFuYWdlcigpLmNhbmNlbFJlcXVlc3QobV93ZWJQYWdlSUQs
IFdURjo6bnVsbG9wdCk7CiAjZW5kaWYKKworICAgIGlmIChtX3NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIpCisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlci0+cmVzZXQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclBy
b2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHRlcm1pbmF0aW9uUmVhc29uKQpA
QCAtMTAxNzMsNiArMTAxODAsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZp
dHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoKQogICAgIH0pOwogfQogCit2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihXZWJDb3JlOjpDbGllbnRPcmln
aW4mJiBjbGllbnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uRGVjaXNpb24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICgh
bV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKQorICAgICAgICBtX3NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXI+KCp0aGlzKTsKKworICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlci0+cmVxdWVzdChXVEZNb3ZlKGNsaWVudE9yaWdpbiksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBS
RUxFQVNFX0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDdjZWZiZmM2OTQ1ZWRmZTQzYWU1NmMyZDU2NGMwZTgxZTk1YmI0YTYuLjIzOGMwYmU3
YjA2MDY1MWE1ZGUxYWNmYTNkNjc2Njc3MjVhZjNlZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0zMDUsNiArMzA1LDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVl
U2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhOwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b247CiBjbGFzcyBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OwogY2xhc3MgU2VjS2V5
UHJveHlTdG9yZTsKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI7CiBj
bGFzcyBVc2VyRGF0YTsKIGNsYXNzIFZpZXdTbmFwc2hvdDsKIGNsYXNzIFZpc2l0ZWRMaW5rU3Rv
cmU7CkBAIC0zNjUsNiArMzY2LDcgQEAgc3RydWN0IFVzZXJNZXNzYWdlOwogCiBlbnVtIGNsYXNz
IE5lZ290aWF0ZWRMZWdhY3lUTFMgOiBib29sOwogZW51bSBjbGFzcyBQcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50IDogYm9vbDsKK2VudW0gY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uRGVjaXNpb24gOiBib29sOwogZW51bSBjbGFzcyBVbmRvT3JSZWRvIDogYm9vbDsKIGVudW0g
Y2xhc3MgV2ViQ29udGVudE1vZGUgOiB1aW50OF90OwogCkBAIC0xODE5LDYgKzE4MjEsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheShTZWNvbmRzIGNh
cHR1cmVSZXBvcnRpbmdEZWxheSkgeyBtX21lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5ID0gY2Fw
dHVyZVJlcG9ydGluZ0RlbGF5OyB9CiAgICAgc2l6ZV90IHN1c3BlbmRNZWRpYVBsYXliYWNrQ291
bnRlcigpIHsgcmV0dXJuIG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyOyB9CiAKKyAgICB2
b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24oV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
RGVjaXNpb24pPiYmKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYs
IFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2
b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjg4OCw2ICsyODkyLDggQEAgcHJpdmF0ZToK
ICAgICBzaXplX3QgbV9zdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXIgeyAwIH07CiAKICAgICBP
cHRpb25hbDxXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24+IG1fbmV3UGFnZU5hdmlnYXRpb25B
ZENsaWNrQXR0cmlidXRpb247CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcj4gbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA3ZjgzMTViNzNjZjQyOTAzZjI2N2ExNDQxYjRjNjgy
NGZlNWJmODg5Li5jZmVhMjhjN2Q2ZWMzMjE3NjkxOTUzMTcwM2JiNzU1MTk3NzkzZmRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTM3LDYgKzM3
LDcgQEAKICNpbmNsdWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9j
ZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCisjaW5jbHVk
ZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNwZWVj
aFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgog
I2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKQEAgLTE3MTMsNyArMTcxNCwxOSBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXJJZGVudAogewogICAgIGF1dG8gc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIg
PSBtX3NwZWVjaFJlY29nbml0aW9uU2VydmVyTWFwLmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsK
ICAgICBBU1NFUlQoc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXNOZXdFbnRyeSk7Ci0gICAgc3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmllcik7Cisg
ICAgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmll
ciwgW2lkZW50aWZpZXIsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKENsaWVudE9yaWdp
biYmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25EZWNpc2lvbik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGF1dG8qIHBhZ2UgOiB3
ZWFrVGhpcy0+cGFnZXMoKSkgeworICAgICAgICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+d2ViUGFn
ZUlEKCkgPT0gaWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgIHBhZ2UtPnJlcXVlc3RTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb24oV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgIH0pOwogICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
aWRlbnRpZmllciwgKnNwZWVjaFJlY29nbml0aW9uU2VydmVyLml0ZXJhdG9yLT52YWx1ZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGMwMjc0OTRiNzNhY2NlYzVlZmQ4MWM2OTRkM2E4NTNiNGVkZWYwY2EuLmM4ZDY4ODk4MWU1
M2JjYzY0M2NjZTk3Njg3MWZhNGI4NjM0NGQ0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM3NCw2ICsxMzc0LDcgQEAKIAkJOTMz
RTgzNTUyM0EwN0MwNjAwREVGMjg5IC8qIFdlYklEQlNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzRTgzNTMyM0EwN0JGODAwREVGMjg5IC8q
IFdlYklEQlNlcnZlci5oICovOyB9OwogCQk5MzNFODM1QTIzQTFBRTI4MDBERUYyODkgLyogV2Vi
SURCU2VydmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzM0U4MzU5MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdl
cy5oICovOyB9OwogCQk5MzNFODM1QjIzQTFCNzUwMDBERUYyODkgLyogV2ViSURCU2VydmVyTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzM0U4MzU4MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OworCQk5MzQyNTg5MDI1NTVEREM2MDA1OUVFREQgLyogTWVkaWFQZXJt
aXNzaW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzQyNTg4RTI1NTVEQzQ3MDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0
aWVzLmggKi87IH07CiAJCTkzNEI3MjQ0MTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJ
dGVtVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzNEI3MjQzMTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzU2RjJEQzIx
NTJCNkI1MDBFNkQ1REYgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTMwMjFGNDc5M0IyMDBEQ0RDMEEg
LyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmggKi87IH07CiAJCTkzNTZGMkREMjE1MkI2RjYwMEU2
RDVERiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQkEwNEUwMjE1MUFERjQwMDdGNDU1RiAvKiBXZWJTV1Nl
cnZlckNvbm5lY3Rpb24uaCAqLzsgfTsKQEAgLTE0MDgsNiArMTQwOSw5IEBACiAJCTkzRDZCNzg3
MjU0Q0NEOEMwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3
ODYyNTRDQ0Q4QjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3Nh
Z2VzLmggKi87IH07CiAJCTkzRDZCNzg4MjU0Q0NEOTQwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzdFMjU0Q0NBQkIwMDU4REQzQSAvKiBXZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKIAkJOTNE
NkI3OEEyNTRDRDQzRTAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0Q2Qjc3RDI1NENDQUJCMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTNENkI3QjQyNTUyNjhENTAw
NThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0FGMjU1MjY4QTEwMDU4
REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi87IH07CisJCTkz
RDZCN0I1MjU1MjY4RDcwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2
QjdCMjI1NTI2OEEyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
ci5oICovOyB9OworCQk5M0Q2QjdCOTI1NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVz
dFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y1NDlCNDFFMzE3NEI3
MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBX
S1NuYXBzaG90Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1
YmxpYywgKTsgfTsgfTsKIAkJOTUwRjI4ODAyNTI0MTRFQTAwQjc0RjFDIC8qIFdLTW91c2VEZXZp
Y2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTUwRjI4N0UyNTI0MTRFOTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oICov
OyB9OwpAQCAtNDQ2OCw2ICs0NDcyLDggQEAKIAkJOTMzRTgzNTcyM0ExQTg3MjAwREVGMjg5IC8q
IFdlYklEQlNlcnZlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJREJT
ZXJ2ZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzM0U4MzU4
MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSURCU2VydmVyTWVzc2FnZVJlY2Vp
dmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSURCU2VydmVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTMz
RTgzNTkyM0ExQURGNTAwREVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYklEQlNlcnZlck1lc3NhZ2VzLmg7IHBhdGggPSBE
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklEQlNlcnZlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTkzNDI1ODhFMjU1NURDNDcwMDU5RUVERCAvKiBN
ZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQZXJtaXNzaW9u
VXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNDI1ODhGMjU1NURD
QTUwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzNEI3MjQzMTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlw
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tBY3Rpb25NZW51SXRlbVR5
cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUVFQjk1MTI3NzYxNkQwMDMz
MjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzNUVFQjk2MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJh
Y2tGb3J3YXJkTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDUyOCw2
ICs0NTM0LDEyIEBACiAJCTkzRDZCNzgwMjU0Q0NBQkMwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25p
dGlvblNlcnZlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNw
ZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNENkI3ODEyNTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3ODYyNTRDQ0Q4QjAwNThERDNBIC8qIFdlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjAyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjMyNTUyNjhCRjAwNThERDNBIC8qIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjcyNTUzNEExMTAwNThERDNB
IC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdCODI1NTM0QTEyMDA1OERE
M0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNkE0RUQxQkM1
REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjUxRTMxNzREQTAwMEU3
MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02NDU4LDYgKzY0NzAsOCBAQAogCQkJCTdBODIxRjREMUUyRjY3
OUUwMDYwNDU3NyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0gKi8sCiAJ
CQkJQTFERjYzMTExOEUwQjdDODAwM0EzRTJBIC8qIExlZ2FjeURvd25sb2FkQ2xpZW50LmggKi8s
CiAJCQkJQTFERjYzMTAxOEUwQjdDODAwM0EzRTJBIC8qIExlZ2FjeURvd25sb2FkQ2xpZW50Lm1t
ICovLAorCQkJCTkzNDI1ODhFMjU1NURDNDcwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGls
aXRpZXMuaCAqLywKKwkJCQk5MzQyNTg4RjI1NTVEQ0E1MDA1OUVFREQgLyogTWVkaWFQZXJtaXNz
aW9uVXRpbGl0aWVzLm1tICovLAogCQkJCTQxMTI4NkVGMjFDOEE5MEMwMDNBODU1MCAvKiBNZWRp
YVV0aWxpdGllcy5oICovLAogCQkJCTQxMTI4NkYwMjFDOEE5MEQwMDNBODU1MCAvKiBNZWRpYVV0
aWxpdGllcy5tbSAqLywKIAkJCQkxQUJDM0RGNDE4OTlFNDM3MDA0RjA2MjYgLyogTmF2aWdhdGlv
blN0YXRlLmggKi8sCkBAIC02NDc0LDYgKzY0ODgsNyBAQAogCQkJCTVDQTk4NTRCMjEwQkVCNzMw
MDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gKi8sCiAJCQkJMUEwMDJENDcx
OTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oICovLAogCQkJCTFBMDAyRDQ2
MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcubW0gKi8sCisJCQkJOTNENkI3
QjMyNTUyNjhCRjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXJD
b2NvYS5tbSAqLywKIAkJCQkzMTU3MTM1QzIwNDBBOUIyMDA4NEY5Q0YgLyogU3lzdGVtUHJldmll
d0NvbnRyb2xsZXJDb2NvYS5tbSAqLywKIAkJCQkyRDBDRjY0QzIxRjJBODAzMDA3ODc1NjYgLyog
VGV4dENoZWNraW5nQ29udHJvbGxlci5oICovLAogCQkJCTJEMENGNjRCMjFGMkE4MDMwMDc4NzU2
NiAvKiBUZXh0Q2hlY2tpbmdDb250cm9sbGVyLm1tICovLApAQCAtOTIwNyw2ICs5MjIyLDkgQEAK
IAkJCQlCQzExMUIwODExMkY1RTNDMDAzMzdCQUIgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAg
Ki8sCiAJCQkJMUEzMDA2NkMxMTEwRjRGNzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIu
aCAqLywKIAkJCQk1Q0E5ODU0OTIxMEJFQjVBMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2Fybmlu
Zy5oICovLAorCQkJCTkzRDZCN0IwMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyLmNwcCAqLywKKwkJCQk5M0Q2QjdCMjI1NTI2OEEyMDA1OEREM0Eg
LyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovLAorCQkJCTkzRDZCN0FG
MjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Lmgg
Ki8sCiAJCQkJOTNENkI3NkIyNTRCODk1ODAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyLmNwcCAqLywKIAkJCQk5M0Q2Qjc2QzI1NEI4OTU4MDA1OEREM0EgLyogU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaCAqLywKIAkJCQk5M0Q2Qjc3QTI1NEM5ODREMDA1OEREM0EgLyogU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4gKi8sCkBAIC05NTQ3LDYgKzk1NjUsOCBAQAog
CQkJCTMzMzY3NjM5MTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmgg
Ki8sCiAJCQkJMUFERTQ2QjAxOTU0RUM2MTAwMEY3OTg1IC8qIFdLU2Vzc2lvblN0YXRlUmVmLmNw
cCAqLywKIAkJCQkxQURFNDZCMTE5NTRFQzYxMDAwRjc5ODUgLyogV0tTZXNzaW9uU3RhdGVSZWYu
aCAqLywKKwkJCQk5M0Q2QjdCODI1NTM0QTEyMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi8sCisJCQkJOTNENkI3QjcyNTUzNEExMTAwNThERDNB
IC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLywKIAkJCQk1MUY4
ODZBMzFGMkMyMTRBMDBDMTkzRUYgLyogV0tUZXN0aW5nU3VwcG9ydC5jcHAgKi8sCiAJCQkJNTFG
ODg2QTQxRjJDMjE0QTAwQzE5M0VGIC8qIFdLVGVzdGluZ1N1cHBvcnQuaCAqLywKIAkJCQkzMTQ4
ODhGRTFEOTFCMTFEMDAzNzcwNDIgLyogV0tUZXh0Q2hlY2tlci5jcHAgKi8sCkBAIC0xMTE0NCw2
ICsxMTE2NCw3IEBACiAJCQkJMUE2RDg2QzIxREY3NTI2NTAwNzc0NUU4IC8qIE1hY2hNZXNzYWdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0M1NkY3OTExNTk5NTdEMDAxQ0NBRjkgLyogTWFjaFBv
cnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjRCNUYzMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNo
VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzQyNTg5MDI1NTVEREM2MDA1OUVFREQg
LyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0UxOUVG
QzIzRDQwMUYxMDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3RTE5RUZEMjNENDAxRjEwMDk0RkZCNCAvKiBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOTMz
REVGMTk2NUVCMzEwMDhBQzNFQSAvKiBNZW51VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAg
LTExMzg1LDYgKzExNDA2LDggQEAKIAkJCQk1N0JCRUE2RDIyQkMwQkZFMDAyNzM5OTUgLyogU09B
dXRob3JpemF0aW9uTG9hZFBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc2Q0E5RDcyMkI4
NjIxODAwMzAxNDNDIC8qIFNPQXV0aG9yaXphdGlvbk5TVVJMRXh0cmFzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1N0ZEMzE4NTIyQjM1MTY5MDA4RDBFOEIgLyogU09BdXRob3JpemF0aW9uU2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENkI3QjUyNTUyNjhENzAwNThERDNBIC8qIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDZC
N0I0MjU1MjY4RDUwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyogU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzg0MjU0Q0NEMEUw
MDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5M0Q2Qjc4NTI1NENDRDQzMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXJNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTE5OTgsNiArMTIwMjEsNyBA
QAogCQkJCTUxM0U0NjJEMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2Vy
RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjU0OUI0MUUzMTc0QjcwMDBFNzIzOSAv
KiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODcy
MkIzNTE3MDAwOEQwRThCIC8qIFdLU09BdXRob3JpemF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTkzRDZCN0I5MjU1MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTc4RkYzMjIyNDE5MTk2
MDA5NjQ4M0UgLyogV0tTdG9yYWdlQWNjZXNzQWxlcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NDA3NjA2MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM0MDc2MUExMjRGRjAzNzAwNjhGMjBBIC8qIFdLU3RyaW5nQ0YuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcAppbmRleCBl
YTE2YjJlZDc2NjViMzJiZDM5Y2FjNDYzMmI0YjlhNTFhNzVkNmIxLi4zZjM1MzE5NGEzMmMzZTY3
OWJjYTI5ZmJlYTg1MDMxYzkyMWU0ZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uLmNwcApAQCAtNTksMTAgKzU5LDkgQEAgdm9pZCBXZWJTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb246OnJlZ2lzdGVyQ2xpZW50KFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ28KICAgICBtX2NsaWVudE1hcC5hZGQoY2xpZW50LmlkZW50aWZpZXIoKSwgbWFrZVdl
YWtQdHIoY2xpZW50KSk7CiB9CiAKLXZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
OjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyIGNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3Vz
LCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpCit2b2lkIFdl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0
X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4p
CiB7Ci0gICAgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyBpbmZvIHsgY2xp
ZW50SWRlbnRpZmllciwgbGFuZywgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVy
bmF0aXZlcyB9OwotICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpT
dGFydChpbmZvKSk7CisgICAgc2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6
OlN0YXJ0KGNsaWVudElkZW50aWZpZXIsIGxhbmcsIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRz
LCBtYXhBbHRlcm5hdGl2ZXMsIFdURk1vdmUoY2xpZW50T3JpZ2luKSkpOwogfQogCiB2b2lkIFdl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCkBAIC04MCw3
ICs3OSw3IEBAIHZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjppbnZhbGlkYXRl
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjCiAgICAgc2VuZChNZXNzYWdlczo6U3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI6OkludmFsaWRhdGUoY2xpZW50SWRlbnRpZmllcikpOwogfQog
Ci12b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVVwZGF0ZShj
b25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYgdXBkYXRlKQordm9pZCBXZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OmRpZFJlY2VpdmVVcGRhdGUoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGUmJiB1cGRhdGUpCiB7CiAgICAgYXV0byBjbGllbnRJZGVudGlm
aWVyID0gdXBkYXRlLmNsaWVudElkZW50aWZpZXIoKTsKICAgICBpZiAoIW1fY2xpZW50TWFwLmNv
bnRhaW5zKGNsaWVudElkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbi5oCmluZGV4IDI4ZGJkMTk3Y2IzZjc5OGZjNzYzMTk5ZWJiMTJkZTEzYWVk
NzUxYjEuLjQ0M2IwNGYxY2NhYWIwYTBlNmFhNTM4MzFlOTg1ZDEwYTZhNTMzMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKQEAgLTQzLDExICs0Mywx
MSBAQCBjbGFzcyBXZWJQYWdlOwogCiB1c2luZyBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25J
ZGVudGlmaWVyID0gV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI7CiAKLWNsYXNzIFdlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNz
YWdlU2VuZGVyIHsKK2NsYXNzIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24sIHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbj4gY3JlYXRlKFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgdm9pZCBzdGFydChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWlu
dDY0X3QgbWF4QWx0ZXJuYXRpdmVzKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhB
bHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmKSBmaW5hbDsKICAgICB2b2lkIHN0
b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikg
ZmluYWw7CiAgICAgdm9pZCBhYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyKSBmaW5hbDsKIApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgog
ICAgIH5XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgcmVnaXN0
ZXJDbGllbnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50JikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYpIGZpbmFsOwogICAgIHZvaWQgaW52YWxpZGF0ZShX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKIAog
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDNjNDEyMjFhZWUyMzk1NjU2ZDUwYzYyNTljMDkyYmEw
ODYxZDk4NDkuLjk5NzNkYWM2ZTlmNGExZjdkOGI4M2ZmNGFjNWVlMTBmNTg0OWJlNzMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NyBAQAorMjAyMC0xMS0wOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3IgU3BlZWNoUmVjb2duaXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQ3
NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMjI2Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlz
dDoKKyAgICAgICAgKiBNb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBs
aXN0OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0SXNTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpjb21wbGV0ZVNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrKToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3Jh
bnRlZCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9w
dGlvbnMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lz
dGVudFZhbHVlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAg
ICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSk6CisKIDIwMjAtMTEtMDkgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtidWlsZC53ZWJraXQub3JnXSBEbyBub3QgcHJpbnQgbWFz
dGVyIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiBidWlsZCBzdGVwcwpkaWZmIC0tZ2l0IGEvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5m
by5wbGlzdAppbmRleCA0ZTJiMWY0ODE5YWQ1MTAzZTRjZjE3MDliN2M1M2E2NmU4YjM5NWU1Li4z
M2EzY2ExYmU3MzUwOGUxZmZjYjAyOTU3Yzg2NGU4NTkyZGFhYTRlIDEwMDY0NAotLS0gYS9Ub29s
cy9NaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMv
SW5mby5wbGlzdApAQCAtNTIsOSArNTIsMTEgQEAKIAkJCTxzdHJpbmc+RWRpdG9yPC9zdHJpbmc+
CiAJCTwvZGljdD4KIAk8L2FycmF5PgotICAgIDxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9u
PC9rZXk+Ci0gICAgPHN0cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVz
PC9zdHJpbmc+Ci0gICAgPGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+Ci0g
ICAgPHN0cmluZz5SZWNvcmRpbmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+
CisJPGtleT5OU0NhbWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGlu
ZyB2aWRlbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TTWljcm9waG9u
ZVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBiZWhh
bGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TU3BlZWNoUmVjb2duaXRpb25Vc2FnZURl
c2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvZ25pemluZyBjYXB0dXJlZCBhdWRpbyBvbiBi
ZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQg
YS9Ub29scy9Nb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBsaXN0IGIv
VG9vbHMvTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5mby5wbGlzdAppbmRl
eCAyZDFiYzU4MmZiZTc2NWNmZGM0MTA1ZWZlOWVjYzFkODMyMGNjOTU5Li41Mzg3YjM3NDlhNDc0
ZmUwYjNkOWM2MDk1Y2IyODgxN2I4ZjkyMzBhIDEwMDY0NAotLS0gYS9Ub29scy9Nb2JpbGVNaW5p
QnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBsaXN0CisrKyBiL1Rvb2xzL01vYmlsZU1p
bmlCcm93c2VyL01vYmlsZU1pbmlCcm93c2VyL0luZm8ucGxpc3QKQEAgLTU0LDkgKzU0LDExIEBA
CiAJCTxrZXk+TlNBbGxvd3NBcmJpdHJhcnlMb2Fkc0luV2ViQ29udGVudDwva2V5PgogCQk8dHJ1
ZS8+CiAJPC9kaWN0PgotICAgIDxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uPC9rZXk+Ci0g
ICAgPHN0cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+
Ci0gICAgPGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+Ci0gICAgPHN0cmlu
Zz5SZWNvcmRpbmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5O
U0NhbWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyB2aWRlbyBv
biBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TTWljcm9waG9uZVVzYWdlRGVz
Y3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vi
c2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TU3BlZWNoUmVjb2duaXRpb25Vc2FnZURlc2NyaXB0aW9u
PC9rZXk+CisJPHN0cmluZz5SZWNvZ25pemluZyBjYXB0dXJlZCBhdWRpbyBvbiBiZWhhbGYgb2Yg
d2Vic2l0ZXM8L3N0cmluZz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbAppbmRleCA1NTE2MmZmMzQzZDI1ZjY5MDZjMzkyNzZmZDVhODkxZWRmMjliODY5Li42ZmRj
ZTIzZmI4NGQzMGJjY2Q1OTc0YWI3MjAzMzFjOTI5OTg0Y2NiIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKQEAgLTQwMyw0ICs0MDMsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAg
dW5kZWZpbmVkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbk92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJv
b2xlYW4gdmFsdWUpOwogICAgIHVuZGVmaW5lZCBzZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJz
aW9uVVJMRm9yVGVzdGluZyhET01TdHJpbmcgdXJsKTsKICAgICB1bmRlZmluZWQgbWFya0FkQ2xp
Y2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CisKKyAgICAvLyBTcGVlY2hSZWNv
Z25pdGlvbgorICAgIHVuZGVmaW5lZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdy
YW50ZWQoYm9vbGVhbiB2YWx1ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZGZkMDFhMzJmMzExZTEyNDRh
YTc4NzliNDM3NTk3YWZhYzNlZmQ5ZS4uYjE4YWIyNzYzNzYzNjAyZWY3ZjY2YjM5MWJhNjIzNGU2
NDI3YTkxNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yMDY5LDYgKzIwNjksMTEgQEAgdm9pZCBUZXN0UnVubmVy
OjpkaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFjaygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxs
YmFjayhEaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFja0lEKTsKIH0KIAordm9pZCBUZXN0UnVu
bmVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCBncmFudGVk
KQoreworICAgIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlKCJzZXRJc1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkdyYW50ZWQiLCBncmFudGVkKTsKK30KKwogQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAwYmQzYTA5ZTMy
ZDcxYjM1MTZlNGY4ZTA1YmVhMjJhZjk5NGIxZDIzLi45NzkzYzc3N2FkMzhhYWQzNGNmNTI1ZDEy
Y2E4N2RlYTMxOWEyZDNlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNTE1LDYgKzUxNSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKEpTU3RyaW5n
UmVmKTsKICAgICB2b2lkIG1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGlu
ZygpOwogCisgICAgdm9pZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQo
Ym9vbCk7CisKIHByaXZhdGU6CiAgICAgVGVzdFJ1bm5lcigpOwogCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDZkYmM2ODRlODg1MGFmZTA0NTkxMzlmYmUx
OWQ1ZTVjY2RiNzI2ZTcuLjFjN2EwMWY4NjZkOGUzNGFiM2YzNWE2ZjdlOWU5ZjNhM2FlMjQ4Yzkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC02Miw2ICs2
Miw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8
V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW5S
ZWYuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjay5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1RleHRDaGVja2VyLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0L1dLVVJMLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVm
Lmg+CkBAIC0yOTcsNiArMjk4LDIxIEBAIHN0YXRpYyB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9u
UGFuZWwoKQogewogfQogCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBjYWxsYmFjaykKK3sKKyAgICBU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29tcGxldGVTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DaGVjayhjYWxsYmFjayk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNvbXBsZXRl
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2soV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFja1JlZiBjYWxsYmFjaykKK3sKKyAgICBXS1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrQ29tcGxldGUoY2FsbGJhY2ssIG1faXNTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25HcmFudGVkKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0SXNTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wgZ3JhbnRlZCkKK3sKKyAgICBtX2lzU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCA9IGdyYW50ZWQ7Cit9CisKIFdLUGFnZVJl
ZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFdLUGFnZVJlZiwgV0tQYWdlQ29uZmln
dXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlv
bkFjdGlvbiwgV0tXaW5kb3dGZWF0dXJlc1JlZiB3aW5kb3dGZWF0dXJlcywgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbykKIHsKICAgICBQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcgPSBzdGF0aWNf
Y2FzdDxQbGF0Zm9ybVdlYlZpZXcqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CkBA
IC02NTAsOCArNjY2LDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhP
cHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogICAgIFdLSFRUUENvb2tpZVN0b3Jl
RGVsZXRlQWxsQ29va2llcyhXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29va2llU3RvcmUod2Vi
c2l0ZURhdGFTdG9yZSgpKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAKICAgICBwbGF0Zm9ybUNyZWF0
ZVdlYlZpZXcoY29uZmlndXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7Ci0gICAgV0tQYWdlVUlDbGll
bnRWMTQgcGFnZVVJQ2xpZW50ID0gewotICAgICAgICB7IDE0LCBtX21haW5XZWJWaWV3LmdldCgp
IH0sCisgICAgV0tQYWdlVUlDbGllbnRWMTUgcGFnZVVJQ2xpZW50ID0geworICAgICAgICB7IDE1
LCBtX21haW5XZWJWaWV3LmdldCgpIH0sCiAgICAgICAgIDAsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVw
cmVjYXRlZEZvclVzZVdpdGhWMAogICAgICAgICAwLCAvLyBzaG93UGFnZQogICAgICAgICAwLCAv
LyBjbG9zZQpAQCAtNzI0LDcgKzc0MCw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdl
YlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKICAgICAgICAgMCwg
Ly8gZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlCiAgICAgICAg
IDAsIC8vIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybQogICAgICAgICBzaG91bGRBbGxvd0Rl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzLAotICAgICAgICBydW5XZWJBdXRoZW50aWNh
dGlvblBhbmVsCisgICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwsCisgICAgICAgIGRl
Y2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QKICAgICB9Owog
ICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChtX21haW5XZWJWaWV3LT5wYWdlKCksICZwYWdlVUlD
bGllbnQuYmFzZSk7CiAKQEAgLTEwNTMsNiArMTA3MCw4IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6
OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMs
IFJlCiAgICAgbV9zZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQgPSAwOwog
ICAgIG1fc2hvdWxkRGlzbWlzc0phdmFTY3JpcHRBbGVydHNBc3luY2hyb25vdXNseSA9IGZhbHNl
OwogCisgICAgc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKHRydWUpOwor
CiAgICAgYXV0byBsb2FkQWJvdXRCbGFuayA9IFt0aGlzXSB7CiAgICAgICAgIG1fZG9uZVJlc2V0
dGluZyA9IGZhbHNlOwogICAgICAgICBXS1BhZ2VMb2FkVVJMKG1fbWFpbldlYlZpZXctPnBhZ2Uo
KSwgYmxhbmtVUkwoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5k
ZXggMzNiNjQ5NGFjNjI0NGI5MmZjYjc4MDlhNThkNzIwM2M3YzEyNThhOC4uMDVjOGY4YmRhYTk1
YWQ4N2U0MzllMzA5M2I4YTRmMzRmNWY4MmM1NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaApAQCAtMzUxLDYgKzM1MSw5IEBAIHB1YmxpYzoKIAogICAgIFdLVVJMUmVm
IGN1cnJlbnRUZXN0VVJMKCkgY29uc3Q7CiAKKyAgICB2b2lkIGNvbXBsZXRlU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2hlY2soV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
a1JlZik7CisgICAgdm9pZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQo
Ym9vbCk7CisKIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJl
Zj4gZ2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9ucyYpOwogICAgIFdL
UmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlQ29udGV4dENvbmZp
Z3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnMmKSBjb25zdDsKQEAgLTY0MCw2ICs2NDMsOCBAQCBw
cml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgbV9oYXNTZXRBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIgeyBmYWxzZSB9OwogI2VuZGlmCisKKyAgICBib29sIG1faXNTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRl
eCAxNGMwNGVkMWZhOTM5NGY1NzJmNjQ5YTkxYjQ3ZWZiMjA2ZWY4NTRlLi41YjY2NjE3YmVlMDE2
YjY3NTFjN2JiMmJjZTZiYjhiYWU0NGViMGEwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcApAQCAtMTM0NSw2ICsxMzQ1LDExIEBAIFdLUmV0YWluUHRyPFdLVHlw
ZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5q
ZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAic2V0SXNTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25HcmFudGVkIikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChib29sZWFuVmFsdWUo
bWVzc2FnZUJvZHkpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDVlN2U4
NGM2YTllMzYwZWVkOTY4OGRmY2NmMTlmNjJlODA1ODFiMy4uMjZiYWMzNTQ4NDU3OWFhZGM4OGQ5
MGY2OWRjYjQ2ZTIyYWFkYTMxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTExLTA5ICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNp
YyBwZXJtaXNzaW9uIGNoZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc2CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83MTIyMjYzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC9zcGVlY2hyZWNv
Z25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTExLTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5leHBvc2Ugb2Jzb2xldGUg
SFRNTEFwcGxldEVsZW1lbnQgaW50ZXJmYWNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiYjMyMTlk
YWE1MDk5MjBjYjQyMDk3NjFmZDYyNTE4MTBiMTJmODM0Li5mOTdjYjYyYTE2YzM4YmJmOTlmZDAy
YmRlMDUzNWQ0NDkyNGM5YmMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE3Nyw2ICsxNzcsNyBA
QCBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jh
c2guaHRtbCBbIFNraXAgXQogc3RvcmFnZS9pbmRleGVkZGIvSURCT2JqZWN0LWxlYWsuaHRtbCBb
IFNraXAgXQogZmFzdC9mb3Jtcy9jYWxsLXRleHQtZGlkLWNoYW5nZS1pbi10ZXh0LWZpZWxkLXdo
ZW4tdHlwaW5nLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS8gWyBTa2lwIF0KK2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1s
IFsgU2tpcCBdCiAKICMgT25seSBwYXJ0aWFsIHN1cHBvcnQgb24gQ29jb2EgcGxhdGZvcm1zLgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zcGVlY2gtYXBpLyBbIFNraXAgXQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVy
cm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVy
bWlzc2lvbi1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUzZTc5NGRhMGE5YzhjODI4
NWQyYmEzOTZmNDllNDVjYThjMTc1MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMyBAQAorVmVyaWZ5IHRoYXQgZXJyb3IgZXZlbnQgaXMgZmlyZWQgd2hlbiBwZXJtaXNz
aW9uIGlzIGRlbmllZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgcmVj
b2duaXRpb24gPSBuZXcgU3BlZWNoUmVjb2duaXRpb24oKSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KK1BBU1MgcmVjb2duaXRpb24uc3RhcnQoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1MgZXZlbnQuZXJyb3IgaXMgIm5vdC1hbGxvd2VkIgorUEFTUyBldmVudC5tZXNzYWdlIGlzICJQ
ZXJtaXNzaW9uIGNoZWNrIGZhaWxlZCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJl
Y29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
cmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyZDAzMzMwZTIw
MzkwNDEwNjg3ZDU3ZTZjMTY3OWZhZjY4Y2I4NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbApAQCAtMCww
ICsxLDI0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCJWZXJpZnkgdGhhdCBlcnJvciBldmVudCBpcyBmaXJlZCB3aGVuIHBlcm1pc3Npb24gaXMg
ZGVuaWVkLiIpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICBqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKyAgICB0ZXN0UnVubmVyLnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
R3JhbnRlZChmYWxzZSk7Cit9CisKK3Nob3VsZE5vdFRocm93KCJyZWNvZ25pdGlvbiA9IG5ldyBT
cGVlY2hSZWNvZ25pdGlvbigpIik7CitzaG91bGROb3RUaHJvdygicmVjb2duaXRpb24uc3RhcnQo
KSIpOworcmVjb2duaXRpb24ub25lcnJvciA9IChldmVudCkgPT4geworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZXZlbnQuZXJyb3IiLCAibm90LWFsbG93ZWQiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImV2ZW50Lm1lc3NhZ2UiLCAiUGVybWlzc2lvbiBjaGVjayBmYWlsZWQiKTsK
KworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDhkN2Q0OTBlYjMyODRjMzA5ZGNjZDJhMGUxODZkOTgwNDM2Mjdl
OTQuLmE3NDE5ODBlNWIyZTViMGIxYTBlOTE2OWRhYTlhNGI1MjczMGYwNjggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCkBAIC04MDMsNCArODAzLDUgQEAgaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZWQtcG9ydC1kZWxheS5odG1sIFsgUGFz
cyBdCiAKICMgV2ViS2l0MiBvbmx5LgoganMvdGhyb3ctbGFyZ2Utc3RyaW5nLW9vbS5odG1sIFsg
UGFzcyBdCitmYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbCBbIFBh
c3MgXQogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbnRlci13aGlsZS1leGl0aW5nLmh0bWwgWyBQ
YXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413766</attachid>
            <date>2020-11-10 20:36:07 -0800</date>
            <delta_ts>2020-11-10 20:48:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201110203604.patch</filename>
            <type>text/plain</type>
            <size>135950</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRiY2QyNGY5YjcxNzVhZjUwNzhhNzJj
ZDA1MGJiNzJmYTI1YzMwNWQuLjkzMzVjYThmZTkwZDM1YjQ2YTUzZThjNTkxNDBjZTgwOGM0MTJm
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMTEtMTAgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1Bs
YXRmb3JtSGF2ZS5oOgorCiAyMDIwLTExLTA5ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2OTYwMy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBiZWIzYTZiNzJiYjJiZDUyMDZhNGQyNGM0OWM3MTJiNTA3YjdjZjdlLi41NzZkMDUyYzcwNGUw
ZTAwNzVmMTkwZDNmMDJhOTk5OTk2MTAxY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAK
KzIwMjAtMTEtMTAgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb246OnN0YXJ0UmVjb2du
aXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OmNyZWF0
ZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OmNs
aWVudE9yaWdpbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0SW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mbzo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uUmVxdWVzdEluZm86OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZTo6ZXJyb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGU6OnJlc3VsdCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25VcGRhdGUuaDoKKyAgICAgICAgKiBwYWdlL0R1bW15U3BlZWNoUmVjb2duaXRp
b25Qcm92aWRlci5oOgorCiAyMDIwLTExLTA5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQ29udHJvbCB0aGUgbGlmZSBjeWNsZSBv
ZiB0aGUgcGxhdGZvcm0gaW1hZ2UgYnkgYSBuZXcgY2xhc3MgbmFtZWQgTmF0aXZlSW1hZ2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggODlkZjNjZGY2ZjdmNTcxYWQzOTIyYzI0MjM3YzA2NzRmYjE3ZGM2My4uODBiN2Zk
YWIxMDg2MWI1NTM4NGE5ODRlM2VmNTEwZWM5ZTU4NmJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MDQgQEAKKzIwMjAtMTEtMTAgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0
NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyLCB3aGljaCBjaGVja3MgYW5kIHJlcXVlc3RzIHNwZWVjaCByZWNv
Z25pdGlvbiBwZXJtaXNzaW9ucyBiZWZvcmUgCisgICAgICAgIHdlIGFjdHVhbGx5IHN0YXJ0IGNh
cHR1cmluZyBhdWRpbyBhbmQgcGVyZm9ybSByZWNvZ25pdGlvbi4gU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlciBpcyBwZXItcGFnZSwgbGlrZQorICAgICAgICBTcGVlY2hSZWNvZ25p
dGlvblNlcnZlci4gVGhlIGNoZWNrcyBpbmNsdWRlOgorICAgICAgICAxLiBTYW5kYm94IHJlcXVp
cmVtZW50IGZvciBtaWNyb3Bob25lCisgICAgICAgIDIuIFRDQyBjaGVjayBmb3IgbWljcm9waG9u
ZQorICAgICAgICAzLiBUQ0MgY2hlY2sgZm9yIFNGU3BlZWNoUmVjb2duaXplcgorICAgICAgICA0
LiBVc2VyIHBlcm1pc3Npb24gb24gc3BlZWNoIHJlY29nbml0aW9uIGZvciBvcmlnaW4KKworICAg
ICAgICBBZGQgYSBkZWxlZ2F0ZSBmdW5jdGlvbiBmb3IgcmVxdWVzdGluZyB1c2VyIHBlcm1pc3Np
b24uIEJ5IGRlZmF1bHQsIHVzZXIgcGVybWlzc2lvbiBpcyBub3QgZ3JhbnRlZC4KKworICAgICAg
ICBUZXN0OiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbAorICAg
ICAgICBBUEkgdGVzdDogV2ViS2l0Mi5TcGVlY2hSZWNvZ25pdGlvblVzZXJQZXJtaXNzaW9uUGVy
c2lzdGVuY2UKKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU2hhcmVkL0FQ
SS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpkZWNp
ZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcDogQWRkZWQuCisg
ICAgICAgIChXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKToK
KyAgICAgICAgKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tDb21wbGV0ZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZl
cmVuY2VzLm1tOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9zcGVlY2hSZWNvZ25pdGlvbkVu
YWJsZWRdKToKKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBfc2V0U3BlZWNoUmVjb2duaXRpb25F
bmFibGVkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1By
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKToKKyAgICAg
ICAgKFdlYktpdDo6Y2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yVHlwZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZUF1ZGlvKToKKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZVZp
ZGVvKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk6OnJlcXVlc3RTeXN0ZW1WYWxpZGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6cmVxdWVz
dEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9N
ZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmguCisgICAgICAgICogVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6On5TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cjo6cmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OnN0YXJ0TmV4dFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydFByb2Nlc3NpbmdSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y29udGludWVQ
cm9jZXNzaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVudFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0
OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja01pY3JvcGhvbmVBY2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
OjpjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RTcGVlY2hSZWNvZ25p
dGlvblNlcnZpY2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0TWljcm9waG9uZUFjY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RVc2VyUGVybWlz
c2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6b3JpZ2luIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6Y29tcGxldGUpOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVy
OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29n
bml0aW9uU2VydmVyOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
U2VydmVyOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVy
OjpyZW1vdmVQZW5kaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjpzdGFydFBvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcjo6Y29udGludWVQcm9jZXNzaW5nUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzZW5kVXBkYXRlKToKKyAgICAgICAg
KFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0b3BQcm9jZXNzaW5nUmVxdWVzdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRpZENoYW5nZU1haW5Eb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVz
dFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bjo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b246OmRpZFJlY2VpdmVVcGRhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisKIDIwMjAtMTEtMDkgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBD
b250cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFz
cyBuYW1lZCBOYXRpdmVJbWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1I
YXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCAyMDNlOGVjN2Q2MTVl
ODc1ZjNiMzE0NWYyZjhiZGQxZTViN2IwODNkLi45M2U3YjQ1Mzg1YWU4ODcwNThlZDZmNGQwNmVk
NzUyZWYyYjE4MDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtNzU1LDMgKzc1NSwxMSBAQAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZP
Uk0oQVBQTEVUVikKICNkZWZpbmUgSEFWRV9DTkNPTlRBQ1RQSUNLRVJWSUVXQ09OVFJPTExFUiAx
CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpIHx8
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
NTAwKQorI2RlZmluZSBIQVZFX1NQRUVDSFJFQ09HTklaRVIgMQorI2VuZGlmCisKKyNpZiBQTEFU
Rk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSB8fCBQTEFURk9STShNQUMpCisjZGVm
aW5lIEhBVkVfQVZDQVBUVVJFREVWSUNFIDEKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCmluZGV4IDUxYTMyY2RhYWNh
YTFlZDAxMTQyNzY3ZDIyZTMwMjUyNmRlYmY1OTUuLmYxMTdjMWZiMWI1YmQwNGFlNzU1MjU2NWZi
YWE4ODkxYzVjMWFlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbi5oIgogCisjaW5jbHVkZSAiQ2xpZW50
T3JpZ2luLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNjksNyArNzAsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBT
cGVlY2hSZWNvZ25pdGlvbjo6c3RhcnRSZWNvZ25pdGlvbigpCiAgICAgaWYgKCFtX2Nvbm5lY3Rp
b24pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJSZWNvZ25pdGlv
biBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgY29ubmVjdGlvbiJfcyB9OwogCi0gICAgbV9jb25uZWN0
aW9uLT5zdGFydChpZGVudGlmaWVyKCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVyaW1S
ZXN1bHRzLCBtX21heEFsdGVybmF0aXZlcyk7CisgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2Fz
dDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgbV9jb25uZWN0aW9u
LT5zdGFydChpZGVudGlmaWVyKCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVyaW1SZXN1
bHRzLCBtX21heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2luIHsgZG9jdW1lbnQudG9wT3JpZ2lu
KCkuZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9KTsKICAgICBtX3N0
YXRlID0gU3RhdGU6OlN0YXJ0aW5nOwogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5oCmluZGV4IDNmZDJkMzNhY2EwMjA1MjYzNDA1OGQwZmI1NjUyZWI3MDA3ZmE1MmEuLjY5
ZWViYzI5M2Q1YjdkZTFlMzhjZWVhZDJhM2VlMzhmMDBkMWNhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5oCkBAIC0zMSwxNSArMzEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQ7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZTsKK3N0cnVjdCBDbGllbnRPcmlnaW47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bj4gewogcHVibGljOgogICAgIHZpcnR1YWwgflNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbigp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNsaWVudChTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0KFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9v
bCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2
ZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMs
IGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgQ2xpZW50T3Jp
Z2luJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcChTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KFNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShjb25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZSYmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
LmNwcAppbmRleCA0YTVlOGMxNjMwM2MxODY1YzJiMWZmY2U5YjU2ZWUyNjIwM2E3ZmM1Li5kM2Jk
N2E5NGE0MmI5ZDVlMDU5MjBjNWJmZTdkYmM0NGE5MTg4N2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5j
cHAKQEAgLTI4LDExICsyOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdD4gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpjcmVhdGUoU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmIHJlcXVlc3RJbmZvKQotewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3RJbmZv
KSkpOwotfQotCiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OlNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdChTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYgcmVxdWVzdEluZm8pCiAgICAgOiBt
X2luZm8oV1RGTW92ZShyZXF1ZXN0SW5mbykpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCmluZGV4IDVjZWVh
MDFjNzM4NjU1NmQ0MjUxZjhjOGI5NWMzMTI0YmFmYzYwMTIuLjlhYWRlNjE3MWUwNjJmNWE4Y2Mz
YTE2Mjg5Mjk5NDk5ZGZkOWQwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCkBAIC0zMCwxOSArMzAsMTkg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IHsKK2NsYXNz
IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3Q+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dD4gY3JlYXRlKFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8mJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm8mJik7CiAKICAgICBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2luZm8uY2xpZW50
SWRlbnRpZmllcjsgfQogICAgIGNvbnN0IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1f
aW5mby5sYW5nOyB9CiAgICAgYm9vbCBjb250aW51b3VzKCkgY29uc3QgeyByZXR1cm4gbV9pbmZv
LmNvbnRpbnVvdXM7OyB9CiAgICAgYm9vbCBpbnRlcmltUmVzdWx0cygpIGNvbnN0IHsgcmV0dXJu
IG1faW5mby5pbnRlcmltUmVzdWx0czsgfQogICAgIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcygp
IGNvbnN0IHsgcmV0dXJuIG1faW5mby5tYXhBbHRlcm5hdGl2ZXM7IH0KKyAgICBjb25zdCBDbGll
bnRPcmlnaW4gY2xpZW50T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmNsaWVudE9yaWdp
bjsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdChT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYpOwotCiAgICAgU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mbyBtX2luZm87CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKaW5kZXggYWIx
ZTFhZTZlZjM4ODk4YzIxYTJhOWRmN2FmMWYwMDdlMjRiMTdkMC4uMWVmZTllMDY0NmU3NDdjYjU1
ZDdjY2IwZjdiMThmZjVlMGIzYzRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaApAQCAtMjUs
NiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgog
I2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsNiArMzYsNyBAQCBzdHJ1Y3QgU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0SW5mbyB7CiAgICAgYm9vbCBjb250aW51b3VzIHsgZmFsc2UgfTsKICAg
ICBib29sIGludGVyaW1SZXN1bHRzIHsgZmFsc2UgfTsKICAgICB1aW50NjRfdCBtYXhBbHRlcm5h
dGl2ZXMgeyAxIH07CisgICAgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbjsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0SW5mbz4gZGVjb2RlKERlY29kZXImKTsKQEAgLTQzLDcgKzQ1LDcgQEAgc3RydWN0IFNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdEluZm8gewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQg
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB7Ci0gICAgZW5jb2RlciA8PCBjbGllbnRJZGVudGlmaWVyIDw8IGxhbmcgPDwgY29udGlu
dW91cyA8PCBpbnRlcmltUmVzdWx0cyA8PCBtYXhBbHRlcm5hdGl2ZXM7CisgICAgZW5jb2RlciA8
PCBjbGllbnRJZGVudGlmaWVyIDw8IGxhbmcgPDwgY29udGludW91cyA8PCBpbnRlcmltUmVzdWx0
cyA8PCBtYXhBbHRlcm5hdGl2ZXMgPDwgY2xpZW50T3JpZ2luOwogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgpAQCAtNzQsMTIgKzc2LDE4IEBAIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm8+IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmRlY29kZShEZWNvCiAg
ICAgaWYgKCFtYXhBbHRlcm5hdGl2ZXMpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
KyAgICBPcHRpb25hbDxDbGllbnRPcmlnaW4+IGNsaWVudE9yaWdpbjsKKyAgICBkZWNvZGVyID4+
IGNsaWVudE9yaWdpbjsKKyAgICBpZiAoIWNsaWVudE9yaWdpbikKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKwogICAgIHJldHVybiB7ewogICAgICAgICBXVEZNb3ZlKCpjbGllbnRJZGVu
dGlmaWVyKSwKICAgICAgICAgV1RGTW92ZSgqbGFuZyksCiAgICAgICAgIFdURk1vdmUoKmNvbnRp
bnVvdXMpLAogICAgICAgICBXVEZNb3ZlKCppbnRlcmltUmVzdWx0cyksCi0gICAgICAgIFdURk1v
dmUoKm1heEFsdGVybmF0aXZlcykKKyAgICAgICAgV1RGTW92ZSgqbWF4QWx0ZXJuYXRpdmVzKSwK
KyAgICAgICAgV1RGTW92ZSgqY2xpZW50T3JpZ2luKQogICAgIH19OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZS5jcHAKaW5kZXggNTM0ZWRhM2QyNDc3ZWUxYzZmMTdlYzZhZjE3OTMyNmJiNzlmMDIwNy4uOWE5
YTdkOTIwNjk2NTVjNDU3MTYwN2RkYTE4YzRlNmIzMzBmNzJkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNw
cApAQCAtNjAsNyArNjAsNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIGVudW1lcmF0aW9uVmFsdWUpCiAKIFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gU3BlZWNoUmVjb2duaXRp
b25VcGRhdGUgeyBjbGllbnRJZGVudGlmaWVyLCB0eXBlIH07CisgICAgcmV0dXJuIFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlIHsgY2xpZW50SWRlbnRpZmllciwgdHlwZSwgV1RGOjpNb25vc3RhdGUo
KSB9OwogfQogCiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlRXJyb3IoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yJiBlcnJvcikK
QEAgLTgzLDcgKzgzLDcgQEAgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OlNwZWVjaFJlY29nbml0
aW9uVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWUKIFNwZWVjaFJlY29nbml0
aW9uRXJyb3IgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmVycm9yKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2NvbnRlbnQsCi0gICAgICAgIFtdIChTcGVlY2hSZWNvZ25p
dGlvbkVycm9yJiBlcnJvcikgeyByZXR1cm4gZXJyb3I7IH0sCisgICAgICAgIFtdIChjb25zdCBT
cGVlY2hSZWNvZ25pdGlvbkVycm9yJiBlcnJvcikgeyByZXR1cm4gZXJyb3I7IH0sCiAgICAgICAg
IFtdIChjb25zdCBhdXRvJikgeyByZXR1cm4gU3BlZWNoUmVjb2duaXRpb25FcnJvcigpOyB9CiAg
ICAgKTsKIH0KQEAgLTkxLDcgKzkxLDcgQEAgU3BlZWNoUmVjb2duaXRpb25FcnJvciBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6ZXJyb3IoKSBjb25zdAogVmVjdG9yPFNwZWVjaFJlY29nbml0aW9u
UmVzdWx0RGF0YT4gU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OnJlc3VsdCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9jb250ZW50LAotICAgICAgICBbXSAoVmVjdG9yPFNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4mIGRhdGEpIHsgcmV0dXJuIGRhdGE7IH0sCisgICAg
ICAgIFtdIChjb25zdCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYgZGF0YSkg
eyByZXR1cm4gZGF0YTsgfSwKICAgICAgICAgW10gKGNvbnN0IGF1dG8mKSB7IHJldHVybiBWZWN0
b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiB7IH07IH0KICAgICApOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBk
YXRlLmgKaW5kZXggM2E4MmJmNmJhZjU0Y2UwYzRiMTMzNGVmNmY4YjU4OTNmM2I4OTgyZS4uODkx
NDkxNzkzZjRlMDFlYzJmZjYwMTA3Y2I0ODVmNDg4ZmE0M2U4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCkBA
IC01Miw4ICs1Miw4IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGUpOwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgewog
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZSBjcmVhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlKTsKLSAgICBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25V
cGRhdGUgY3JlYXRlRXJyb3IoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllciwgY29uc3QgU3BlZWNoUmVjb2duaXRpb25FcnJvciYpOwotICAgIHN0YXRpYyBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVSZXN1bHQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0
YT4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUg
Y3JlYXRlRXJyb3IoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwg
Y29uc3QgU3BlZWNoUmVjb2duaXRpb25FcnJvciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVSZXN1bHQoU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9u
UmVzdWx0RGF0YT4mKTsKIAogICAgIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50SWRlbnRp
ZmllcjsgfQogICAgIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICB1c2luZyBDb250ZW50ID0gVmFyaWFudDxXVEY6Ok1vbm9zdGF0ZSwgU3BlZWNoUmVjb2duaXRp
b25FcnJvciwgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+OwotICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlKFNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlw
ZSwgQ29udGVudCA9IFdURjo6TW9ub3N0YXRlKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSwgQ29udGVudCk7CiAKICAgICBTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIG1fY2xpZW50SWRlbnRpZmll
cjsKICAgICBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKaW5kZXgg
Y2Y5ZTcyYjkzYzA2NGE1NWRkZGZhYjdiM2NhZmI0ODkwZTAzNWY0Ni4uMjQwYWEzZDQ4NGE5NzNi
NDQxMTJhZWY2MWU4ZWFhYTg0N2I1OGQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oCkBAIC0zOSwxMCArMzksMTAgQEAg
cHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHVtbXlTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24oKSk7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCByZWdpc3RlckNs
aWVudChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQmKSBmaW5hbCB7IH0KLSAgICAg
ICAgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCkgZmluYWwgeyB9CisgICAgICAg
IHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiwgYm9vbCwgYm9vbCwgdWludDY0X3QsIENsaWVudE9yaWdpbiYmKSBmaW5h
bCB7IH0KICAgICAgICAgdm9pZCBzdG9wKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIGFib3J0KFNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFsIHsgfQotICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVVcGRhdGUoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSBmaW5hbCB7IH0K
KyAgICAgICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYp
IGZpbmFsIHsgfQogICAgIH07CiAgICAgRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyKCkg
PSBkZWZhdWx0OwogICAgIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiYgc3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvSGVhZGVycy5jbWFr
ZSBiL1NvdXJjZS9XZWJLaXQvSGVhZGVycy5jbWFrZQppbmRleCA0MzYzOTcwZjFhZTAzNjZlYTAz
OTU1N2EyNzNkOGI4M2U2NjE2NDQ4Li4zZTdlNTk1ODRmZjI4MDAwZTEwZDk5YWU0NGFiZWMzZmZh
MjEzOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0hlYWRlcnMuY21ha2UKKysrIGIvU291
cmNlL1dlYktpdC9IZWFkZXJzLmNtYWtlCkBAIC05OSw2ICs5OSw3IEBAIHNldChXZWJLaXRfUFVC
TElDX0ZSQU1FV09SS19IRUFERVJTCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNw
YWNlVHlwZXMuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmgK
ICAgICBVSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuaAorICAgIFVJUHJvY2Vzcy9B
UEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgKICAgICBVSVByb2Nl
c3MvQVBJL0MvV0tUZXN0aW5nU3VwcG9ydC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLVGV4dENo
ZWNrZXIuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggNmQwNjU2NDVkY2VlNjJlNTlk
NTBkYmVmMzc0MzVhNDlhODBlYjY4Mi4uY2QxY2FkOTZiNDAzMTJkYjNiMTg4ZGU3MWY2MDg4YmY3
MjhmZDg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTY1LDYgKzE2
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgUnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXIs
CiAgICAgICAgIFJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1
bkphdmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lciwKKyAgICAgICAgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2FsbGJhY2ssCiAgICAgICAgIFRleHRDaGVja2VyLAogICAgICAgICBVUkxT
Y2hlbWVUYXNrLAogICAgICAgICBVc2VyQ29udGVudENvbnRyb2xsZXIsCkBAIC00MTAsNiArNDEx
LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxBUEk6Ok9iamVjdDo6VHlwZT4gewog
ICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6UnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVu
ZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3Vs
dExpc3RlbmVyLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6UnVuSmF2YVNjcmlwdFByb21w
dFJlc3VsdExpc3RlbmVyLAorICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2ssCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpUZXh0
Q2hlY2tlciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlVSTFNjaGVtZVRhc2ssCiAgICAg
ICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpVc2VyQ29udGVudENvbnRyb2xsZXIsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL1dLQmFzZS5oCmluZGV4IDllODJlNTYwMDE4N2VjMWNmOGFmOWJlZTc5ZTcxZDBl
OGQ3ZmQxNWEuLjg0ZWU2YzI4OGY2ZDJlYmQ1MWZhNzNlYTcyNzA4ZjMyOTQ2YmRkODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCkBAIC0xNDEsNiArMTQxLDcgQEAgdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tXZWJzaXRlRGF0YUNvbmZpZ3VyYXRpb25TdG9yZSogV0tXZWJz
aXRlRGF0YVN0b3JlQ28KIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2Vic2l0ZURhdGFT
dG9yZSogV0tXZWJzaXRlRGF0YVN0b3JlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tXZWJzaXRlUG9saWNpZXMqIFdLV2Vic2l0ZVBvbGljaWVzUmVmOwogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tXaW5kb3dGZWF0dXJlcyogV0tXaW5kb3dGZWF0dXJlc1JlZjsKK3R5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2sqIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWY7CiAKIC8qIFdlYktp
dDIgQnVuZGxlIHR5cGVzICovCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDgzZDI4MGM3NWVmNWY1YmIwYTJl
YjZkMTFhYThjMGZhOTE5Yjc0ZDAuLmE5MGJiYTA5Y2M3NGVlYmEwNWIwM2QzZjZlNDhkNzU1ZDEw
MmZhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMjkwLDYgKzI5MCw3IEBAIFVJUHJvY2Vzcy9SZXNwb25z
aXZlbmVzc1RpbWVyLmNwcAogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAog
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKIFVJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3
Q29udHJvbGxlci5jcHAKK1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyLmNwcAogVUlQcm9jZXNzL1RleHRDaGVja2VyLmNwcAogVUlQcm9jZXNzL1RleHRDaGVja2Vy
Q29tcGxldGlvbi5jcHAKIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5j
cHAKQEAgLTQwMyw2ICs0MDQsNyBAQCBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAK
IFVJUHJvY2Vzcy9BUEkvQy9XS1Byb3RlY3Rpb25TcGFjZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9X
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRl
UmVmLmNwcAorVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2suY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5jcHAKIFVJUHJvY2Vzcy9B
UEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1Vz
ZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVSZWYuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
MDg0ZDUxMzUyZDQ0YTQ1MDk0OWIzZmJkMWQxZDc2MTM1ZmIyYmViMi4uMDk5NzcwYjRhYWZlOGFl
MDRjNzg2YmRkMjg3ZTcwZjQ3YjEzNDdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMzcz
LDYgKzM3Myw3IEBAIFVJUHJvY2Vzcy9Db2NvYS9HbG9iYWxGaW5kSW5QYWdlU3RhdGUubW0KIFVJ
UHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCiBVSVByb2Nlc3MvQ29jb2EvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tCiBVSVByb2Nlc3MvQ29jb2EvTWVkaWFV
dGlsaXRpZXMubW0KK1VJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0K
IFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9QYWdl
Q2xpZW50SW1wbENvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4
IGFhN2Q4OWMwMWU3MzUyMGNlM2VlMDQyMjZiOWFlODU5NzBiZmFhNmUuLmEwZGJhODM3MjdhOTZh
ZDYxMDQ3YjllZDE1YjY0YjMxMzRlZWRhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElVSUNsaWVudC5oCkBAIC0yMDIsNiArMjAyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gQVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICB9CiAKKyAgICB2
aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCmluZGV4IGI1MmM0NGJhZWE5YWNmOWZjMDMzMmQ1
YTlmMzczNTZlOWQyMzg2MjkuLjE4Y2JmZDViNzRlYjg3NzBhNTc4ZjE1YzhhMDE2MTQ5OTAyMTQ1
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC03OSw2
ICs3OSw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjsKIGNsYXNzIERv
d25sb2FkUHJveHk7CiBjbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OwogY2xhc3Mg
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjazsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5Owog
Y2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTsKIGNsYXNzIFdlYkJhY2tGb3J3
YXJkTGlzdDsKQEAgLTE1Miw2ICsxNTMsNyBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tQcmVmZXJl
bmNlc1JlZiwgV2ViUHJlZmVyZW5jZXMpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQcm90ZWN0aW9u
U3BhY2VSZWYsIFdlYlByb3RlY3Rpb25TcGFjZSkKIFdLX0FERF9BUElfTUFQUElORyhXS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyUmVmLCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
YWdlcikKIFdLX0FERF9BUElfTUFQUElORyhXS1Nlc3Npb25TdGF0ZVJlZiwgQVBJOjpTZXNzaW9u
U3RhdGUpCitXS19BRERfQVBJX01BUFBJTkcoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFja1JlZiwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2spCiBXS19BRERf
QVBJX01BUFBJTkcoV0tUZXh0Q2hlY2tlclJlZiwgV2ViVGV4dENoZWNrZXIpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYsIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9y
ZVJlZiwgQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwCmluZGV4IDQzNjljZGQ4MjViNTE1N2ZiMDEwYzNmODFhZTc4ZTY2MGRh
YTc0ZmMuLjVlMTA5ZDU3OWViNzVmMWQ4ZmJmYjFkMDNhOGY4YzBkN2JjZTZkZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtNjMsNiArNjMsNyBAQAogI2lu
Y2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlvbi5oIgogI2lu
Y2x1ZGUgIlByaW50SW5mby5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3QuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS1BhZ2VQb2xp
Y3lDbGllbnRJbnRlcm5hbC5oIgogI2luY2x1ZGUgIldLUGFnZVJlbmRlcmluZ1Byb2dyZXNzRXZl
bnRzSW50ZXJuYWwuaCIKQEAgLTExNSw3ICsxMTYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGll
bnRUcmFpdHM8V0tQYWdlUG9saWN5Q2xpZW50QmFzZT4gewogfTsKIAogdGVtcGxhdGU8PiBzdHJ1
Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVVJQ2xpZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0
dXBsZTxXS1BhZ2VVSUNsaWVudFYwLCBXS1BhZ2VVSUNsaWVudFYxLCBXS1BhZ2VVSUNsaWVudFYy
LCBXS1BhZ2VVSUNsaWVudFYzLCBXS1BhZ2VVSUNsaWVudFY0LCBXS1BhZ2VVSUNsaWVudFY1LCBX
S1BhZ2VVSUNsaWVudFY2LCBXS1BhZ2VVSUNsaWVudFY3LCBXS1BhZ2VVSUNsaWVudFY4LCBXS1Bh
Z2VVSUNsaWVudFY5LCBXS1BhZ2VVSUNsaWVudFYxMCwgV0tQYWdlVUlDbGllbnRWMTEsIFdLUGFn
ZVVJQ2xpZW50VjEyLCBXS1BhZ2VVSUNsaWVudFYxMywgV0tQYWdlVUlDbGllbnRWMTQ+IFZlcnNp
b25zOworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1BhZ2VVSUNsaWVudFYwLCBXS1BhZ2VVSUNs
aWVudFYxLCBXS1BhZ2VVSUNsaWVudFYyLCBXS1BhZ2VVSUNsaWVudFYzLCBXS1BhZ2VVSUNsaWVu
dFY0LCBXS1BhZ2VVSUNsaWVudFY1LCBXS1BhZ2VVSUNsaWVudFY2LCBXS1BhZ2VVSUNsaWVudFY3
LCBXS1BhZ2VVSUNsaWVudFY4LCBXS1BhZ2VVSUNsaWVudFY5LCBXS1BhZ2VVSUNsaWVudFYxMCwg
V0tQYWdlVUlDbGllbnRWMTEsIFdLUGFnZVVJQ2xpZW50VjEyLCBXS1BhZ2VVSUNsaWVudFYxMywg
V0tQYWdlVUlDbGllbnRWMTQsIFdLUGFnZVVJQ2xpZW50VjE1PiBWZXJzaW9uczsKIH07CiAKICNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTIxMTAsNiArMjExMSwxMyBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRC
YXNlKiB3a0NsaWVudAogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpQcmVzZW50ZWQpOwogICAgICAgICB9CiAjZW5kaWYK
KyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvclNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0KHRvQVBJKCZwYWdlKSwgdG9BUEkoJm9yaWdpbiksIHRvQVBJKFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpLnB0cigpKSk7CisgICAgICAgIH0KICAgICB9OwogCiAgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRVSUNsaWVudChtYWtlVW5pcXVlPFVJQ2xpZW50Pih3a0NsaWVudCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKaW5kZXggYjYzODgx
NTVjZDMwMzZlNjY2MTEwZjE5MjU2MTZhZmQzN2U4NjhiYS4uNjM2MzU1NTY0ZDAwYjExMjJhODdl
MjI5YTMwYjk0ZDdlOTllNGVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2VVSUNsaWVudC5oCkBAIC0xMzYsNiArMTM2LDcgQEAgdHlwZWRlZiB2b2lkICgqV0tQ
YWdlRGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlQ2FsbGJhY2sp
KFdLUGEKIHR5cGVkZWYgYm9vbCAoKldLUGFnZVNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25BY2Nlc3NDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5S
ZWYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogCiB0eXBlZGVmIHZv
aWQgKCpXS1BhZ2VSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FsbGJhY2spKCk7Cit0eXBlZGVm
IHZvaWQgKCpXS1BhZ2VEZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHRvcE9y
aWdpbiwgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBjYWxsYmFjayk7
CiAKIC8vIERlcHJlY2F0ZWQKIHR5cGVkZWYgV0tQYWdlUmVmICgqV0tQYWdlQ3JlYXRlTmV3UGFn
ZUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjApKFdLUGFnZVJlZiBwYWdlLCBXS0RpY3Rp
b25hcnlSZWYgZmVhdHVyZXMsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXS0V2ZW50TW91
c2VCdXR0b24gbW91c2VCdXR0b24sIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwpAQCAtMTM1Myw2
ICsxMzU0LDExNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFYxNCB7CiAgICAgV0tQ
YWdlUnVuV2ViQXV0aGVudGljYXRpb25QYW5lbENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsOwogfSBXS1BhZ2VVSUNsaWVudFYxNDsK
IAordHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMTUgeworICAgIFdLUGFnZVVJQ2xpZW50
QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZTsKKworICAgIC8vIFZlcnNpb24gMC4KKyAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2tf
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2VfZGVw
cmVjYXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dQYWdlOworICAgIFdLUGFn
ZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2xvc2U7CisgICAgV0tQYWdlVGFrZUZvY3VzQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlRm9jdXM7CisgICAgV0tQYWdlRm9jdXND
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
b2N1czsKKyAgICBXS1BhZ2VVbmZvY3VzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuZm9jdXM7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFs
ZXJ0Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgICBydW5KYXZhU2Ny
aXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0
Q29uZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgIHJ1bkphdmFT
Y3JpcHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlUnVuSmF2YVNj
cmlwdFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgICBydW5K
YXZhU2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlU2V0U3Rh
dHVzVGV4dENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRTdGF0dXNUZXh0OworICAgIFdLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVtZW50Q2FsbGJhY2tf
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRfZGVw
cmVjYXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VNaXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tl
ZENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgIG1pc3NpbmdQbHVnaW5CdXR0b25D
bGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlRGlkTm90SGFuZGxlS2V5
RXZlbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWROb3RIYW5k
bGVLZXlFdmVudDsKKyAgICBXS1BhZ2VEaWROb3RIYW5kbGVXaGVlbEV2ZW50Q2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQ7CisgICAg
V0tQYWdlR2V0VG9vbGJhcnNBcmVWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0b29sYmFyc0FyZVZpc2libGU7CisgICAgV0tQYWdlU2V0VG9vbGJhcnNBcmVW
aXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb29sYmFy
c0FyZVZpc2libGU7CisgICAgV0tQYWdlR2V0TWVudUJhcklzVmlzaWJsZUNhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51QmFySXNWaXNpYmxlOworICAgIFdLUGFn
ZVNldE1lbnVCYXJJc1Zpc2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0TWVudUJhcklzVmlzaWJsZTsKKyAgICBXS1BhZ2VHZXRTdGF0dXNCYXJJc1Zpc2li
bGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c0JhcklzVmlz
aWJsZTsKKyAgICBXS1BhZ2VTZXRTdGF0dXNCYXJJc1Zpc2libGVDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXR1c0JhcklzVmlzaWJsZTsKKyAgICBXS1BhZ2VH
ZXRJc1Jlc2l6YWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlzUmVzaXphYmxlOworICAgIFdLUGFnZVNldElzUmVzaXphYmxlQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNSZXNpemFibGU7CisgICAgV0tQ
YWdlR2V0V2luZG93RnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnZXRXaW5kb3dGcmFtZTsKKyAgICBXS1BhZ2VTZXRXaW5kb3dGcmFtZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFdpbmRvd0ZyYW1lOwor
ICAgIFdLUGFnZVJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbENhbGxiYWNrX2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjYgICAgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjY7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaWREcmF3OworICAgIFdLUGFnZVVJQ2xpZW50Q2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZURp
ZFNjcm9sbDsKKyAgICBXS1BhZ2VFeGNlZWRlZERhdGFiYXNlUXVvdGFDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VlZGVkRGF0YWJhc2VRdW90YTsKKyAgICBXS1Bh
Z2VSdW5PcGVuUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJ1bk9wZW5QYW5lbDsKKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgIGRlY2lkZVBvbGljeUZvckdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQYWdlSGVhZGVySGVpZ2h0Q2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJIZWlnaHQ7Cisg
ICAgV0tQYWdlRm9vdGVySGVpZ2h0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb290ZXJIZWlnaHQ7CisgICAgV0tQYWdlRHJhd0hlYWRlckNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3SGVhZGVyOwor
ICAgIFdLUGFnZURyYXdGb290ZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZHJhd0Zvb3RlcjsKKyAgICBXS1BhZ2VQcmludEZyYW1lQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50RnJhbWU7Cisg
ICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydW5Nb2RhbDsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDE7IC8vIFVzZWQg
dG8gYmUgZGlkQ29tcGxldGVSdWJiZXJCYW5kRm9yTWFpbkZyYW1lCisgICAgV0tQYWdlU2F2ZURh
dGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBz
YXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyOworICAgIHZvaWQqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkSW50
ZXJydXB0SmF2YVNjcmlwdF91bmF2YWlsYWJsZTsKKworICAgIC8vIFZlcnNpb24gMS4KKyAgICBX
S1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSAgICAgICAg
ICAgICAgICAgIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTsKKyAgICBXS1Bh
Z2VNb3VzZURpZE1vdmVPdmVyRWxlbWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50OworICAgIFdLUGFnZURlY2lkZVBvbGljeUZv
ck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgZGVjaWRlUG9s
aWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQYWdlVW5hdmFpbGFi
bGVQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSB1bmF2
YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTsKKworICAg
IC8vIFZlcnNpb24gMi4KKyAgICBXS1BhZ2VTaG93Q29sb3JQaWNrZXJDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDb2xvclBpY2tlcjsKKyAgICBXS1Bh
Z2VIaWRlQ29sb3JQaWNrZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhpZGVDb2xvclBpY2tlcjsKKyAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRv
bkNsaWNrZWRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgIHVuYXZhaWxhYmxlUGx1Z2lu
QnV0dG9uQ2xpY2tlZDsKKworICAgIC8vIFZlcnNpb24gMy4KKyAgICBXS1BhZ2VQaW5uZWRTdGF0
ZURpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5l
ZFN0YXRlRGlkQ2hhbmdlOworCisgICAgLy8gVmVyc2lvbiA0LgorICAgIHZvaWQqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51
c2VkMjsgLy8gVXNlZCB0byBiZSBkaWRCZWdpblRyYWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJl
c3MuCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnVzZWQzOyAvLyBVc2VkIHRvIGJlIGRpZFJlY29nbml6ZUxv
bmdNb3VzZVByZXNzLgorICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkNDsgLy8gVXNlZCB0byBiZSBkaWRD
YW5jZWxUcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzLgorICAgIFdLUGFnZUlzUGxheWlu
Z0F1ZGlvRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQ
bGF5aW5nQXVkaW9EaWRDaGFuZ2U7CisKKyAgICAvLyBWZXJzaW9uIDUuCisgICAgV0tQYWdlRGVj
aWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAgICAg
ICBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VE
aWRDbGlja0F1dG9GaWxsQnV0dG9uQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpZENsaWNrQXV0b0ZpbGxCdXR0b247CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0
Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBydW5KYXZhU2NyaXB0
QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWNTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29u
ZmlybUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkphdmFTY3Jp
cHRDb25maXJtX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlw
dFByb21wdENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICBydW5KYXZh
U2NyaXB0UHJvbXB0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CisgICAgdm9pZCogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVz
ZWQ1OyAvLyBVc2VkIHRvIGJlIG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgorCisgICAg
Ly8gVmVyc2lvbiA2LgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKKyAgICBXS1BhZ2VS
dW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJ1bkphdmFTY3JpcHRBbGVydDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25m
aXJtOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdDsKKyAgICBXS0NoZWNrVXNl
ck1lZGlhUGVybWlzc2lvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbjsKKworICAgIC8vIFZlcnNpb24gNy4K
KyAgICBXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDsKKyAgICBXS0Z1bGxz
Y3JlZW5NYXlSZXR1cm5Ub0lubGluZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZTsKKworICAgIC8vIFZlcnNpb24gOC4KKyAg
ICBXS1JlcXVlc3RQb2ludGVyTG9ja0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3RQb2ludGVyTG9jazsKKyAgICBXS0RpZExvc2VQb2ludGVyTG9j
a0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZExvc2VQ
b2ludGVyTG9jazsKKworICAgIC8vIFZlcnNpb24gOS4KKyAgICBXS0hhbmRsZUF1dG9wbGF5RXZl
bnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUF1
dG9wbGF5RXZlbnQ7CisKKyAgICAvLyBWZXJzaW9uIDEwLgorICAgIFdLSGFzVmlkZW9JblBpY3R1
cmVJblBpY3R1cmVEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgaGFzVmlk
ZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2U7CisgICAgV0tEaWRFeGNlZWRCYWNrZ3JvdW5k
UmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kQ2FsbGJhY2sgICAgICAgICBkaWRFeGNlZWRC
YWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kOworCisgICAgLy8gVmVyc2lv
biAxMS4KKyAgICBXS1BhZ2VEaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVh
cmFuY2VDYWxsYmFjayAgICAgICAgIGRpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3Jk
QXBwZWFyYW5jZTsKKworICAgIC8vIFZlcnNpb24gMTIuCisgICAgV0tQYWdlUmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NDb25maXJtQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
U3RvcmFnZUFjY2Vzc0NvbmZpcm07CisKKyAgICAvLyBWZXJzaW9uIDEzLgorICAgIFdLUGFnZVNo
b3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDYWxsYmFjayAgICAgICAg
ICAgc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzczsKKworICAgIC8v
IFZlcnNpb24gMTQuCisgICAgV0tQYWdlUnVuV2ViQXV0aGVudGljYXRpb25QYW5lbENhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsOwor
CisgICAgLy8gVmVyc2lvbiAxNS4KKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgIGRlY2lkZVBvbGljeUZvclNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q7CisgICAgCit9IFdLUGFnZVVJQ2xpZW50VjE1
OworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2M4ZjlhMzVkYjg0MTFlMDM4NWE3
YWUxNTQ5YTM5YWY4MTMyZWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAKQEAg
LTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgiCisKKyNpbmNsdWRlICJT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6QVBJVHlwZSk7Cit9CisKK3ZvaWQg
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0NvbXBsZXRlKFdLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2ssIGJvb2wgZ3JhbnRlZCkKK3sKKyAgICByZXR1cm4gdG9JbXBsKHNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKS0+Y29tcGxldGUoZ3JhbnRlZCk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhhZWFmYzY5ODRi
YTk2ZjU0ODkyZTczMmFmZWEzYTA2M2M5YzcyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2suaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDxXZWJLaXQvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7
CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2tHZXRUeXBlSUQodm9pZCk7CisKK1dLX0VYUE9SVCB2b2lkIFdLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tDb21wbGV0ZShXS1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrUmVmIHNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLCBi
b29sIGdyYW50ZWQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQppbmRleCAx
ZWVhMjA1NGQwNmRlNzhlYmJmMjYzMmZiODk5MmMzOThkM2ZhMGI3Li5jNGU1NTA3MmE1MTI5Yzk1
MTdlZjBhYzRiMWViMmU5YjMxYjk5MzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQpAQCAtMTQzNyw2ICsxNDM3LDE2IEBAIHN0
YXRpYyBXZWJDb3JlOjpFZGl0YWJsZUxpbmtCZWhhdmlvciB0b0VkaXRhYmxlTGlua0JlaGF2aW9y
KF9XS0VkaXRhYmxlTGlua0JlaGF2CiAjZW5kaWYKIH0KIAorLSAoQk9PTClfc3BlZWNoUmVjb2du
aXRpb25FbmFibGVkCit7CisgICAgcmV0dXJuIF9wcmVmZXJlbmNlcy0+c3BlZWNoUmVjb2duaXRp
b25FbmFibGVkKCk7Cit9CisKKy0gKHZvaWQpX3NldFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZDoo
Qk9PTClzcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQKK3sKKyAgICBfcHJlZmVyZW5jZXMtPnNldFNw
ZWVjaFJlY29nbml0aW9uRW5hYmxlZChzcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQpOworfQorCiBA
ZW5kCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaAppbmRleCBkNDlmZTU5Njc3MjVkYTRhOTU5NjBmNDU2Nzkw
OThhN2YxY2RmNmExLi5mZDU4YjBhMTE4NmFmNTg3YjgzNDNkNTExZDU2ZjcwYmE2ZGExODhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNl
c1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVm
ZXJlbmNlc1ByaXZhdGUuaApAQCAtMTYxLDYgKzE2MSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIF9XS0VkaXRhYmxlTGlua0JlaGF2aW9yKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
c2V0dGVyPV9zZXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkOikgQk9PTCBfcmVxdWVzdEFu
aW1hdGlvbkZyYW1lRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U2Vydmlj
ZVdvcmtlckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nOikgQk9PTCBfc2VydmljZVdvcmtl
ckVudGl0bGVtZW50RGlzYWJsZWRGb3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVy
PV9zZXRBY2Nlc3NpYmlsaXR5SXNvbGF0ZWRUcmVlRW5hYmxlZDopIEJPT0wgX2FjY2Vzc2liaWxp
dHlJc29sYXRlZFRyZWVFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTYpKTsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZDop
IEJPT0wgX3NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFdlYkdMRW5hYmxlZDopIEJPT0wgX3dlYkdM
RW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCmlu
ZGV4IGQxZWFlMjAxZTY1NDJmNGZhYjYwMTk4MGRjNjYxMjQ5MTMxOTc5M2YuLmYwYTliYTQxZjUx
NWVmNzE4Zjc0NmM3ZmRmZmZlYTRhMzVlOGRlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTUyLDYg
KzE1Miw4IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgd2lsbFNoYXJlQWN0aXZpdHlJdGVtczooTlNBcnJheSAqKWFjdGl2aXR5
SXRlbXMgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gZGVjaXNpb25IYW5kbGVyOih2
b2lkICheKShCT09MIGF1dGhvcml6ZWQpKWRlY2lzaW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAjaWYgVEFSR0VUX09TX0lQ
SE9ORQogCiAtIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHNob3VsZEluY2x1
ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxl
bWVudCBXS19BUElfQVZBSUxBQkxFKGlvcyg5LjApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44MTFhYmU5NDM5ZThkOWQ3MmNkYTg1MzA3MzA2MzkzN2E3MmUyNzEzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRp
bGl0aWVzLm1tCkBAIC0wLDAgKzEsMTY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCIKKworI2ltcG9ydCAiU2Fu
ZGJveFV0aWxpdGllcy5oIgorI2ltcG9ydCAiVENDU1BJLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KKworI2lmIEhBVkUo
U1BFRUNIUkVDT0dOSVpFUikKKyNpbXBvcnQgPFNwZWVjaC9TcGVlY2guaD4KKworU09GVF9MSU5L
X0ZSQU1FV09SSyhTcGVlY2gpCitTT0ZUX0xJTktfQ0xBU1MoU3BlZWNoLCBTRlNwZWVjaFJlY29n
bml6ZXIpCisjZW5kaWYKKworI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5r
Lmg+CisKK1NPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhUQ0MpCitTT0ZUX0xJTksoVENDLCBU
Q0NBY2Nlc3NQcmVmbGlnaHQsIFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3VsdCwgKENGU3RyaW5nUmVm
IHNlcnZpY2UsIENGRGljdGlvbmFyeVJlZiBvcHRpb25zKSwgKHNlcnZpY2UsIG9wdGlvbnMpKQor
U09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RDQ1NlcnZpY2VNaWNyb3Bob25lLCBDRlN0cmluZ1Jl
ZikKK1NPRlRfTElOS19DT05TVEFOVChUQ0MsIGtUQ0NTZXJ2aWNlQ2FtZXJhLCBDRlN0cmluZ1Jl
ZikKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgY2hlY2tTYW5kYm94UmVxdWlyZW1lbnRG
b3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGUgdHlwZSkKK3sKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGF1ZGlvRmxhZzsKKyAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgdmlkZW9GbGFnOworICAgIHN0YXRpYyBib29sIGlzQXVkaW9FbnRpdGxlZCA9IHRydWU7
CisgICAgc3RhdGljIGJvb2wgaXNWaWRlb0VudGl0bGVkID0gdHJ1ZTsKKyAgICAKKyAgICBhdXRv
IGNoZWNrRnVuY3Rpb24gPSBbXShjb25zdCBjaGFyKiBvcGVyYXRpb24sIGJvb2wqIGVudGl0bGVk
KSB7CisgICAgICAgIGlmICghY3VycmVudFByb2Nlc3NJc1NhbmRib3hlZCgpKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGludCByZXN1bHQgPSBzYW5kYm94X2NoZWNrKGdldHBpZCgp
LCBvcGVyYXRpb24sIFNBTkRCT1hfRklMVEVSX05PTkUpOworICAgICAgICBpZiAocmVzdWx0ID09
IC0xKQorICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciBjaGVja2luZyAnJXMnIHNhbmRi
b3ggYWNjZXNzLCBlcnJubz0lbGQiLCBvcGVyYXRpb24sIChsb25nKWVycm5vKTsKKyAgICAgICAg
KmVudGl0bGVkID0gIXJlc3VsdDsKKyAgICB9OworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAg
Y2FzZSBNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbzoKKyAgICAgICAgc3RkOjpjYWxsX29uY2Uo
YXVkaW9GbGFnLCBjaGVja0Z1bmN0aW9uLCAiZGV2aWNlLW1pY3JvcGhvbmUiLCAmaXNBdWRpb0Vu
dGl0bGVkKTsKKyAgICAgICAgcmV0dXJuIGlzQXVkaW9FbnRpdGxlZDsKKyAgICBjYXNlIE1lZGlh
UGVybWlzc2lvblR5cGU6OlZpZGVvOgorICAgICAgICBzdGQ6OmNhbGxfb25jZSh2aWRlb0ZsYWcs
IGNoZWNrRnVuY3Rpb24sICJkZXZpY2UtY2FtZXJhIiwgJmlzVmlkZW9FbnRpdGxlZCk7CisgICAg
ICAgIHJldHVybiBpc1ZpZGVvRW50aXRsZWQ7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgY2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yVHlwZShNZWRpYVBl
cm1pc3Npb25UeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBNZWRp
YVBlcm1pc3Npb25UeXBlOjpBdWRpbzoKKyAgICAgICAgc3RhdGljIFRDQ0FjY2Vzc1ByZWZsaWdo
dFJlc3VsdCBhdWRpb0FjY2VzcyA9IFRDQ0FjY2Vzc1ByZWZsaWdodChnZXRrVENDU2VydmljZU1p
Y3JvcGhvbmUoKSwgTlVMTCk7CisgICAgICAgIGlmIChhdWRpb0FjY2VzcyA9PSBrVENDQWNjZXNz
UHJlZmxpZ2h0R3JhbnRlZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1
cm4gZHluYW1pY19vYmpjX2Nhc3Q8TlNTdHJpbmc+KE5TQnVuZGxlLm1haW5CdW5kbGUuaW5mb0Rp
Y3Rpb25hcnlbQCJOU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uIl0pLmxlbmd0aCA+IDA7Cisg
ICAgY2FzZSBNZWRpYVBlcm1pc3Npb25UeXBlOjpWaWRlbzoKKyAgICAgICAgc3RhdGljIFRDQ0Fj
Y2Vzc1ByZWZsaWdodFJlc3VsdCB2aWRlb0FjY2VzcyA9IFRDQ0FjY2Vzc1ByZWZsaWdodChnZXRr
VENDU2VydmljZUNhbWVyYSgpLCBOVUxMKTsKKyAgICAgICAgaWYgKHZpZGVvQWNjZXNzID09IGtU
Q0NBY2Nlc3NQcmVmbGlnaHRHcmFudGVkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIHJldHVybiBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1bmRs
ZS5pbmZvRGljdGlvbmFyeVtAIk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlvbiJdKS5sZW5ndGggPiAw
OworICAgIH0KK30KKworYm9vbCBjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdGb3JTcGVlY2hS
ZWNvZ25pdGlvbigpCit7CisgICAgcmV0dXJuIGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihO
U0J1bmRsZS5tYWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNTcGVlY2hSZWNvZ25pdGlvblVz
YWdlRGVzY3JpcHRpb24iXSkubGVuZ3RoID4gMDsKK30KKworI2lmIEhBVkUoQVZDQVBUVVJFREVW
SUNFKQorCit2b2lkIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lv
blR5cGUgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBB
Vk1lZGlhVHlwZSBtZWRpYVR5cGUgPSB0eXBlID09IE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlv
ID8gQVZNZWRpYVR5cGVBdWRpbyA6IEFWTWVkaWFUeXBlVmlkZW87CisgICAgYXV0byBkZWNpc2lv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKEJPT0wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChp
c01haW5UaHJlYWQoKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXpl
ZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBh
dXRob3JpemVkXSgpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0
aG9yaXplZCk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIFtQQUw6OmdldEFWQ2FwdHVyZURl
dmljZUNsYXNzKCkgcmVxdWVzdEFjY2Vzc0Zvck1lZGlhVHlwZTptZWRpYVR5cGUgY29tcGxldGlv
bkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKK30KKworTWVkaWFQZXJtaXNzaW9uUmVz
dWx0IGNoZWNrQVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlIHR5cGUp
Cit7CisgICAgQVZNZWRpYVR5cGUgbWVkaWFUeXBlID0gdHlwZSA9PSBNZWRpYVBlcm1pc3Npb25U
eXBlOjpBdWRpbyA/IEFWTWVkaWFUeXBlQXVkaW8gOiBBVk1lZGlhVHlwZVZpZGVvOworICAgIGF1
dG8gYXV0aG9yaXphdGlvblN0YXR1cyA9IFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkg
YXV0aG9yaXphdGlvblN0YXR1c0Zvck1lZGlhVHlwZTptZWRpYVR5cGVdOworICAgIGlmIChhdXRo
b3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCB8fCBhdXRob3Jp
emF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpCisgICAgICAg
IHJldHVybiBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkRlbmllZDsKKyAgICBpZiAoYXV0aG9yaXph
dGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkKQorICAgICAg
ICByZXR1cm4gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duOworICAgIHJldHVybiBNZWRp
YVBlcm1pc3Npb25SZXN1bHQ6OkdyYW50ZWQ7Cit9CisKKyNlbmRpZiAvLyBIQVZFKEFWQ0FQVFVS
RURFVklDRSkKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKwordm9pZCByZXF1ZXN0U3Bl
ZWNoUmVjb2duaXRpb25BY2Nlc3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6
ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU0ZTcGVlY2hSZWNvZ25pemVyQXV0
aG9yaXphdGlvblN0YXR1cyBzdGF0dXMpIG11dGFibGUgeworICAgICAgICBib29sIGF1dGhvcml6
ZWQgPSBzdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c0F1dGhv
cml6ZWQ7CisgICAgICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIGF1dGhvcml6ZWRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoYXV0aG9yaXplZCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKKyAgICB9
KTsKKyAgICBbZ2V0U0ZTcGVlY2hSZWNvZ25pemVyQ2xhc3MoKSByZXF1ZXN0QXV0aG9yaXphdGlv
bjpkZWNpc2lvbkhhbmRsZXIuZ2V0KCldOworfQorCitNZWRpYVBlcm1pc3Npb25SZXN1bHQgY2hl
Y2tTcGVlY2hSZWNvZ25pdGlvbkFjY2VzcygpCit7CisgICAgYXV0byBhdXRob3JpemF0aW9uU3Rh
dHVzID0gW2dldFNGU3BlZWNoUmVjb2duaXplckNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c107
CisgICAgaWYgKGF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9y
aXphdGlvblN0YXR1c0RlbmllZCB8fCBhdXRob3JpemF0aW9uU3RhdHVzID09IFNGU3BlZWNoUmVj
b2duaXplckF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkKQorICAgICAgICByZXR1cm4gTWVk
aWFQZXJtaXNzaW9uUmVzdWx0OjpEZW5pZWQ7CisgICAgaWYgKGF1dGhvcml6YXRpb25TdGF0dXMg
PT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQpCisgICAg
ICAgIHJldHVybiBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkdyYW50ZWQ7CisgICAgcmV0dXJuIE1l
ZGlhUGVybWlzc2lvblJlc3VsdDo6VW5rbm93bjsKK30KKworI2VuZGlmIC8vIEhBVkUoU1BFRUNI
UkVDT0dOSVpFUikKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggOGEwOTQ3NDVjMWYyNGJlMTA1ZGJiMDJhYjkx
ZTMwN2IzMWQ0ODZiMS4uNjJkN2E4YTE4ZjZlYjgzOTRjYmUwMmNmYWM0Mzc2YTU0ZDBhMWZhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtMTYxLDYg
KzE2MSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICAgICAgdm9pZCBy
dW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYlBhZ2VQcm94eSYsIEFQSTo6V2ViQXV0aGVudGlj
YXRpb25QYW5lbCYsIFdlYkZyYW1lUHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYpIGZpbmFsOwogI2Vu
ZGlmCisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAKICAgICAgICAgVUlEZWxlZ2F0ZSYgbV91
aURlbGVnYXRlOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5tbQppbmRleCBkMDMzOGY4ZDZlM2I5YTEzZGYyYWYxNTNhY2I1ZGViMzhlMWZjZDliLi4w
ZjllYTkwOWE2ZWY5OTkxMWJlODFlZWU5ZTA5Mzg5ODU3YTI2OGY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTEzMzIsNCArMTMzMiwyNiBAQCB2
b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjppbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2Vk
KGNvbnN0IFdlYkNvcmU6OkludFNpegogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVnYXRl
UHJpdmF0ZT4+KGRlbGVnYXRlKSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGltYWdl
T3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQ6bmV3U2l6ZV07CiB9CiAKK3ZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIG9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBhdXRvIGRlbGVnYXRlID0gKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPiltX3VpRGVs
ZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVz
dFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkZvck9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KV0p
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6
Y3JlYXRlKGRlbGVnYXRlLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkZvck9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgW2RlbGVnYXRl
IF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkZvck9yaWdpbjp3cmFwcGVyKG9yaWdpbikgZGVjaXNpb25IYW5kbGVyOm1ha2VC
bG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGNvbXBsZXRpb25IYW5k
bGVyLCB7IH0pLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0gKEJPT0wgZ3JhbnRlZCkgbXV0
YWJsZSB7CisgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxs
ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBs
ZXRpb25IYW5kbGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGdyYW50ZWQpOworICAg
IH0pLmdldCgpXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tCmluZGV4IDk5NzU3NWRlMDIxNmE5YzBjZDc2YWZj
YjQxYzc2NDFkYjEzMTVhZmIuLjhlYmVjNTJjYzZiNjZkMTVhMjNlNTQ0ZTIzNGVlZDg1YWNlZjBi
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgiCiAKKyNpbXBvcnQgIk1lZGlhUGVybWlzc2lvblV0
aWxpdGllcy5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVENDU1BJ
LmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKQEAgLTM3LDQwICszOCwxMiBAQAogI2ltcG9y
dCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rh
cndpbi9TYW5kYm94U1BJLmg+CiAKLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhUQ0MpCi1T
T0ZUX0xJTksoVENDLCBUQ0NBY2Nlc3NQcmVmbGlnaHQsIFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3Vs
dCwgKENGU3RyaW5nUmVmIHNlcnZpY2UsIENGRGljdGlvbmFyeVJlZiBvcHRpb25zKSwgKHNlcnZp
Y2UsIG9wdGlvbnMpKQotU09GVF9MSU5LKFRDQywgVENDQWNjZXNzUHJlZmxpZ2h0V2l0aEF1ZGl0
VG9rZW4sIFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3VsdCwgKENGU3RyaW5nUmVmIHNlcnZpY2UsIGF1
ZGl0X3Rva2VuX3QgdG9rZW4sIENGRGljdGlvbmFyeVJlZiBvcHRpb25zKSwgKHNlcnZpY2UsIHRv
a2VuLCBvcHRpb25zKSkKLVNPRlRfTElOS19DT05TVEFOVChUQ0MsIGtUQ0NTZXJ2aWNlTWljcm9w
aG9uZSwgQ0ZTdHJpbmdSZWYpCi1TT0ZUX0xJTktfQ09OU1RBTlQoVENDLCBrVENDU2VydmljZUNh
bWVyYSwgQ0ZTdHJpbmdSZWYpCi0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBib29sIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpwZXJtaXR0ZWRUb0NhcHR1cmVBdWRpbygp
CiB7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RhdGljIGJvb2wgZW50aXRsZWQg
PSB0cnVlOwotICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIGlmICgh
Y3VycmVudFByb2Nlc3NJc1NhbmRib3hlZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGludCByZXN1bHQgPSBzYW5kYm94X2NoZWNrKGdldHBpZCgpLCAiZGV2aWNlLW1pY3JvcGhv
bmUiLCBTQU5EQk9YX0ZJTFRFUl9OT05FKTsKLSAgICAgICAgZW50aXRsZWQgPSAhcmVzdWx0Owot
ICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJv
ciBjaGVja2luZyAnZGV2aWNlLW1pY3JvcGhvbmUnIHNhbmRib3ggYWNjZXNzLCBlcnJubz0lbGQi
LCAobG9uZyllcnJubyk7Ci0gICAgfSk7Ci0gICAgaWYgKCFlbnRpdGxlZCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLQotICAgIHN0YXRpYyBUQ0NBY2Nl
c3NQcmVmbGlnaHRSZXN1bHQgYWNjZXNzID0gVENDQWNjZXNzUHJlZmxpZ2h0KGdldGtUQ0NTZXJ2
aWNlTWljcm9waG9uZSgpLCBOVUxMKTsKLSAgICBpZiAoYWNjZXNzID09IGtUQ0NBY2Nlc3NQcmVm
bGlnaHRHcmFudGVkKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHN0YXRpYyBib29sIGlz
UGVybWl0dGVkID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNTdHJpbmc+KE5TQnVuZGxlLm1haW5CdW5k
bGUuaW5mb0RpY3Rpb25hcnlbQCJOU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uIl0pLmxlbmd0
aDsKLSAgICByZXR1cm4gaXNQZXJtaXR0ZWQ7CisgICAgcmV0dXJuIGNoZWNrU2FuZGJveFJlcXVp
cmVtZW50Rm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbykgJiYgY2hlY2tVc2FnZURl
c2NyaXB0aW9uU3RyaW5nRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbyk7CiAjZWxz
ZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtNzksNDkgKzUyLDEzIEBAIGJvb2wgVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZUF1
ZGlvKCkKIGJvb2wgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1p
dHRlZFRvQ2FwdHVyZVZpZGVvKCkKIHsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaWYg
UExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBz
dGF0aWMgYm9vbCBlbnRpdGxlZCA9IHRydWU7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcs
IFtdIHsKLSAgICAgICAgaWYgKCFjdXJyZW50UHJvY2Vzc0lzU2FuZGJveGVkKCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgaW50IHJlc3VsdCA9IHNhbmRib3hfY2hlY2soZ2V0cGlk
KCksICJkZXZpY2UtY2FtZXJhIiwgU0FOREJPWF9GSUxURVJfTk9ORSk7Ci0gICAgICAgIGVudGl0
bGVkID0gIXJlc3VsdDsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKLSAgICAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiRXJyb3IgY2hlY2tpbmcgJ2RldmljZS1jYW1lcmEnIHNhbmRib3ggYWNjZXNz
LCBlcnJubz0lbGQiLCAobG9uZyllcnJubyk7Ci0gICAgfSk7Ci0gICAgaWYgKCFlbnRpdGxlZCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLQotICAgIHN0
YXRpYyBUQ0NBY2Nlc3NQcmVmbGlnaHRSZXN1bHQgYWNjZXNzID0gVENDQWNjZXNzUHJlZmxpZ2h0
KGdldGtUQ0NTZXJ2aWNlQ2FtZXJhKCksIE5VTEwpOwotICAgIGlmIChhY2Nlc3MgPT0ga1RDQ0Fj
Y2Vzc1ByZWZsaWdodEdyYW50ZWQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgc3RhdGlj
IGJvb2wgaXNQZXJtaXR0ZWQgPSBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUu
bWFpbkJ1bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlvbiJdKS5s
ZW5ndGg7Ci0gICAgcmV0dXJuIGlzUGVybWl0dGVkOworICAgIHJldHVybiBjaGVja1NhbmRib3hS
ZXF1aXJlbWVudEZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6VmlkZW8pICYmIGNoZWNrVXNh
Z2VEZXNjcmlwdGlvblN0cmluZ0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6VmlkZW8pOwog
I2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCi1zdGF0aWMgdm9pZCByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQk9PTCBhdXRob3JpemVkKT4mJiBjb21wbGV0aW9uSGFuZGxl
ciwgQVZNZWRpYVR5cGUgdHlwZSkKLXsKLSAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
Qk9PTCBhdXRob3JpemVkKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFpc01haW5UaHJlYWQoKSkg
ewotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgYXV0aG9yaXplZF0oKSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGF1dGhvcml6ZWQpOwotICAgIH0pOwotICAgIFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNz
KCkgcmVxdWVzdEFjY2Vzc0Zvck1lZGlhVHlwZTp0eXBlIGNvbXBsZXRpb25IYW5kbGVyOmRlY2lz
aW9uSGFuZGxlci5nZXQoKV07Ci19Ci0KIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHk6OnJlcXVlc3RTeXN0ZW1WYWxpZGF0aW9uKGNvbnN0IFdlYlBhZ2VQcm94eSYg
cGFnZSwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcmVxdWVzdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAocGFnZS5wcmVmZXJl
bmNlcygpLm1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQoKSkgewpAQCAtMTMwLDM2ICs2Nyw0MCBA
QCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lz
dGVtVmFsaWRhdGlvbihjb25zdCBXZWJQYQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBBZGQgVEND
IGVudGl0bGVtZW50IGNoZWNrIGZvciBzY3JlZW5zaGFyaW5nLgotICAgIGJvb2wgcmVxdWlyZXNB
dWRpb0NhcHR1cmUgPSByZXF1ZXN0LnJlcXVpcmVzQXVkaW9DYXB0dXJlKCk7Ci0gICAgYm9vbCBy
ZXF1aXJlc1ZpZGVvQ2FwdHVyZSA9IHJlcXVlc3QucmVxdWlyZXNWaWRlb0NhcHR1cmUoKTsKLQot
ICAgIGF1dG8gbWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPSAhcmVxdWlyZXNBdWRpb0Nh
cHR1cmUgPyBBVkF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkIDogW1BBTDo6Z2V0QVZDYXB0
dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOkFWTWVkaWFU
eXBlQXVkaW9dOwotICAgIGlmIChtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1
dGhvcml6YXRpb25TdGF0dXNEZW5pZWQgfHwgbWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMg
PT0gQVZBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkgeworICAgIGF1dG8gYXVkaW9TdGF0
dXMgPSByZXF1ZXN0LnJlcXVpcmVzQXVkaW9DYXB0dXJlKCkgPyBjaGVja0FWQ2FwdHVyZUFjY2Vz
c0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6QXVkaW8pIDogTWVkaWFQZXJtaXNzaW9uUmVz
dWx0OjpHcmFudGVkOworICAgIGlmIChhdWRpb1N0YXR1cyA9PSBNZWRpYVBlcm1pc3Npb25SZXN1
bHQ6OkRlbmllZCkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBhdXRvIGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPSAhcmVxdWlyZXNW
aWRlb0NhcHR1cmUgPyBBVkF1dGhvcml6YXRpb25TdGF0dXNBdXRob3JpemVkIDogW1BBTDo6Z2V0
QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOkFW
TWVkaWFUeXBlVmlkZW9dOwotICAgIGlmIChjYW1lcmFBdXRob3JpemF0aW9uU3RhdHVzID09IEFW
QXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCB8fCBjYW1lcmFBdXRob3JpemF0aW9uU3RhdHVzID09
IEFWQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpIHsKKyAgICBhdXRvIHZpZGVvU3RhdHVz
ID0gcmVxdWVzdC5yZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpID8gY2hlY2tBVkNhcHR1cmVBY2Nlc3NG
b3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OlZpZGVvKSA6IE1lZGlhUGVybWlzc2lvblJlc3Vs
dDo6R3JhbnRlZDsKKyAgICBpZiAoYXVkaW9TdGF0dXMgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0
OjpEZW5pZWQpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYm9vbCByZXF1aXJlc1ZpZGVvVENDUHJvbXB0ID0gcmVxdWlyZXNWaWRlb0Nh
cHR1cmUgJiYgY2FtZXJhQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0
dXNOb3REZXRlcm1pbmVkOwotICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSByZXF1aXJlc1Zp
ZGVvVENDUHJvbXB0ID8gW3JlcXVlc3QgPSBtYWtlUmVmKHJlcXVlc3QpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShib29sIGlzT0spIG11dGFibGUgewotICAgICAgICBpZiAoIWlzT0sp
IHsKLSAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgICAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlKFdURk1v
dmUoY2FsbGJhY2spLCBBVk1lZGlhVHlwZVZpZGVvKTsKLSAgICB9IDogV1RGTW92ZShjYWxsYmFj
ayk7CisgICAgaWYgKGF1ZGlvU3RhdHVzID09IE1lZGlhUGVybWlzc2lvblJlc3VsdDo6VW5rbm93
bikgeworICAgICAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Np
b25UeXBlOjpBdWRpbywgW3ZpZGVvU3RhdHVzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y2FsbGJhY2spXShib29sIGF1dGhvcml6ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKHZp
ZGVvU3RhdHVzID09IE1lZGlhUGVybWlzc2lvblJlc3VsdDo6R3JhbnRlZCkgeworICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlcXVl
c3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OlZpZGVvLCBbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBhdXRob3Jp
emVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3Jp
emVkKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KIAotICAgIGJvb2wgcmVxdWlyZXNBdWRpb1RDQ1Byb21wdCA9IHJlcXVpcmVzQXVkaW9DYXB0
dXJlICYmIG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0
YXR1c05vdERldGVybWluZWQ7Ci0gICAgaWYgKCFyZXF1aXJlc0F1ZGlvVENDUHJvbXB0KSB7Ci0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAgIGlmICh2aWRlb1N0YXR1cyA9PSBN
ZWRpYVBlcm1pc3Npb25SZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgcmVxdWVzdEFWQ2FwdHVy
ZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6VmlkZW8sIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGF1dGhvcml6ZWQpIG11dGFibGUgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgICAgIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5
cGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIEFWTWVkaWFUeXBlQXVkaW8pOworCisgICAg
Y2FsbGJhY2sodHJ1ZSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2Nv
YS5tbQppbmRleCA4NjYyMzhiYWZlOGYwNWMxN2EyM2Q2ZjljYzk5YTIxMDE0ZGQ5MzEwLi5jZDMw
MTQxZmNlYTYyMjJkZTViYTdjZjFjNjdhOWEyZjY0ZDAyMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtNDEs
NiArNDEsMTAgQEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8
d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmgiCisjZW5kaWYKKwogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVj
dG9yQ29uc3RhbnRzLmg+CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBiMmQ0OGM4OTdhYWZiMDU4
YmU2MzI3ZWM0NTYwNDA5NjkyMDY0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oCkBAIC0wLDAgKzEsNjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVt
IGNsYXNzIE1lZGlhUGVybWlzc2lvblR5cGUgeworICAgIEF1ZGlvLAorICAgIFZpZGVvCit9Owor
CitlbnVtIGNsYXNzIE1lZGlhUGVybWlzc2lvblJlc3VsdCB7CisgICAgRGVuaWVkLAorICAgIEdy
YW50ZWQsCisgICAgVW5rbm93bgorfTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorYm9vbCBjaGVj
a1NhbmRib3hSZXF1aXJlbWVudEZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSk7Citib29sIGNo
ZWNrVXNhZ2VEZXNjcmlwdGlvblN0cmluZ0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSk7Citi
b29sIGNoZWNrVXNhZ2VEZXNjcmlwdGlvblN0cmluZ0ZvclNwZWVjaFJlY29nbml0aW9uKCk7Cisj
ZW5kaWYKKworI2lmIEhBVkUoQVZDQVBUVVJFREVWSUNFKQordm9pZCByZXF1ZXN0QVZDYXB0dXJl
QWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wgYXV0aG9yaXplZCk+JiYpOworTWVkaWFQZXJtaXNzaW9uUmVzdWx0IGNoZWNrQVZDYXB0
dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlKTsKKyNlbmRpZgorCisjaWYgSEFW
RShTUEVFQ0hSRUNPR05JWkVSKQordm9pZCByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25BY2Nlc3Mo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQpPiYmKTsKK01lZGlhUGVybWlz
c2lvblJlc3VsdCBjaGVja1NwZWVjaFJlY29nbml0aW9uQWNjZXNzKCk7CisjZW5kaWYKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjA5YWUwMjcyYTMxMTQ5ZDEwOTFmOGRiMWU1Nzg1NjI5NmEwMjVkOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMjI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCIK
KworI2luY2x1ZGUgIkFQSVNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiQVBJVUlDbGllbnQu
aCIKKyNpbmNsdWRlICJNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIoV2ViUGFnZVByb3h5JiBwYWdlKQorICAgIDogbV9wYWdl
KHBhZ2UpCit7Cit9CisKK1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6On5TcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKCkKK3sKKyAgICBmb3IgKGF1dG8mIHJlcXVl
c3QgOiBtX3JlcXVlc3RzKQorICAgICAgICByZXF1ZXN0LT5jb21wbGV0ZShTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25EZWNpc2lvbjo6RGVueSk7Cit9CisgICAgCit2b2lkIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uRGVjaXNpb24pPiYmIGNvbXBsZXRpb250SGFuZGxlcikKK3sKKyAgICBtX3JlcXVlc3Rz
LmFwcGVuZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUob3JpZ2lu
LCBXVEZNb3ZlKGNvbXBsZXRpb250SGFuZGxlcikpKTsKKyAgICBpZiAobV9yZXF1ZXN0cy5zaXpl
KCkgPT0gMSkKKyAgICAgICAgc3RhcnROZXh0UmVxdWVzdCgpOworfQorCit2b2lkIFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0TmV4dFJlcXVlc3QoKQoreworICAgIGlm
IChtX3JlcXVlc3RzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVENDIHN0
YXR1cyBtYXkgaGF2ZSBjaGFuZ2VkIGJldHdlZW4gcmVxdWVzdHMuCisgICAgbV9taWNyb3Bob25l
Q2hlY2sgPSBDaGVja1Jlc3VsdDo6VW5rbm93bjsKKyAgICBtX3NwZWVjaFJlY29nbml0aW9uU2Vy
dmljZUNoZWNrID0gQ2hlY2tSZXN1bHQ6OlVua25vd247CisKKyAgICBzdGFydFByb2Nlc3NpbmdS
ZXF1ZXN0KCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6
c3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgpCit7CisjaWYgUExBVEZPUk0oQ09PQ0EpCisgICAgaWYg
KCFjaGVja1NhbmRib3hSZXF1aXJlbWVudEZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6QXVk
aW8pKSB7CisgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlm
CisKKyAgICBpZiAoIWNoZWNrTWljcm9waG9uZUFjY2VzcygpIHx8ICFjaGVja1NwZWVjaFJlY29n
bml0aW9uU2VydmljZUFjY2VzcygpIHx8IG1fdXNlclBlcm1pc3Npb25DaGVjayA9PSBDaGVja1Jl
c3VsdDo6RGVuaWVkKSB7CisgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgpOworfQorCit2b2lkIFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoKQor
eworICAgIGlmICghbV9wYWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxl
ZCgpKSB7CisgICAgICAgIGlmIChtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrID09IENo
ZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgICAgICByZXF1ZXN0U3BlZWNoUmVjb2duaXRp
b25TZXJ2aWNlQWNjZXNzKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgQVNTRVJUKG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6
OkdyYW50ZWQpOworCisgICAgICAgIGlmIChtX21pY3JvcGhvbmVDaGVjayA9PSBDaGVja1Jlc3Vs
dDo6VW5rbm93bikgeworICAgICAgICAgICAgcmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3MoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQobV9taWNyb3Bob25l
Q2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQpOworICAgIH0KKworICAgIGlmIChtX3VzZXJQ
ZXJtaXNzaW9uQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgcmVxdWVz
dFVzZXJQZXJtaXNzaW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKG1f
dXNlclBlcm1pc3Npb25DaGVjayA9PSBDaGVja1Jlc3VsdDo6R3JhbnRlZCk7CisKKyAgICBjb21w
bGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpH
cmFudCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y29t
cGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiBk
ZWNpc2lvbikKK3sKKyAgICBBU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKyAgICBhdXRv
IGN1cnJlbnRSZXF1ZXN0ID0gbV9yZXF1ZXN0cy50YWtlRmlyc3QoKTsKKyAgICBjdXJyZW50UmVx
dWVzdC0+Y29tcGxldGUoZGVjaXNpb24pOworCisgICAgc3RhcnROZXh0UmVxdWVzdCgpOworfQor
Citib29sIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrTWljcm9waG9u
ZUFjY2VzcygpCit7CisgICAgaWYgKG1fcGFnZS5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2
aWNlc0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobV9taWNyb3Bo
b25lQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyNpZiBIQVZFKEFWQ0FQVFVSRURF
VklDRSkKKyAgICAgICAgYXV0byByZXN1bHQgPSBjaGVja0FWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUo
TWVkaWFQZXJtaXNzaW9uVHlwZTo6QXVkaW8pOworICAgICAgICBpZiAocmVzdWx0ICE9IE1lZGlh
UGVybWlzc2lvblJlc3VsdDo6VW5rbm93bikKKyAgICAgICAgICAgIG1fbWljcm9waG9uZUNoZWNr
ID0gcmVzdWx0ID09IE1lZGlhUGVybWlzc2lvblJlc3VsdDo6R3JhbnRlZCA/IENoZWNrUmVzdWx0
OjpHcmFudGVkIDogQ2hlY2tSZXN1bHQ6OkRlbmllZDsKKyAgICAgICAgZWxzZSBpZiAoIWNoZWNr
VXNhZ2VEZXNjcmlwdGlvblN0cmluZ0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6QXVkaW8p
KQorICAgICAgICAgICAgbV9taWNyb3Bob25lQ2hlY2sgPSBDaGVja1Jlc3VsdDo6RGVuaWVkOwor
I2Vsc2UKKyAgICAgICAgbV9taWNyb3Bob25lQ2hlY2sgPSBDaGVja1Jlc3VsdDo6R3JhbnRlZDsK
KyNlbmRpZgorICAgIH0KKworICAgIHJldHVybiBtX21pY3JvcGhvbmVDaGVjayAhPSBDaGVja1Jl
c3VsdDo6RGVuaWVkOworfQorCitib29sIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI6OmNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCkKK3sKKyAgICBpZiAobV9w
YWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrID09
IENoZWNrUmVzdWx0OjpVbmtub3duKSB7CisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorICAg
ICAgICBhdXRvIHJlc3VsdCA9IGNoZWNrU3BlZWNoUmVjb2duaXRpb25BY2Nlc3MoKTsKKyAgICAg
ICAgaWYgKHJlc3VsdCAhPSBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OlVua25vd24pCisgICAgICAg
ICAgICBtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrID0gcmVzdWx0ID09IE1lZGlhUGVy
bWlzc2lvblJlc3VsdDo6R3JhbnRlZCA/IENoZWNrUmVzdWx0OjpHcmFudGVkIDogQ2hlY2tSZXN1
bHQ6OkRlbmllZDsKKyAgICAgICAgZWxzZSBpZiAoIWNoZWNrVXNhZ2VEZXNjcmlwdGlvblN0cmlu
Z0ZvclNwZWVjaFJlY29nbml0aW9uKCkpCisgICAgICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9u
U2VydmljZUNoZWNrID0gQ2hlY2tSZXN1bHQ6OkRlbmllZDsKKyNlbHNlCisgICAgICAgIG1fc3Bl
ZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPSBDaGVja1Jlc3VsdDo6R3JhbnRlZDsKKyNlbmRp
ZgorICAgIH0KKworICAgIHJldHVybiBtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrICE9
IENoZWNrUmVzdWx0OjpEZW5pZWQ7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9zcGVlY2hSZWNvZ25pdGlv
blNlcnZpY2VDaGVjayA9PSBDaGVja1Jlc3VsdDo6VW5rbm93bik7CisKKyNpZiBIQVZFKFNQRUVD
SFJFQ09HTklaRVIpCisgICAgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9uQWNjZXNzKFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShib29sIGF1dGhvcml6ZWQpIG11dGFibGUgewor
ICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1f
c3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPSBhdXRob3JpemVkID8gQ2hlY2tSZXN1bHQ6
OkdyYW50ZWQgOiBDaGVja1Jlc3VsdDo6RGVuaWVkOworICAgICAgICBpZiAobV9zcGVlY2hSZWNv
Z25pdGlvblNlcnZpY2VDaGVjayA9PSBDaGVja1Jlc3VsdDo6RGVuaWVkKSB7CisgICAgICAgICAg
ICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lz
aW9uOjpEZW55KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNv
bnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoKTsKKyAgICB9KTsKKyNlbmRpZgorfQorCit2b2lkIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNjZXNz
KCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX21pY3JvcGhv
bmVDaGVjayA9PSBDaGVja1Jlc3VsdDo6VW5rbm93bik7CisKKyNpZiBIQVZFKEFWQ0FQVFVSRURF
VklDRSkKKyAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25U
eXBlOjpBdWRpbywgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGJvb2wgYXV0
aG9yaXplZCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIG1fbWljcm9waG9uZUNoZWNrID0gYXV0aG9yaXplZCA/IENoZWNrUmVzdWx0OjpH
cmFudGVkIDogQ2hlY2tSZXN1bHQ6OkRlbmllZDsKKyAgICAgICAgaWYgKG1fbWljcm9waG9uZUNo
ZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAgICAgICAgICAgIGNvbXBsZXRlQ3VycmVu
dFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29udGludWVQcm9jZXNzaW5n
UmVxdWVzdCgpOworICAgIH0pOworI2VuZGlmCit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdFVzZXJQZXJtaXNzaW9uKCkKK3sKKyAgICBBU1NFUlQo
IW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKyAgICBhdXRvJiBjdXJyZW50UmVxdWVzdCA9IG1fcmVx
dWVzdHMuZmlyc3QoKTsKKworICAgIGF1dG8gY2xpZW50T3JpZ2luID0gY3VycmVudFJlcXVlc3Qt
Pm9yaWdpbigpOworICAgIGF1dG8gcmVxdWVzdGluZ09yaWdpbiA9IGNsaWVudE9yaWdpbi5jbGll
bnRPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBhdXRvIHRvcE9yaWdpbiA9IGNsaWVudE9y
aWdpbi50b3BPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBpZiAoIXJlcXVlc3RpbmdPcmln
aW4tPmlzU2FtZU9yaWdpbkFzKHRvcE9yaWdpbikpIHsKKyAgICAgICAgY29tcGxldGVDdXJyZW50
UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbjo6RGVueSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oYm9vbCBncmFudGVkKSB7CisgICAgICAgIGlm
ICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV91c2VyUGVybWlz
c2lvbkNoZWNrID0gZ3JhbnRlZCA/IENoZWNrUmVzdWx0OjpHcmFudGVkIDogQ2hlY2tSZXN1bHQ6
OkRlbmllZDsKKyAgICAgICAgaWYgKG1fdXNlclBlcm1pc3Npb25DaGVjayA9PSBDaGVja1Jlc3Vs
dDo6RGVuaWVkKSB7CisgICAgICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoKTsKKyAgICB9
OworICAgIG1fcGFnZS51aUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3QobV9wYWdlLCBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodG9w
T3JpZ2luLmdldCgpKS5nZXQoKSwgV1RGTW92ZShkZWNpc2lvbkhhbmRsZXIpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
M2U0ZTYxYWVjNzEzN2ZiYmFhOWQxYjM5ZDY0MDI1NzI0NWZmYTAxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKFdlYlBhZ2VQ
cm94eSYpOworICAgIH5TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKCk7CisgICAg
dm9pZCByZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmKTsKKyAgICB2
b2lkIHJlc2V0KCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzdGFydE5leHRSZXF1ZXN0KCk7Cisg
ICAgdm9pZCBzdGFydFByb2Nlc3NpbmdSZXF1ZXN0KCk7CisgICAgdm9pZCBjb250aW51ZVByb2Nl
c3NpbmdSZXF1ZXN0KCk7CisgICAgdm9pZCBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKTsKKyAgICBib29sIGNoZWNrTWljcm9waG9uZUFj
Y2VzcygpOworICAgIGJvb2wgY2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsK
KyAgICB2b2lkIHJlcXVlc3RNaWNyb3Bob25lQWNjZXNzKCk7CisgICAgdm9pZCByZXF1ZXN0U3Bl
ZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7CisgICAgdm9pZCByZXF1ZXN0VXNlclBlcm1p
c3Npb24oKTsKKworICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOworICAgIERlcXVlPFJlZjxTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Pj4gbV9yZXF1ZXN0czsKKyAgICBlbnVtIGNs
YXNzIENoZWNrUmVzdWx0IHsgRGVuaWVkLCBHcmFudGVkLCBVbmtub3duIH07CisgICAgQ2hlY2tS
ZXN1bHQgbV9zYW5kYm94Q2hlY2sgeyBDaGVja1Jlc3VsdDo6VW5rbm93biB9OworICAgIENoZWNr
UmVzdWx0IG1fbWljcm9waG9uZUNoZWNrIHsgQ2hlY2tSZXN1bHQ6OlVua25vd24gfTsKKyAgICBD
aGVja1Jlc3VsdCBtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrIHsgQ2hlY2tSZXN1bHQ6
OlVua25vd24gfTsKKyAgICBDaGVja1Jlc3VsdCBtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgeyBDaGVj
a1Jlc3VsdDo6VW5rbm93biB9OworICAgIGJvb2wgbV9pc1VzaW5nTW9ja2VkQ2FwdHVyZURldmlj
ZSB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMjUxN2IzZWZhNjEyODlkNDM3NDNjYjRmNDc3OTE2NWQwZTBh
MzhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQ2xpZW50T3JpZ2luLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkRlY2lzaW9uIDogYm9vbCB7IERlbnksIEdyYW50IH07CisKK2NsYXNzIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvblJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uRGVjaXNpb24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChv
cmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgfQorCisgICAgdm9pZCBj
b21wbGV0ZShTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikKKyAg
ICB7CisgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29t
cGxldGlvbkhhbmRsZXIsIHsgfSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRlY2lzaW9u
KTsKKyAgICB9CisKKyAgICBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CisKK3ByaXZhdGU6CisgICAgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uUmVxdWVzdChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lv
bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogbV9vcmlnaW4ob3JpZ2luKQorICAg
ICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisg
ICAgeyB9CisKKyAgICBXZWJDb3JlOjpDbGllbnRPcmlnaW4gbV9vcmlnaW47CisgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+IG1f
Y29tcGxldGlvbkhhbmRsZXI7Cit9OworCitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25DYWxsYmFjayA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaz4gY3JlYXRlKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
ayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIH0KKworICAgIHZvaWQgY29tcGxl
dGUoYm9vbCBncmFudGVkKSB7IG1fY29tcGxldGlvbkhhbmRsZXIoZ3JhbnRlZCk7IH0KKworcHJp
dmF0ZToKKyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICA6IG1fY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgeyB9CisKKyAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKaW5kZXggOWNlOTc0Y2Y5ZGFhNTY1ODJlZWJj
ZmEwMzA2NzBiN2EzNzViZTcxZS4uOTZhZGM3ODZlNGI4YzhmOGVkNzI5ODJiNWI3ZDYxYjA1MjU4
NmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLmNwcApAQCAtMzIsMTUgKzMyLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1TcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50
aWZpZXIgaWRlbnRpZmllcikKK1NwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25p
dGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNwZWVjaFJlY29n
bml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DaGVja2VyJiYgcGVybWlzc2lvbkNoZWNrZXIpCiAgICAgOiBtX2Nvbm5lY3Rpb24oV1RG
TW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwg
bV9wZXJtaXNzaW9uQ2hlY2tlcihXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSkKIHsKIH0KIAot
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0SW5mbyYmIHJlcXVlc3RJbmZvKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVvdXMs
IGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiYgb3JpZ2luKQogewotICAgIGF1dG8gcmVxdWVzdCA9IFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6Y3JlYXRlKFdURk1vdmUocmVxdWVzdEluZm8pKTsKKyAg
ICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdD4oU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7IGNsaWVudElkZW50aWZpZXIsIFdU
Rk1vdmUobGFuZyksIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMs
IFdURk1vdmUob3JpZ2luKSB9KTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hcHBlbmQoV1RGTW92
ZShyZXF1ZXN0KSk7CiAKICAgICBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsK
QEAgLTcyLDggKzczLDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQoV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWQKIHsKICAgICBpZiAobV9j
dXJyZW50UmVxdWVzdCAmJiBtX2N1cnJlbnRSZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCkgPT0g
Y2xpZW50SWRlbnRpZmllcikgewogICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbnVsbHB0cjsK
LSAgICAgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6
Y3JlYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZTo6RW5kKTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uOjpEaWRSZWNlaXZlVXBkYXRlKHVwZGF0ZSksIG1faWRlbnRpZmllcik7CisgICAg
ICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGVUeXBlOjpFbmQpOwogCiAgICAgICAgIHByb2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJ
Zk5lZWRlZCgpOwogICAgICAgICByZXR1cm47CkBAIC04NCwxMyArODQsMTIgQEAgdm9pZCBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWQKIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVtb3ZlUGVu
ZGluZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciBjbGllbnRJZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3Q+IHRha2VuUmVxdWVzdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiB0YWtlblJlcXVlc3Q7CiAgICAgYXV0byBw
ZW5kaW5nUmVxdWVzdHMgPSBzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1JlcXVlc3RzLCB7IH0pOwog
ICAgIHdoaWxlICghcGVuZGluZ1JlcXVlc3RzLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIHJl
cXVlc3QgPSBwZW5kaW5nUmVxdWVzdHMudGFrZUZpcnN0KCk7CiAgICAgICAgIGlmIChyZXF1ZXN0
LT5jbGllbnRJZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikgewotICAgICAgICAgICAg
YXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKGNs
aWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5k
KTsKLSAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbjo6RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50aWZpZXIpOworICAgICAgICAg
ICAgc2VuZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OkVuZCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAg
ICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShyZXF1ZXN0KSk7CkBAIC0xMDUs
MTIgKzEwNCw1MSBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjppbnZhbGlkYXRlKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaQogICAgIH0KIH0KIAotdm9pZCBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnRQb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpz
dGFydFBvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JiBy
ZXF1ZXN0KQogeworICAgIG1fcGVybWlzc2lvbkNoZWNrZXIocmVxdWVzdC5jbGllbnRPcmlnaW4o
KSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYWtSZXF1ZXN0ID0gbWFr
ZVdlYWtQdHIocmVxdWVzdCldKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIGRl
Y2lzaW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBpZiAoIXdlYWtSZXF1ZXN0KQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIEFTU0VSVChtX2N1cnJlbnRSZXF1ZXN0LmdldCgpID09IHdlYWtSZXF1ZXN0Lmdl
dCgpKTsKKyAgICAgICAgaWYgKGRlY2lzaW9uID09IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkRlY2lzaW9uOjpEZW55KSB7CisgICAgICAgICAgICBhdXRvIGVycm9yID0gU3BlZWNoUmVjb2du
aXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpOb3RBbGxvd2VkLCAiUGVy
bWlzc2lvbiBjaGVjayBmYWlsZWQiX3MgfTsKKyAgICAgICAgICAgIHNlbmRVcGRhdGUod2Vha1Jl
cXVlc3QtPmNsaWVudElkZW50aWZpZXIoKSwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRh
dGVUeXBlOjpFcnJvciwgZXJyb3IpOworICAgICAgICAgICAgbV9jdXJyZW50UmVxdWVzdCA9IG51
bGxwdHI7CisgICAgICAgICAgICBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRpbnVlUHJvY2Vz
c2luZ1JlcXVlc3QoKndlYWtSZXF1ZXN0KTsKKyAgICB9KTsKK30KKwordm9pZCBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcjo6Y29udGludWVQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3QmKQoreworICAgIC8vIFRPRE86IHN0YXJ0IGNhcHR1cmluZyBhdWRp
byBhbmQgcmVjb2duaXppbmcuCiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0
b3BQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKQor
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c2VuZFVwZGF0ZShTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZSB0eXBlLCBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiBl
cnJvciwgT3B0aW9uYWw8VmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+IHJlc3Vs
dCkKIHsKKyAgICBhdXRvIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
OjpjcmVhdGUoY2xpZW50SWRlbnRpZmllciwgdHlwZSk7CisgICAgaWYgKHR5cGUgPT0gU3BlZWNo
UmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvcikKKyAgICAgICAgdXBkYXRlID0gV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKGNsaWVudElkZW50aWZpZXIsICpl
cnJvcik7CisgICAgaWYgKHR5cGUgPT0gU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpSZXN1
bHQpCisgICAgICAgIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpj
cmVhdGVSZXN1bHQoY2xpZW50SWRlbnRpZmllciwgKnJlc3VsdCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpEaWRSZWNlaXZlVXBkYXRlKHVwZGF0
ZSksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0
b3BQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJl
cXVlc3QpCit7CisgICAgLy8gVE9ETzogc3RvcCBjYXB0dXJpbmcgYXVkaW8gYW5kIGZpbmFsaXpp
bmcgcmVjb2duaXRpb24gcmVzdWx0IHdpdGggY2FwdHVyZWQgYXVkaW8uCisgICAgc2VuZFVwZGF0
ZShyZXF1ZXN0LmNsaWVudElkZW50aWZpZXIoKSwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25V
cGRhdGVUeXBlOjpOb01hdGNoKTsKKyAgICBzZW5kVXBkYXRlKHJlcXVlc3QuY2xpZW50SWRlbnRp
ZmllcigpLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7CisgICAg
QVNTRVJUKG1fY3VycmVudFJlcXVlc3QuZ2V0KCkgPT0gJnJlcXVlc3QpOworICAgIG1fY3VycmVu
dFJlcXVlc3QgPSBudWxscHRyOworICAgIHByb2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJZk5lZWRl
ZCgpOwogfQogCiBJUEM6OkNvbm5lY3Rpb24qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjptZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAppbmRleCA3YWEyNDE2MzhiOWMzNTE0OTY2OTg0
NDMyZGJjNTMwZGY4NDg0YTM3Li41N2ZjYzY3NzcwNjBhODkzMzVmYzVjYWE1YTAwYzJhODA5OTVm
YTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9u
U2VydmVyLmgKQEAgLTI4LDIxICsyOCwzMCBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVu
dGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TcGVlY2hSZWNvZ25pdGlvbkVycm9yLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitlbnVtIGNsYXNzIFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlVHlwZTsKK3N0cnVjdCBDbGllbnRPcmlnaW47Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CitlbnVtIGNsYXNzIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkRlY2lzaW9uIDogYm9vbDsKIAogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXJJZGVudGlmaWVyID0gV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI7Cit1c2luZyBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DaGVja2VyID0gRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkRlY2lzaW9uKT4mJik+OwogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlciA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRp
Zmllcik7CisgICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4m
JiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DaGVja2VyJiYpOwogCi0gICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvJiYpOworICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBj
b250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMs
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmKTsKICAgICB2b2lkIHN0b3AoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CiAgICAgdm9pZCBhYm9ydChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKICAg
ICB2b2lkIGludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcik7CkBAIC01MSw5ICs2MCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJv
Y2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7CiAgICAgdm9pZCByZW1vdmVQZW5kaW5n
UmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyKTsKIAotICAgIC8vIFRPRE86IGltcGxlbWVudCB0aGVzZS4KICAgICB2b2lkIHN0YXJ0UG9j
ZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKKyAgICB2
b2lkIGNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0Jik7CiAgICAgdm9pZCBzdG9wUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0Jik7CisgICAgdm9pZCBzZW5kVXBkYXRlKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25F
cnJvcj4gPSBXVEY6Om51bGxvcHQsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdERhdGE+PiA9IFdURjo6bnVsbG9wdCk7CiAKICAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwpAQCAtNjQsOCArNzQsOSBAQCBwcml2YXRlOgogCiAg
ICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFNwZWVjaFJlY29nbml0
aW9uU2VydmVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAgRGVxdWU8UmVmPFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4+IG1fcGVuZGluZ1JlcXVlc3RzOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IG1fY3VycmVudFJlcXVlc3Q7Cisg
ICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dD4+IG1fcGVuZGluZ1JlcXVlc3RzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3Q+IG1fY3VycmVudFJlcXVlc3Q7CisgICAgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2hlY2tlciBtX3Blcm1pc3Npb25DaGVja2VyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblNlcnZlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluCmluZGV4IGUzMWJlZmIwOTVhZDg4
ZGFkYzMwZjA5OTVjNTdlNDE1MzczZjEyZjQuLmEyOGI5MjFjYjk2NGFmYWYyZmYyMmM5MTZiYmU0
NmU4Mjk5MTMyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAg
Ki8KICAKICBtZXNzYWdlcyAtPiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlciBOb3RSZWZDb3VudGVk
IHsKLSAgICBTdGFydChzdHJ1Y3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5m
byBpbmZvKQorICAgIFN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIGxhbmcsIGJvb2wgY29udGludW91cywg
Ym9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBzdHJ1Y3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbikKICAgICBTdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBBYm9ydChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAgICAgSW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCBjNjYwZTU2NmIwOGRkMzY3OTEzZDIyNDUwNmJkZjFlZGYwMGQ1
ZDg3Li41NDg3ZTdlZTQwYmVlY2ZkZmE2N2U5NDg3ZWMzNDlmMjg3NGMyYzFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg2LDYgKzg2LDcgQEAKICNpbmNs
dWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIlNhZmVCcm93c2luZ1dhcm5p
bmcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAi
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kVHlwZS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVk
ZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgpAQCAtNDg5Miw2ICs0ODkzLDggQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZENoYW5nZU1haW5Eb2N1bWVudChGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKICAg
ICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAjZW5kaWYKICAgICBtX2lzUXVvdGFJbmNyZWFzZURl
bmllZCA9IGZhbHNlOworCisgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdJc0JlY29taW5nVmlzaWJs
ZSgpCkBAIC03NjA1LDYgKzc2MDgsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShS
ZXNldFN0YXRlUmVhc29uIHJlc2V0U3RhdGVSZWFzb24pCiAjaWYgRU5BQkxFKFdFQl9BVVRITikK
ICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPmF1dGhlbnRpY2F0b3JNYW5hZ2VyKCkuY2FuY2VsUmVx
dWVzdChtX3dlYlBhZ2VJRCwgV1RGOjpudWxsb3B0KTsKICNlbmRpZgorCisgICAgbV9zcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyID0gbnVsbHB0cjsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVh
c29uIHRlcm1pbmF0aW9uUmVhc29uKQpAQCAtMTAxNzMsNiArMTAxNzgsMTQgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRlc3RpbmcoKQogICAgIH0p
OwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIpCisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciA9
IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcj4oKnRoaXMpOwor
CisgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLT5yZXF1ZXN0KGNsaWVu
dE9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2NlZmJmYzY5NDVlZGZlNDNhZTU2YzJkNTY0YzBl
ODFlOTViYjRhNi4uYWNlNmVjZTZlMzFlYjJkM2U1MWUzYjIzZTk3NmE4OWQ4NTUyMmYyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTMwNSw2ICszMDUsNyBAQCBj
bGFzcyBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE7CiBjbGFzcyBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHk7CiBjbGFzcyBTZWNLZXlQcm94eVN0b3JlOworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlcjsKIGNsYXNzIFVzZXJEYXRhOwogY2xhc3MgVmlld1NuYXBzaG90Owog
Y2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKQEAgLTM2NSw2ICszNjYsNyBAQCBzdHJ1Y3QgVXNlck1l
c3NhZ2U7CiAKIGVudW0gY2xhc3MgTmVnb3RpYXRlZExlZ2FjeVRMUyA6IGJvb2w7CiBlbnVtIGNs
YXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgOiBib29sOworZW51bSBjbGFzcyBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiA6IGJvb2w7CiBlbnVtIGNsYXNzIFVuZG9P
clJlZG8gOiBib29sOwogZW51bSBjbGFzcyBXZWJDb250ZW50TW9kZSA6IHVpbnQ4X3Q7CiAKQEAg
LTE4MTksNiArMTgyMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1lZGlhQ2FwdHVyZVJlcG9y
dGluZ0RlbGF5KFNlY29uZHMgY2FwdHVyZVJlcG9ydGluZ0RlbGF5KSB7IG1fbWVkaWFDYXB0dXJl
UmVwb3J0aW5nRGVsYXkgPSBjYXB0dXJlUmVwb3J0aW5nRGVsYXk7IH0KICAgICBzaXplX3Qgc3Vz
cGVuZE1lZGlhUGxheWJhY2tDb3VudGVyKCkgeyByZXR1cm4gbV9zdXNwZW5kTWVkaWFQbGF5YmFj
a0NvdW50ZXI7IH0KIAorICAgIHZvaWQgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJik7CisKIHByaXZhdGU6CiAgICAg
V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdl
Q29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTI4
ODgsNiArMjg5Miw4IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fc3VzcGVuZE1lZGlhUGxheWJh
Y2tDb3VudGVyIHsgMCB9OwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0
aW9uPiBtX25ld1BhZ2VOYXZpZ2F0aW9uQWRDbGlja0F0dHJpYnV0aW9uOworCisgICAgc3RkOjp1
bmlxdWVfcHRyPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI+IG1fc3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggN2Y4MzE1
YjczY2Y0MjkwM2YyNjdhMTQ0MWI0YzY4MjRmZTViZjg4OS4uNjkyOTdjMjY3MmQ4NTRjNTI2OWI4
YWJmMDI1ZmE0N2Y4NTBmMzc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUGx1Z2luSW5mb1N0b3Jl
LmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJQcm92aXNp
b25hbFBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3QuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCkBA
IC0xNzEzLDcgKzE3MTQsMTkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJl
Y29nbml0aW9uU2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnQKIHsKICAgICBhdXRv
IHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0gbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZlck1hcC5h
ZGQoaWRlbnRpZmllciwgbnVsbHB0cik7CiAgICAgQVNTRVJUKHNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyLmlzTmV3RW50cnkpOwotICAgIHNwZWVjaFJlY29nbml0aW9uU2VydmVyLml0ZXJhdG9yLT52
YWx1ZSA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5l
Y3Rpb24oKSksIGlkZW50aWZpZXIpOworICAgIHNwZWVjaFJlY29nbml0aW9uU2VydmVyLml0ZXJh
dG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYo
KmNvbm5lY3Rpb24oKSksIGlkZW50aWZpZXIsIFtpZGVudGlmaWVyLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKHRoaXMpXShjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYgY29tcGxldGlv
bkhhbmRsZXIpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGZvciAoYXV0byogcGFnZSA6IHdlYWtUaGlzLT5wYWdlcygpKSB7
CisgICAgICAgICAgICBpZiAocGFnZSAmJiBwYWdlLT53ZWJQYWdlSUQoKSA9PSBpZGVudGlmaWVy
KSB7CisgICAgICAgICAgICAgICAgcGFnZS0+cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbihvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbjo6RGVueSk7CisgICAg
fSk7CiAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyLCAqc3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzAyNzQ5NGI3M2FjY2VjNWVmZDgxYzY5
NGQzYTg1M2I0ZWRlZjBjYS4uOTE2MGExMmRmZDVkYjAzNmJkYTc3ZWFmM2M1OTUwNDAyMTBlMzU2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMzc0LDYgKzEzNzQsNyBAQAogCQk5MzNFODM1NTIzQTA3QzA2MDBERUYyODkgLyogV2Vi
SURCU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzNFODM1MzIzQTA3QkY4MDBERUYyODkgLyogV2ViSURCU2VydmVyLmggKi87IH07CiAJCTkz
M0U4MzVBMjNBMUFFMjgwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzRTgzNTkyM0ExQURGNTAw
REVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VzLmggKi87IH07CiAJCTkzM0U4MzVCMjNBMUI3
NTAwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzRTgzNTgyM0ExQURGNTAwREVG
Mjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTkzNDI1ODlB
MjU1QjUzNUEwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDI1ODk4MjU1QjUzNEIwMDU5
RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCAqLzsgfTsKIAkJOTM0QjcyNDQxOUY1
QjlCRTAwQUU5NkQ2IC8qIFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0QjcyNDMxOUY1QjlCRTAwQUU5NkQ2IC8q
IFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzNTZGMkRDMjE1MkI2QjUwMEU2RDVERiAvKiBXZWJTV0NsaWVu
dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxN0E1MzAyMUY0NzkzQjIwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uaCAq
LzsgfTsKIAkJOTM1NkYyREQyMTUyQjZGNjAwRTZENURGIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCQTA0
RTAyMTUxQURGNDAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbi5oICovOyB9OwpAQCAt
MTQwOCw2ICsxNDA5LDkgQEAKIAkJOTNENkI3ODcyNTRDQ0Q4QzAwNThERDNBIC8qIFdlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc4NjI1NENDRDhCMDA1OEREM0EgLyogV2ViU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXMuaCAqLzsgfTsKIAkJOTNENkI3ODgyNTRD
Q0Q5NDAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzUmVw
bGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNE
NkI3N0UyNTRDQ0FCQjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1l
c3NhZ2VzUmVwbGllcy5oICovOyB9OwogCQk5M0Q2Qjc4QTI1NENENDNFMDA1OEREM0EgLyogV2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzdEMjU0Q0NBQkIwMDU4
REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OworCQk5M0Q2QjdCNDI1NTI2OEQ1MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNENkI3QUYyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3QuaCAqLzsgfTsKKwkJOTNENkI3QjUyNTUyNjhENzAwNThERDNBIC8qIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi87IH07CisJCTkzRDZCN0I5MjU1MzRB
MTcwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdCNzI1NTM0
QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRTZBNEVF
MUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcgLyog
X1dLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzRjU0OUI0MUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmln
dXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk5NTBGMjg4MDI1
MjQxNEVBMDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBGMjg3RTI1MjQxNEU5MDBCNzRGMUMg
LyogV0tNb3VzZURldmljZU9ic2VydmVyLmggKi87IH07CkBAIC00NDY4LDYgKzQ0NzIsOCBAQAog
CQk5MzNFODM1NzIzQTFBODcyMDBERUYyODkgLyogV2ViSURCU2VydmVyLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYklEQlNlcnZlci5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzRTgzNTgyM0ExQURGNTAwREVGMjg5IC8qIFdlYklEQlNl
cnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9XZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5MzNFODM1OTIzQTFBREY1MDBERUYyODkgLyogV2Vi
SURCU2VydmVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2Vi
SURCU2VydmVyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSURC
U2VydmVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJ
OTM0MjU4OEYyNTU1RENBNTAwNTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM0MjU4OTgyNTVCNTM0QjAwNTlFRUREIC8qIE1lZGlh
UGVybWlzc2lvblV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTM0QjcyNDMxOUY1QjlCRTAwQUU5NkQ2IC8qIFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1RUVCOTUxMjc3NjE2RDAwMzMyMkI4IC8qIFdL
QnVuZGxlQmFja0ZvcndhcmRMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTM1RUVCOTYxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRM
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlQmFja0Zvcndh
cmRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTI4LDYgKzQ1MzQsMTEg
QEAKIAkJOTNENkI3ODAyNTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2
Qjc4MTI1NENDQUJDMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5M0Q2Qjc4NjI1NENDRDhCMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNENkI3QUYyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5M0Q2QjdCMDI1NTI2OEExMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNENkI3QjIyNTUyNjhBMjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzRDZCN0I4MjU1MzRBMTIwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVz
dFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tIaXRUZXN0UmVz
dWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjU0OUIzMUUzMTc0QjcwMDBF
NzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0Y1NDlCNTFFMzE3NERBMDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3Vy
YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1NuYXBz
aG90Q29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0NTgs
NiArNjQ2OSw3IEBACiAJCQkJN0E4MjFGNEQxRTJGNjc5RTAwNjA0NTc3IC8qIExlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5tbSAqLywKIAkJCQlBMURGNjMxMTE4RTBCN0M4MDAzQTNF
MkEgLyogTGVnYWN5RG93bmxvYWRDbGllbnQuaCAqLywKIAkJCQlBMURGNjMxMDE4RTBCN0M4MDAz
QTNFMkEgLyogTGVnYWN5RG93bmxvYWRDbGllbnQubW0gKi8sCisJCQkJOTM0MjU4OEYyNTU1RENB
NTAwNTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbSAqLywKIAkJCQk0MTEyODZF
RjIxQzhBOTBDMDAzQTg1NTAgLyogTWVkaWFVdGlsaXRpZXMuaCAqLywKIAkJCQk0MTEyODZGMDIx
QzhBOTBEMDAzQTg1NTAgLyogTWVkaWFVdGlsaXRpZXMubW0gKi8sCiAJCQkJMUFCQzNERjQxODk5
RTQzNzAwNEYwNjI2IC8qIE5hdmlnYXRpb25TdGF0ZS5oICovLApAQCAtOTE4OCw2ICs5MjAwLDcg
QEAKIAkJCQk1Q0VBQkEyQjIzMzMyNTE0MDA3OTc3OTcgLyogTGVnYWN5R2xvYmFsU2V0dGluZ3Mu
Y3BwICovLAogCQkJCTVDRUFCQTJBMjMzMzI0NzcwMDc5Nzc5NyAvKiBMZWdhY3lHbG9iYWxTZXR0
aW5ncy5oICovLAogCQkJCTMxNjA3RjM4MTk2MjcwMDIwMDlCODdEQSAvKiBMZWdhY3lTZXNzaW9u
U3RhdGVDb2RpbmcuaCAqLywKKwkJCQk5MzQyNTg5ODI1NUI1MzRCMDA1OUVFREQgLyogTWVkaWFQ
ZXJtaXNzaW9uVXRpbGl0aWVzLmggKi8sCiAJCQkJQkM2RURBQTUxMTEyNzFDNjAwRTc2NzhCIC8q
IFBhZ2VDbGllbnQuaCAqLywKIAkJCQkxQUM3NTM3OTE4M0E5RkRBMDA3MkNCMTUgLyogUGFnZUxv
YWRTdGF0ZS5jcHAgKi8sCiAJCQkJMUFDNzUzN0ExODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VMb2Fk
U3RhdGUuaCAqLywKQEAgLTkyMDcsNiArOTIyMCw5IEBACiAJCQkJQkMxMTFCMDgxMTJGNUUzQzAw
MzM3QkFCIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovLAogCQkJCTFBMzAwNjZDMTExMEY0
RjcwMDMxOTM3QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8sCiAJCQkJNUNBOTg1NDkyMTBC
RUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmcuaCAqLywKKwkJCQk5M0Q2QjdCMDI1
NTI2OEExMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAg
Ki8sCisJCQkJOTNENkI3QjIyNTUyNjhBMjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIuaCAqLywKKwkJCQk5M0Q2QjdBRjI1NTI2OEExMDA1OEREM0EgLyogU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oICovLAogCQkJCTkzRDZCNzZCMjU0Qjg5
NTgwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAgKi8sCiAJCQkJOTNENkI3
NkMyNTRCODk1ODAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmggKi8sCiAJCQkJ
OTNENkI3N0EyNTRDOTg0RDAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3Nh
Z2VzLmluICovLApAQCAtOTU0Nyw2ICs5NTYzLDggQEAKIAkJCQkzMzM2NzYzOTEzMEM5OURDMDA2
QzlERTIgLyogV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oICovLAogCQkJCTFBREU0NkIwMTk1NEVD
NjEwMDBGNzk4NSAvKiBXS1Nlc3Npb25TdGF0ZVJlZi5jcHAgKi8sCiAJCQkJMUFERTQ2QjExOTU0
RUM2MTAwMEY3OTg1IC8qIFdLU2Vzc2lvblN0YXRlUmVmLmggKi8sCisJCQkJOTNENkI3QjgyNTUz
NEExMjAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3Bw
ICovLAorCQkJCTkzRDZCN0I3MjU1MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLmggKi8sCiAJCQkJNTFGODg2QTMxRjJDMjE0QTAwQzE5M0VGIC8q
IFdLVGVzdGluZ1N1cHBvcnQuY3BwICovLAogCQkJCTUxRjg4NkE0MUYyQzIxNEEwMEMxOTNFRiAv
KiBXS1Rlc3RpbmdTdXBwb3J0LmggKi8sCiAJCQkJMzE0ODg4RkUxRDkxQjExRDAwMzc3MDQyIC8q
IFdLVGV4dENoZWNrZXIuY3BwICovLApAQCAtMTExNDQsNiArMTExNjIsNyBAQAogCQkJCTFBNkQ4
NkMyMURGNzUyNjUwMDc3NDVFOCAvKiBNYWNoTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNDNTZGNzkxMTU5OTU3RDAwMUNDQUY5IC8qIE1hY2hQb3J0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTI0QjVGMzExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJOTM0MjU4OUEyNTVCNTM1QTAwNTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0aWxp
dGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdFMTlFRkMyM0Q0MDFGMTAwOTRGRkI0IC8qIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0Ux
OUVGRDIzRDQwMUYxMDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXNS
ZXBsaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEgLyog
TWVudVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTM4NSw2ICsxMTQwNCw4IEBACiAJ
CQkJNTdCQkVBNkQyMkJDMEJGRTAwMjczOTk1IC8qIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3ku
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3NkNBOUQ3MjJCODYyMTgwMDMwMTQzQyAvKiBTT0F1dGhv
cml6YXRpb25OU1VSTEV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODUyMkIzNTE2
OTAwOEQwRThCIC8qIFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTkzRDZCN0I1MjU1MjY4RDcwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q2QjdCNDI1NTI2OEQ1MDA1OEREM0EgLyog
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTNENkI3NzIyNTRCQjUxOTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4NDI1NENDRDBFMDA1OEREM0EgLyogU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3ODUyNTRDQ0Q0
MzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXNSZXBsaWVzLmggaW4g
SGVhZGVycyAqLywKQEAgLTExOTk4LDYgKzEyMDE5LDcgQEAKIAkJCQk1MTNFNDYyRDFBRDgzNzU2
MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5M0Y1NDlCNDFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTg3MjJCMzUxNzAwMDhEMEU4QiAvKiBXS1NP
QXV0aG9yaXphdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q2QjdCOTI1NTM0
QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0E3OEZGMzIyMjQxOTE5NjAwOTY0ODNFIC8qIFdLU3RvcmFnZUFj
Y2Vzc0FsZXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYwNjEyNEZGMDI3MDA2OEYyMEEg
LyogV0tTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjFBMTI0RkYwMzcwMDY4RjIw
QSAvKiBXS1N0cmluZ0NGLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAKaW5kZXggZWExNmIyZWQ3NjY1YjMyYmQzOWNhYzQ2
MzJiNGI5YTUxYTc1ZDZiMS4uM2YzNTMxOTRhMzJjM2U2NzliY2EyOWZiZWE4NTAzMWM5MjFlNGZj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAK
QEAgLTU5LDEwICs1OSw5IEBAIHZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpy
ZWdpc3RlckNsaWVudChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvCiAgICAgbV9jbGllbnRN
YXAuYWRkKGNsaWVudC5pZGVudGlmaWVyKCksIG1ha2VXZWFrUHRyKGNsaWVudCkpOwogfQogCi12
b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywg
dWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKQordm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb246OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRp
bnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luKQogewotICAgIFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdEluZm8gaW5mbyB7IGNsaWVudElkZW50aWZpZXIsIGxhbmcsIGNv
bnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMgfTsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3RhcnQoaW5mbykpOworICAgIHNlbmQo
TWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTdGFydChjbGllbnRJZGVudGlmaWVy
LCBsYW5nLCBjb250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzLCBXVEZN
b3ZlKGNsaWVudE9yaWdpbikpKTsKIH0KIAogdm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb246OnN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciBjbGllbnRJZGVudGlmaWVyKQpAQCAtODAsNyArNzksNyBAQCB2b2lkIFdlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbjo6aW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lYwogICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpJ
bnZhbGlkYXRlKGNsaWVudElkZW50aWZpZXIpKTsKIH0KIAotdm9pZCBXZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb246OmRpZFJlY2VpdmVVcGRhdGUoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25VcGRhdGUmIHVwZGF0ZSkKK3ZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uOjpkaWRSZWNlaXZlVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYg
dXBkYXRlKQogewogICAgIGF1dG8gY2xpZW50SWRlbnRpZmllciA9IHVwZGF0ZS5jbGllbnRJZGVu
dGlmaWVyKCk7CiAgICAgaWYgKCFtX2NsaWVudE1hcC5jb250YWlucyhjbGllbnRJZGVudGlmaWVy
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAppbmRleCAy
OGRiZDE5N2NiM2Y3OThmYzc2MzE5OWViYjEyZGUxM2FlZDc1MWIxLi40NDNiMDRmMWNjYWFiMGEw
ZTZhYTUzODMxZTk4NWQxMGE2YTUzMzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbi5oCkBAIC00MywxMSArNDMsMTEgQEAgY2xhc3MgV2ViUGFnZTsKIAog
dXNpbmcgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uSWRlbnRpZmllciA9IFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyOwogCi1jbGFzcyBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gOiBw
dWJsaWMgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLCBwcml2YXRlIElQQzo6
TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CitjbGFzcyBXZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2
YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24+IGNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25JZGVudGlmaWVyKTsKIAotICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNv
bnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcykg
ZmluYWw7CisgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywg
Ym9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mJikgZmluYWw7CiAgICAgdm9pZCBzdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmlu
YWw7CiAKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB+V2ViU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uKCk7CiAKICAgICB2b2lkIHJlZ2lzdGVyQ2xpZW50KFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2
ZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZSYmKSBmaW5hbDsKICAgICB2b2lkIGludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlci4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCAzYzQxMjIxYWVlMjM5NTY1NmQ1MGM2MjU5YzA5MmJhMDg2MWQ5ODQ5Li43OGZmYzZiZDA0ZDlm
MzdiM2Q1YjkxMTViN2ZmNmFhMzY5YWU5YTA5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjAtMTEtMTAgIFNpaHVp
IExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBl
cm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzcxMjIyNjM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3Q6CisgICAgICAgICogTW9iaWxlTWlu
aUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5mby5wbGlzdDoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tOiBB
ZGRlZC4KKyAgICAgICAgKC1bU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uVUlEZWxlZ2F0ZSBf
d2ViVmlldzpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOmRlY2lz
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bU3BlZWNoUmVjb2duaXRpb25NZXNzYWdlSGFuZGxl
ciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL3NwZWVjaHJlY29nbml0aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5j
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNl
dElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OmRlY2lkZVBvbGlj
eUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6Y29tcGxldGVTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVjayk6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkdyYW50ZWQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2Vi
Vmlld1dpdGhPcHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3Rh
dGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDIwLTExLTA5ICBBYWthc2ggSmFpbiAgPGFh
a2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbYnVpbGQud2Via2l0Lm9yZ10gRG8gbm90
IHByaW50IG1hc3RlciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW4gYnVpbGQgc3RlcHMKZGlmZiAt
LWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0IGIvVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL0luZm8ucGxpc3QKaW5kZXggNGUyYjFmNDgxOWFkNTEwM2U0Y2YxNzA5YjdjNTNhNjZl
OGIzOTVlNS4uMzNhM2NhMWJlNzM1MDhlMWZmY2IwMjk1N2M4NjRlODU5MmRhYWE0ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvbWFjL0luZm8ucGxpc3QKQEAgLTUyLDkgKzUyLDExIEBACiAJCQk8c3RyaW5nPkVkaXRv
cjwvc3RyaW5nPgogCQk8L2RpY3Q+CiAJPC9hcnJheT4KLSAgICA8a2V5Pk5TQ2FtZXJhVXNhZ2VE
ZXNjcmlwdGlvbjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5nIHZpZGVvIG9uIGJlaGFsZiBv
ZiB3ZWJzaXRlczwvc3RyaW5nPgotICAgIDxrZXk+TlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlv
bjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5nIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRl
czwvc3RyaW5nPgorCTxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmlu
Zz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5O
U01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvcmRpbmcgYXVk
aW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5OU1NwZWVjaFJlY29nbml0
aW9uVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVjb2duaXppbmcgY2FwdHVyZWQg
YXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CiA8L2RpY3Q+CiA8L3BsaXN0Pgpk
aWZmIC0tZ2l0IGEvVG9vbHMvTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5m
by5wbGlzdCBiL1Rvb2xzL01vYmlsZU1pbmlCcm93c2VyL01vYmlsZU1pbmlCcm93c2VyL0luZm8u
cGxpc3QKaW5kZXggMmQxYmM1ODJmYmU3NjVjZmRjNDEwNWVmZTllY2MxZDgzMjBjYzk1OS4uNTM4
N2IzNzQ5YTQ3NGZlMGIzZDljNjA5NWNiMjg4MTdiOGY5MjMwYSAxMDA2NDQKLS0tIGEvVG9vbHMv
TW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5mby5wbGlzdAorKysgYi9Ub29s
cy9Nb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBsaXN0CkBAIC01NCw5
ICs1NCwxMSBAQAogCQk8a2V5Pk5TQWxsb3dzQXJiaXRyYXJ5TG9hZHNJbldlYkNvbnRlbnQ8L2tl
eT4KIAkJPHRydWUvPgogCTwvZGljdD4KLSAgICA8a2V5Pk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlv
bjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5nIHZpZGVvIG9uIGJlaGFsZiBvZiB3ZWJzaXRl
czwvc3RyaW5nPgotICAgIDxrZXk+TlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlvbjwva2V5Pgot
ICAgIDxzdHJpbmc+UmVjb3JkaW5nIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5n
PgorCTxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvcmRp
bmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5OU01pY3JvcGhv
bmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvcmRpbmcgYXVkaW8gb24gYmVo
YWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5OU1NwZWVjaFJlY29nbml0aW9uVXNhZ2VE
ZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVjb2duaXppbmcgY2FwdHVyZWQgYXVkaW8gb24g
YmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CiA8L2RpY3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAxMmM4MDEwY2VmYWMzNWYwNmU4YzNiY2I0NzgzY2Q5MzcxNDk1Zjcy
Li5kM2U3MzIzMzc2YzFkNGViNDQ4MDJjNDdiYTY5Y2UwODVhOGM0NTQ5IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNzk3LDYgKzc5Nyw4IEBACiAJCTkzMjlBQTI5MURFM0Y4MUUwMDNBQkQw
NyAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzI5QUEyODFERTNGODFFMDAzQUJEMDcgLyogVGV4dEJyZWFrSXRl
cmF0b3IuY3BwICovOyB9OwogCQk5MzJBRTUzRDFEMzcxMDQ3MDA1REZGQUYgLyogZm9jdXMtaW5w
dXRzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM1NzVDNTUxRDMwMzY2RTAwMEQ2MDREIC8qIGZvY3VzLWlucHV0cy5odG1sICovOyB9
OwogCQk5MzNENjMxRDFGQ0I3NjIwMDAzMkVDRDYgLyogSGFzaGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzM0Q2MzFCMUZDQjc2MTgwMDMyRUNE
NiAvKiBIYXNoZXIuY3BwICovOyB9OworCQk5MzQyNTg5QzI1NUI2MDlCMDA1OUVFREQgLyogU3Bl
ZWNoUmVjb2duaXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzQyNTg5QjI1NUI2MDlBMDA1OUVFREQgLyogU3BlZWNoUmVjb2duaXRpb24ubW0g
Ki87IH07CisJCTkzNDI1ODlFMjU1QjZBMTIwMDU5RUVERCAvKiBzcGVlY2hyZWNvZ25pdGlvbi11
c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQyNTg5RDI1NUI2NkEwMDA1OUVFREQgLyog
c3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwgKi87IH07
CiAJCTkzNTc4NkNDMjBGNkEyNzAwMDAwQ0RGQyAvKiBJbmRleGVkREIuc3FsaXRlMy13YWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RkE1
QzUyMEY2OUZFRDAwNDBEQzFCIC8qIEluZGV4ZWREQi5zcWxpdGUzLXdhbCAqLzsgfTsKIAkJOTM1
Nzg2Q0QyMEY2QTI5MTAwMDBDREZDIC8qIEluZGV4ZWREQi5zcWxpdGUzIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEZBNUM3MjBGNjlGRUUw
MDQwREMxQiAvKiBJbmRleGVkREIuc3FsaXRlMyAqLzsgfTsKIAkJOTM1Nzg2Q0UyMEY2QTJBMTAw
MDBDREZDIC8qIEluZGV4ZWREQi5zcWxpdGUzLXNobSBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRGQTVDNjIwRjY5RkVEMDA0MERDMUIgLyog
SW5kZXhlZERCLnNxbGl0ZTMtc2htICovOyB9OwpAQCAtMTYwNiw2ICsxNjA4LDcgQEAKIAkJCQlG
NEY0MDVCRDFENEMwRDFDMDA3QTk3MDcgLyogc2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgt
YXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDMDFBMjNGMjEyNjYxNTY3MDBD
OUVENTUgLyogc3BhY2ViYXItc2Nyb2xsaW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJRjRDRkNEREEyNDlGQzlFNDAwNTI3NDgyIC8qIFNwYWNlT25seS5vdGYgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCisJCQkJOTM0MjU4OUUyNTVCNkExMjAwNTlFRUREIC8qIHNwZWVjaHJlY29nbml0
aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5jZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCUUxOTRFMUJEMTc3RTUzQzcwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNl
aXZlUmVzcG9uc2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1MTVCRTE2RjFENDI4
QkIxMDBERDdDNjggLyogU3RvcmVCbG9iVG9CZURlbGV0ZWQuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQk5QkQ2RDNBMjFGN0IyMTgzMDBCRDQ5NjIgLyogc3Vuc2V0LWluLWN1cGVydGlu
by0xMDBweC50aWZmIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjM5NCw2ICsyMzk3LDggQEAK
IAkJOTMyOUFBMjgxREUzRjgxRTAwM0FCRDA3IC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRCcmVha0l0ZXJhdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzMTQwN0IxN0I0NDE5MDAwRjA4M0IxIC8q
IERpZE5vdEhhbmRsZUtleURvd24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGlkTm90SGFuZGxlS2V5RG93bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzM0Q2MzFCMUZDQjc2MTgwMDMyRUNENiAvKiBIYXNoZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGFzaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTM0MjU4OUIyNTVCNjA5QTAwNTlFRUREIC8qIFNwZWVjaFJlY29nbml0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3BlZWNoUmVjb2duaXRp
b24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNDI1ODlEMjU1QjY2QTAwMDU5
RUVERCAvKiBzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBl
cm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzNEZBNUM1MjBGNjlGRUQwMDQwREMxQiAvKiBJbmRleGVkREIuc3FsaXRlMy13YWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0g
IkluZGV4ZWREQi5zcWxpdGUzLXdhbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
NEZBNUM2MjBGNjlGRUQwMDQwREMxQiAvKiBJbmRleGVkREIuc3FsaXRlMy1zaG0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gIklu
ZGV4ZWREQi5zcWxpdGUzLXNobSI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNEZB
NUM3MjBGNjlGRUUwMDQwREMxQiAvKiBJbmRleGVkREIuc3FsaXRlMyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSBJbmRleGVkREIu
c3FsaXRlMzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzNzMsNiArMzM3OCw3IEBA
CiAJCQkJMzdCQ0E2MUIxQjU5NkJBOTAwMjAxMkNBIC8qIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNJ
bk5ld1dpbmRvd0FjdGlvbnMubW0gKi8sCiAJCQkJMkQ5QTUzQUUxQjMxRkE4RDAwNzRENUFBIC8q
IFNocmlua1RvRml0Lm1tICovLAogCQkJCTJERkY3QjZDMURBNDg3QUYwMDgxNDYxNCAvKiBTbmFw
c2hvdFN0b3JlLm1tICovLAorCQkJCTkzNDI1ODlCMjU1QjYwOUEwMDU5RUVERCAvKiBTcGVlY2hS
ZWNvZ25pdGlvbi5tbSAqLywKIAkJCQlDREMwOTMyRDIxQzk5MzQ0MDAzMEM0QjAgLyogU3RvcFN1
c3BlbmRSZXN1bWVBbGxNZWRpYS5tbSAqLywKIAkJCQk0MTRBRDY4NTIyODVEMUIwMDA3NzdGMkQg
LyogU3RvcmFnZVF1b3RhLm1tICovLAogCQkJCTUxNUJFMTcwMUQ0MjhCRDEwMEREN0M2OCAvKiBT
dG9yZUJsb2JUaGVuRGVsZXRlLm1tICovLApAQCAtMzg5MCw2ICszODk2LDcgQEAKIAkJCQk0NjU2
QTc1NzIwRjkwNTRGMDAwMkUyMUYgLyogU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMt
NC5zcWxpdGUzICovLAogCQkJCUY0RjQwNUJCMUQ0QzBDRjgwMDdBOTcwNyAvKiBza2lubnktYXV0
b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sICovLAogCQkJCUY0Q0ZDREQ4MjQ5RkM5RDkw
MDUyNzQ4MiAvKiBTcGFjZU9ubHkub3RmICovLAorCQkJCTkzNDI1ODlEMjU1QjY2QTAwMDU5RUVE
RCAvKiBzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbCAq
LywKIAkJCQk1MTVCRTE2RTFENDI4OEZGMDBERDdDNjggLyogU3RvcmVCbG9iVG9CZURlbGV0ZWQu
aHRtbCAqLywKIAkJCQk5QkQ2RDNBMTFGN0IyMDIxMDBCRDQ5NjIgLyogc3Vuc2V0LWluLWN1cGVy
dGluby0xMDBweC50aWZmICovLAogCQkJCTlCRDZEM0EwMUY3QjIwMjAwMEJENDk2MiAvKiBzdW5z
ZXQtaW4tY3VwZXJ0aW5vLTIwMHB4LnBuZyAqLywKQEAgLTU0MzksNiArNTQ0Niw3IEBACiAJCQkJ
NTEwQTkxRjgyNEQzNjIyMTAwQkZEODlDIC8qIFNvbnlEdWFsU2hvY2szLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTFFQjEyNjQyNENBNkI2NjAwMENCMDMwIC8qIFNvbnlEdWFsU2hvY2s0Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMTUxQTQxMUFFNjAwNDQ3QzRDIC8qIFNwYWNlYmFyU2Ny
b2xsaW5nLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzNDI1ODlDMjU1QjYwOUIwMDU5RUVERCAv
KiBTcGVlY2hSZWNvZ25pdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3RjRBQUEwMjA4RkFF
RjAwMEE2OEU5RSAvKiBTU0xLZXlHZW5lcmF0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQk4M0JD
NUFDMDIwRTZDMERGMDBGNTg3OUYgLyogU3RhcnRMb2FkSW5EaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFQjEyNjUyNENBNkI2NjAwMENCMDMwIC8qIFN0ZWVs
U2VyaWVzTmltYnVzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TcGVlY2hSZWNvZ25pdGlvbi5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMzNhZDAyYjU0MTUyYzEwNTZlNjQ4YzZhYTJiZjYxMzE0YmExNDA0Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TcGVlY2hSZWNv
Z25pdGlvbi5tbQpAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFdLV2Vi
Vmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0
IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmll
dy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKworc3RhdGljIGJvb2wgc2hvdWxkR3JhbnRQZXJtaXNzaW9uUmVx
dWVzdCA9IHRydWU7CitzdGF0aWMgYm9vbCBwZXJtaXNzaW9uUmVxdWVzdGVkID0gZmFsc2U7Citz
dGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3NhZ2U7CitzdGF0aWMgUmV0YWluUHRyPFdLU2Ny
aXB0TWVzc2FnZT4gbGFzdFNjcmlwdE1lc3NhZ2U7CisKK0BpbnRlcmZhY2UgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uVUlEZWxlZ2F0ZSA6IE5TT2JqZWN0PFdLVUlEZWxlZ2F0ZVByaXZhdGU+
CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gZGVj
aXNpb25IYW5kbGVyOih2b2lkICheKShCT09MKSlkZWNpc2lvbkhhbmRsZXI7CitAZW5kCisKK0Bp
bXBsZW1lbnRhdGlvbiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25VSURlbGVnYXRlCistICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gZGVjaXNpb25I
YW5kbGVyOih2b2lkICheKShCT09MKSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAgICBwZXJtaXNzaW9u
UmVxdWVzdGVkID0gdHJ1ZTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoc2hvdWxkR3JhbnRQZXJtaXNz
aW9uUmVxdWVzdCk7Cit9CitAZW5kCisKK0BpbnRlcmZhY2UgU3BlZWNoUmVjb2duaXRpb25NZXNz
YWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgorQGVuZAorCitA
aW1wbGVtZW50YXRpb24gU3BlZWNoUmVjb2duaXRpb25NZXNzYWdlSGFuZGxlcgorLSAodm9pZCl1
c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRl
bnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKilt
ZXNzYWdlCit7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gdHJ1ZTsKKyAgICBsYXN0U2Ny
aXB0TWVzc2FnZSA9IG1lc3NhZ2U7Cit9CitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworVEVTVChXZWJLaXQyLCBTcGVlY2hSZWNvZ25pdGlvblVzZXJQZXJtaXNzaW9uUGVyc2lz
dGVuY2UpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtb
U3BlZWNoUmVjb2duaXRpb25NZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29u
ZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVy
OmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisgICAgYXV0byBwcmVmZXJlbmNl
cyA9IFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKKyAgICBwcmVmZXJlbmNlcy5fbW9ja0Nh
cHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKKyAgICBwcmVmZXJlbmNlcy5fc3BlZWNoUmVjb2du
aXRpb25FbmFibGVkID0gWUVTOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uVUlEZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAg
c2hvdWxkR3JhbnRQZXJtaXNzaW9uUmVxdWVzdCA9IGZhbHNlOworICAgIHBlcm1pc3Npb25SZXF1
ZXN0ZWQgPSBmYWxzZTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBb
d2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNwZWVjaHJlY29nbml0aW9uLXVzZXItcGVybWlz
c2lvbi1wZXJzaXN0ZW5jZSJdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2
ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJFcnJvcjogbm90LWFsbG93
ZWQgLSBQZXJtaXNzaW9uIGNoZWNrIGZhaWxlZCIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7
CisgICAgRVhQRUNUX1RSVUUocGVybWlzc2lvblJlcXVlc3RlZCk7CisKKyAgICAvLyBQZXJtaXNz
aW9uIHJlc3VsdCBpcyByZW1lbWJlcmVkLgorICAgIHBlcm1pc3Npb25SZXF1ZXN0ZWQgPSBmYWxz
ZTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic3RhcnQoKSJdOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
QCJFcnJvcjogbm90LWFsbG93ZWQgLSBQZXJtaXNzaW9uIGNoZWNrIGZhaWxlZCIsIFtsYXN0U2Ny
aXB0TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX0ZBTFNFKHBlcm1pc3Npb25SZXF1ZXN0ZWQp
OworCisgICAgLy8gUGVybWlzc2lvbiByZXN1bHQgd2lsbCBiZSBjbGVhcmVkIGFmdGVyIGRvY3Vt
ZW50IGNoYW5nZXMuCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRSZXF1ZXN0OltOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJhYm91dDpibGFu
ayJdXV07CisKKyAgICBzaG91bGRHcmFudFBlcm1pc3Npb25SZXF1ZXN0ID0gdHJ1ZTsKKyAgICBw
ZXJtaXNzaW9uUmVxdWVzdGVkID0gZmFsc2U7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0g
ZmFsc2U7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzcGVlY2hyZWNvZ25pdGlv
bi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UiXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJnBlcm1pc3Npb25SZXF1ZXN0ZWQpOworICAgIC8vIFNob3VsZCBub3QgZ2V0IGVycm9y
IG1lc3NhZ2UgYXMgcGVybWlzc2lvbiBpcyBncmFudGVkLgorICAgIEVYUEVDVF9GQUxTRShyZWNl
aXZlZFNjcmlwdE1lc3NhZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3NwZWVjaHJl
Y29nbml0aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5jZS5odG1sIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9zcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Np
b24tcGVyc2lzdGVuY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGNhNmVkMGM4NGY0YmNlN2U4NmFkMTNj
ZGY3ZjMwNDIwZmJmY2EzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9zcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lz
dGVuY2UuaHRtbApAQCAtMCwwICsxLDI5IEBACis8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorPHNj
cmlwdD4KKwordmFyIHNwZWVjaFJlY29nbml0aW9uID0gbnVsbDsKK2Z1bmN0aW9uIHN0YXJ0KCkK
K3sKKyAgICBzdG9wKCk7CisKKyAgICBzcGVlY2hSZWNvZ25pdGlvbiA9IG5ldyBTcGVlY2hSZWNv
Z25pdGlvbigpOworICAgIHNwZWVjaFJlY29nbml0aW9uLm9uZXJyb3IgPSAoZXZlbnQpID0+IHsK
KyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1l
c3NhZ2UoIkVycm9yOiAiICsgZXZlbnQuZXJyb3IgKyAiIC0gIiArICBldmVudC5tZXNzYWdlKTsK
KyAgICB9CisgICAgc3BlZWNoUmVjb2duaXRpb24ub25lbmQgPSAoZXZlbnQpID0+IHsKKyAgICAg
ICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2Uo
IkVuZCIpOworICAgIH0KKyAgICBzcGVlY2hSZWNvZ25pdGlvbi5zdGFydCgpOworfQorCitmdW5j
dGlvbiBzdG9wKCkKK3sKKyAgICBpZiAoIXNwZWVjaFJlY29nbml0aW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBzcGVlY2hSZWNvZ25pdGlvbi5zdG9wKCk7CisgICAgc3BlZWNoUmVjb2duaXRp
b24gPSBudWxsOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsCmluZGV4IDU1MTYyZmYzNDNkMjVmNjkwNmMzOTI3NmZkNWE4OTFlZGYyOWI4NjkuLjZmZGNl
MjNmYjg0ZDMwYmNjZDU5NzRhYjcyMDMzMWM5Mjk5ODRjY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbApAQCAtNDAzLDQgKzQwMyw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB1
bmRlZmluZWQgc2V0QWRDbGlja0F0dHJpYnV0aW9uT3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9v
bGVhbiB2YWx1ZSk7CiAgICAgdW5kZWZpbmVkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNp
b25VUkxGb3JUZXN0aW5nKERPTVN0cmluZyB1cmwpOwogICAgIHVuZGVmaW5lZCBtYXJrQWRDbGlj
a0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKKworICAgIC8vIFNwZWVjaFJlY29n
bml0aW9uCisgICAgdW5kZWZpbmVkIHNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3Jh
bnRlZChib29sZWFuIHZhbHVlKTsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBkZmQwMWEzMmYzMTFlMTI0NGFh
Nzg3OWI0Mzc1OTdhZmFjM2VmZDllLi5iMThhYjI3NjM3NjM2MDJlZjdmNjZiMzkxYmE2MjM0ZTY0
MjdhOTE0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKQEAgLTIwNjksNiArMjA2OSwxMSBAQCB2b2lkIFRlc3RSdW5uZXI6
OmRpZFNldEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKCkKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxi
YWNrKERpZFNldEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrSUQpOwogfQogCit2b2lkIFRlc3RSdW5u
ZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChib29sIGdyYW50ZWQp
Cit7CisgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2UoInNldElzU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uR3JhbnRlZCIsIGdyYW50ZWQpOworfQorCiBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDBiZDNhMDllMzJk
NzFiMzUxNmU0ZjhlMDViZWEyMmFmOTk0YjFkMjMuLjk3OTNjNzc3YWQzOGFhZDM0Y2Y1MjVkMTJj
YTg3ZGVhMzE5YTJkM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC01MTUsNiArNTE1LDggQEAgcHVibGljOgogICAgIHZv
aWQgc2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRlc3RpbmcoSlNTdHJpbmdS
ZWYpOwogICAgIHZvaWQgbWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5n
KCk7CiAKKyAgICB2b2lkIHNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChi
b29sKTsKKwogcHJpdmF0ZToKICAgICBUZXN0UnVubmVyKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNmRiYzY4NGU4ODUwYWZlMDQ1OTEzOWZiZTE5
ZDVlNWNjZGI3MjZlNy4uMWM3YTAxZjg2NmQ4ZTM0YWIzZjM1YTZmN2U5ZTlmM2EzYWUyNDhjOSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTYyLDYgKzYy
LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tQcm90ZWN0aW9uU3BhY2UuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tTZWN1cml0eU9yaWdpblJl
Zi5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVGV4dENoZWNrZXIuaD4KICNpbmNsdWRlIDxXZWJL
aXQvV0tVUkwuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYu
aD4KQEAgLTI5Nyw2ICsyOTgsMjEgQEAgc3RhdGljIHZvaWQgcnVuV2ViQXV0aGVudGljYXRpb25Q
YW5lbCgpCiB7CiB9CiAKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIGNhbGxiYWNrKQoreworICAgIFRl
c3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5jb21wbGV0ZVNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNoZWNrKGNhbGxiYWNrKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6Y29tcGxldGVT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVjayhXS1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNhbGxiYWNrUmVmIGNhbGxiYWNrKQoreworICAgIFdLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2tDb21wbGV0ZShjYWxsYmFjaywgbV9pc1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkdyYW50ZWQpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRJc1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCBncmFudGVkKQoreworICAgIG1faXNTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkID0gZ3JhbnRlZDsKK30KKwogV0tQYWdlUmVm
IFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UoV0tQYWdlUmVmLCBXS1BhZ2VDb25maWd1
cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLTmF2aWdhdGlvbkFjdGlvblJlZiBuYXZpZ2F0aW9u
QWN0aW9uLCBXS1dpbmRvd0ZlYXR1cmVzUmVmIHdpbmRvd0ZlYXR1cmVzLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKQogewogICAgIFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldyA9IHN0YXRpY19j
YXN0PFBsYXRmb3JtV2ViVmlldyo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKQEAg
LTY1MCw4ICs2NjYsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9w
dGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgV0tIVFRQQ29va2llU3RvcmVE
ZWxldGVBbGxDb29raWVzKFdLV2Vic2l0ZURhdGFTdG9yZUdldEhUVFBDb29raWVTdG9yZSh3ZWJz
aXRlRGF0YVN0b3JlKCkpLCBudWxscHRyLCBudWxscHRyKTsKIAogICAgIHBsYXRmb3JtQ3JlYXRl
V2ViVmlldyhjb25maWd1cmF0aW9uLmdldCgpLCBvcHRpb25zKTsKLSAgICBXS1BhZ2VVSUNsaWVu
dFYxNCBwYWdlVUlDbGllbnQgPSB7Ci0gICAgICAgIHsgMTQsIG1fbWFpbldlYlZpZXcuZ2V0KCkg
fSwKKyAgICBXS1BhZ2VVSUNsaWVudFYxNSBwYWdlVUlDbGllbnQgPSB7CisgICAgICAgIHsgMTUs
IG1fbWFpbldlYlZpZXcuZ2V0KCkgfSwKICAgICAgICAgMCwgLy8gY3JlYXRlTmV3UGFnZV9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFYwCiAgICAgICAgIDAsIC8vIHNob3dQYWdlCiAgICAgICAgIDAsIC8v
IGNsb3NlCkBAIC03MjQsNyArNzQwLDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2Vi
Vmlld1dpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogICAgICAgICAwLCAv
LyBkaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2UKICAgICAgICAg
MCwgLy8gcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtCiAgICAgICAgIHNob3VsZEFsbG93RGV2
aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3MsCi0gICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0
aW9uUGFuZWwKKyAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbCwKKyAgICAgICAgZGVj
aWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdAogICAgIH07CiAg
ICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJnBhZ2VVSUNs
aWVudC5iYXNlKTsKIApAQCAtMTA1Myw2ICsxMDcwLDggQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6
cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywg
UmUKICAgICBtX3NlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCA9IDA7CiAg
ICAgbV9zaG91bGREaXNtaXNzSmF2YVNjcmlwdEFsZXJ0c0FzeW5jaHJvbm91c2x5ID0gZmFsc2U7
CiAKKyAgICBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQodHJ1ZSk7CisK
ICAgICBhdXRvIGxvYWRBYm91dEJsYW5rID0gW3RoaXNdIHsKICAgICAgICAgbV9kb25lUmVzZXR0
aW5nID0gZmFsc2U7CiAgICAgICAgIFdLUGFnZUxvYWRVUkwobV9tYWluV2ViVmlldy0+cGFnZSgp
LCBibGFua1VSTCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRl
eCAzM2I2NDk0YWM2MjQ0YjkyZmNiNzgwOWE1OGQ3MjAzYzdjMTI1OGE4Li4wNWM4ZjhiZGFhOTVh
ZDg3ZTQzOWUzMDkzYjhhNGYzNGY1ZjgyYzU2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oCkBAIC0zNTEsNiArMzUxLDkgQEAgcHVibGljOgogCiAgICAgV0tVUkxSZWYg
Y3VycmVudFRlc3RVUkwoKSBjb25zdDsKIAorICAgIHZvaWQgY29tcGxldGVTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DaGVjayhXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
UmVmKTsKKyAgICB2b2lkIHNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChi
b29sKTsKKwogcHJpdmF0ZToKICAgICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVm
PiBnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJik7CiAgICAgV0tS
ZXRhaW5QdHI8V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29uZmln
dXJhdGlvbihjb25zdCBUZXN0T3B0aW9ucyYpIGNvbnN0OwpAQCAtNjQwLDYgKzY0Myw4IEBAIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBtX2hhc1NldEFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllciB7IGZhbHNlIH07CiAjZW5kaWYKKworICAgIGJvb2wgbV9pc1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4
IDE0YzA0ZWQxZmE5Mzk0ZjU3MmY2NDlhOTFiNDdlZmIyMDZlZjg1NGUuLjViNjY2MTdiZWUwMTZi
Njc1MWM3YmIyYmNlNmJiOGJhZTQ0ZWIwYTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwCkBAIC0xMzQ1LDYgKzEzNDUsMTEgQEAgV0tSZXRhaW5QdHI8V0tUeXBl
UmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJzZXRJc1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkdyYW50ZWQiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkuc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2xlYW5WYWx1ZSht
ZXNzYWdlQm9keSkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NWU3ZTg0
YzZhOWUzNjBlZWQ5Njg4ZGZjY2YxOWY2MmU4MDU4MWIzLi40NDk1NGMyNzBjNzhjZjQwZmE3MTFj
OTI3YWM1OWFlZTVmYzUyOWI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMTEtMTAgIFNp
aHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2lj
IHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzcxMjIyNjM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBmYXN0L3NwZWVjaHJlY29n
bml0aW9uL3Blcm1pc3Npb24tZXJyb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjAtMTEtMDkgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbmV4cG9zZSBvYnNvbGV0ZSBI
VE1MQXBwbGV0RWxlbWVudCBpbnRlcmZhY2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGJiMzIxOWRh
YTUwOTkyMGNiNDIwOTc2MWZkNjI1MTgxMGIxMmY4MzQuLmY5N2NiNjJhMTZjMzhiYmY5OWZkMDJi
ZGUwNTM1ZDQ0OTI0YzliYzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTc3LDYgKzE3Nyw3IEBA
IHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtYWZ0ZXItc3RvcmFnZS1jcmFz
aC5odG1sIFsgU2tpcCBdCiBzdG9yYWdlL2luZGV4ZWRkYi9JREJPYmplY3QtbGVhay5odG1sIFsg
U2tpcCBdCiBmYXN0L2Zvcm1zL2NhbGwtdGV4dC1kaWQtY2hhbmdlLWluLXRleHQtZmllbGQtd2hl
bi10eXBpbmcuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5
LyBbIFNraXAgXQorZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwg
WyBTa2lwIF0KIAogIyBPbmx5IHBhcnRpYWwgc3VwcG9ydCBvbiBDb2NvYSBwbGF0Zm9ybXMuCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NwZWVjaC1hcGkvIFsgU2tpcCBdCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJy
b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJt
aXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTNlNzk0ZGEwYTljOGM4Mjg1
ZDJiYTM5NmY0OWU0NWNhOGMxNzUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEzIEBACitWZXJpZnkgdGhhdCBlcnJvciBldmVudCBpcyBmaXJlZCB3aGVuIHBlcm1pc3Np
b24gaXMgZGVuaWVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyByZWNv
Z25pdGlvbiA9IG5ldyBTcGVlY2hSZWNvZ25pdGlvbigpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgorUEFTUyByZWNvZ25pdGlvbi5zdGFydCgpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFT
UyBldmVudC5lcnJvciBpcyAibm90LWFsbG93ZWQiCitQQVNTIGV2ZW50Lm1lc3NhZ2UgaXMgIlBl
cm1pc3Npb24gY2hlY2sgZmFpbGVkIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVj
b2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hy
ZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJkMDMzMzBlMjAz
OTA0MTA2ODdkNTdlNmMxNjc5ZmFmNjhjYjg0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCkBAIC0wLDAg
KzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oIlZlcmlmeSB0aGF0IGVycm9yIGV2ZW50IGlzIGZpcmVkIHdoZW4gcGVybWlzc2lvbiBpcyBk
ZW5pZWQuIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIGpzVGVzdElzQXN5bmMg
PSB0cnVlOworICAgIHRlc3RSdW5uZXIuc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25H
cmFudGVkKGZhbHNlKTsKK30KKworc2hvdWxkTm90VGhyb3coInJlY29nbml0aW9uID0gbmV3IFNw
ZWVjaFJlY29nbml0aW9uKCkiKTsKK3Nob3VsZE5vdFRocm93KCJyZWNvZ25pdGlvbi5zdGFydCgp
Iik7CityZWNvZ25pdGlvbi5vbmVycm9yID0gKGV2ZW50KSA9PiB7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJldmVudC5lcnJvciIsICJub3QtYWxsb3dlZCIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZXZlbnQubWVzc2FnZSIsICJQZXJtaXNzaW9uIGNoZWNrIGZhaWxlZCIpOwor
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggOGQ3ZDQ5MGViMzI4NGMzMDlkY2NkMmEwZTE4NmQ5ODA0MzYyN2U5
NC4uYTc0MTk4MGU1YjJlNWIwYjFhMGU5MTY5ZGFhOWE0YjUyNzMwZjA2OCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTgwMyw0ICs4MDMsNSBAQCBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlZC1wb3J0LWRlbGF5Lmh0bWwgWyBQYXNz
IF0KIAogIyBXZWJLaXQyIG9ubHkuCiBqcy90aHJvdy1sYXJnZS1zdHJpbmctb29tLmh0bWwgWyBQ
YXNzIF0KK2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sIFsgUGFz
cyBdCiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVudGVyLXdoaWxlLWV4aXRpbmcuaHRtbCBbIFBh
c3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413769</attachid>
            <date>2020-11-10 20:48:55 -0800</date>
            <delta_ts>2020-11-10 22:26:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201110204853.patch</filename>
            <type>text/plain</type>
            <size>136041</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVmMDRmNjY2ZmEzMmMwMjdlZDQ1ODQz
MzU1OTEzOTA4ZDJmOGVhNzkuLjY1YWI1Yjk3MWQ0NTNjZDhiZGUxZWJhYTQwZTA2ZGRhZjAyNTc1
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMTEtMTAgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1Bs
YXRmb3JtSGF2ZS5oOgorCiAyMDIwLTExLTEwICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFBDTTogQ2hhbmdlIGZyb20gYWQtY2xpY2stYXR0cmlidXRpb24g
dG8gcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudCAoaW4gYWxsIGZvcm1zLCBpbmNsdWRpbmcgLndl
bGwta25vd24gVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ4YTcxYzBkMThhNWQzOGQzOGNmNzVmMzhjNTY0
NDVlNWM1MjQ3YWYuLjhlZjJhZWU1ZjJlMjc2YWEwZWJjZTc3ZmQ3ZTIxZGVjMWE4N2FjN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMC0xMS0xMCAgU2lodWkgTGl1ICA8c2lodWlf
bGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVj
ayBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxODQ3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMjI2Mzg+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbjo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6Y2xpZW50T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2RlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjplcnJvciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6cmVzdWx0IGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oOgorICAgICAgICAq
IHBhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmg6CisKIDIwMjAtMTEtMTAgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJraXQgaW5jb3JyZWN0
bHkgc2V0dGluZyB2aXNpYmlsaXR5U3RhdGUgdG8gInByZXJlbmRlciIgd2hlbiBvcGVuaW5nIGxp
bmsgaW4gbmV3IHRhYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzYzVmMmM2ZDY0NjJmNTY3MTU0MDY2YjliYTE1OWQz
ZDQwMGFiZTVjLi4zYjFjOTU0NGJhM2QwMmM5ZmM1YTBkZmI3MDFiZTExYmEyZDg5NjA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAyMC0xMS0xMCAgU2lodWkgTGl1ICA8c2lodWlfbGl1
QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBm
b3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxODQ3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMjI2Mzg+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIsIHdoaWNoIGNoZWNrcyBhbmQgcmVx
dWVzdHMgc3BlZWNoIHJlY29nbml0aW9uIHBlcm1pc3Npb25zIGJlZm9yZSAKKyAgICAgICAgd2Ug
YWN0dWFsbHkgc3RhcnQgY2FwdHVyaW5nIGF1ZGlvIGFuZCBwZXJmb3JtIHJlY29nbml0aW9uLiBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyIGlzIHBlci1wYWdlLCBsaWtlCisgICAg
ICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLiBUaGUgY2hlY2tzIGluY2x1ZGU6CisgICAgICAg
IDEuIFNhbmRib3ggcmVxdWlyZW1lbnQgZm9yIG1pY3JvcGhvbmUKKyAgICAgICAgMi4gVENDIGNo
ZWNrIGZvciBtaWNyb3Bob25lCisgICAgICAgIDMuIFRDQyBjaGVjayBmb3IgU0ZTcGVlY2hSZWNv
Z25pemVyCisgICAgICAgIDQuIFVzZXIgcGVybWlzc2lvbiBvbiBzcGVlY2ggcmVjb2duaXRpb24g
Zm9yIG9yaWdpbgorCisgICAgICAgIEFkZCBhIGRlbGVnYXRlIGZ1bmN0aW9uIGZvciByZXF1ZXN0
aW5nIHVzZXIgcGVybWlzc2lvbi4gQnkgZGVmYXVsdCwgdXNlciBwZXJtaXNzaW9uIGlzIG5vdCBn
cmFudGVkLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lv
bi1lcnJvci5odG1sCisgICAgICAgIEFQSSB0ZXN0OiBXZWJLaXQyLlNwZWVjaFJlY29nbml0aW9u
VXNlclBlcm1pc3Npb25QZXJzaXN0ZW5jZQorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9X
S0Jhc2UuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2Eu
dHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQ
STo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNs
aWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2tHZXRUeXBlSUQpOgorICAgICAgICAoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFja0NvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW06CisgICAgICAgICgtW1dLUHJlZmVyZW5jZXMgX3Nw
ZWVjaFJlY29nbml0aW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9zZXRT
cGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGls
aXRpZXMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpjaGVja1NhbmRib3hSZXF1aXJlbWVu
dEZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdG
b3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURl
bGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cGVybWl0dGVkVG9DYXB0dXJlQXVkaW8pOgorICAg
ICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cGVy
bWl0dGVkVG9DYXB0dXJlVmlkZW8pOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cmVxdWVzdFN5c3RlbVZhbGlkYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpyZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAg
ICAgICogVUlQcm9jZXNzL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6flNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnROZXh0UmVxdWVzdCk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0UHJvY2Vzc2lu
Z1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y29tcGxldGVDdXJyZW50UmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNo
ZWNrTWljcm9waG9uZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKToK
KyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVx
dWVzdFNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNjZXNz
KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6
cmVxdWVzdFVzZXJQZXJtaXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y29tcGxldGUpOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Ojpvcmln
aW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjb21wbGV0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayk6CisgICAgICAgICogVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFib3J0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OnJlbW92ZVBlbmRpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0UG9jZXNzaW5nUmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpjb250aW51ZVByb2Nlc3NpbmdS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnNlbmRV
cGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RvcFBy
b2Nlc3NpbmdSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVz
c2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlTWFpbkRvY3VtZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVVwZGF0ZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaDoKKwog
MjAyMC0xMS0xMCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW21hY09TXSBFbmZvcmNlIG1lc3NhZ2UgZmlsdGVyaW5nIGluIHRoZSBXZWJDb250ZW50IHBy
b2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggNTI4YmM3NjI3MjU0NjAzYTZhMzM4MTM3YWQ4
MjIwMjI3NGE4YzQ5ZC4uZTI0NGQ4NTk0ODUwY2RiZDA0YmFmYWQwZjE3YmE0NzZkNmEzODE4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTc2MiwzICs3NjIsMTEgQEAKICAgICB8fCAoUExBVEZP
Uk0oQVBQTEVUVikgJiYgX19UVl9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCiAj
ZGVmaW5lIEhBVkVfQVZPVVRQVVRERVZJQ0VfU1BBVElBTEFVRElPIDEKICNlbmRpZgorCisjaWYg
UExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkgfHwgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApCisjZGVmaW5lIEhB
VkVfU1BFRUNIUkVDT0dOSVpFUiAxCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPUykgfHwgUExB
VEZPUk0oTUFDQ0FUQUxZU1QpIHx8IFBMQVRGT1JNKE1BQykKKyNkZWZpbmUgSEFWRV9BVkNBUFRV
UkVERVZJQ0UgMQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKaW5kZXggNTFhMzJjZGFhY2FhMWVkMDExNDI3NjdkMjJl
MzAyNTI2ZGViZjU5NS4uZjExN2MxZmIxYjViZDA0YWU3NTUyNTY1ZmJhYTg4OTFjNWMxYWViYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlNwZWVjaFJlY29nbml0aW9uLmgiCiAKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJQYWdl
LmgiCkBAIC02OSw3ICs3MCw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNwZWVjaFJlY29nbml0aW9u
OjpzdGFydFJlY29nbml0aW9uKCkKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIlJlY29nbml0aW9uIGRvZXMgbm90IGhhdmUg
YSB2YWxpZCBjb25uZWN0aW9uIl9zIH07CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnN0YXJ0KGlkZW50
aWZpZXIoKSwgbV9sYW5nLCBtX2NvbnRpbnVvdXMsIG1faW50ZXJpbVJlc3VsdHMsIG1fbWF4QWx0
ZXJuYXRpdmVzKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigqc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnN0YXJ0KGlkZW50aWZp
ZXIoKSwgbV9sYW5nLCBtX2NvbnRpbnVvdXMsIG1faW50ZXJpbVJlc3VsdHMsIG1fbWF4QWx0ZXJu
YXRpdmVzLCBDbGllbnRPcmlnaW4geyBkb2N1bWVudC50b3BPcmlnaW4oKS5kYXRhKCksIGRvY3Vt
ZW50LnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpIH0pOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3Rh
cnRpbmc7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKaW5kZXggM2Zk
MmQzM2FjYTAyMDUyNjM0MDU4ZDBmYjU2NTJlYjcwMDdmYTUyYS4uNjllZWJjMjkzZDViN2RlMWUz
OGNlZWFkMmEzZWUzOGYwMGQxY2E1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKQEAgLTMxLDE1
ICszMSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudDsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOworc3RydWN0
IENsaWVudE9yaWdpbjsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uIDogcHVi
bGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uPiB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uKCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJv
b2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcykgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVz
dWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBDbGllbnRPcmlnaW4mJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzdG9wKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
VXBkYXRlKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYpID0gMDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuY3BwCmluZGV4IDRhNWU4
YzE2MzAzYzE4NjVjMmIxZmZjZTliNTZlZTI2MjAzYTdmYzUuLmQzYmQ3YTk0YTQyYjlkNWUwNTky
MGM1YmZlN2RiYzQ0YTkxODg3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmNwcApAQCAtMjgsMTEgKzI4
LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0PiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OmNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3RJbmZvJiYgcmVxdWVzdEluZm8pCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0KFdURk1vdmUocmVxdWVzdEluZm8pKSk7Ci19Ci0KIFNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdDo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KFNwZWVjaFJlY29n
bml0aW9uUmVxdWVzdEluZm8mJiByZXF1ZXN0SW5mbykKICAgICA6IG1faW5mbyhXVEZNb3ZlKHJl
cXVlc3RJbmZvKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKaW5kZXggNWNlZWEwMWM3Mzg2NTU2ZDQyNTFm
OGM4Yjk1YzMxMjRiYWZjNjAxMi4uOWFhZGU2MTcxZTA2MmY1YThjYzNhMTYyODkyOTk0OTlkZmQ5
ZDBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCA6IHB1YmxpYyBSZWZD
b3VudGVkPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4geworY2xhc3MgU3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiBjcmVhdGUoU3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsK
IAogICAgIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5jbGllbnRJZGVudGlmaWVyOyB9CiAg
ICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmxhbmc7IH0KICAg
ICBib29sIGNvbnRpbnVvdXMoKSBjb25zdCB7IHJldHVybiBtX2luZm8uY29udGludW91czs7IH0K
ICAgICBib29sIGludGVyaW1SZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmludGVyaW1S
ZXN1bHRzOyB9CiAgICAgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKCkgY29uc3QgeyByZXR1cm4g
bV9pbmZvLm1heEFsdGVybmF0aXZlczsgfQorICAgIGNvbnN0IENsaWVudE9yaWdpbiBjbGllbnRP
cmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2luZm8uY2xpZW50T3JpZ2luOyB9CiAKIHByaXZhdGU6
Ci0gICAgZXhwbGljaXQgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm8mJik7Ci0KICAgICBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIG1faW5m
bzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVxdWVzdEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaAppbmRleCBhYjFlMWFlNmVmMzg4OThjMjFh
MmE5ZGY3YWYxZjAwN2UyNGIxN2QwLi4xZWZlOWUwNjQ2ZTc0N2NiNTVkN2NjYjBmN2IxOGZmNWUw
YjNjNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVkZSAiU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0zNSw2ICszNiw3IEBAIHN0cnVjdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJ
bmZvIHsKICAgICBib29sIGNvbnRpbnVvdXMgeyBmYWxzZSB9OwogICAgIGJvb2wgaW50ZXJpbVJl
c3VsdHMgeyBmYWxzZSB9OwogICAgIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcyB7IDEgfTsKKyAg
ICBDbGllbnRPcmlnaW4gY2xpZW50T3JpZ2luOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBkZWNvZGUo
RGVjb2RlciYpOwpAQCAtNDMsNyArNDUsNyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0SW5mbyB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3RJbmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNv
ZGVyIDw8IGNsaWVudElkZW50aWZpZXIgPDwgbGFuZyA8PCBjb250aW51b3VzIDw8IGludGVyaW1S
ZXN1bHRzIDw8IG1heEFsdGVybmF0aXZlczsKKyAgICBlbmNvZGVyIDw8IGNsaWVudElkZW50aWZp
ZXIgPDwgbGFuZyA8PCBjb250aW51b3VzIDw8IGludGVyaW1SZXN1bHRzIDw8IG1heEFsdGVybmF0
aXZlcyA8PCBjbGllbnRPcmlnaW47CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC03
NCwxMiArNzYsMTggQEAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbz4gU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2RlKERlY28KICAgICBpZiAoIW1heEFsdGVy
bmF0aXZlcykKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIE9wdGlvbmFsPENs
aWVudE9yaWdpbj4gY2xpZW50T3JpZ2luOworICAgIGRlY29kZXIgPj4gY2xpZW50T3JpZ2luOwor
ICAgIGlmICghY2xpZW50T3JpZ2luKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAg
ICAgcmV0dXJuIHt7CiAgICAgICAgIFdURk1vdmUoKmNsaWVudElkZW50aWZpZXIpLAogICAgICAg
ICBXVEZNb3ZlKCpsYW5nKSwKICAgICAgICAgV1RGTW92ZSgqY29udGludW91cyksCiAgICAgICAg
IFdURk1vdmUoKmludGVyaW1SZXN1bHRzKSwKLSAgICAgICAgV1RGTW92ZSgqbWF4QWx0ZXJuYXRp
dmVzKQorICAgICAgICBXVEZNb3ZlKCptYXhBbHRlcm5hdGl2ZXMpLAorICAgICAgICBXVEZNb3Zl
KCpjbGllbnRPcmlnaW4pCiAgICAgfX07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcAppbmRleCA1MzRl
ZGEzZDI0NzdlZTFjNmYxN2VjNmFmMTc5MzI2YmI3OWYwMjA3Li45YTlhN2Q5MjA2OTY1NWM0NTcx
NjA3ZGRhMThjNGU2YjMzMGY3MmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwCkBAIC02MCw3ICs2MCw3
IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGUgZW51bWVyYXRpb25WYWx1ZSkKIAogU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZSB0eXBlKQogewotICAgIHJldHVybiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7IGNsaWVu
dElkZW50aWZpZXIsIHR5cGUgfTsKKyAgICByZXR1cm4gU3BlZWNoUmVjb2duaXRpb25VcGRhdGUg
eyBjbGllbnRJZGVudGlmaWVyLCB0eXBlLCBXVEY6Ok1vbm9zdGF0ZSgpIH07CiB9CiAKIFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZp
ZXIsIGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXJyb3ImIGVycm9yKQpAQCAtODMsNyArODMsNyBA
QCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUoU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZQogU3BlZWNoUmVjb2duaXRpb25FcnJvciBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6ZXJyb3IoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKG1fY29udGVudCwKLSAgICAgICAgW10gKFNwZWVjaFJlY29nbml0aW9uRXJyb3ImIGVycm9y
KSB7IHJldHVybiBlcnJvcjsgfSwKKyAgICAgICAgW10gKGNvbnN0IFNwZWVjaFJlY29nbml0aW9u
RXJyb3ImIGVycm9yKSB7IHJldHVybiBlcnJvcjsgfSwKICAgICAgICAgW10gKGNvbnN0IGF1dG8m
KSB7IHJldHVybiBTcGVlY2hSZWNvZ25pdGlvbkVycm9yKCk7IH0KICAgICApOwogfQpAQCAtOTEs
NyArOTEsNyBAQCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
OjplcnJvcigpIGNvbnN0CiBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZTo6cmVzdWx0KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihtX2NvbnRlbnQsCi0gICAgICAgIFtdIChWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25S
ZXN1bHREYXRhPiYgZGF0YSkgeyByZXR1cm4gZGF0YTsgfSwKKyAgICAgICAgW10gKGNvbnN0IFZl
Y3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+JiBkYXRhKSB7IHJldHVybiBkYXRhOyB9
LAogICAgICAgICBbXSAoY29uc3QgYXV0byYpIHsgcmV0dXJuIFZlY3RvcjxTcGVlY2hSZWNvZ25p
dGlvblJlc3VsdERhdGE+IHsgfTsgfQogICAgICk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAppbmRleCAzYTgy
YmY2YmFmNTRjZTBjNGIxMzM0ZWY2ZjhiNTg5M2YzYjg5ODJlLi44OTE0OTE3OTNmNGUwMWVjMmZm
NjAxMDdjYjQ4NWY0ODhmYTQzZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKQEAgLTUyLDggKzUyLDggQEAg
U3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZSk7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7CiBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIGNyZWF0ZShTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGUpOwotICAgIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVFcnJv
cihTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTcGVl
Y2hSZWNvZ25pdGlvbkVycm9yJik7Ci0gICAgc3RhdGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
IGNyZWF0ZVJlc3VsdChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
LCBjb25zdCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVFcnJvcihTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTcGVlY2hSZWNv
Z25pdGlvbkVycm9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlIGNyZWF0ZVJlc3VsdChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYpOwog
CiAgICAgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyOyB9CiAgICAgU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
QEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHVzaW5nIENvbnRlbnQg
PSBWYXJpYW50PFdURjo6TW9ub3N0YXRlLCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yLCBWZWN0b3I8
U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj47Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlLCBDb250ZW50ID0gV1RG
OjpNb25vc3RhdGUoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3BlZWNoUmVjb2duaXRpb25VcGRh
dGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVj
b2duaXRpb25VcGRhdGVUeXBlLCBDb250ZW50KTsKIAogICAgIFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIgbV9jbGllbnRJZGVudGlmaWVyOwogICAgIFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlVHlwZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaAppbmRleCBjZjllNzJiOTNjMDY0YTU1
ZGRkZmFiN2IzY2FmYjQ4OTBlMDM1ZjQ2Li4yNDBhYTNkNDg0YTk3M2I0NDExMmFlZjYxZThlYWFh
ODQ3YjU4ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVj
b2duaXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hS
ZWNvZ25pdGlvblByb3ZpZGVyLmgKQEAgLTM5LDEwICszOSwxMCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEdW1teVNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bigpKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIHJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudCYpIGZpbmFsIHsgfQotICAgICAgICB2b2lkIHN0YXJ0KFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYs
IGJvb2wsIGJvb2wsIHVpbnQ2NF90KSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBzdGFydChTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBi
b29sLCBib29sLCB1aW50NjRfdCwgQ2xpZW50T3JpZ2luJiYpIGZpbmFsIHsgfQogICAgICAgICB2
b2lkIHN0b3AoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmlu
YWwgeyB9CiAgICAgICAgIHZvaWQgYWJvcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShj
b25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVVcGRhdGUoU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmJikgZmluYWwgeyB9CiAgICAg
fTsKICAgICBEdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAgICAg
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uJiBzcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYktp
dC9IZWFkZXJzLmNtYWtlCmluZGV4IDQzNjM5NzBmMWFlMDM2NmVhMDM5NTU3YTI3M2Q4YjgzZTY2
MTY0NDguLjNlN2U1OTU4NGZmMjgwMDBlMTBkOTlhZTQ0YWJlYzNmZmEyMTM5YTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0hlYWRl
cnMuY21ha2UKQEAgLTk5LDYgKzk5LDcgQEAgc2V0KFdlYktpdF9QVUJMSUNfRlJBTUVXT1JLX0hF
QURFUlMKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oCiAgICAg
VUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaAogICAgIFVJUHJvY2Vzcy9B
UEkvQy9XS1Nlc3Npb25TdGF0ZVJlZi5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Rlc3Rp
bmdTdXBwb3J0LmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5oCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9BUElPYmplY3QuaAppbmRleCA2ZDA2NTY0NWRjZWU2MmU1OWQ1MGRiZWYzNzQzNWE0OWE4
MGViNjgyLi5jZDFjYWQ5NmI0MDMxMmRiM2IxODhkZTcxZjYwODhiZjcyOGZkODc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0xNjUsNiArMTY1LDcgQEAgcHVibGljOgog
ICAgICAgICBSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lciwKICAgICAgICAgUnVuSmF2
YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5lciwKICAgICAgICAgUnVuSmF2YVNjcmlwdFByb21w
dFJlc3VsdExpc3RlbmVyLAorICAgICAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjaywKICAgICAgICAgVGV4dENoZWNrZXIsCiAgICAgICAgIFVSTFNjaGVtZVRhc2ssCiAgICAg
ICAgIFVzZXJDb250ZW50Q29udHJvbGxlciwKQEAgLTQxMCw2ICs0MTEsNyBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPEFQSTo6T2JqZWN0OjpUeXBlPiB7CiAgICAgICAgIEFQSTo6T2Jq
ZWN0OjpUeXBlOjpSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lciwKICAgICAgICAgQVBJ
OjpPYmplY3Q6OlR5cGU6OlJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXIsCiAgICAg
ICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXIs
CisgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFjaywKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlRleHRDaGVja2VyLAogICAgICAg
ICBBUEk6Ok9iamVjdDo6VHlwZTo6VVJMU2NoZW1lVGFzaywKICAgICAgICAgQVBJOjpPYmplY3Q6
OlR5cGU6OlVzZXJDb250ZW50Q29udHJvbGxlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNl
LmgKaW5kZXggOWU4MmU1NjAwMTg3ZWMxY2Y4YWY5YmVlNzllNzFkMGU4ZDdmZDE1YS4uODRlZTZj
Mjg4ZjZkMmViZDUxZmE3M2VhNzI3MDhmMzI5NDZiZGQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tCYXNlLmgKQEAgLTE0MSw2ICsxNDEsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS1dlYnNpdGVEYXRhQ29uZmlndXJhdGlvblN0b3JlKiBXS1dlYnNpdGVEYXRhU3RvcmVDbwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tXZWJzaXRlRGF0YVN0b3JlKiBXS1dlYnNpdGVE
YXRhU3RvcmVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNpdGVQb2xpY2ll
cyogV0tXZWJzaXRlUG9saWNpZXNSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dp
bmRvd0ZlYXR1cmVzKiBXS1dpbmRvd0ZlYXR1cmVzUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
T3BhcXVlV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayogV0tTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZjsKIAogLyogV2ViS2l0MiBCdW5kbGUgdHlwZXMg
Ki8KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggMzI5YmVkMDFiZDI0ZmI4YjEyN2U2Yjk5NTI1NTgwZTdmMjQ0
MGE2NS4uZDAxOWE1ZDQ0YWQ4ZWYwOTA5ZjdhMTM3N2Q1ODMzYWMyMzI4MmVlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC0yOTAsNiArMjkwLDcgQEAgVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3Bw
CiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCiBVSVByb2Nlc3MvU3VzcGVu
ZGVkUGFnZVByb3h5LmNwcAogVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmNwcAor
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwCiBVSVByb2Nl
c3MvVGV4dENoZWNrZXIuY3BwCiBVSVByb2Nlc3MvVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcAog
VUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcApAQCAtNDAzLDYgKzQw
NCw3IEBAIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAogVUlQcm9jZXNzL0FQSS9D
L1dLUHJvdGVjdGlvblNwYWNlLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1h
bmFnZXIuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuY3BwCitVSVByb2Nl
c3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAKIFVJUHJv
Y2Vzcy9BUEkvQy9XS1RleHRDaGVja2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRl
bnRDb250cm9sbGVyUmVmLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRFeHRlbnNp
b25TdG9yZVJlZi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCAwODRkNTEzNTJkNDRhNDUw
OTQ5YjNmYmQxZDFkNzYxMzVmYjJiZWIyLi4wOTk3NzBiNGFhZmU4YWUwNGM3ODZiZGQyODdlNzBm
NDdiMTM0N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zNzMsNiArMzczLDcgQEAgVUlQ
cm9jZXNzL0NvY29hL0dsb2JhbEZpbmRJblBhZ2VTdGF0ZS5tbQogVUlQcm9jZXNzL0NvY29hL0lj
b25Mb2FkaW5nRGVsZWdhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQubW0KIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVV0aWxpdGllcy5tbQorVUlQ
cm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQogVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2Eu
bW0KIFVJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggYWE3ZDg5YzAxZTczNTIw
Y2UzZWUwNDIyNmI5YWU4NTk3MGJmYWE2ZS4uYTBkYmE4MzcyN2E5NmFkNjEwNDdiOWVkMTViNjRi
MzEzNGVlZGFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJ
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgK
QEAgLTIwMiw2ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBBUEk6Okluc3BlY3Rv
ckNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tBUElDYXN0LmgKaW5kZXggYjUyYzQ0YmFlYTlhY2Y5ZmMwMzMyZDVhOWYzNzM1NmU5ZDIzODYy
OS4uMThjYmZkNWI3NGViODc3MGE1NzhmMTVjOGEwMTYxNDk5MDIxNDU0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKQEAgLTc5LDYgKzc5LDcgQEAgY2xhc3Mg
QXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyOwogY2xhc3MgRG93bmxvYWRQcm94eTsKIGNs
YXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdDsKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
OwogY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk7CiBjbGFzcyBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OwpAQCAtMTUy
LDYgKzE1Myw3IEBAIFdLX0FERF9BUElfTUFQUElORyhXS1ByZWZlcmVuY2VzUmVmLCBXZWJQcmVm
ZXJlbmNlcykKIFdLX0FERF9BUElfTUFQUElORyhXS1Byb3RlY3Rpb25TcGFjZVJlZiwgV2ViUHJv
dGVjdGlvblNwYWNlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXJSZWYsIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyKQogV0tfQUREX0FQ
SV9NQVBQSU5HKFdLU2Vzc2lvblN0YXRlUmVmLCBBUEk6OlNlc3Npb25TdGF0ZSkKK1dLX0FERF9B
UElfTUFQUElORyhXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmLCBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaykKIFdLX0FERF9BUElfTUFQUElORyhXS1Rl
eHRDaGVja2VyUmVmLCBXZWJUZXh0Q2hlY2tlcikKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJD
b250ZW50Q29udHJvbGxlclJlZiwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpCiBXS19B
RERfQVBJX01BUFBJTkcoV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUmVmLCBBUEk6OkNvbnRl
bnRSdWxlTGlzdFN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
aW5kZXggZTc2ZTAwNzgwYTQxNDY2MjA1ZWEyOWY2MTIwNTUzYjZiM2E2ZTQ0OS4uYTRlMWEwMWQ4
NzU2ZTU2Mjg3MjA2MTgwMzQ1NjQyNTkyN2NjZWYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAiUGFnZUNsaWVu
dC5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiUHJpbnRJbmZv
LmgiCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLUGFnZVBvbGljeUNsaWVudEludGVybmFs
LmgiCiAjaW5jbHVkZSAiV0tQYWdlUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNJbnRlcm5hbC5oIgpA
QCAtMTE1LDcgKzExNiw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VQ
b2xpY3lDbGllbnRCYXNlPiB7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8
V0tQYWdlVUlDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZVVJQ2xp
ZW50VjAsIFdLUGFnZVVJQ2xpZW50VjEsIFdLUGFnZVVJQ2xpZW50VjIsIFdLUGFnZVVJQ2xpZW50
VjMsIFdLUGFnZVVJQ2xpZW50VjQsIFdLUGFnZVVJQ2xpZW50VjUsIFdLUGFnZVVJQ2xpZW50VjYs
IFdLUGFnZVVJQ2xpZW50VjcsIFdLUGFnZVVJQ2xpZW50VjgsIFdLUGFnZVVJQ2xpZW50VjksIFdL
UGFnZVVJQ2xpZW50VjEwLCBXS1BhZ2VVSUNsaWVudFYxMSwgV0tQYWdlVUlDbGllbnRWMTIsIFdL
UGFnZVVJQ2xpZW50VjEzLCBXS1BhZ2VVSUNsaWVudFYxND4gVmVyc2lvbnM7CisgICAgdHlwZWRl
ZiBzdGQ6OnR1cGxlPFdLUGFnZVVJQ2xpZW50VjAsIFdLUGFnZVVJQ2xpZW50VjEsIFdLUGFnZVVJ
Q2xpZW50VjIsIFdLUGFnZVVJQ2xpZW50VjMsIFdLUGFnZVVJQ2xpZW50VjQsIFdLUGFnZVVJQ2xp
ZW50VjUsIFdLUGFnZVVJQ2xpZW50VjYsIFdLUGFnZVVJQ2xpZW50VjcsIFdLUGFnZVVJQ2xpZW50
VjgsIFdLUGFnZVVJQ2xpZW50VjksIFdLUGFnZVVJQ2xpZW50VjEwLCBXS1BhZ2VVSUNsaWVudFYx
MSwgV0tQYWdlVUlDbGllbnRWMTIsIFdLUGFnZVVJQ2xpZW50VjEzLCBXS1BhZ2VVSUNsaWVudFYx
NCwgV0tQYWdlVUlDbGllbnRWMTU+IFZlcnNpb25zOwogfTsKIAogI2lmIEVOQUJMRShDT05URVhU
X01FTlVTKQpAQCAtMjExMCw2ICsyMTExLDEzIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50
KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxSZXN1bHQ6OlByZXNlbnRlZCk7CiAgICAgICAgIH0KICNlbmRpZgorICAgICAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVBy
b3h5JiBwYWdlLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1f
Y2xpZW50LmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Qo
dG9BUEkoJnBhZ2UpLCB0b0FQSSgmb3JpZ2luKSwgdG9BUEkoU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkucHRyKCkp
KTsKKyAgICAgICAgfQogICAgIH07CiAKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFVJQ2xpZW50
KG1ha2VVbmlxdWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaAppbmRleCBiNjM4ODE1NWNkMzAzNmU2NjYxMTBm
MTkyNTYxNmFmZDM3ZTg2OGJhLi42MzYzNTU1NjRkMDBiMTEyMmE4N2UyMjlhMzBiOTRkN2U5OWU0
ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50
LmgKQEAgLTEzNiw2ICsxMzYsNyBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZXNpZ25JbnB1
dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2VDYWxsYmFjaykoV0tQYQogdHlwZWRlZiBi
b29sICgqV0tQYWdlU2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0Nh
bGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdp
biwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiAKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVJ1bldl
YkF1dGhlbnRpY2F0aW9uUGFuZWxDYWxsYmFjaykoKTsKK3R5cGVkZWYgdm9pZCAoKldLUGFnZURl
Y2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayko
V0tQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYgdG9wT3JpZ2luLCBXS1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIGNhbGxiYWNrKTsKIAogLy8gRGVwcmVjYXRl
ZAogdHlwZWRlZiBXS1BhZ2VSZWYgKCpXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMCkoV0tQYWdlUmVmIHBhZ2UsIFdLRGljdGlvbmFyeVJlZiBmZWF0dXJl
cywgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1
dHRvbiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CkBAIC0xMzUzLDYgKzEzNTQsMTE3IEBAIHR5
cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjE0IHsKICAgICBXS1BhZ2VSdW5XZWJBdXRoZW50
aWNhdGlvblBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bldlYkF1
dGhlbnRpY2F0aW9uUGFuZWw7CiB9IFdLUGFnZVVJQ2xpZW50VjE0OwogCit0eXBlZGVmIHN0cnVj
dCBXS1BhZ2VVSUNsaWVudFYxNSB7CisgICAgV0tQYWdlVUlDbGllbnRCYXNlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOworCisgICAgLy8gVmVy
c2lvbiAwLgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNl
V2l0aFYwICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0
aFYwOworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2hvd1BhZ2U7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZTsKKyAg
ICBXS1BhZ2VUYWtlRm9jdXNDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRha2VGb2N1czsKKyAgICBXS1BhZ2VGb2N1c0NhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzOworICAgIFdLUGFn
ZVVuZm9jdXNDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5mb2N1czsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXBy
ZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNh
dGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tf
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVw
cmVjYXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJh
Y2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRf
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VTZXRTdGF0dXNUZXh0Q2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXR1c1RleHQ7Cisg
ICAgV0tQYWdlTW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNl
V2l0aFYwICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0
aFYwOworICAgIFdLUGFnZU1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMCAgICAgbWlzc2luZ1BsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VEaWROb3RIYW5kbGVLZXlFdmVudENhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZE5vdEhhbmRsZUtleUV2ZW50OworICAg
IFdLUGFnZURpZE5vdEhhbmRsZVdoZWVsRXZlbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkTm90SGFuZGxlV2hlZWxFdmVudDsKKyAgICBXS1BhZ2VHZXRUb29sYmFy
c0FyZVZpc2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xi
YXJzQXJlVmlzaWJsZTsKKyAgICBXS1BhZ2VTZXRUb29sYmFyc0FyZVZpc2libGVDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRvb2xiYXJzQXJlVmlzaWJsZTsKKyAg
ICBXS1BhZ2VHZXRNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1lbnVCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlU2V0TWVudUJhcklzVmlz
aWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNZW51QmFy
SXNWaXNpYmxlOworICAgIFdLUGFnZUdldFN0YXR1c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFn
ZVNldFN0YXR1c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0U3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFnZUdldElzUmVzaXphYmxlQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZXNpemFibGU7
CisgICAgV0tQYWdlU2V0SXNSZXNpemFibGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRJc1Jlc2l6YWJsZTsKKyAgICBXS1BhZ2VHZXRXaW5kb3dGcmFt
ZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFdpbmRv
d0ZyYW1lOworICAgIFdLUGFnZVNldFdpbmRvd0ZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0V2luZG93RnJhbWU7CisgICAgV0tQYWdlUnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNiAgICBy
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWNjsKKyAgICBX
S1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpZERyYXc7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlRGlkU2Nyb2xsOworICAgIFdL
UGFnZUV4Y2VlZGVkRGF0YWJhc2VRdW90YUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZWVkZWREYXRhYmFzZVF1b3RhOworICAgIFdLUGFnZVJ1bk9wZW5QYW5lbENh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuT3BlblBh
bmVsOworICAgIFdLUGFnZURlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RDYWxsYmFjayAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdDsKKyAgICBXS1BhZ2VIZWFkZXJIZWlnaHRDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckhlaWdodDsKKyAgICBXS1BhZ2VGb290ZXJI
ZWlnaHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv
b3RlckhlaWdodDsKKyAgICBXS1BhZ2VEcmF3SGVhZGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdIZWFkZXI7CisgICAgV0tQYWdlRHJhd0Zv
b3RlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
cmF3Rm9vdGVyOworICAgIFdLUGFnZVByaW50RnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRGcmFtZTsKKyAgICBXS1BhZ2VVSUNsaWVu
dENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1
bk1vZGFsOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkMTsgLy8gVXNlZCB0byBiZSBkaWRDb21wbGV0
ZVJ1YmJlckJhbmRGb3JNYWluRnJhbWUKKyAgICBXS1BhZ2VTYXZlRGF0YVRvRmlsZUluRG93bmxv
YWRzRm9sZGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIHNhdmVEYXRhVG9GaWxlSW5E
b3dubG9hZHNGb2xkZXI7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0
X3VuYXZhaWxhYmxlOworCisgICAgLy8gVmVyc2lvbiAxLgorICAgIFdLUGFnZUNyZWF0ZU5ld1Bh
Z2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxICAgICAgICAgICAgICAgICAgY3JlYXRl
TmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOworICAgIFdLUGFnZU1vdXNlRGlkTW92ZU92
ZXJFbGVtZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnQ7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNs
aWNrZWRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxIHVuYXZhaWxhYmxlUGx1Z2luQnV0
dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOworCisgICAgLy8gVmVyc2lvbiAyLgor
ICAgIFdLUGFnZVNob3dDb2xvclBpY2tlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2hvd0NvbG9yUGlja2VyOworICAgIFdLUGFnZUhpZGVDb2xvclBpY2tl
ckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUNvbG9y
UGlja2VyOworICAgIFdLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkOwor
CisgICAgLy8gVmVyc2lvbiAzLgorICAgIFdLUGFnZVBpbm5lZFN0YXRlRGlkQ2hhbmdlQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkU3RhdGVEaWRDaGFuZ2U7
CisKKyAgICAvLyBWZXJzaW9uIDQuCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQyOyAvLyBVc2VkIHRv
IGJlIGRpZEJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcy4KKyAgICB2b2lkKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVudXNlZDM7IC8vIFVzZWQgdG8gYmUgZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MuCisg
ICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnVzZWQ0OyAvLyBVc2VkIHRvIGJlIGRpZENhbmNlbFRyYWNraW5nUG90
ZW50aWFsTG9uZ01vdXNlUHJlc3MuCisgICAgV0tQYWdlSXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2VD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BsYXlpbmdBdWRpb0RpZENo
YW5nZTsKKworICAgIC8vIFZlcnNpb24gNS4KKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZv
clVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZURpZENsaWNrQXV0b0ZpbGxC
dXR0b25DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ2xpY2tBdXRv
RmlsbEJ1dHRvbjsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNh
dGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVk
Rm9yVXNlV2l0aFY1OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVw
cmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVj
YXRlZEZvclVzZVdpdGhWNTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tf
ZGVwcmVjYXRlZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVw
cmVjYXRlZEZvclVzZVdpdGhWNTsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7IC8vIFVzZWQgdG8g
YmUgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCisKKyAgICAvLyBWZXJzaW9uIDYuCisg
ICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVy
dENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlw
dEFsZXJ0OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm07CisgICAgV0tQYWdl
UnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBydW5KYXZhU2NyaXB0UHJvbXB0OworICAgIFdLQ2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9u
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tVc2VyTWVkaWFQ
ZXJtaXNzaW9uRm9yT3JpZ2luOworCisgICAgLy8gVmVyc2lvbiA3LgorICAgIFdLUGFnZVJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOworICAgIFdLRnVsbHNjcmVlbk1heVJldHVyblRv
SW5saW5lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVlbk1h
eVJldHVyblRvSW5saW5lOworCisgICAgLy8gVmVyc2lvbiA4LgorICAgIFdLUmVxdWVzdFBvaW50
ZXJMb2NrQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdFBvaW50ZXJMb2NrOworICAgIFdLRGlkTG9zZVBvaW50ZXJMb2NrQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkTG9zZVBvaW50ZXJMb2NrOworCisg
ICAgLy8gVmVyc2lvbiA5LgorICAgIFdLSGFuZGxlQXV0b3BsYXlFdmVudENhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQXV0b3BsYXlFdmVudDsKKwor
ICAgIC8vIFZlcnNpb24gMTAuCisgICAgV0tIYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENo
YW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBoYXNWaWRlb0luUGljdHVyZUluUGlj
dHVyZURpZENoYW5nZTsKKyAgICBXS0RpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hp
bGVJbkZvcmVncm91bmRDYWxsYmFjayAgICAgICAgIGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJj
ZUxpbWl0V2hpbGVJbkZvcmVncm91bmQ7CisKKyAgICAvLyBWZXJzaW9uIDExLgorICAgIFdLUGFn
ZURpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZUNhbGxiYWNrICAg
ICAgICAgZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlOworCisg
ICAgLy8gVmVyc2lvbiAxMi4KKyAgICBXS1BhZ2VSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm1D
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29u
ZmlybTsKKworICAgIC8vIFZlcnNpb24gMTMuCisgICAgV0tQYWdlU2hvdWxkQWxsb3dEZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NhbGxiYWNrICAgICAgICAgICBzaG91bGRBbGxvd0Rl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzOworCisgICAgLy8gVmVyc2lvbiAxNC4KKyAg
ICBXS1BhZ2VSdW5XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWw7CisKKyAgICAvLyBWZXJzaW9u
IDE1LgorICAgIFdLUGFnZURlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3RDYWxsYmFjayAgICAgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdDsKKyAgICAKK30gV0tQYWdlVUlDbGllbnRWMTU7CisKICNpZmRlZiBfX2Nw
bHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBjYzhmOWEzNWRiODQxMWUwMzg1YTdhZTE1NDlhMzlhZjgxMzJl
ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcApAQCAtMCwwICsxLDQyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCIKKworI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3QuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFja0dldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrOjpBUElUeXBlKTsKK30KKwordm9pZCBXS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25DYWxsYmFja1JlZiBzcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaywgYm9vbCBn
cmFudGVkKQoreworICAgIHJldHVybiB0b0ltcGwoc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2spLT5jb21wbGV0ZShncmFudGVkKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGFlYWZjNjk4NGJhOTZmNTQ4OTJlNzMyYWZl
YTNhMDYzYzljNzJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCkBAIC0wLDAgKzEs
NDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jh
c2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19F
WFBPUlQgV0tUeXBlSUQgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0dldFR5
cGVJRCh2b2lkKTsKKworV0tfRVhQT1JUIHZvaWQgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25DYWxsYmFja0NvbXBsZXRlKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tS
ZWYgc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2ssIGJvb2wgZ3JhbnRlZCk7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCmluZGV4IDFlZWEyMDU0ZDA2ZGU3OGVi
YmYyNjMyZmI4OTkyYzM5OGQzZmEwYjcuLmM0ZTU1MDcyYTUxMjljOTUxN2VmMGFjNGIxZWIyZTli
MzFiOTkzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1ByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1ByZWZlcmVuY2VzLm1tCkBAIC0xNDM3LDYgKzE0MzcsMTYgQEAgc3RhdGljIFdlYkNvcmU6OkVk
aXRhYmxlTGlua0JlaGF2aW9yIHRvRWRpdGFibGVMaW5rQmVoYXZpb3IoX1dLRWRpdGFibGVMaW5r
QmVoYXYKICNlbmRpZgogfQogCistIChCT09MKV9zcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQKK3sK
KyAgICByZXR1cm4gX3ByZWZlcmVuY2VzLT5zcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQoKTsKK30K
KworLSAodm9pZClfc2V0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkOihCT09MKXNwZWVjaFJlY29n
bml0aW9uRW5hYmxlZAoreworICAgIF9wcmVmZXJlbmNlcy0+c2V0U3BlZWNoUmVjb2duaXRpb25F
bmFibGVkKHNwZWVjaFJlY29nbml0aW9uRW5hYmxlZCk7Cit9CisKIEBlbmQKIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJp
dmF0ZS5oCmluZGV4IGQ0OWZlNTk2NzcyNWRhNGE5NTk2MGY0NTY3OTA5OGE3ZjFjZGY2YTEuLmZk
NThiMGExMTg2YWY1ODdiODM0M2Q1MTFkNTZmNzBiYTZkYTE4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5o
CkBAIC0xNjEsNiArMTYxLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLRWRpdGFi
bGVMaW5rQmVoYXZpb3IpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJlcXVl
c3RBbmltYXRpb25GcmFtZUVuYWJsZWQ6KSBCT09MIF9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFi
bGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRTZXJ2aWNlV29ya2VyRW50aXRsZW1l
bnREaXNhYmxlZEZvclRlc3Rpbmc6KSBCT09MIF9zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNh
YmxlZEZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEFjY2Vzc2liaWxp
dHlJc29sYXRlZFRyZWVFbmFibGVkOikgQk9PTCBfYWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZUVu
YWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNikpOworQHByb3BlcnR5IChub25hdG9t
aWMsIHNldHRlcj1fc2V0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkOikgQk9PTCBfc3BlZWNoUmVj
b2duaXRpb25FbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQogQHByb3BlcnR5IChub25hdG9t
aWMsIHNldHRlcj1fc2V0V2ViR0xFbmFibGVkOikgQk9PTCBfd2ViR0xFbmFibGVkIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTMuNCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggZDFlYWUyMDFlNjU0
MmY0ZmFiNjAxOTgwZGM2NjEyNDkxMzE5NzkzZi4uZjBhOWJhNDFmNTE1ZWY3MThmNzQ2YzdmZGZm
ZmVhNGEzNWU4ZGUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC0xNTIsNiArMTUyLDggQEAgc3RydWN0
IFVJRWRnZUluc2V0czsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3
aWxsU2hhcmVBY3Rpdml0eUl0ZW1zOihOU0FycmF5ICopYWN0aXZpdHlJdGVtcyBXS19BUElfQVZB
SUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkZvck9yaWdpbjooV0tT
ZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgYXV0
aG9yaXplZCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CisKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAKIC0gKEJPT0wp
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25z
Rm9yRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKillbGVtZW50IFdLX0FQSV9BVkFJ
TEFCTEUoaW9zKDkuMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxMWFiZTk0Mzll
OGQ5ZDcyY2RhODUzMDczMDYzOTM3YTcyZTI3MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KQEAgLTAs
MCArMSwxNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1l
ZGlhUGVybWlzc2lvblV0aWxpdGllcy5oIgorCisjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgi
CisjaW1wb3J0ICJUQ0NTUEkuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8
d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgorCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVS
KQorI2ltcG9ydCA8U3BlZWNoL1NwZWVjaC5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKFNwZWVj
aCkKK1NPRlRfTElOS19DTEFTUyhTcGVlY2gsIFNGU3BlZWNoUmVjb2duaXplcikKKyNlbmRpZgor
CisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKworU09GVF9MSU5L
X1BSSVZBVEVfRlJBTUVXT1JLKFRDQykKK1NPRlRfTElOSyhUQ0MsIFRDQ0FjY2Vzc1ByZWZsaWdo
dCwgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0LCAoQ0ZTdHJpbmdSZWYgc2VydmljZSwgQ0ZEaWN0
aW9uYXJ5UmVmIG9wdGlvbnMpLCAoc2VydmljZSwgb3B0aW9ucykpCitTT0ZUX0xJTktfQ09OU1RB
TlQoVENDLCBrVENDU2VydmljZU1pY3JvcGhvbmUsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0NP
TlNUQU5UKFRDQywga1RDQ1NlcnZpY2VDYW1lcmEsIENGU3RyaW5nUmVmKQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworYm9vbCBjaGVja1NhbmRib3hSZXF1aXJlbWVudEZvclR5cGUoTWVkaWFQZXJt
aXNzaW9uVHlwZSB0eXBlKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgYXVkaW9GbGFnOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyB2aWRlb0ZsYWc7
CisgICAgc3RhdGljIGJvb2wgaXNBdWRpb0VudGl0bGVkID0gdHJ1ZTsKKyAgICBzdGF0aWMgYm9v
bCBpc1ZpZGVvRW50aXRsZWQgPSB0cnVlOworICAgIAorICAgIGF1dG8gY2hlY2tGdW5jdGlvbiA9
IFtdKGNvbnN0IGNoYXIqIG9wZXJhdGlvbiwgYm9vbCogZW50aXRsZWQpIHsKKyAgICAgICAgaWYg
KCFjdXJyZW50UHJvY2Vzc0lzU2FuZGJveGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaW50IHJlc3VsdCA9IHNhbmRib3hfY2hlY2soZ2V0cGlkKCksIG9wZXJhdGlvbiwgU0FO
REJPWF9GSUxURVJfTk9ORSk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgICAg
ICBXVEZMb2dBbHdheXMoIkVycm9yIGNoZWNraW5nICclcycgc2FuZGJveCBhY2Nlc3MsIGVycm5v
PSVsZCIsIG9wZXJhdGlvbiwgKGxvbmcpZXJybm8pOworICAgICAgICAqZW50aXRsZWQgPSAhcmVz
dWx0OworICAgIH07CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIE1lZGlhUGVybWlz
c2lvblR5cGU6OkF1ZGlvOgorICAgICAgICBzdGQ6OmNhbGxfb25jZShhdWRpb0ZsYWcsIGNoZWNr
RnVuY3Rpb24sICJkZXZpY2UtbWljcm9waG9uZSIsICZpc0F1ZGlvRW50aXRsZWQpOworICAgICAg
ICByZXR1cm4gaXNBdWRpb0VudGl0bGVkOworICAgIGNhc2UgTWVkaWFQZXJtaXNzaW9uVHlwZTo6
VmlkZW86CisgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKHZpZGVvRmxhZywgY2hlY2tGdW5jdGlvbiwg
ImRldmljZS1jYW1lcmEiLCAmaXNWaWRlb0VudGl0bGVkKTsKKyAgICAgICAgcmV0dXJuIGlzVmlk
ZW9FbnRpdGxlZDsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBj
aGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGUgdHlw
ZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIE1lZGlhUGVybWlzc2lvblR5cGU6
OkF1ZGlvOgorICAgICAgICBzdGF0aWMgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0IGF1ZGlvQWNj
ZXNzID0gVENDQWNjZXNzUHJlZmxpZ2h0KGdldGtUQ0NTZXJ2aWNlTWljcm9waG9uZSgpLCBOVUxM
KTsKKyAgICAgICAgaWYgKGF1ZGlvQWNjZXNzID09IGtUQ0NBY2Nlc3NQcmVmbGlnaHRHcmFudGVk
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBkeW5hbWljX29iamNf
Y2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TTWlj
cm9waG9uZVVzYWdlRGVzY3JpcHRpb24iXSkubGVuZ3RoID4gMDsKKyAgICBjYXNlIE1lZGlhUGVy
bWlzc2lvblR5cGU6OlZpZGVvOgorICAgICAgICBzdGF0aWMgVENDQWNjZXNzUHJlZmxpZ2h0UmVz
dWx0IHZpZGVvQWNjZXNzID0gVENDQWNjZXNzUHJlZmxpZ2h0KGdldGtUQ0NTZXJ2aWNlQ2FtZXJh
KCksIE5VTEwpOworICAgICAgICBpZiAodmlkZW9BY2Nlc3MgPT0ga1RDQ0FjY2Vzc1ByZWZsaWdo
dEdyYW50ZWQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGR5bmFt
aWNfb2JqY19jYXN0PE5TU3RyaW5nPihOU0J1bmRsZS5tYWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5
W0AiTlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uIl0pLmxlbmd0aCA+IDA7CisgICAgfQorfQorCiti
b29sIGNoZWNrVXNhZ2VEZXNjcmlwdGlvblN0cmluZ0ZvclNwZWVjaFJlY29nbml0aW9uKCkKK3sK
KyAgICByZXR1cm4gZHluYW1pY19vYmpjX2Nhc3Q8TlNTdHJpbmc+KE5TQnVuZGxlLm1haW5CdW5k
bGUuaW5mb0RpY3Rpb25hcnlbQCJOU1NwZWVjaFJlY29nbml0aW9uVXNhZ2VEZXNjcmlwdGlvbiJd
KS5sZW5ndGggPiAwOworfQorCisjaWYgSEFWRShBVkNBUFRVUkVERVZJQ0UpCisKK3ZvaWQgcmVx
dWVzdEFWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSB0eXBlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgYXV0aG9yaXplZCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIEFWTWVkaWFUeXBlIG1lZGlh
VHlwZSA9IHR5cGUgPT0gTWVkaWFQZXJtaXNzaW9uVHlwZTo6QXVkaW8gPyBBVk1lZGlhVHlwZUF1
ZGlvIDogQVZNZWRpYVR5cGVWaWRlbzsKKyAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
Qk9PTCBhdXRob3JpemVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGF1dGhvcml6ZWRdKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7CisgICAgW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSByZXF1
ZXN0QWNjZXNzRm9yTWVkaWFUeXBlOm1lZGlhVHlwZSBjb21wbGV0aW9uSGFuZGxlcjpkZWNpc2lv
bkhhbmRsZXIuZ2V0KCldOworfQorCitNZWRpYVBlcm1pc3Npb25SZXN1bHQgY2hlY2tBVkNhcHR1
cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGUgdHlwZSkKK3sKKyAgICBBVk1lZGlh
VHlwZSBtZWRpYVR5cGUgPSB0eXBlID09IE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvID8gQVZN
ZWRpYVR5cGVBdWRpbyA6IEFWTWVkaWFUeXBlVmlkZW87CisgICAgYXV0byBhdXRob3JpemF0aW9u
U3RhdHVzID0gW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0aW9uU3Rh
dHVzRm9yTWVkaWFUeXBlOm1lZGlhVHlwZV07CisgICAgaWYgKGF1dGhvcml6YXRpb25TdGF0dXMg
PT0gQVZBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IGF1dGhvcml6YXRpb25TdGF0dXMgPT0g
QVZBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGVy
bWlzc2lvblJlc3VsdDo6RGVuaWVkOworICAgIGlmIChhdXRob3JpemF0aW9uU3RhdHVzID09IEFW
QXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQpCisgICAgICAgIHJldHVybiBNZWRpYVBl
cm1pc3Npb25SZXN1bHQ6OlVua25vd247CisgICAgcmV0dXJuIE1lZGlhUGVybWlzc2lvblJlc3Vs
dDo6R3JhbnRlZDsKK30KKworI2VuZGlmIC8vIEhBVkUoQVZDQVBUVVJFREVWSUNFKQorCisjaWYg
SEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCit2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvbkFj
Y2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgYXV0aG9yaXplZCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8gZGVj
aXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShTRlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVz
IHN0YXR1cykgbXV0YWJsZSB7CisgICAgICAgIGJvb2wgYXV0aG9yaXplZCA9IHN0YXR1cyA9PSBT
RlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZDsKKyAgICAgICAg
aWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgYXV0aG9yaXplZF0o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVk
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQpOworICAgIH0pOworICAgIFtnZXRTRlNw
ZWVjaFJlY29nbml6ZXJDbGFzcygpIHJlcXVlc3RBdXRob3JpemF0aW9uOmRlY2lzaW9uSGFuZGxl
ci5nZXQoKV07Cit9CisKK01lZGlhUGVybWlzc2lvblJlc3VsdCBjaGVja1NwZWVjaFJlY29nbml0
aW9uQWNjZXNzKCkKK3sKKyAgICBhdXRvIGF1dGhvcml6YXRpb25TdGF0dXMgPSBbZ2V0U0ZTcGVl
Y2hSZWNvZ25pemVyQ2xhc3MoKSBhdXRob3JpemF0aW9uU3RhdHVzXTsKKyAgICBpZiAoYXV0aG9y
aXphdGlvblN0YXR1cyA9PSBTRlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzRGVu
aWVkIHx8IGF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXph
dGlvblN0YXR1c1Jlc3RyaWN0ZWQpCisgICAgICAgIHJldHVybiBNZWRpYVBlcm1pc3Npb25SZXN1
bHQ6OkRlbmllZDsKKyAgICBpZiAoYXV0aG9yaXphdGlvblN0YXR1cyA9PSBTRlNwZWVjaFJlY29n
bml6ZXJBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZCkKKyAgICAgICAgcmV0dXJuIE1lZGlh
UGVybWlzc2lvblJlc3VsdDo6R3JhbnRlZDsKKyAgICByZXR1cm4gTWVkaWFQZXJtaXNzaW9uUmVz
dWx0OjpVbmtub3duOworfQorCisjZW5kaWYgLy8gSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUuaAppbmRleCA4YTA5NDc0NWMxZjI0YmUxMDVkYmIwMmFiOTFlMzA3YjMxZDQ4NmIxLi42
MmQ3YThhMThmNmViODM5NGNiZTAyY2ZhYzQzNzZhNTRkMGExZmExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCkBAIC0xNjEsNiArMTYxLDcgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgICAgICB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0
aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2Vi
RnJhbWVQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJikgZmluYWw7CiAjZW5kaWYKKyAgICAgICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBh
Z2VQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKSBmaW5hbDsKIAogICAgICAgICBVSURlbGVnYXRlJiBtX3VpRGVsZWdhdGU7CiAgICAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGQw
MzM4ZjhkNmUzYjlhMTNkZjJhZjE1M2FjYjVkZWIzOGUxZmNkOWIuLjBmOWVhOTA5YTZlZjk5OTEx
YmU4MWVlZTllMDkzODk4NTdhMjY4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMTMzMiw0ICsxMzMyLDI2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6
SW50U2l6CiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oZGVsZWdh
dGUpIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgaW1hZ2VPck1lZGlhRG9jdW1lbnRT
aXplQ2hhbmdlZDpuZXdTaXplXTsKIH0KIAordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVj
aWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gZGVs
ZWdhdGUgPSAoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRl
LmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uRm9yT3JpZ2luOmRlY2lzaW9uSGFuZGxlcjopXSkgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUs
IEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9y
T3JpZ2luOmRlY2lzaW9uSGFuZGxlcjopKTsKKyAgICBbZGVsZWdhdGUgX3dlYlZpZXc6bV91aURl
bGVnYXRlLm1fd2ViVmlldyByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3Jp
Z2luOndyYXBwZXIob3JpZ2luKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0
aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UoY29tcGxldGlvbkhhbmRsZXIsIHsgfSksIGNoZWNr
ZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCBncmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZ3JhbnRlZCk7CisgICAgfSkuZ2V0KCldOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkubW0KaW5kZXggOTk3NTc1ZGUwMjE2YTljMGNkNzZhZmNiNDFjNzY0MWRiMTMxNWFm
Yi4uOGViZWM1MmNjNmI2NmQxNWEyM2U1NDRlMjM0ZWVkODVhY2VmMGI5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuaCIKIAorI2ltcG9ydCAiTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUQ0NTUEkuaCIKICNpbXBvcnQgIldl
YlBhZ2VQcm94eS5oIgpAQCAtMzcsNDAgKzM4LDEyIEBACiAjaW1wb3J0IDxwYWwvY29jb2EvQVZG
b3VuZGF0aW9uU29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEku
aD4KIAotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFRDQykKLVNPRlRfTElOSyhUQ0MsIFRD
Q0FjY2Vzc1ByZWZsaWdodCwgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0LCAoQ0ZTdHJpbmdSZWYg
c2VydmljZSwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpLCAoc2VydmljZSwgb3B0aW9ucykpCi1T
T0ZUX0xJTksoVENDLCBUQ0NBY2Nlc3NQcmVmbGlnaHRXaXRoQXVkaXRUb2tlbiwgVENDQWNjZXNz
UHJlZmxpZ2h0UmVzdWx0LCAoQ0ZTdHJpbmdSZWYgc2VydmljZSwgYXVkaXRfdG9rZW5fdCB0b2tl
biwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpLCAoc2VydmljZSwgdG9rZW4sIG9wdGlvbnMpKQot
U09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RDQ1NlcnZpY2VNaWNyb3Bob25lLCBDRlN0cmluZ1Jl
ZikKLVNPRlRfTElOS19DT05TVEFOVChUQ0MsIGtUQ0NTZXJ2aWNlQ2FtZXJhLCBDRlN0cmluZ1Jl
ZikKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZUF1ZGlvKCkKIHsKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBvbmNlRmxhZzsKLSAgICBzdGF0aWMgYm9vbCBlbnRpdGxlZCA9IHRydWU7Ci0gICAgc3Rk
OjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgaWYgKCFjdXJyZW50UHJvY2Vzc0lz
U2FuZGJveGVkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaW50IHJlc3VsdCA9
IHNhbmRib3hfY2hlY2soZ2V0cGlkKCksICJkZXZpY2UtbWljcm9waG9uZSIsIFNBTkRCT1hfRklM
VEVSX05PTkUpOwotICAgICAgICBlbnRpdGxlZCA9ICFyZXN1bHQ7Ci0gICAgICAgIGlmIChyZXN1
bHQgPT0gLTEpCi0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGNoZWNraW5nICdkZXZp
Y2UtbWljcm9waG9uZScgc2FuZGJveCBhY2Nlc3MsIGVycm5vPSVsZCIsIChsb25nKWVycm5vKTsK
LSAgICB9KTsKLSAgICBpZiAoIWVudGl0bGVkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5k
aWYgLy8gUExBVEZPUk0oTUFDKQotCi0gICAgc3RhdGljIFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3Vs
dCBhY2Nlc3MgPSBUQ0NBY2Nlc3NQcmVmbGlnaHQoZ2V0a1RDQ1NlcnZpY2VNaWNyb3Bob25lKCks
IE5VTEwpOwotICAgIGlmIChhY2Nlc3MgPT0ga1RDQ0FjY2Vzc1ByZWZsaWdodEdyYW50ZWQpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgc3RhdGljIGJvb2wgaXNQZXJtaXR0ZWQgPSBkeW5h
bWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZvRGljdGlvbmFy
eVtAIk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb24iXSkubGVuZ3RoOwotICAgIHJldHVybiBp
c1Blcm1pdHRlZDsKKyAgICByZXR1cm4gY2hlY2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKE1l
ZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKSAmJiBjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdG
b3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKTsKICNlbHNlCiAgICAgcmV0dXJuIGZh
bHNlOwogI2VuZGlmCkBAIC03OSw0OSArNTIsMTMgQEAgYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eTo6cGVybWl0dGVkVG9DYXB0dXJlQXVkaW8oKQogYm9vbCBVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cGVybWl0dGVkVG9DYXB0dXJlVmlk
ZW8oKQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpZiBQTEFURk9STShNQUMpCi0g
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwotICAgIHN0YXRpYyBib29sIGVudGl0
bGVkID0gdHJ1ZTsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewotICAgICAgICBp
ZiAoIWN1cnJlbnRQcm9jZXNzSXNTYW5kYm94ZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBpbnQgcmVzdWx0ID0gc2FuZGJveF9jaGVjayhnZXRwaWQoKSwgImRldmljZS1jYW1l
cmEiLCBTQU5EQk9YX0ZJTFRFUl9OT05FKTsKLSAgICAgICAgZW50aXRsZWQgPSAhcmVzdWx0Owot
ICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJv
ciBjaGVja2luZyAnZGV2aWNlLWNhbWVyYScgc2FuZGJveCBhY2Nlc3MsIGVycm5vPSVsZCIsIChs
b25nKWVycm5vKTsKLSAgICB9KTsKLSAgICBpZiAoIWVudGl0bGVkKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQotCi0gICAgc3RhdGljIFRDQ0FjY2Vzc1By
ZWZsaWdodFJlc3VsdCBhY2Nlc3MgPSBUQ0NBY2Nlc3NQcmVmbGlnaHQoZ2V0a1RDQ1NlcnZpY2VD
YW1lcmEoKSwgTlVMTCk7Ci0gICAgaWYgKGFjY2VzcyA9PSBrVENDQWNjZXNzUHJlZmxpZ2h0R3Jh
bnRlZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBzdGF0aWMgYm9vbCBpc1Blcm1pdHRl
ZCA9IGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihOU0J1bmRsZS5tYWluQnVuZGxlLmluZm9E
aWN0aW9uYXJ5W0AiTlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uIl0pLmxlbmd0aDsKLSAgICByZXR1
cm4gaXNQZXJtaXR0ZWQ7CisgICAgcmV0dXJuIGNoZWNrU2FuZGJveFJlcXVpcmVtZW50Rm9yVHlw
ZShNZWRpYVBlcm1pc3Npb25UeXBlOjpWaWRlbykgJiYgY2hlY2tVc2FnZURlc2NyaXB0aW9uU3Ry
aW5nRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpWaWRlbyk7CiAjZWxzZQogICAgIHJldHVy
biBmYWxzZTsKICNlbmRpZgogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLXN0YXRpYyB2
b2lkIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChCT09MIGF1dGhvcml6ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBVk1lZGlhVHlwZSB0
eXBlKQotewotICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShCT09MIGF1dGhvcml6ZWQp
IG11dGFibGUgewotICAgICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBhdXRob3JpemVkXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGF1dGhvcml6ZWQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7Ci0g
ICAgfSk7Ci0gICAgW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSByZXF1ZXN0QWNjZXNz
Rm9yTWVkaWFUeXBlOnR5cGUgY29tcGxldGlvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgp
XTsKLX0KLQogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cmVx
dWVzdFN5c3RlbVZhbGlkYXRpb24oY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlLCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdFByb3h5JiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChwYWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1
cmVEZXZpY2VzRW5hYmxlZCgpKSB7CkBAIC0xMzAsMzYgKzY3LDQwIEBAIHZvaWQgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlcXVlc3RTeXN0ZW1WYWxpZGF0aW9uKGNv
bnN0IFdlYlBhCiAgICAgfQogCiAgICAgLy8gRklYTUU6IEFkZCBUQ0MgZW50aXRsZW1lbnQgY2hl
Y2sgZm9yIHNjcmVlbnNoYXJpbmcuCi0gICAgYm9vbCByZXF1aXJlc0F1ZGlvQ2FwdHVyZSA9IHJl
cXVlc3QucmVxdWlyZXNBdWRpb0NhcHR1cmUoKTsKLSAgICBib29sIHJlcXVpcmVzVmlkZW9DYXB0
dXJlID0gcmVxdWVzdC5yZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpOwotCi0gICAgYXV0byBtaWNyb3Bo
b25lQXV0aG9yaXphdGlvblN0YXR1cyA9ICFyZXF1aXJlc0F1ZGlvQ2FwdHVyZSA/IEFWQXV0aG9y
aXphdGlvblN0YXR1c0F1dGhvcml6ZWQgOiBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygp
IGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpb107Ci0gICAg
aWYgKG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1
c0RlbmllZCB8fCBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRp
b25TdGF0dXNSZXN0cmljdGVkKSB7CisgICAgYXV0byBhdWRpb1N0YXR1cyA9IHJlcXVlc3QucmVx
dWlyZXNBdWRpb0NhcHR1cmUoKSA/IGNoZWNrQVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBl
cm1pc3Npb25UeXBlOjpBdWRpbykgOiBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkdyYW50ZWQ7Cisg
ICAgaWYgKGF1ZGlvU3RhdHVzID09IE1lZGlhUGVybWlzc2lvblJlc3VsdDo6RGVuaWVkKSB7CiAg
ICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1
dG8gY2FtZXJhQXV0aG9yaXphdGlvblN0YXR1cyA9ICFyZXF1aXJlc1ZpZGVvQ2FwdHVyZSA/IEFW
QXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQgOiBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VD
bGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlb107
Ci0gICAgaWYgKGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3Rh
dHVzRGVuaWVkIHx8IGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9u
U3RhdHVzUmVzdHJpY3RlZCkgeworICAgIGF1dG8gdmlkZW9TdGF0dXMgPSByZXF1ZXN0LnJlcXVp
cmVzVmlkZW9DYXB0dXJlKCkgPyBjaGVja0FWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJt
aXNzaW9uVHlwZTo6VmlkZW8pIDogTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpHcmFudGVkOworICAg
IGlmIChhdWRpb1N0YXR1cyA9PSBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkRlbmllZCkgewogICAg
ICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBib29s
IHJlcXVpcmVzVmlkZW9UQ0NQcm9tcHQgPSByZXF1aXJlc1ZpZGVvQ2FwdHVyZSAmJiBjYW1lcmFB
dXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQ7
Ci0gICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHJlcXVpcmVzVmlkZW9UQ0NQcm9tcHQgPyBb
cmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGJvb2wgaXNPSykgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghaXNPSykgewotICAgICAgICAgICAg
Y2FsbGJhY2soZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUoV1RGTW92ZShjYWxsYmFjayksIEFW
TWVkaWFUeXBlVmlkZW8pOwotICAgIH0gOiBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICBpZiAoYXVk
aW9TdGF0dXMgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIHJl
cXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvLCBb
dmlkZW9TdGF0dXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wg
YXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAodmlkZW9TdGF0dXMgPT0gTWVk
aWFQZXJtaXNzaW9uUmVzdWx0OjpHcmFudGVkKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vz
c0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6VmlkZW8sIFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGF1dGhvcml6ZWQpIG11dGFibGUgewor
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgYm9vbCBy
ZXF1aXJlc0F1ZGlvVENDUHJvbXB0ID0gcmVxdWlyZXNBdWRpb0NhcHR1cmUgJiYgbWljcm9waG9u
ZUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5l
ZDsKLSAgICBpZiAoIXJlcXVpcmVzQXVkaW9UQ0NQcm9tcHQpIHsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIodHJ1ZSk7CisgICAgaWYgKHZpZGVvU3RhdHVzID09IE1lZGlhUGVybWlzc2lvblJl
c3VsdDo6VW5rbm93bikgeworICAgICAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yVHlwZShN
ZWRpYVBlcm1pc3Npb25UeXBlOjpWaWRlbywgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
YWxsYmFjayldKGJvb2wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihhdXRob3JpemVkKTsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgQVZNZWRpYVR5cGVBdWRpbyk7CisKKyAgICBjYWxsYmFjayh0cnVlKTsK
IH0KICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDg2NjIz
OGJhZmU4ZjA1YzE3YTIzZDZmOWNjOTlhMjEwMTRkZDkzMTAuLmNkMzAxNDFmY2VhNjIyMmRlNWJh
N2NmMWM2N2E5YTJmNjRkMDIwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC00MSw2ICs0MSwxMCBAQAogI2lt
cG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9T
YW5kYm94U1BJLmg+CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCAiQWNjZXNz
aWJpbGl0eVN1cHBvcnRTUEkuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaD4K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWFQZXJtaXNz
aW9uVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYVBlcm1pc3Npb25V
dGlsaXRpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGIyZDQ4Yzg5N2FhZmIwNThiZTYzMjdlYzQ1NjA0MDk2
OTIwNjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWFQ
ZXJtaXNzaW9uVXRpbGl0aWVzLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbXBvcnQgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgTWVkaWFQZXJt
aXNzaW9uVHlwZSB7CisgICAgQXVkaW8sCisgICAgVmlkZW8KK307CisKK2VudW0gY2xhc3MgTWVk
aWFQZXJtaXNzaW9uUmVzdWx0IHsKKyAgICBEZW5pZWQsCisgICAgR3JhbnRlZCwKKyAgICBVbmtu
b3duCit9OworCisjaWYgUExBVEZPUk0oQ09DT0EpCitib29sIGNoZWNrU2FuZGJveFJlcXVpcmVt
ZW50Rm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlKTsKK2Jvb2wgY2hlY2tVc2FnZURlc2NyaXB0
aW9uU3RyaW5nRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlKTsKK2Jvb2wgY2hlY2tVc2FnZURl
c2NyaXB0aW9uU3RyaW5nRm9yU3BlZWNoUmVjb2duaXRpb24oKTsKKyNlbmRpZgorCisjaWYgSEFW
RShBVkNBUFRVUkVERVZJQ0UpCit2b2lkIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1l
ZGlhUGVybWlzc2lvblR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhdXRob3JpemVk
KT4mJik7CitNZWRpYVBlcm1pc3Npb25SZXN1bHQgY2hlY2tBVkNhcHR1cmVBY2Nlc3NGb3JUeXBl
KE1lZGlhUGVybWlzc2lvblR5cGUpOworI2VuZGlmCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTkla
RVIpCit2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvbkFjY2VzcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wgYXV0aG9yaXplZCk+JiYpOworTWVkaWFQZXJtaXNzaW9uUmVzdWx0IGNoZWNr
U3BlZWNoUmVjb2duaXRpb25BY2Nlc3MoKTsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDlhZTAyNzJhMzEx
NDlkMTA5MWY4ZGIxZTU3ODU2Mjk2YTAyNWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKQEAg
LTAsMCArMSwyMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIgorCisjaW5jbHVkZSAiQVBJ
U2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJBUElVSUNsaWVudC5oIgorI2luY2x1ZGUgIk1l
ZGlhUGVybWlzc2lvblV0aWxpdGllcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcihXZWJQYWdlUHJveHkmIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKwor
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6flNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIoKQoreworICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IG1fcmVxdWVzdHMp
CisgICAgICAgIHJlcXVlc3QtPmNvbXBsZXRlKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRl
Y2lzaW9uOjpEZW55KTsKK30KKyAgICAKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6cmVxdWVzdChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+
JiYgY29tcGxldGlvbnRIYW5kbGVyKQoreworICAgIG1fcmVxdWVzdHMuYXBwZW5kKFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShvcmlnaW4sIFdURk1vdmUoY29tcGxl
dGlvbnRIYW5kbGVyKSkpOworICAgIGlmIChtX3JlcXVlc3RzLnNpemUoKSA9PSAxKQorICAgICAg
ICBzdGFydE5leHRSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6c3RhcnROZXh0UmVxdWVzdCgpCit7CisgICAgaWYgKG1fcmVxdWVzdHMuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUQ0Mgc3RhdHVzIG1heSBoYXZlIGNo
YW5nZWQgYmV0d2VlbiByZXF1ZXN0cy4KKyAgICBtX21pY3JvcGhvbmVDaGVjayA9IENoZWNrUmVz
dWx0OjpVbmtub3duOworICAgIG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPSBDaGVj
a1Jlc3VsdDo6VW5rbm93bjsKKworICAgIHN0YXJ0UHJvY2Vzc2luZ1JlcXVlc3QoKTsKK30KKwor
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydFByb2Nlc3NpbmdS
ZXF1ZXN0KCkKK3sKKyNpZiBQTEFURk9STShDT09DQSkKKyAgICBpZiAoIWNoZWNrU2FuZGJveFJl
cXVpcmVtZW50Rm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbykpIHsKKyAgICAgICAg
Y29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lv
bjo6RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIGlmICghY2hl
Y2tNaWNyb3Bob25lQWNjZXNzKCkgfHwgIWNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNj
ZXNzKCkgfHwgbV91c2VyUGVybWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsK
KyAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25EZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb250aW51
ZVByb2Nlc3NpbmdSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6Y29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgpCit7CisgICAgaWYgKCFtX3Bh
Z2UucHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCkpIHsKKyAgICAgICAg
aWYgKG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25v
d24pIHsKKyAgICAgICAgICAgIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3Mo
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQobV9zcGVl
Y2hSZWNvZ25pdGlvblNlcnZpY2VDaGVjayA9PSBDaGVja1Jlc3VsdDo6R3JhbnRlZCk7CisKKyAg
ICAgICAgaWYgKG1fbWljcm9waG9uZUNoZWNrID09IENoZWNrUmVzdWx0OjpVbmtub3duKSB7Cisg
ICAgICAgICAgICByZXF1ZXN0TWljcm9waG9uZUFjY2VzcygpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIEFTU0VSVChtX21pY3JvcGhvbmVDaGVjayA9PSBDaGVja1Jl
c3VsdDo6R3JhbnRlZCk7CisgICAgfQorCisgICAgaWYgKG1fdXNlclBlcm1pc3Npb25DaGVjayA9
PSBDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICByZXF1ZXN0VXNlclBlcm1pc3Npb24o
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQobV91c2VyUGVybWlzc2lvbkNo
ZWNrID09IENoZWNrUmVzdWx0OjpHcmFudGVkKTsKKworICAgIGNvbXBsZXRlQ3VycmVudFJlcXVl
c3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkdyYW50KTsKK30KKwordm9p
ZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1
ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKQoreworICAg
IEFTU0VSVCghbV9yZXF1ZXN0cy5pc0VtcHR5KCkpOworICAgIGF1dG8gY3VycmVudFJlcXVlc3Qg
PSBtX3JlcXVlc3RzLnRha2VGaXJzdCgpOworICAgIGN1cnJlbnRSZXF1ZXN0LT5jb21wbGV0ZShk
ZWNpc2lvbik7CisKKyAgICBzdGFydE5leHRSZXF1ZXN0KCk7Cit9CisKK2Jvb2wgU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKCkKK3sKKyAg
ICBpZiAobV9wYWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX21pY3JvcGhvbmVDaGVjayA9PSBDaGVj
a1Jlc3VsdDo6VW5rbm93bikgeworI2lmIEhBVkUoQVZDQVBUVVJFREVWSUNFKQorICAgICAgICBh
dXRvIHJlc3VsdCA9IGNoZWNrQVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25U
eXBlOjpBdWRpbyk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0
OjpVbmtub3duKQorICAgICAgICAgICAgbV9taWNyb3Bob25lQ2hlY2sgPSByZXN1bHQgPT0gTWVk
aWFQZXJtaXNzaW9uUmVzdWx0OjpHcmFudGVkID8gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBDaGVj
a1Jlc3VsdDo6RGVuaWVkOworICAgICAgICBlbHNlIGlmICghY2hlY2tVc2FnZURlc2NyaXB0aW9u
U3RyaW5nRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbykpCisgICAgICAgICAgICBt
X21pY3JvcGhvbmVDaGVjayA9IENoZWNrUmVzdWx0OjpEZW5pZWQ7CisjZWxzZQorICAgICAgICBt
X21pY3JvcGhvbmVDaGVjayA9IENoZWNrUmVzdWx0OjpHcmFudGVkOworI2VuZGlmCisgICAgfQor
CisgICAgcmV0dXJuIG1fbWljcm9waG9uZUNoZWNrICE9IENoZWNrUmVzdWx0OjpEZW5pZWQ7Cit9
CisKK2Jvb2wgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hS
ZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKQoreworICAgIGlmIChtX3BhZ2UucHJlZmVyZW5jZXMo
KS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgaWYgKG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVu
a25vd24pIHsKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisgICAgICAgIGF1dG8gcmVzdWx0
ID0gY2hlY2tTcGVlY2hSZWNvZ25pdGlvbkFjY2VzcygpOworICAgICAgICBpZiAocmVzdWx0ICE9
IE1lZGlhUGVybWlzc2lvblJlc3VsdDo6VW5rbm93bikKKyAgICAgICAgICAgIG1fc3BlZWNoUmVj
b2duaXRpb25TZXJ2aWNlQ2hlY2sgPSByZXN1bHQgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpH
cmFudGVkID8gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBDaGVja1Jlc3VsdDo6RGVuaWVkOworICAg
ICAgICBlbHNlIGlmICghY2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yU3BlZWNoUmVjb2du
aXRpb24oKSkKKyAgICAgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPSBD
aGVja1Jlc3VsdDo6RGVuaWVkOworI2Vsc2UKKyAgICAgICAgbV9zcGVlY2hSZWNvZ25pdGlvblNl
cnZpY2VDaGVjayA9IENoZWNrUmVzdWx0OjpHcmFudGVkOworI2VuZGlmCisgICAgfQorCisgICAg
cmV0dXJuIG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgIT0gQ2hlY2tSZXN1bHQ6OkRl
bmllZDsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1
ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIEFTU0VSVChtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrID09
IENoZWNrUmVzdWx0OjpVbmtub3duKTsKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKyAg
ICByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25BY2Nlc3MoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIodGhpcyldKGJvb2wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vh
a1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9zcGVlY2hSZWNvZ25pdGlv
blNlcnZpY2VDaGVjayA9IGF1dGhvcml6ZWQgPyBDaGVja1Jlc3VsdDo6R3JhbnRlZCA6IENoZWNr
UmVzdWx0OjpEZW5pZWQ7CisgICAgICAgIGlmIChtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNo
ZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAgICAgICAgICAgIGNvbXBsZXRlQ3VycmVu
dFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29udGludWVQcm9jZXNzaW5n
UmVxdWVzdCgpOworICAgIH0pOworI2VuZGlmCit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3MoKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fbWljcm9waG9uZUNoZWNrID09IENoZWNr
UmVzdWx0OjpVbmtub3duKTsKKworI2lmIEhBVkUoQVZDQVBUVVJFREVWSUNFKQorICAgIHJlcXVl
c3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvLCBbdGhp
cywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYm9vbCBhdXRob3JpemVkKSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9taWNy
b3Bob25lQ2hlY2sgPSBhdXRob3JpemVkID8gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBDaGVja1Jl
c3VsdDo6RGVuaWVkOworICAgICAgICBpZiAobV9taWNyb3Bob25lQ2hlY2sgPT0gQ2hlY2tSZXN1
bHQ6OkRlbmllZCkgeworICAgICAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbjo6RGVueSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCk7CisgICAg
fSk7CisjZW5kaWYKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
OjpyZXF1ZXN0VXNlclBlcm1pc3Npb24oKQoreworICAgIEFTU0VSVCghbV9yZXF1ZXN0cy5pc0Vt
cHR5KCkpOworICAgIGF1dG8mIGN1cnJlbnRSZXF1ZXN0ID0gbV9yZXF1ZXN0cy5maXJzdCgpOwor
CisgICAgYXV0byBjbGllbnRPcmlnaW4gPSBjdXJyZW50UmVxdWVzdC0+b3JpZ2luKCk7CisgICAg
YXV0byByZXF1ZXN0aW5nT3JpZ2luID0gY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbi5zZWN1cml0
eU9yaWdpbigpOworICAgIGF1dG8gdG9wT3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5z
ZWN1cml0eU9yaWdpbigpOworICAgIGlmICghcmVxdWVzdGluZ09yaWdpbi0+aXNTYW1lT3JpZ2lu
QXModG9wT3JpZ2luKSkgeworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpXShib29sIGdyYW50ZWQpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPSBncmFu
dGVkID8gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBDaGVja1Jlc3VsdDo6RGVuaWVkOworICAgICAg
ICBpZiAobV91c2VyUGVybWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAg
ICAgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uRGVjaXNpb246OkRlbnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgpOworICAgIH07CisgICAgbV9wYWdlLnVp
Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVz
dChtX3BhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0b3BPcmlnaW4uZ2V0KCkpLmdl
dCgpLCBXVEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzZTRlNjFhZWM3MTM3ZmJi
YWE5ZDFiMzlkNjQwMjU3MjQ1ZmZhMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgKQEAgLTAsMCAr
MSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQ
YWdlUHJveHk7CisKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcj4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoV2ViUGFnZVByb3h5Jik7CisgICAgflNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoKTsKKyAgICB2b2lkIHJlcXVlc3QoY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYpOworICAgIHZvaWQgcmVzZXQoKTsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIHN0YXJ0TmV4dFJlcXVlc3QoKTsKKyAgICB2b2lkIHN0YXJ0UHJv
Y2Vzc2luZ1JlcXVlc3QoKTsKKyAgICB2b2lkIGNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoKTsK
KyAgICB2b2lkIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uRGVjaXNpb24pOworICAgIGJvb2wgY2hlY2tNaWNyb3Bob25lQWNjZXNzKCk7CisgICAgYm9v
bCBjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpOworICAgIHZvaWQgcmVxdWVz
dE1pY3JvcGhvbmVBY2Nlc3MoKTsKKyAgICB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNl
cnZpY2VBY2Nlc3MoKTsKKyAgICB2b2lkIHJlcXVlc3RVc2VyUGVybWlzc2lvbigpOworCisgICAg
V2ViUGFnZVByb3h5JiBtX3BhZ2U7CisgICAgRGVxdWU8UmVmPFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblJlcXVlc3Q+PiBtX3JlcXVlc3RzOworICAgIGVudW0gY2xhc3MgQ2hlY2tSZXN1bHQg
eyBEZW5pZWQsIEdyYW50ZWQsIFVua25vd24gfTsKKyAgICBDaGVja1Jlc3VsdCBtX3NhbmRib3hD
aGVjayB7IENoZWNrUmVzdWx0OjpVbmtub3duIH07CisgICAgQ2hlY2tSZXN1bHQgbV9taWNyb3Bo
b25lQ2hlY2sgeyBDaGVja1Jlc3VsdDo6VW5rbm93biB9OworICAgIENoZWNrUmVzdWx0IG1fc3Bl
ZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgeyBDaGVja1Jlc3VsdDo6VW5rbm93biB9OworICAg
IENoZWNrUmVzdWx0IG1fdXNlclBlcm1pc3Npb25DaGVjayB7IENoZWNrUmVzdWx0OjpVbmtub3du
IH07CisgICAgYm9vbCBtX2lzVXNpbmdNb2NrZWRDYXB0dXJlRGV2aWNlIHsgZmFsc2UgfTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIyNTE3YjNlZmE2MTI4OWQ0Mzc0M2NiNGY0Nzc5MTY1ZDBlMGEzOGUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4u
aD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2VudW0gY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24gOiBi
b29sIHsgRGVueSwgR3JhbnQgfTsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJl
cXVlc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3Q+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lv
bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KG9yaWdpbiwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBsZXRlKFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKQorICAgIHsKKyAgICAgICAgYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwg
eyB9KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGVjaXNpb24pOworICAgIH0KKworICAg
IGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9v
cmlnaW47IH0KKworcHJpdmF0ZToKKyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICAgICAgOiBtX29yaWdpbihvcmlnaW4pCisgICAgICAgICwgbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICB7IH0KKworICAgIFdl
YkNvcmU6OkNsaWVudE9yaWdpbiBtX29yaWdpbjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4gbV9jb21wbGV0aW9uSGFuZGxl
cjsKK307CisKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrIDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiBjcmVhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKSk7CisgICAgfQorCisgICAgdm9pZCBjb21wbGV0ZShib29sIGdyYW50ZWQp
IHsgbV9jb21wbGV0aW9uSGFuZGxlcihncmFudGVkKTsgfQorCitwcml2YXRlOgorICAgIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICB7IH0KKworICAgIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+IG1fY29tcGxldGlvbkhhbmRsZXI7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLmNwcAppbmRleCA5Y2U5NzRjZjlkYWE1NjU4MmVlYmNmYTAzMDY3MGI3YTM3NWJl
NzFlLi45NmFkYzc4NmU0YjhjOGY4ZWQ3Mjk4MmI1YjdkNjFiMDUyNTg2Y2I2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCkBA
IC0zMiwxNSArMzIsMTYgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYm
IGNvbm5lY3Rpb24sIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVy
KQorU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJ
UEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiBw
ZXJtaXNzaW9uQ2hlY2tlcikKICAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24p
KQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX3Blcm1pc3Npb25DaGVj
a2VyKFdURk1vdmUocGVybWlzc2lvbkNoZWNrZXIpKQogewogfQogCi12b2lkIFNwZWVjaFJlY29n
bml0aW9uU2VydmVyOjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZv
JiYgcmVxdWVzdEluZm8pCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElk
ZW50aWZpZXIsIFN0cmluZyYmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVz
dWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBv
cmlnaW4pCiB7Ci0gICAgYXV0byByZXF1ZXN0ID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0OjpjcmVhdGUoV1RGTW92ZShyZXF1ZXN0SW5mbykpOworICAgIGF1dG8gcmVxdWVzdCA9
IG1ha2VVbmlxdWU8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PihTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvIHsgY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShsYW5nKSwgY29u
dGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVybmF0aXZlcywgV1RGTW92ZShvcmlnaW4p
IH0pOwogICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFwcGVuZChXVEZNb3ZlKHJlcXVlc3QpKTsKIAog
ICAgIHByb2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJZk5lZWRlZCgpOwpAQCAtNzIsOCArNzMsNyBA
QCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjphYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZAogewogICAgIGlmIChtX2N1cnJlbnRSZXF1ZXN0ICYm
IG1fY3VycmVudFJlcXVlc3QtPmNsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlmaWVy
KSB7CiAgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBudWxscHRyOwotICAgICAgICBhdXRvIHVw
ZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoY2xpZW50SWRl
bnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOwotICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OkRpZFJl
Y2VpdmVVcGRhdGUodXBkYXRlKSwgbV9pZGVudGlmaWVyKTsKKyAgICAgICAgc2VuZFVwZGF0ZShj
bGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVu
ZCk7CiAKICAgICAgICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTg0LDEzICs4NCwxMiBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjphYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZAog
CiB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpyZW1vdmVQZW5kaW5nUmVxdWVzdChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElk
ZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dD4gdGFrZW5SZXF1ZXN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3Q+IHRha2VuUmVxdWVzdDsKICAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0cyA9
IHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nUmVxdWVzdHMsIHsgfSk7CiAgICAgd2hpbGUgKCFwZW5k
aW5nUmVxdWVzdHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gcmVxdWVzdCA9IHBlbmRpbmdS
ZXF1ZXN0cy50YWtlRmlyc3QoKTsKICAgICAgICAgaWYgKHJlcXVlc3QtPmNsaWVudElkZW50aWZp
ZXIoKSA9PSBjbGllbnRJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBhdXRvIHVwZGF0ZSA9IFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoY2xpZW50SWRlbnRpZmllciwg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOwotICAgICAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpEaWRSZWNlaXZl
VXBkYXRlKHVwZGF0ZSksIG1faWRlbnRpZmllcik7CisgICAgICAgICAgICBzZW5kVXBkYXRlKGNs
aWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5k
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIG1fcGVuZGluZ1Jl
cXVlc3RzLmFwcGVuZChXVEZNb3ZlKHJlcXVlc3QpKTsKQEAgLTEwNSwxMiArMTA0LDUxIEBAIHZv
aWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpCiAgICAgfQogfQogCi12b2lkIFNwZWVjaFJlY29nbml0aW9u
U2VydmVyOjpzdGFydFBvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0JikKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0UG9jZXNzaW5nUmVx
dWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3QpCiB7CisgICAg
bV9wZXJtaXNzaW9uQ2hlY2tlcihyZXF1ZXN0LmNsaWVudE9yaWdpbigpLCBbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd2Vha1JlcXVlc3QgPSBtYWtlV2Vha1B0cihyZXF1ZXN0
KV0oU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24pIG11dGFibGUg
eworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGlmICghd2Vha1JlcXVlc3QpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgQVNTRVJU
KG1fY3VycmVudFJlcXVlc3QuZ2V0KCkgPT0gd2Vha1JlcXVlc3QuZ2V0KCkpOworICAgICAgICBp
ZiAoZGVjaXNpb24gPT0gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkp
IHsKKyAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3Bl
ZWNoUmVjb2duaXRpb25FcnJvclR5cGU6Ok5vdEFsbG93ZWQsICJQZXJtaXNzaW9uIGNoZWNrIGZh
aWxlZCJfcyB9OworICAgICAgICAgICAgc2VuZFVwZGF0ZSh3ZWFrUmVxdWVzdC0+Y2xpZW50SWRl
bnRpZmllcigpLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yLCBl
cnJvcik7CisgICAgICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgIHByb2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJZk5lZWRlZCgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgqd2Vh
a1JlcXVlc3QpOworICAgIH0pOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpj
b250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dCYpCit7CisgICAgLy8gVE9ETzogc3RhcnQgY2FwdHVyaW5nIGF1ZGlvIGFuZCByZWNvZ25pemlu
Zy4KIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RvcFByb2Nlc3NpbmdSZXF1
ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpCit2b2lkIFNwZWVjaFJlY29n
bml0aW9uU2VydmVyOjpzZW5kVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
IHR5cGUsIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+IGVycm9yLCBPcHRpb25hbDxW
ZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gcmVzdWx0KQogeworICAgIGF1dG8g
dXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJ
ZGVudGlmaWVyLCB0eXBlKTsKKyAgICBpZiAodHlwZSA9PSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZVR5cGU6OkVycm9yKQorICAgICAgICB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRlbnRpZmllciwgKmVycm9yKTsKKyAgICBpZiAo
dHlwZSA9PSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlJlc3VsdCkKKyAgICAgICAgdXBk
YXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZVJlc3VsdChjbGll
bnRJZGVudGlmaWVyLCAqcmVzdWx0KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb246OkRpZFJlY2VpdmVVcGRhdGUodXBkYXRlKSwgbV9pZGVudGlmaWVy
KTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RvcFByb2Nlc3NpbmdSZXF1
ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICAv
LyBUT0RPOiBzdG9wIGNhcHR1cmluZyBhdWRpbyBhbmQgZmluYWxpemluZyByZWNvZ25pdGlvbiBy
ZXN1bHQgd2l0aCBjYXB0dXJlZCBhdWRpby4KKyAgICBzZW5kVXBkYXRlKHJlcXVlc3QuY2xpZW50
SWRlbnRpZmllcigpLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6Ok5vTWF0
Y2gpOworICAgIHNlbmRVcGRhdGUocmVxdWVzdC5jbGllbnRJZGVudGlmaWVyKCksIFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKTsKKyAgICBBU1NFUlQobV9jdXJyZW50
UmVxdWVzdC5nZXQoKSA9PSAmcmVxdWVzdCk7CisgICAgbV9jdXJyZW50UmVxdWVzdCA9IG51bGxw
dHI7CisgICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7CiB9CiAKIElQQzo6
Q29ubmVjdGlvbiogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6Om1lc3NhZ2VTZW5kZXJDb25uZWN0
aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5oCmluZGV4IDdhYTI0MTYzOGI5YzM1MTQ5NjY5ODQ0MzJkYmM1MzBkZjg0ODRh
MzcuLjU3ZmNjNjc3NzA2MGE4OTMzNWZjNWNhYTVhMDBjMmE4MDk5NWZhMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaApAQCAtMjgs
MjEgKzI4LDMwIEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NwZWVjaFJlY29nbml0aW9uRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNoUmVj
b2duaXRpb25SZXN1bHREYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2VudW0gY2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOworc3Ry
dWN0IENsaWVudE9yaWdpbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBy
b2Nlc3NQcm94eTsKK2VudW0gY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNp
b24gOiBib29sOwogCiB1c2luZyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgPSBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcjsKK3VzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNoZWNrZXIgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24p
PiYmKT47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmVyIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2Vp
dmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29u
bmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyKTsKKyAgICBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25p
dGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXIm
Jik7CiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8mJik7CisgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wg
aW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiYpOwogICAgIHZvaWQgc3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyKTsKICAgICB2b2lkIGFib3J0KFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogICAgIHZvaWQgaW52YWxpZGF0
ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsK
QEAgLTUxLDkgKzYwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzTmV4dFBlbmRpbmdS
ZXF1ZXN0SWZOZWVkZWQoKTsKICAgICB2b2lkIHJlbW92ZVBlbmRpbmdSZXF1ZXN0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogCi0gICAgLy8g
VE9ETzogaW1wbGVtZW50IHRoZXNlLgogICAgIHZvaWQgc3RhcnRQb2Nlc3NpbmdSZXF1ZXN0KFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOworICAgIHZvaWQgY29udGludWVQcm9j
ZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKICAgICB2
b2lkIHN0b3BQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3QmKTsKKyAgICB2b2lkIHNlbmRVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVU
eXBlLCBPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiA9IFdURjo6bnVs
bG9wdCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0
YT4+ID0gV1RGOjpudWxsb3B0KTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
b3ZlcnJpZGU7CkBAIC02NCw4ICs3NCw5IEBAIHByaXZhdGU6CiAKICAgICBSZWY8SVBDOjpDb25u
ZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKLSAgICBEZXF1ZTxSZWY8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0Pj4gbV9wZW5kaW5nUmVxdWVzdHM7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBEZXF1ZTxzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Pj4gbV9wZW5kaW5nUmVx
dWVzdHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
aGVja2VyIG1fcGVybWlzc2lvbkNoZWNrZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2Vy
dmVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIubWVzc2FnZXMuaW4KaW5kZXggZTMxYmVmYjA5NWFkODhkYWRjMzBmMDk5NWM1N2U0
MTUzNzNmMTJmNC4uYTI4YjkyMWNiOTY0YWZhZjJmZjIyYzkxNmJiZTQ2ZTgyOTkxMzI5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogIAogIG1lc3NhZ2Vz
IC0+IFNwZWVjaFJlY29nbml0aW9uU2VydmVyIE5vdFJlZkNvdW50ZWQgewotICAgIFN0YXJ0KHN0
cnVjdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIGluZm8pCisgICAgU3Rh
cnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBp
ZGVudGlmaWVyLCBTdHJpbmcgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1
bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4gb3JpZ2luKQogICAgIFN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEFib3J0KFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBJbnZh
bGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IDYzMDlkZWU1YjQwMjk1MDA3NWY2ZWVhOWVmZWExM2Y0NmJmYzY4OTQuLjNlNTc1NTMyZTg4
N2U0NzEzNThkMDk4YmIzOWMzNjRiNzQxZjlhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtODYsNiArODYsNyBAQAogI2luY2x1ZGUgIlByb3Zpc2lvbmFs
UGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0
YXRlLmgiCkBAIC00ODkyLDYgKzQ4OTMsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdl
TWFpbkRvY3VtZW50KEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIFVOVVNFRF9QQVJBTShm
cmFtZUlEKTsKICNlbmRpZgogICAgIG1faXNRdW90YUluY3JlYXNlRGVuaWVkID0gZmFsc2U7CisK
KyAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBudWxscHRyOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld0lzQmVjb21pbmdWaXNpYmxlKCkKQEAgLTc2MDUsNiAr
NzYwOCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb24g
cmVzZXRTdGF0ZVJlYXNvbikKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgIG1fd2Vic2l0ZURh
dGFTdG9yZS0+YXV0aGVudGljYXRvck1hbmFnZXIoKS5jYW5jZWxSZXF1ZXN0KG1fd2ViUGFnZUlE
LCBXVEY6Om51bGxvcHQpOwogI2VuZGlmCisKKyAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXIgPSBudWxscHRyOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0
ZUFmdGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNzVGVybWluYXRpb25SZWFzb24gdGVybWluYXRpb25S
ZWFzb24pCkBAIC0xMDI0Niw2ICsxMDI1MSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0
Y2hBY3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZygpCiAgICAgfSk7CiB9CiAKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBpZiAoIW1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcikKKyAgICAg
ICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyPigqdGhpcyk7CisKKyAgICBtX3NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXItPnJlcXVlc3QoY2xpZW50T3JpZ2luLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5k
ZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCA4YTRjZWFhYTVkMzYxNTE0MzZhZDhiZGVkMzFhYjhjYjE5OWVjN2UyLi5lZTBi
ZWU1MmRjYzMxMzYzN2MyYTNjYjM5Y2IyN2QzMDMwNTU5ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzA1LDYgKzMwNSw3IEBAIGNsYXNzIFJlbW90ZUxheWVy
VHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YTsKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOwogY2xhc3MgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTsKIGNsYXNzIFNl
Y0tleVByb3h5U3RvcmU7CitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
OwogY2xhc3MgVXNlckRhdGE7CiBjbGFzcyBWaWV3U25hcHNob3Q7CiBjbGFzcyBWaXNpdGVkTGlu
a1N0b3JlOwpAQCAtMzY1LDYgKzM2Niw3IEBAIHN0cnVjdCBVc2VyTWVzc2FnZTsKIAogZW51bSBj
bGFzcyBOZWdvdGlhdGVkTGVnYWN5VExTIDogYm9vbDsKIGVudW0gY2xhc3MgUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCA6IGJvb2w7CitlbnVtIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkRlY2lzaW9uIDogYm9vbDsKIGVudW0gY2xhc3MgVW5kb09yUmVkbyA6IGJvb2w7CiBl
bnVtIGNsYXNzIFdlYkNvbnRlbnRNb2RlIDogdWludDhfdDsKIApAQCAtMTgxOSw2ICsxODIxLDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkoU2Vjb25k
cyBjYXB0dXJlUmVwb3J0aW5nRGVsYXkpIHsgbV9tZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheSA9
IGNhcHR1cmVSZXBvcnRpbmdEZWxheTsgfQogICAgIHNpemVfdCBzdXNwZW5kTWVkaWFQbGF5YmFj
a0NvdW50ZXIoKSB7IHJldHVybiBtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlcjsgfQogCisg
ICAgdm9pZCByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uRGVjaXNpb24pPiYmKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFn
ZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYm
KTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjg0OSw2ICsyODUzLDkgQEAg
cHJpdmF0ZToKICAgICB9OwogICAgIE9wdGlvbmFsPFNwZWVjaFN5bnRoZXNpc0RhdGE+IG1fc3Bl
ZWNoU3ludGhlc2lzRGF0YTsKICNlbmRpZgorCisgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI+IG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjsKKwogI2lmIFVTRShESVJFQ1QyRCkKICAgICBDT01QdHI8SUQzRDExRGV2aWNlMT4g
bV9kZXZpY2U7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IDdmODMxNWI3M2NmNDI5MDNmMjY3YTE0NDFiNGM2ODI0ZmU1YmY4ODkuLjY5
Mjk3YzI2NzJkODU0YzUyNjliOGFiZjAyNWZhNDdmODUwZjM3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiVGV4
dENoZWNrZXJTdGF0ZS5oIgpAQCAtMTcxMyw3ICsxNzE0LDE5IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cklkZW50CiB7CiAgICAgYXV0byBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1fc3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXJNYXAuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOwogICAgIEFTU0VSVChz
cGVlY2hSZWNvZ25pdGlvblNlcnZlci5pc05ld0VudHJ5KTsKLSAgICBzcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyPihtYWtlUmVmKCpjb25uZWN0aW9uKCkpLCBpZGVudGlmaWVyKTsKKyAgICBzcGVlY2hSZWNv
Z25pdGlvblNlcnZlci5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0
aW9uU2VydmVyPihtYWtlUmVmKCpjb25uZWN0aW9uKCkpLCBpZGVudGlmaWVyLCBbaWRlbnRpZmll
ciwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oY29uc3QgQ2xpZW50T3JpZ2luJiBvcmln
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVj
aXNpb24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGF1dG8qIHBhZ2UgOiB3
ZWFrVGhpcy0+cGFnZXMoKSkgeworICAgICAgICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+d2ViUGFn
ZUlEKCkgPT0gaWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgIHBhZ2UtPnJlcXVlc3RTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb24ob3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVj
aXNpb246OkRlbnkpOworICAgIH0pOwogICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmll
ciwgKnNwZWVjaFJlY29nbml0aW9uU2VydmVyLml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUxOWE1
YzkzZTQzZTBiMGRiYjY5NmZmNGM2MmRkY2FiMGM5YTU1ZTUuLjQ1MzRiMjljYTk1OTgyNDU4YWFm
MjkxZTA3NWRjNTZkODA5NmVmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM3NCw2ICsxMzc0LDcgQEAKIAkJOTMzRTgzNTUyM0Ew
N0MwNjAwREVGMjg5IC8qIFdlYklEQlNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzRTgzNTMyM0EwN0JGODAwREVGMjg5IC8qIFdlYklEQlNl
cnZlci5oICovOyB9OwogCQk5MzNFODM1QTIzQTFBRTI4MDBERUYyODkgLyogV2ViSURCU2VydmVy
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzM0U4MzU5MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlcy5oICovOyB9
OwogCQk5MzNFODM1QjIzQTFCNzUwMDBERUYyODkgLyogV2ViSURCU2VydmVyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
M0U4MzU4MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OworCQk5MzQyNTg5QTI1NUI1MzVBMDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzQyNTg5ODI1NUI1MzRCMDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggKi87
IH07CiAJCTkzNEI3MjQ0MTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlwZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEI3MjQz
MTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzU2RjJEQzIxNTJCNkI1MDBF
NkQ1REYgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTMwMjFGNDc5M0IyMDBEQ0RDMEEgLyogV2ViU1dD
bGllbnRDb25uZWN0aW9uLmggKi87IH07CiAJCTkzNTZGMkREMjE1MkI2RjYwMEU2RDVERiAvKiBX
ZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzQkEwNEUwMjE1MUFERjQwMDdGNDU1RiAvKiBXZWJTV1NlcnZlckNvbm5l
Y3Rpb24uaCAqLzsgfTsKQEAgLTE0MDgsNiArMTQwOSw5IEBACiAJCTkzRDZCNzg3MjU0Q0NEOEMw
MDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3ODYyNTRDQ0Q4
QjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi87
IH07CiAJCTkzRDZCNzg4MjU0Q0NEOTQwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRDZCNzdFMjU0Q0NBQkIwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKIAkJOTNENkI3OEEyNTRD
RDQzRTAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0Q2Qjc3RDI1NENDQUJCMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTNENkI3QjQyNTUyNjhENTAwNThERDNBIC8q
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi87IH07CisJCTkzRDZCN0I1MjU1
MjY4RDcwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdCMjI1NTI2
OEEyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovOyB9
OworCQk5M0Q2QjdCOTI1NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNkE0RUQx
QkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y1NDlCNDFFMzE3NEI3MDAwRTcyMzkg
LyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90
Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKIAkJOTUwRjI4ODAyNTI0MTRFQTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwRjI4
N0UyNTI0MTRFOTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oICovOyB9OwpAQCAt
NDQ2OCw2ICs0NDcyLDggQEAKIAkJOTMzRTgzNTcyM0ExQTg3MjAwREVGMjg5IC8qIFdlYklEQlNl
cnZlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJREJTZXJ2ZXIubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzM0U4MzU4MjNBMUFERjUw
MERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSURCU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSURCU2VydmVyTWVzc2FnZVJlY2VpdmVy
LmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTMzRTgzNTkyM0Ex
QURGNTAwREVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdlYklEQlNlcnZlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQyL1dlYklEQlNlcnZlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CisJCTkzNDI1ODhGMjU1NURDQTUwMDU5RUVERCAvKiBNZWRpYVBlcm1p
c3Npb25VdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVBlcm1pc3Npb25V
dGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNDI1ODk4MjU1QjUz
NEIwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzNEI3MjQzMTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1l
bnVJdGVtVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tBY3Rpb25N
ZW51SXRlbVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUVFQjk1MTI3
NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUVFQjk2MTI3NzYxNkQwMDMzMjJCOCAvKiBX
S0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDUyOCw2ICs0NTM0LDExIEBACiAJCTkzRDZCNzgwMjU0Q0NBQkMwMDU4REQzQSAvKiBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTNENkI3ODEyNTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0
aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3ODYyNTRDQ0Q4QjAwNThERDNBIC8qIFdl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAv
KiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjAyNTUyNjhBMTAwNThERDNBIC8qIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAv
KiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdL
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdCODI1NTM0QTEyMDA1OEREM0EgLyog
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNkE0RUQxQkM1REQzOTAw
RjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gX1dLSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjUxRTMxNzREQTAwMEU3MjM5IC8q
IFdLU25hcHNob3RDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02NDU4LDYgKzY0NjksNyBAQAogCQkJCTdBODIxRjREMUUyRjY3OUUwMDYw
NDU3NyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0gKi8sCiAJCQkJQTFE
RjYzMTExOEUwQjdDODAwM0EzRTJBIC8qIExlZ2FjeURvd25sb2FkQ2xpZW50LmggKi8sCiAJCQkJ
QTFERjYzMTAxOEUwQjdDODAwM0EzRTJBIC8qIExlZ2FjeURvd25sb2FkQ2xpZW50Lm1tICovLAor
CQkJCTkzNDI1ODhGMjU1NURDQTUwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMu
bW0gKi8sCiAJCQkJNDExMjg2RUYyMUM4QTkwQzAwM0E4NTUwIC8qIE1lZGlhVXRpbGl0aWVzLmgg
Ki8sCiAJCQkJNDExMjg2RjAyMUM4QTkwRDAwM0E4NTUwIC8qIE1lZGlhVXRpbGl0aWVzLm1tICov
LAogCQkJCTFBQkMzREY0MTg5OUU0MzcwMDRGMDYyNiAvKiBOYXZpZ2F0aW9uU3RhdGUuaCAqLywK
QEAgLTkxODgsNiArOTIwMCw3IEBACiAJCQkJNUNFQUJBMkIyMzMzMjUxNDAwNzk3Nzk3IC8qIExl
Z2FjeUdsb2JhbFNldHRpbmdzLmNwcCAqLywKIAkJCQk1Q0VBQkEyQTIzMzMyNDc3MDA3OTc3OTcg
LyogTGVnYWN5R2xvYmFsU2V0dGluZ3MuaCAqLywKIAkJCQkzMTYwN0YzODE5NjI3MDAyMDA5Qjg3
REEgLyogTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmggKi8sCisJCQkJOTM0MjU4OTgyNTVCNTM0
QjAwNTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oICovLAogCQkJCUJDNkVEQUE1
MTExMjcxQzYwMEU3Njc4QiAvKiBQYWdlQ2xpZW50LmggKi8sCiAJCQkJMUFDNzUzNzkxODNBOUZE
QTAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuY3BwICovLAogCQkJCTFBQzc1MzdBMTgzQTlGREIw
MDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmggKi8sCkBAIC05MjA3LDYgKzkyMjAsOSBAQAogCQkJ
CUJDMTExQjA4MTEyRjVFM0MwMDMzN0JBQiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLywK
IAkJCQkxQTMwMDY2QzExMTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5oICov
LAogCQkJCTVDQTk4NTQ5MjEwQkVCNUEwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nLmgg
Ki8sCisJCQkJOTNENkI3QjAyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIuY3BwICovLAorCQkJCTkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi8sCisJCQkJOTNENkI3QUYyNTUy
NjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCAqLywK
IAkJCQk5M0Q2Qjc2QjI1NEI4OTU4MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
Y3BwICovLAogCQkJCTkzRDZCNzZDMjU0Qjg5NTgwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5oICovLAogCQkJCTkzRDZCNzdBMjU0Qzk4NEQwMDU4REQzQSAvKiBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlci5tZXNzYWdlcy5pbiAqLywKQEAgLTk1NDcsNiArOTU2Myw4IEBACiAJCQkJ
MzMzNjc2MzkxMzBDOTlEQzAwNkM5REUyIC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCAqLywK
IAkJCQkxQURFNDZCMDE5NTRFQzYxMDAwRjc5ODUgLyogV0tTZXNzaW9uU3RhdGVSZWYuY3BwICov
LAogCQkJCTFBREU0NkIxMTk1NEVDNjEwMDBGNzk4NSAvKiBXS1Nlc3Npb25TdGF0ZVJlZi5oICov
LAorCQkJCTkzRDZCN0I4MjU1MzRBMTIwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrLmNwcCAqLywKKwkJCQk5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyog
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICovLAogCQkJCTUxRjg4NkEz
MUYyQzIxNEEwMEMxOTNFRiAvKiBXS1Rlc3RpbmdTdXBwb3J0LmNwcCAqLywKIAkJCQk1MUY4ODZB
NDFGMkMyMTRBMDBDMTkzRUYgLyogV0tUZXN0aW5nU3VwcG9ydC5oICovLAogCQkJCTMxNDg4OEZF
MUQ5MUIxMUQwMDM3NzA0MiAvKiBXS1RleHRDaGVja2VyLmNwcCAqLywKQEAgLTExMTQzLDYgKzEx
MTYxLDcgQEAKIAkJCQkxQTZEODZDMjFERjc1MjY1MDA3NzQ1RTggLyogTWFjaE1lc3NhZ2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDQzU2Rjc5MTE1OTk1N0QwMDFDQ0FGOSAvKiBNYWNoUG9ydC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyNEI1RjMxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGls
aXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzNDI1ODlBMjU1QjUzNUEwMDU5RUVERCAvKiBN
ZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RTE5RUZDMjNE
NDAxRjEwMDk0RkZCNCAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDdFMTlFRkQyM0Q0MDFGMTAwOTRGRkI0IC8qIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5MzNERUYx
OTY1RUIzMTAwOEFDM0VBIC8qIE1lbnVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTEz
ODUsNiArMTE0MDQsOCBAQAogCQkJCTU3QkJFQTZEMjJCQzBCRkUwMDI3Mzk5NSAvKiBTT0F1dGhv
cml6YXRpb25Mb2FkUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzZDQTlENzIyQjg2MjE4
MDAzMDE0M0MgLyogU09BdXRob3JpemF0aW9uTlNVUkxFeHRyYXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU3RkQzMTg1MjJCMzUxNjkwMDhEMEU4QiAvKiBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5M0Q2QjdCNTI1NTI2OEQ3MDA1OEREM0EgLyogU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENkI3QjQy
NTUyNjhENTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzRDZCNzcyMjU0QkI1MTkwMDU4REQzQSAvKiBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3ODQyNTRDQ0QwRTAwNThE
RDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzRDZCNzg1MjU0Q0NENDMwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1l
c3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTk5OCw2ICsxMjAxOSw3IEBACiAJ
CQkJNTEzRTQ2MkQxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxl
Z2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGNTQ5QjQxRTMxNzRCNzAwMEU3MjM5IC8qIFdL
U25hcHNob3RDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4NzIyQjM1
MTcwMDA4RDBFOEIgLyogV0tTT0F1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTNENkI3QjkyNTUzNEExNzAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTdBNzhGRjMyMjI0MTkxOTYwMDk2
NDgzRSAvKiBXS1N0b3JhZ2VBY2Nlc3NBbGVydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2
MDYxMjRGRjAyNzAwNjhGMjBBIC8qIFdLU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQw
NzYxQTEyNEZGMDM3MDA2OEYyMEEgLyogV0tTdHJpbmdDRi5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCmluZGV4IGVhMTZi
MmVkNzY2NWIzMmJkMzljYWM0NjMyYjRiOWE1MWE3NWQ2YjEuLjNmMzUzMTk0YTMyYzNlNjc5YmNh
MjlmYmVhODUwMzFjOTIxZTRmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb24uY3BwCkBAIC01OSwxMCArNTksOSBAQCB2b2lkIFdlYlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbjo6cmVnaXN0ZXJDbGllbnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25DbwogICAgIG1fY2xpZW50TWFwLmFkZChjbGllbnQuaWRlbnRpZmllcigpLCBtYWtlV2Vha1B0
cihjbGllbnQpKTsKIH0KIAotdm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0
YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIg
Y2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJv
b2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcykKK3ZvaWQgV2ViU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBt
YXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbikKIHsK
LSAgICBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIGluZm8geyBjbGllbnRJ
ZGVudGlmaWVyLCBsYW5nLCBjb250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRp
dmVzIH07Ci0gICAgc2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlN0YXJ0
KGluZm8pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3Rh
cnQoY2xpZW50SWRlbnRpZmllciwgbGFuZywgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1h
eEFsdGVybmF0aXZlcywgV1RGTW92ZShjbGllbnRPcmlnaW4pKSk7CiB9CiAKIHZvaWQgV2ViU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpzdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKQEAgLTgwLDcgKzc5
LDcgQEAgdm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OmludmFsaWRhdGUoV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWMKICAgICBzZW5kKE1lc3NhZ2VzOjpTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcjo6SW52YWxpZGF0ZShjbGllbnRJZGVudGlmaWVyKSk7CiB9CiAKLXZv
aWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpkaWRSZWNlaXZlVXBkYXRlKGNvbnN0
IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiB1cGRhdGUpCit2b2lkIFdlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVVwZGF0ZShXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZSYmIHVwZGF0ZSkKIHsKICAgICBhdXRvIGNsaWVudElkZW50aWZpZXIg
PSB1cGRhdGUuY2xpZW50SWRlbnRpZmllcigpOwogICAgIGlmICghbV9jbGllbnRNYXAuY29udGFp
bnMoY2xpZW50SWRlbnRpZmllcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uLmgKaW5kZXggMjhkYmQxOTdjYjNmNzk4ZmM3NjMxOTllYmIxMmRlMTNhZWQ3NTFi
MS4uNDQzYjA0ZjFjY2FhYjBhMGU2YWE1MzgzMWU5ODVkMTBhNmE1MzMyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaApAQCAtNDMsMTEgKzQzLDExIEBA
IGNsYXNzIFdlYlBhZ2U7CiAKIHVzaW5nIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbklkZW50
aWZpZXIgPSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcjsKIAotY2xhc3MgV2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VT
ZW5kZXIgeworY2xhc3MgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uIGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiwgcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uPiBjcmVhdGUoU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRf
dCBtYXhBbHRlcm5hdGl2ZXMpIGZpbmFsOworICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5n
LCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVy
bmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYpIGZpbmFsOwogICAgIHZvaWQgc3RvcChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5h
bDsKICAgICB2b2lkIGFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIpIGZpbmFsOwogCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAg
fldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbigpOwogCiAgICAgdm9pZCByZWdpc3RlckNs
aWVudChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQmKSBmaW5hbDsK
LSAgICB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGUmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGUmJikgZmluYWw7CiAgICAgdm9pZCBpbnZhbGlkYXRlKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogCiAgICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNjkxZGVhYmVjNWYyZDA0NGUzODJiY2FhNGZlNjAzNWJiZmUw
OWQ1YS4uMDE3MzU4MGE2ZTUxZDUyZDczZmVjMTYyMTc5NjQ1ZTUwMmMwYmY0OCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBA
CisyMDIwLTExLTEwICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBiYXNpYyBwZXJtaXNzaW9uIGNoZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc2Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTIyMjYzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0Ogor
ICAgICAgICAqIE1vYmlsZU1pbmlCcm93c2VyL01vYmlsZU1pbmlCcm93c2VyL0luZm8ucGxpc3Q6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TcGVl
Y2hSZWNvZ25pdGlvbi5tbTogQWRkZWQuCisgICAgICAgICgtW1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvblVJRGVsZWdhdGUgX3dlYlZpZXc6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkZvck9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1NwZWVjaFJlY29n
bml0aW9uTWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3Jp
cHRNZXNzYWdlOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9zcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBl
cm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAo
V1RSOjpUZXN0UnVubmVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV1RSOjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNvbXBsZXRlU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2hlY2spOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0SXNT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyk6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAyMC0xMS0x
MCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYmtpdCBpbmNv
cnJlY3RseSBzZXR0aW5nIHZpc2liaWxpdHlTdGF0ZSB0byAicHJlcmVuZGVyIiB3aGVuIG9wZW5p
bmcgbGluayBpbiBuZXcgdGFiCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5m
by5wbGlzdCBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0CmluZGV4IDRlMmIxZjQ4
MTlhZDUxMDNlNGNmMTcwOWI3YzUzYTY2ZThiMzk1ZTUuLjMzYTNjYTFiZTczNTA4ZTFmZmNiMDI5
NTdjODY0ZTg1OTJkYWFhNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9JbmZv
LnBsaXN0CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0CkBAIC01Miw5ICs1
MiwxMSBAQAogCQkJPHN0cmluZz5FZGl0b3I8L3N0cmluZz4KIAkJPC9kaWN0PgogCTwvYXJyYXk+
Ci0gICAgPGtleT5OU0NhbWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJl
Y29yZGluZyB2aWRlbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KLSAgICA8a2V5Pk5T
TWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJlY29yZGluZyBh
dWRpbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TQ2FtZXJhVXNhZ2VE
ZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVjb3JkaW5nIHZpZGVvIG9uIGJlaGFsZiBvZiB3
ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+TlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlvbjwva2V5
PgorCTxzdHJpbmc+UmVjb3JkaW5nIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5n
PgorCTxrZXk+TlNTcGVlY2hSZWNvZ25pdGlvblVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3Ry
aW5nPlJlY29nbml6aW5nIGNhcHR1cmVkIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3Ry
aW5nPgogPC9kaWN0PgogPC9wbGlzdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL01vYmlsZU1pbmlCcm93
c2VyL01vYmlsZU1pbmlCcm93c2VyL0luZm8ucGxpc3QgYi9Ub29scy9Nb2JpbGVNaW5pQnJvd3Nl
ci9Nb2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBsaXN0CmluZGV4IDJkMWJjNTgyZmJlNzY1Y2ZkYzQx
MDVlZmU5ZWNjMWQ4MzIwY2M5NTkuLjUzODdiMzc0OWE0NzRmZTBiM2Q5YzYwOTVjYjI4ODE3Yjhm
OTIzMGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01vYmlsZU1pbmlCcm93c2VyL01vYmlsZU1pbmlCcm93
c2VyL0luZm8ucGxpc3QKKysrIGIvVG9vbHMvTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJy
b3dzZXIvSW5mby5wbGlzdApAQCAtNTQsOSArNTQsMTEgQEAKIAkJPGtleT5OU0FsbG93c0FyYml0
cmFyeUxvYWRzSW5XZWJDb250ZW50PC9rZXk+CiAJCTx0cnVlLz4KIAk8L2RpY3Q+Ci0gICAgPGtl
eT5OU0NhbWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJlY29yZGluZyB2
aWRlbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KLSAgICA8a2V5Pk5TTWljcm9waG9u
ZVVzYWdlRGVzY3JpcHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBi
ZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlv
bjwva2V5PgorCTxzdHJpbmc+UmVjb3JkaW5nIHZpZGVvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwv
c3RyaW5nPgorCTxrZXk+TlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJp
bmc+UmVjb3JkaW5nIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+
TlNTcGVlY2hSZWNvZ25pdGlvblVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29n
bml6aW5nIGNhcHR1cmVkIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgogPC9k
aWN0PgogPC9wbGlzdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTI4ZjVmZDVlMWQ0YThh
MWJjYWEzNjllYzA3MjM2M2NjZWUxZWExZC4uZDA4MTZiOTBjMWYzYmEwNzM2NjI0OGI0ZTRjMTlh
MzMzYTc3YjNjYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgwMCw2ICs4MDAsOCBAQAog
CQk5MzI5QUEyOTFERTNGODFFMDAzQUJEMDcgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyOUFBMjgxREUzRjgx
RTAwM0FCRDA3IC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJOTMyQUU1M0QxRDM3
MTA0NzAwNURGRkFGIC8qIGZvY3VzLWlucHV0cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNTc1QzU1MUQzMDM2NkUwMDBENjA0RCAv
KiBmb2N1cy1pbnB1dHMuaHRtbCAqLzsgfTsKIAkJOTMzRDYzMUQxRkNCNzYyMDAwMzJFQ0Q2IC8q
IEhhc2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzNENjMxQjFGQ0I3NjE4MDAzMkVDRDYgLyogSGFzaGVyLmNwcCAqLzsgfTsKKwkJOTM0MjU4
OUMyNTVCNjA5QjAwNTlFRUREIC8qIFNwZWVjaFJlY29nbml0aW9uLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0MjU4OUIyNTVCNjA5QTAwNTlFRURE
IC8qIFNwZWVjaFJlY29nbml0aW9uLm1tICovOyB9OworCQk5MzQyNTg5RTI1NUI2QTEyMDA1OUVF
REQgLyogc3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0
MjU4OUQyNTVCNjZBMDAwNTlFRUREIC8qIHNwZWVjaHJlY29nbml0aW9uLXVzZXItcGVybWlzc2lv
bi1wZXJzaXN0ZW5jZS5odG1sICovOyB9OwogCQk5MzU3ODZDQzIwRjZBMjcwMDAwMENERkMgLyog
SW5kZXhlZERCLnNxbGl0ZTMtd2FsIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEZBNUM1MjBGNjlGRUQwMDQwREMxQiAvKiBJbmRleGVkREIu
c3FsaXRlMy13YWwgKi87IH07CiAJCTkzNTc4NkNEMjBGNkEyOTEwMDAwQ0RGQyAvKiBJbmRleGVk
REIuc3FsaXRlMyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzRGQTVDNzIwRjY5RkVFMDA0MERDMUIgLyogSW5kZXhlZERCLnNxbGl0ZTMgKi87
IH07CiAJCTkzNTc4NkNFMjBGNkEyQTEwMDAwQ0RGQyAvKiBJbmRleGVkREIuc3FsaXRlMy1zaG0g
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0
RkE1QzYyMEY2OUZFRDAwNDBEQzFCIC8qIEluZGV4ZWREQi5zcWxpdGUzLXNobSAqLzsgfTsKQEAg
LTE2MTAsNiArMTYxMiw3IEBACiAJCQkJRjRGNDA1QkQxRDRDMEQxQzAwN0E5NzA3IC8qIHNraW5u
eS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJQzAxQTIzRjIxMjY2MTU2NzAwQzlFRDU1IC8qIHNwYWNlYmFyLXNjcm9sbGluZy5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0Q0ZDRERBMjQ5RkM5RTQwMDUyNzQ4MiAvKiBT
cGFjZU9ubHkub3RmIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTkzNDI1ODlFMjU1QjZBMTIw
MDU5RUVERCAvKiBzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2Uu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlFMTk0RTFCRDE3N0U1M0M3MDA5QzRENEUg
LyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJNTE1QkUxNkYxRDQyOEJCMTAwREQ3QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxl
dGVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJOUJENkQzQTIxRjdCMjE4MzAwQkQ0
OTYyIC8qIHN1bnNldC1pbi1jdXBlcnRpbm8tMTAwcHgudGlmZiBpbiBDb3B5IFJlc291cmNlcyAq
LywKQEAgLTI0MDEsNiArMjQwNCw4IEBACiAJCTkzMjlBQTI4MURFM0Y4MUUwMDNBQkQwNyAvKiBU
ZXh0QnJlYWtJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUZXh0QnJlYWtJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
MzE0MDdCMTdCNDQxOTAwMEYwODNCMSAvKiBEaWROb3RIYW5kbGVLZXlEb3duLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpZE5vdEhhbmRsZUtleURvd24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzNENjMxQjFGQ0I3NjE4MDAzMkVDRDYgLyog
SGFzaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhhc2hlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNDI1ODlCMjU1QjYwOUEwMDU5RUVE
RCAvKiBTcGVlY2hSZWNvZ25pdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5MzQyNTg5RDI1NUI2NkEwMDA1OUVFREQgLyogc3BlZWNocmVjb2duaXRpb24tdXNlci1w
ZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
c3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzRGQTVDNTIwRjY5RkVEMDA0MERDMUIgLyogSW5k
ZXhlZERCLnNxbGl0ZTMtd2FsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJJbmRleGVkREIuc3FsaXRlMy13YWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzRGQTVDNjIwRjY5RkVEMDA0MERDMUIgLyogSW5kZXhl
ZERCLnNxbGl0ZTMtc2htICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gZmlsZTsgcGF0aCA9ICJJbmRleGVkREIuc3FsaXRlMy1zaG0iOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5MzRGQTVDNzIwRjY5RkVFMDA0MERDMUIgLyogSW5kZXhlZERC
LnNxbGl0ZTMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBmaWxlOyBwYXRoID0gSW5kZXhlZERCLnNxbGl0ZTM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0zMzgxLDYgKzMzODYsNyBAQAogCQkJCTM3QkNBNjFCMUI1OTZCQTkwMDIwMTJDQSAv
KiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzSW5OZXdXaW5kb3dBY3Rpb25zLm1tICovLAogCQkJCTJE
OUE1M0FFMUIzMUZBOEQwMDc0RDVBQSAvKiBTaHJpbmtUb0ZpdC5tbSAqLywKIAkJCQkyREZGN0I2
QzFEQTQ4N0FGMDA4MTQ2MTQgLyogU25hcHNob3RTdG9yZS5tbSAqLywKKwkJCQk5MzQyNTg5QjI1
NUI2MDlBMDA1OUVFREQgLyogU3BlZWNoUmVjb2duaXRpb24ubW0gKi8sCiAJCQkJQ0RDMDkzMkQy
MUM5OTM0NDAwMzBDNEIwIC8qIFN0b3BTdXNwZW5kUmVzdW1lQWxsTWVkaWEubW0gKi8sCiAJCQkJ
NDE0QUQ2ODUyMjg1RDFCMDAwNzc3RjJEIC8qIFN0b3JhZ2VRdW90YS5tbSAqLywKIAkJCQk1MTVC
RTE3MDFENDI4QkQxMDBERDdDNjggLyogU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbSAqLywKQEAgLTM5
MDAsNiArMzkwNiw3IEBACiAJCQkJNDY1NkE3NTcyMEY5MDU0RjAwMDJFMjFGIC8qIFNpbXBsZVNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLywKIAkJCQlGNEY0MDVCQjFENEMw
Q0Y4MDA3QTk3MDcgLyogc2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAq
LywKIAkJCQlGNENGQ0REODI0OUZDOUQ5MDA1Mjc0ODIgLyogU3BhY2VPbmx5Lm90ZiAqLywKKwkJ
CQk5MzQyNTg5RDI1NUI2NkEwMDA1OUVFREQgLyogc3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJt
aXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwgKi8sCiAJCQkJNTE1QkUxNkUxRDQyODhGRjAwREQ3QzY4
IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0bWwgKi8sCiAJCQkJOUJENkQzQTExRjdCMjAyMTAw
QkQ0OTYyIC8qIHN1bnNldC1pbi1jdXBlcnRpbm8tMTAwcHgudGlmZiAqLywKIAkJCQk5QkQ2RDNB
MDFGN0IyMDIwMDBCRDQ5NjIgLyogc3Vuc2V0LWluLWN1cGVydGluby0yMDBweC5wbmcgKi8sCkBA
IC01NDUwLDYgKzU0NTcsNyBAQAogCQkJCTUxMEE5MUY4MjREMzYyMjEwMEJGRDg5QyAvKiBTb255
RHVhbFNob2NrMy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRUIxMjY0MjRDQTZCNjYwMDBDQjAz
MCAvKiBTb255RHVhbFNob2NrNC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjE1MUE0MTFB
RTYwMDQ0N0M0QyAvKiBTcGFjZWJhclNjcm9sbGluZy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5
MzQyNTg5QzI1NUI2MDlCMDA1OUVFREQgLyogU3BlZWNoUmVjb2duaXRpb24ubW0gaW4gU291cmNl
cyAqLywKIAkJCQk1N0Y0QUFBMDIwOEZBRUYwMDBBNjhFOUUgLyogU1NMS2V5R2VuZXJhdG9yLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJODNCQzVBQzAyMEU2QzBERjAwRjU4NzlGIC8qIFN0YXJ0TG9h
ZEluRGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRUIxMjY1
MjRDQTZCNjYwMDBDQjAzMCAvKiBTdGVlbFNlcmllc05pbWJ1cy5tbSBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TcGVlY2hS
ZWNvZ25pdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3Bl
ZWNoUmVjb2duaXRpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMzYWQwMmI1NDE1MmMxMDU2ZTY0OGM2YWEy
YmY2MTMxNGJhMTQwNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU3BlZWNoUmVjb2duaXRpb24ubW0KQEAgLTAsMCArMSwxMDYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZl
cmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdD
b25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK3N0YXRpYyBib29s
IHNob3VsZEdyYW50UGVybWlzc2lvblJlcXVlc3QgPSB0cnVlOworc3RhdGljIGJvb2wgcGVybWlz
c2lvblJlcXVlc3RlZCA9IGZhbHNlOworc3RhdGljIGJvb2wgcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
Oworc3RhdGljIFJldGFpblB0cjxXS1NjcmlwdE1lc3NhZ2U+IGxhc3RTY3JpcHRNZXNzYWdlOwor
CitAaW50ZXJmYWNlIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblVJRGVsZWdhdGUgOiBOU09i
amVjdDxXS1VJRGVsZWdhdGVQcml2YXRlPgorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOihXS1Nl
Y3VyaXR5T3JpZ2luICopb3JpZ2luIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVj
aXNpb25IYW5kbGVyOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uVUlEZWxlZ2F0ZQorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5
T3JpZ2luICopb3JpZ2luIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25I
YW5kbGVyCit7CisgICAgcGVybWlzc2lvblJlcXVlc3RlZCA9IHRydWU7CisgICAgZGVjaXNpb25I
YW5kbGVyKHNob3VsZEdyYW50UGVybWlzc2lvblJlcXVlc3QpOworfQorQGVuZAorCitAaW50ZXJm
YWNlIFNwZWVjaFJlY29nbml0aW9uTWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRN
ZXNzYWdlSGFuZGxlcj4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFNwZWVjaFJlY29nbml0aW9u
TWVzc2FnZUhhbmRsZXIKKy0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250
ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVz
c2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQoreworICAgIHJlY2VpdmVkU2NyaXB0TWVz
c2FnZSA9IHRydWU7CisgICAgbGFzdFNjcmlwdE1lc3NhZ2UgPSBtZXNzYWdlOworfQorQGVuZAor
CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV2ViS2l0MiwgU3BlZWNoUmVjb2du
aXRpb25Vc2VyUGVybWlzc2lvblBlcnNpc3RlbmNlKQoreworICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
YXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1NwZWVjaFJlY29nbml0aW9uTWVzc2FnZUhhbmRsZXIg
YWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVy
XSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxl
ciJdOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc107
CisgICAgcHJlZmVyZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBZRVM7CisgICAg
cHJlZmVyZW5jZXMuX3NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCA9IFlFUzsKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRl
OmRlbGVnYXRlLmdldCgpXTsKKworICAgIHNob3VsZEdyYW50UGVybWlzc2lvblJlcXVlc3QgPSBm
YWxzZTsKKyAgICBwZXJtaXNzaW9uUmVxdWVzdGVkID0gZmFsc2U7CisgICAgcmVjZWl2ZWRTY3Jp
cHRNZXNzYWdlID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzcGVl
Y2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UiXTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgRVhQRUNUX1dL
X1NUUkVRKEAiRXJyb3I6IG5vdC1hbGxvd2VkIC0gUGVybWlzc2lvbiBjaGVjayBmYWlsZWQiLCBb
bGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAgIEVYUEVDVF9UUlVFKHBlcm1pc3Npb25SZXF1
ZXN0ZWQpOworCisgICAgLy8gUGVybWlzc2lvbiByZXN1bHQgaXMgcmVtZW1iZXJlZC4KKyAgICBw
ZXJtaXNzaW9uUmVxdWVzdGVkID0gZmFsc2U7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0g
ZmFsc2U7CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInN0YXJ0
KCkiXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2Fn
ZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiRXJyb3I6IG5vdC1hbGxvd2VkIC0gUGVybWlzc2lv
biBjaGVjayBmYWlsZWQiLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAgIEVYUEVDVF9G
QUxTRShwZXJtaXNzaW9uUmVxdWVzdGVkKTsKKworICAgIC8vIFBlcm1pc3Npb24gcmVzdWx0IHdp
bGwgYmUgY2xlYXJlZCBhZnRlciBkb2N1bWVudCBjaGFuZ2VzLgorICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiYWJvdXQ6YmxhbmsiXV1dOworCisgICAgc2hvdWxkR3JhbnRQZXJtaXNz
aW9uUmVxdWVzdCA9IHRydWU7CisgICAgcGVybWlzc2lvblJlcXVlc3RlZCA9IGZhbHNlOworICAg
IHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFn
ZU5hbWVkOkAic3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlIl07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZXJtaXNzaW9uUmVxdWVzdGVkKTsKKyAg
ICAvLyBTaG91bGQgbm90IGdldCBlcnJvciBtZXNzYWdlIGFzIHBlcm1pc3Npb24gaXMgZ3JhbnRl
ZC4KKyAgICBFWFBFQ1RfRkFMU0UocmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9zcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lz
dGVuY2UuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evc3BlZWNo
cmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjRjYTZlZDBjODRmNGJjZTdlODZhZDEzY2RmN2YzMDQyMGZiZmNhMwotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evc3BlZWNocmVjb2duaXRp
b24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPGJv
ZHkgb25sb2FkPSJzdGFydCgpIj4KKzxzY3JpcHQ+CisKK3ZhciBzcGVlY2hSZWNvZ25pdGlvbiA9
IG51bGw7CitmdW5jdGlvbiBzdGFydCgpCit7CisgICAgc3RvcCgpOworCisgICAgc3BlZWNoUmVj
b2duaXRpb24gPSBuZXcgU3BlZWNoUmVjb2duaXRpb24oKTsKKyAgICBzcGVlY2hSZWNvZ25pdGlv
bi5vbmVycm9yID0gKGV2ZW50KSA9PiB7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhh
bmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJFcnJvcjogIiArIGV2ZW50LmVycm9yICsg
IiAtICIgKyAgZXZlbnQubWVzc2FnZSk7CisgICAgfQorICAgIHNwZWVjaFJlY29nbml0aW9uLm9u
ZW5kID0gKGV2ZW50KSA9PiB7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
LnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJFbmQiKTsKKyAgICB9CisgICAgc3BlZWNoUmVjb2du
aXRpb24uc3RhcnQoKTsKK30KKworZnVuY3Rpb24gc3RvcCgpCit7CisgICAgaWYgKCFzcGVlY2hS
ZWNvZ25pdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgc3BlZWNoUmVjb2duaXRpb24uc3Rv
cCgpOworICAgIHNwZWVjaFJlY29nbml0aW9uID0gbnVsbDsKK30KKworPC9zY3JpcHQ+Cis8L2Jv
ZHk+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCBmZTg1MzlmMzUxOGZlNjU3MGQ3NDM1
OGRhNzcwMDRhZTA5YmY5Y2RkLi5kMGZmODE2NWZiMTk2MTkyNmNiNmI1ZjVlODMxMzU5MjFmNTIz
YTVkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTQwMyw0ICs0MDMsNyBAQCBpbnRl
cmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdW5kZWZpbmVkIHNldFByaXZhdGVDbGlja01lYXN1cmVt
ZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbGVhbiB2YWx1ZSk7CiAgICAgdW5kZWZpbmVk
IHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29udmVyc2lvblVSTEZvclRlc3RpbmcoRE9NU3Ry
aW5nIHVybCk7CiAgICAgdW5kZWZpbmVkIG1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4
cGlyZWRGb3JUZXN0aW5nKCk7CisKKyAgICAvLyBTcGVlY2hSZWNvZ25pdGlvbgorICAgIHVuZGVm
aW5lZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbGVhbiB2YWx1
ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKaW5kZXggMDc3ZTIyYjM2Njc1NjAyNDE0NjgwNzY1NzJhNTYxMzc4MGFi
MjY3OC4uNWIxOTU0MmQwNjliODBlZmNmZDcyZjRkOWIwMzExODQzYTBjN2RhNCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
CkBAIC0yMDY5LDYgKzIwNjksMTEgQEAgdm9pZCBUZXN0UnVubmVyOjpkaWRTZXRBcHBCb3VuZERv
bWFpbnNDYWxsYmFjaygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhEaWRTZXRBcHBCb3Vu
ZERvbWFpbnNDYWxsYmFja0lEKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRJc1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCBncmFudGVkKQoreworICAgIHBvc3RTeW5j
aHJvbm91c1BhZ2VNZXNzYWdlKCJzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50
ZWQiLCBncmFudGVkKTsKK30KKwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAK
IH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAxNGU1M2M1MTNhMjkyYjFhMDAzY2VmZDIzNTM3
YjYwOTQ4OGE3YWRhLi5iMzAyYzhlMzIxMGM0NmNjYTI2OGY1ZmRjZjU5Mzk4Y2M3M2QyOTY5IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaApAQCAtNTE1LDYgKzUxNSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByaXZhdGVDbGlj
a01lYXN1cmVtZW50Q29udmVyc2lvblVSTEZvclRlc3RpbmcoSlNTdHJpbmdSZWYpOwogICAgIHZv
aWQgbWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKIAor
ICAgIHZvaWQgc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wpOwor
CiBwcml2YXRlOgogICAgIFRlc3RSdW5uZXIoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAppbmRleCAxNmFkMTdlMjRiYTNlYjFkZTc3Mzc5ZWZiODUyNGI4NjZl
M2M3YjY3Li43YmE2NzJhYzlmOTI1ZjYzMjVhYTA3ZmE2ZjE2MWE1MDIzNWZiYjhjIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNjIsNiArNjIsNyBAQAog
I2luY2x1ZGUgPFdlYktpdC9XS1Byb3RlY3Rpb25TcGFjZS5oPgogI2luY2x1ZGUgPFdlYktpdC9X
S1JldGFpblB0ci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1NlY3VyaXR5T3JpZ2luUmVmLmg+Cisj
aW5jbHVkZSA8V2ViS2l0L1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaD4K
ICNpbmNsdWRlIDxXZWJLaXQvV0tUZXh0Q2hlY2tlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1VS
TC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5oPgpAQCAt
Mjk3LDYgKzI5OCwyMSBAQCBzdGF0aWMgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKCkK
IHsKIH0KIAorc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgY2FsbGJhY2spCit7CisgICAgVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLmNvbXBsZXRlU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hl
Y2soY2FsbGJhY2spOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpjb21wbGV0ZVNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNoZWNrKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2tSZWYgY2FsbGJhY2spCit7CisgICAgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFja0NvbXBsZXRlKGNhbGxiYWNrLCBtX2lzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
R3JhbnRlZCk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldElzU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uR3JhbnRlZChib29sIGdyYW50ZWQpCit7CisgICAgbV9pc1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkdyYW50ZWQgPSBncmFudGVkOworfQorCiBXS1BhZ2VSZWYgVGVzdENv
bnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZShXS1BhZ2VSZWYsIFdLUGFnZUNvbmZpZ3VyYXRpb25S
ZWYgY29uZmlndXJhdGlvbiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmlnYXRpb25BY3Rpb24s
IFdLV2luZG93RmVhdHVyZXNSZWYgd2luZG93RmVhdHVyZXMsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pCiB7CiAgICAgUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3ID0gc3RhdGljX2Nhc3Q8UGxh
dGZvcm1XZWJWaWV3Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwpAQCAtNjUwLDgg
KzY2Niw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhj
b25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKICAgICBXS0hUVFBDb29raWVTdG9yZURlbGV0ZUFs
bENvb2tpZXMoV0tXZWJzaXRlRGF0YVN0b3JlR2V0SFRUUENvb2tpZVN0b3JlKHdlYnNpdGVEYXRh
U3RvcmUoKSksIG51bGxwdHIsIG51bGxwdHIpOwogCiAgICAgcGxhdGZvcm1DcmVhdGVXZWJWaWV3
KGNvbmZpZ3VyYXRpb24uZ2V0KCksIG9wdGlvbnMpOwotICAgIFdLUGFnZVVJQ2xpZW50VjE0IHBh
Z2VVSUNsaWVudCA9IHsKLSAgICAgICAgeyAxNCwgbV9tYWluV2ViVmlldy5nZXQoKSB9LAorICAg
IFdLUGFnZVVJQ2xpZW50VjE1IHBhZ2VVSUNsaWVudCA9IHsKKyAgICAgICAgeyAxNSwgbV9tYWlu
V2ViVmlldy5nZXQoKSB9LAogICAgICAgICAwLCAvLyBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjAKICAgICAgICAgMCwgLy8gc2hvd1BhZ2UKICAgICAgICAgMCwgLy8gY2xvc2UK
QEAgLTcyNCw3ICs3NDAsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0
aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgICAgIDAsIC8vIGRpZFJl
c2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZQogICAgICAgICAwLCAvLyBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0KICAgICAgICAgc2hvdWxkQWxsb3dEZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2VzcywKLSAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5l
bAorICAgICAgICBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsLAorICAgICAgICBkZWNpZGVQb2xp
Y3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0CiAgICAgfTsKICAgICBXS1Bh
Z2VTZXRQYWdlVUlDbGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAmcGFnZVVJQ2xpZW50LmJh
c2UpOwogCkBAIC0xMDU0LDYgKzEwNzEsOCBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0
YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAg
IG1fc2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50ID0gMDsKICAgICBtX3No
b3VsZERpc21pc3NKYXZhU2NyaXB0QWxlcnRzQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKIAorICAg
IHNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCh0cnVlKTsKKwogICAgIGF1
dG8gbG9hZEFib3V0QmxhbmsgPSBbdGhpc10gewogICAgICAgICBtX2RvbmVSZXNldHRpbmcgPSBm
YWxzZTsKICAgICAgICAgV0tQYWdlTG9hZFVSTChtX21haW5XZWJWaWV3LT5wYWdlKCksIGJsYW5r
VVJMKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDA5MTVl
ZDhjZmI1ZWM0YzU3OGUyODhhOTk4OTVhNDhiMDllYzQzZGEuLmI1N2I4ZjdhMDU5NTIzZWNmODc3
YWIwMTk3MjBkNGRiZTU4ZmNiNWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmgKQEAgLTM1MSw2ICszNTEsOSBAQCBwdWJsaWM6CiAKICAgICBXS1VSTFJlZiBjdXJyZW50
VGVzdFVSTCgpIGNvbnN0OwogCisgICAgdm9pZCBjb21wbGV0ZVNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNoZWNrKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYpOwor
ICAgIHZvaWQgc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wpOwor
CiBwcml2YXRlOgogICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGdlbmVy
YXRlUGFnZUNvbmZpZ3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnMmKTsKICAgICBXS1JldGFpblB0
cjxXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0aW9u
KGNvbnN0IFRlc3RPcHRpb25zJikgY29uc3Q7CkBAIC02NDAsNiArNjQzLDggQEAgcHJpdmF0ZToK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIG1faGFzU2V0QXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyIHsgZmFsc2UgfTsKICNlbmRpZgorCisgICAgYm9vbCBtX2lzU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uR3JhbnRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
VFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggZjI0N2Zi
NTZhMDU2ODNkMjhmZTM4ZjQ1OTZkMzNmM2EwODQ3ZWIxYy4uMjliNjUyYzYwMzllZThjNTMwOWZm
MGRlYWFlZTgwZjU4NDUzOTAyYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHAKQEAgLTEzNDUsNiArMTM0NSwxMSBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRl
c3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgInNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uR3JhbnRlZCIpKSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRJ
c1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbGVhblZhbHVlKG1lc3NhZ2VC
b2R5KSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc5YjgyNzcxZjEyZmI3
ZWEwNTQzMWNkZWQ1ZDgwYzllYmQ3YjUyZmEuLjc5YWJmYmExNDc5NWZjNjcyNzkzNWUzMDYwMzY0
ZWQzZjU3YTFmOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0xMS0xMCAgU2lodWkgTGl1
ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlz
c2lvbiBjaGVjayBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQ3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzEyMjI2Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGZhc3Qvc3BlZWNocmVjb2duaXRpb24v
cGVybWlzc2lvbi1lcnJvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc3Bl
ZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0xMS0xMCAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYmtpdCBpbmNvcnJlY3RseSBzZXR0aW5n
IHZpc2liaWxpdHlTdGF0ZSB0byAicHJlcmVuZGVyIiB3aGVuIG9wZW5pbmcgbGluayBpbiBuZXcg
dGFiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlYjQ0MmUxZmY0ZGVlZDQzMGI2YTYxN2NmNzk4ZDI3
MTk2MDliNTAxLi44MmQ3YjFiNDJiZWM0MDBlMjM3ZTg3ZmNmNzhjOTZlM2QzMWY4ZWY2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTE3Nyw2ICsxNzcsNyBAQCBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vb3BlbmRhdGFiYXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2guaHRtbCBbIFNraXAgXQogc3RvcmFn
ZS9pbmRleGVkZGIvSURCT2JqZWN0LWxlYWsuaHRtbCBbIFNraXAgXQogZmFzdC9mb3Jtcy9jYWxs
LXRleHQtZGlkLWNoYW5nZS1pbi10ZXh0LWZpZWxkLXdoZW4tdHlwaW5nLmh0bWwgWyBTa2lwIF0K
IGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS8gWyBTa2lwIF0KK2Zhc3Qvc3BlZWNo
cmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sIFsgU2tpcCBdCiAKICMgT25seSBwYXJ0
aWFsIHN1cHBvcnQgb24gQ29jb2EgcGxhdGZvcm1zLgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zcGVlY2gtYXBpLyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWUzZTc5NGRhMGE5YzhjODI4NWQyYmEzOTZmNDllNDVjYThjMTc1Mwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVy
bWlzc2lvbi1lcnJvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVmVyaWZ5IHRoYXQg
ZXJyb3IgZXZlbnQgaXMgZmlyZWQgd2hlbiBwZXJtaXNzaW9uIGlzIGRlbmllZC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgcmVjb2duaXRpb24gPSBuZXcgU3BlZWNoUmVj
b2duaXRpb24oKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgcmVjb2duaXRpb24uc3Rh
cnQoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgZXZlbnQuZXJyb3IgaXMgIm5vdC1h
bGxvd2VkIgorUEFTUyBldmVudC5tZXNzYWdlIGlzICJQZXJtaXNzaW9uIGNoZWNrIGZhaWxlZCIK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJy
b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1l
cnJvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyZDAzMzMwZTIwMzkwNDEwNjg3ZDU3ZTZjMTY3OWZhZjY4
Y2I4NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0
aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCBlcnJvciBl
dmVudCBpcyBmaXJlZCB3aGVuIHBlcm1pc3Npb24gaXMgZGVuaWVkLiIpOworCitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICB0ZXN0UnVubmVy
LnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChmYWxzZSk7Cit9CisKK3No
b3VsZE5vdFRocm93KCJyZWNvZ25pdGlvbiA9IG5ldyBTcGVlY2hSZWNvZ25pdGlvbigpIik7Citz
aG91bGROb3RUaHJvdygicmVjb2duaXRpb24uc3RhcnQoKSIpOworcmVjb2duaXRpb24ub25lcnJv
ciA9IChldmVudCkgPT4geworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQuZXJyb3Ii
LCAibm90LWFsbG93ZWQiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50Lm1lc3Nh
Z2UiLCAiUGVybWlzc2lvbiBjaGVjayBmYWlsZWQiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDE0OWFm
NzhlMTVlMGExMjBmNzcyNzRlMjUxZDliMzk4NGNmODc1NzUuLjkxMjIwYWYxMzJlN2EyMjFhNDIy
YTUyZmRjZWI3YjZjNDFlM2Y5NmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dr
Mi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhw
ZWN0YXRpb25zCkBAIC04MDMsNCArODAzLDUgQEAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9jbG9zZWQtcG9ydC1kZWxheS5odG1sIFsgUGFzcyBdCiAKICMgV2ViS2l0MiBvbmx5Lgog
anMvdGhyb3ctbGFyZ2Utc3RyaW5nLW9vbS5odG1sIFsgUGFzcyBdCitmYXN0L3NwZWVjaHJlY29n
bml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbCBbIFBhc3MgXQogZnVsbHNjcmVlbi9mdWxsLXNj
cmVlbi1lbnRlci13aGlsZS1leGl0aW5nLmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413782</attachid>
            <date>2020-11-10 22:26:41 -0800</date>
            <delta_ts>2020-11-11 10:40:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201110222639.patch</filename>
            <type>text/plain</type>
            <size>135798</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMzMWNmMGQxZjk5MjQ1ZDYyZWUwNTY1
MzRkZjc4ZWUxYjU2N2I1N2YuLjMyNWZhMWQ4MTYyZGU4ZTk2MGI1NGZlOWFkMTgxMDNjNGJjYzcy
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMTEtMTAgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1Bs
YXRmb3JtSGF2ZS5oOgorCiAyMDIwLTExLTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2OTY2MC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBkYzMwZjNlZjkwOWQ4MGE4YTU5YzczYzY0NTAwNmUwOWJkYTEyMjUwLi44NWNi
MDY0M2RlNDAzMDY2MTRmMzIzMzIwOThmMWQyYjI1MGI2ZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjggQEAKKzIwMjAtMTEtMTAgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29n
bml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTg0NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb246OnN0
YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3Q6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3Q6OmNsaWVudE9yaWdpbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0SW5mbzo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6ZXJyb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGU6OnJlc3VsdCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaDoKKyAgICAgICAgKiBwYWdlL0R1bW15U3BlZWNo
UmVjb2duaXRpb25Qcm92aWRlci5oOgorCiAyMDIwLTExLTEwICBDb21taXQgUXVldWUgIDxjb21t
aXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2
OTY2MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggY2QzOWMxNjk4NDU2YjhhZDhkMTYyZGUyNDkwMDQwNTdlNjVmZDZl
Mi4uOTM5NjBiZmU5YjFkZTNmMzc4MGFkNWM3NTA3OTIzYjNkZmE3YWY5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMDQgQEAKKzIwMjAtMTEtMTAgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVj
aFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTg0NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLCB3aGljaCBjaGVja3MgYW5kIHJlcXVlc3RzIHNw
ZWVjaCByZWNvZ25pdGlvbiBwZXJtaXNzaW9ucyBiZWZvcmUgCisgICAgICAgIHdlIGFjdHVhbGx5
IHN0YXJ0IGNhcHR1cmluZyBhdWRpbyBhbmQgcGVyZm9ybSByZWNvZ25pdGlvbi4gU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciBpcyBwZXItcGFnZSwgbGlrZQorICAgICAgICBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlci4gVGhlIGNoZWNrcyBpbmNsdWRlOgorICAgICAgICAxLiBTYW5k
Ym94IHJlcXVpcmVtZW50IGZvciBtaWNyb3Bob25lCisgICAgICAgIDIuIFRDQyBjaGVjayBmb3Ig
bWljcm9waG9uZQorICAgICAgICAzLiBUQ0MgY2hlY2sgZm9yIFNGU3BlZWNoUmVjb2duaXplcgor
ICAgICAgICA0LiBVc2VyIHBlcm1pc3Npb24gb24gc3BlZWNoIHJlY29nbml0aW9uIGZvciBvcmln
aW4KKworICAgICAgICBBZGQgYSBkZWxlZ2F0ZSBmdW5jdGlvbiBmb3IgcmVxdWVzdGluZyB1c2Vy
IHBlcm1pc3Npb24uIEJ5IGRlZmF1bHQsIHVzZXIgcGVybWlzc2lvbiBpcyBub3QgZ3JhbnRlZC4K
KworICAgICAgICBUZXN0OiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3Iu
aHRtbAorICAgICAgICBBUEkgdGVzdDogV2ViS2l0Mi5TcGVlY2hSZWNvZ25pdGlvblVzZXJQZXJt
aXNzaW9uUGVyc2lzdGVuY2UKKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
U2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OlVJQ2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcDog
QWRkZWQuCisgICAgICAgIChXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrR2V0
VHlwZUlEKToKKyAgICAgICAgKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tD
b21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9zcGVlY2hSZWNv
Z25pdGlvbkVuYWJsZWRdKToKKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBfc2V0U3BlZWNoUmVj
b2duaXRpb25FbmFibGVkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVm
ZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxl
Z2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBl
KToKKyAgICAgICAgKFdlYktpdDo6Y2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yVHlwZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZUF1ZGlvKToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRv
Q2FwdHVyZVZpZGVvKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OnJlcXVlc3RTeXN0ZW1WYWxpZGF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6cmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZSk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmguCisgICAgICAg
ICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6On5TcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6cmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0TmV4dFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydFByb2Nlc3NpbmdSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6
Y29udGludWVQcm9jZXNzaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNvbXBsZXRlQ3VycmVudFJlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjaGVja01pY3Jv
cGhvbmVBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyOjpjaGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RTcGVl
Y2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0TWljcm9waG9uZUFjY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RV
c2VyUGVybWlzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvblJlcXVlc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNvbXBsZXRlKToKKyAgICAgICAg
KFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6b3JpZ2luIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6Y29tcGxldGUpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6U3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJl
Y29nbml0aW9uU2VydmVyOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjpyZW1vdmVQZW5kaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVj
aFJlY29nbml0aW9uU2VydmVyOjpzdGFydFBvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6Y29udGludWVQcm9jZXNzaW5nUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzZW5kVXBkYXRlKToK
KyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0b3BQcm9jZXNzaW5n
UmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZENoYW5nZU1haW5Eb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbik6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29n
bml0aW9uU2VydmVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbjo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb246OmRpZFJlY2VpdmVVcGRhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisKIDIwMjAtMTEt
MTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJldmVydGluZyByMjY5NjYwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCA1Mjhi
Yzc2MjcyNTQ2MDNhNmEzMzgxMzdhZDgyMjAyMjc0YThjNDlkLi5lMjQ0ZDg1OTQ4NTBjZGJkMDRi
YWZhZDBmMTdiYTQ3NmQ2YTM4MThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUhhdmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtNzYyLDMgKzc2
MiwxMSBAQAogICAgIHx8IChQTEFURk9STShBUFBMRVRWKSAmJiBfX1RWX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDE0MDAwMCkKICNkZWZpbmUgSEFWRV9BVk9VVFBVVERFVklDRV9TUEFUSUFM
QVVESU8gMQogI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFM
WVNUKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTUwMCkKKyNkZWZpbmUgSEFWRV9TUEVFQ0hSRUNPR05JWkVSIDEKKyNlbmRpZgorCisj
aWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkgfHwgUExBVEZPUk0oTUFD
KQorI2RlZmluZSBIQVZFX0FWQ0FQVFVSRURFVklDRSAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcAppbmRleCA1MWEz
MmNkYWFjYWExZWQwMTE0Mjc2N2QyMmUzMDI1MjZkZWJmNTk1Li5mMTE3YzFmYjFiNWJkMDRhZTc1
NTI1NjVmYmFhODg5MWM1YzFhZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb24uaCIKIAorI2luY2x1ZGUg
IkNsaWVudE9yaWdpbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTY5LDcgKzcwLDggQEAgRXhjZXB0aW9uT3I8
dm9pZD4gU3BlZWNoUmVjb2duaXRpb246OnN0YXJ0UmVjb2duaXRpb24oKQogICAgIGlmICghbV9j
b25uZWN0aW9uKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiUmVj
b2duaXRpb24gZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGNvbm5lY3Rpb24iX3MgfTsKIAotICAgIG1f
Y29ubmVjdGlvbi0+c3RhcnQoaWRlbnRpZmllcigpLCBtX2xhbmcsIG1fY29udGludW91cywgbV9p
bnRlcmltUmVzdWx0cywgbV9tYXhBbHRlcm5hdGl2ZXMpOworICAgIGF1dG8mIGRvY3VtZW50ID0g
ZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIG1fY29u
bmVjdGlvbi0+c3RhcnQoaWRlbnRpZmllcigpLCBtX2xhbmcsIG1fY29udGludW91cywgbV9pbnRl
cmltUmVzdWx0cywgbV9tYXhBbHRlcm5hdGl2ZXMsIENsaWVudE9yaWdpbiB7IGRvY3VtZW50LnRv
cE9yaWdpbigpLmRhdGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkgfSk7CiAg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpTdGFydGluZzsKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb24uaAppbmRleCAzZmQyZDMzYWNhMDIwNTI2MzQwNThkMGZiNTY1MmViNzAwN2Zh
NTJhLi42OWVlYmMyOTNkNWI3ZGUxZTM4Y2VlYWQyYTNlZTM4ZjAwZDFjYTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb24uaApAQCAtMzEsMTUgKzMxLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50OwogY2xhc3MgU3BlZWNoUmVj
b2duaXRpb25VcGRhdGU7CitzdHJ1Y3QgQ2xpZW50T3JpZ2luOwogCiBjbGFzcyBTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb24+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDbGllbnQoU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdGFydChTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxh
bmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0
ZXJuYXRpdmVzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250
aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIENs
aWVudE9yaWdpbiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhYm9y
dChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRh
dGUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoU3BlZWNoUmVjb2du
aXRpb25VcGRhdGUmJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
UmVxdWVzdC5jcHAKaW5kZXggNGE1ZThjMTYzMDNjMTg2NWMyYjFmZmNlOWI1NmVlMjYyMDNhN2Zj
NS4uZDNiZDdhOTRhNDJiOWQ1ZTA1OTIwYzViZmU3ZGJjNDRhOTE4ODdmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3QuY3BwCkBAIC0yOCwxMSArMjgsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
ZjxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDo6Y3Jl
YXRlKFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8mJiByZXF1ZXN0SW5mbykKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QoV1RGTW92ZShyZXF1
ZXN0SW5mbykpKTsKLX0KLQogU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmIHJlcXVlc3RJbmZvKQog
ICAgIDogbV9pbmZvKFdURk1vdmUocmVxdWVzdEluZm8pKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaAppbmRl
eCA1Y2VlYTAxYzczODY1NTZkNDI1MWY4YzhiOTVjMzEyNGJhZmM2MDEyLi45YWFkZTYxNzFlMDYy
ZjVhOGNjM2ExNjI4OTI5OTQ5OWRmZDlkMGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaApAQCAtMzAsMTkg
KzMwLDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiB7
CitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3Q+IGNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdChTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvJiYpOwogCiAgICAgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbmZv
LmNsaWVudElkZW50aWZpZXI7IH0KICAgICBjb25zdCBTdHJpbmcmIGxhbmcoKSBjb25zdCB7IHJl
dHVybiBtX2luZm8ubGFuZzsgfQogICAgIGJvb2wgY29udGludW91cygpIGNvbnN0IHsgcmV0dXJu
IG1faW5mby5jb250aW51b3VzOzsgfQogICAgIGJvb2wgaW50ZXJpbVJlc3VsdHMoKSBjb25zdCB7
IHJldHVybiBtX2luZm8uaW50ZXJpbVJlc3VsdHM7IH0KICAgICB1aW50NjRfdCBtYXhBbHRlcm5h
dGl2ZXMoKSBjb25zdCB7IHJldHVybiBtX2luZm8ubWF4QWx0ZXJuYXRpdmVzOyB9CisgICAgY29u
c3QgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5jbGll
bnRPcmlnaW47IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3QoU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsKLQogICAgIFNwZWVjaFJlY29n
bml0aW9uUmVxdWVzdEluZm8gbV9pbmZvOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCmlu
ZGV4IGFiMWUxYWU2ZWYzODg5OGMyMWEyYTlkZjdhZjFmMDA3ZTI0YjE3ZDAuLjFlZmU5ZTA2NDZl
NzQ3Y2I1NWQ3Y2NiMGY3YjE4ZmY1ZTBiM2M0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDbGllbnRPcmln
aW4uaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDYgKzM2LDcgQEAgc3RydWN0IFNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gewogICAgIGJvb2wgY29udGludW91cyB7IGZhbHNl
IH07CiAgICAgYm9vbCBpbnRlcmltUmVzdWx0cyB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbWF4
QWx0ZXJuYXRpdmVzIHsgMSB9OworICAgIENsaWVudE9yaWdpbiBjbGllbnRPcmlnaW47CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdEluZm8+IGRlY29kZShEZWNvZGVyJik7CkBAIC00Myw3ICs0NSw3IEBAIHN0cnVj
dCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIHsKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CiB2b2lkIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm86OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgY2xpZW50SWRlbnRpZmllciA8PCBsYW5nIDw8
IGNvbnRpbnVvdXMgPDwgaW50ZXJpbVJlc3VsdHMgPDwgbWF4QWx0ZXJuYXRpdmVzOworICAgIGVu
Y29kZXIgPDwgY2xpZW50SWRlbnRpZmllciA8PCBsYW5nIDw8IGNvbnRpbnVvdXMgPDwgaW50ZXJp
bVJlc3VsdHMgPDwgbWF4QWx0ZXJuYXRpdmVzIDw8IGNsaWVudE9yaWdpbjsKIH0KIAogdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTc0LDEyICs3NiwxOCBAQCBPcHRpb25hbDxTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvPiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUo
RGVjbwogICAgIGlmICghbWF4QWx0ZXJuYXRpdmVzKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCisgICAgT3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBjbGllbnRPcmlnaW47CisgICAgZGVj
b2RlciA+PiBjbGllbnRPcmlnaW47CisgICAgaWYgKCFjbGllbnRPcmlnaW4pCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKICAgICByZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqY2xp
ZW50SWRlbnRpZmllciksCiAgICAgICAgIFdURk1vdmUoKmxhbmcpLAogICAgICAgICBXVEZNb3Zl
KCpjb250aW51b3VzKSwKICAgICAgICAgV1RGTW92ZSgqaW50ZXJpbVJlc3VsdHMpLAotICAgICAg
ICBXVEZNb3ZlKCptYXhBbHRlcm5hdGl2ZXMpCisgICAgICAgIFdURk1vdmUoKm1heEFsdGVybmF0
aXZlcyksCisgICAgICAgIFdURk1vdmUoKmNsaWVudE9yaWdpbikKICAgICB9fTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25V
cGRhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25VcGRhdGUuY3BwCmluZGV4IDUzNGVkYTNkMjQ3N2VlMWM2ZjE3ZWM2YWYxNzkzMjZiYjc5ZjAy
MDcuLjlhOWE3ZDkyMDY5NjU1YzQ1NzE2MDdkZGExOGM0ZTZiMzMwZjcyZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3Ry
aW5nKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSBlbnVtZXJhdGlvblZhbHVlKQogCiBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKFNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlIHsgY2xpZW50SWRlbnRpZmllciwgdHlwZSB9OworICAgIHJldHVybiBT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7IGNsaWVudElkZW50aWZpZXIsIHR5cGUsIFdURjo6TW9u
b3N0YXRlKCkgfTsKIH0KIAogU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgU3BlZWNoUmVjb2duaXRp
b25VcGRhdGU6OmNyZWF0ZUVycm9yKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgY29uc3QgU3BlZWNoUmVjb2duaXRpb25FcnJvciYg
ZXJyb3IpCkBAIC04Myw3ICs4Myw3IEBAIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllCiBTcGVlY2hS
ZWNvZ25pdGlvbkVycm9yIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjplcnJvcigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9jb250ZW50LAotICAgICAgICBbXSAoU3BlZWNo
UmVjb2duaXRpb25FcnJvciYgZXJyb3IpIHsgcmV0dXJuIGVycm9yOyB9LAorICAgICAgICBbXSAo
Y29uc3QgU3BlZWNoUmVjb2duaXRpb25FcnJvciYgZXJyb3IpIHsgcmV0dXJuIGVycm9yOyB9LAog
ICAgICAgICBbXSAoY29uc3QgYXV0byYpIHsgcmV0dXJuIFNwZWVjaFJlY29nbml0aW9uRXJyb3Io
KTsgfQogICAgICk7CiB9CkBAIC05MSw3ICs5MSw3IEBAIFNwZWVjaFJlY29nbml0aW9uRXJyb3Ig
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmVycm9yKCkgY29uc3QKIFZlY3RvcjxTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdERhdGE+IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpyZXN1bHQoKSBjb25z
dAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fY29udGVudCwKLSAgICAgICAgW10gKFZl
Y3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+JiBkYXRhKSB7IHJldHVybiBkYXRhOyB9
LAorICAgICAgICBbXSAoY29uc3QgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4m
IGRhdGEpIHsgcmV0dXJuIGRhdGE7IH0sCiAgICAgICAgIFtdIChjb25zdCBhdXRvJikgeyByZXR1
cm4gVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4geyB9OyB9CiAgICAgKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZS5oCmluZGV4IDNhODJiZjZiYWY1NGNlMGM0YjEzMzRlZjZmOGI1ODkzZjNiODk4
MmUuLjg5MTQ5MTc5M2Y0ZTAxZWMyZmY2MDEwN2NiNDg1ZjQ4OGZhNDNlODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRh
dGUuaApAQCAtNTIsOCArNTIsOCBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlKTsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3BlZWNoUmVjb2duaXRp
b25VcGRhdGUgY3JlYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSk7Ci0gICAgc3RhdGljIFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlIGNyZWF0ZUVycm9yKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIsIGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXJyb3ImKTsKLSAgICBzdGF0aWMg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlUmVzdWx0KFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdERhdGE+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlIGNyZWF0ZUVycm9yKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIsIGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXJyb3ImKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlUmVzdWx0KFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdERhdGE+Jik7CiAKICAgICBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dElkZW50aWZpZXI7IH0KICAgICBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgdXNpbmcgQ29udGVudCA9IFZhcmlhbnQ8V1RGOjpNb25vc3RhdGUsIFNwZWVjaFJl
Y29nbml0aW9uRXJyb3IsIFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PjsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZShTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGUsIENvbnRlbnQgPSBXVEY6Ok1vbm9zdGF0ZSgpKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIENvbnRlbnQpOwogCiAg
ICAgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBtX2NsaWVudElk
ZW50aWZpZXI7CiAgICAgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIG1fdHlwZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5o
CmluZGV4IGNmOWU3MmI5M2MwNjRhNTVkZGRmYWI3YjNjYWZiNDg5MGUwMzVmNDYuLjI0MGFhM2Q0
ODRhOTczYjQ0MTEyYWVmNjFlOGVhYWE4NDdiNThkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaApAQCAtMzksMTAgKzM5
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IER1bW15U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uKCkpOwogICAgICAgICB9CiAgICAgICAgIHZvaWQgcmVn
aXN0ZXJDbGllbnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50JikgZmluYWwgeyB9
Ci0gICAgICAgIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiwgYm9vbCwgYm9vbCwgdWludDY0X3QpIGZpbmFsIHsgfQor
ICAgICAgICB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wsIHVpbnQ2NF90LCBDbGllbnRPcmlnaW4m
JikgZmluYWwgeyB9CiAgICAgICAgIHZvaWQgc3RvcChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyKSBmaW5hbCB7IH0KICAgICAgICAgdm9pZCBhYm9ydChTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbCB7IH0KLSAgICAgICAg
dm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikgZmlu
YWwgeyB9CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZSYmKSBmaW5hbCB7IH0KICAgICB9OwogICAgIER1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92
aWRlcigpID0gZGVmYXVsdDsKICAgICBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24mIHNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0hlYWRl
cnMuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L0hlYWRlcnMuY21ha2UKaW5kZXggNDM2Mzk3MGYxYWUw
MzY2ZWEwMzk1NTdhMjczZDhiODNlNjYxNjQ0OC4uM2U3ZTU5NTg0ZmYyODAwMGUxMGQ5OWFlNDRh
YmVjM2ZmYTIxMzlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9IZWFkZXJzLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQvSGVhZGVycy5jbWFrZQpAQCAtOTksNiArOTksNyBAQCBzZXQoV2Vi
S2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Byb3Rl
Y3Rpb25TcGFjZVR5cGVzLmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFu
YWdlci5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRlUmVmLmgKKyAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCiAgICAg
VUlQcm9jZXNzL0FQSS9DL1dLVGVzdGluZ1N1cHBvcnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1RleHRDaGVja2VyLmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXJSZWYuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IDZkMDY1NjQ1ZGNl
ZTYyZTU5ZDUwZGJlZjM3NDM1YTQ5YTgwZWI2ODIuLmNkMWNhZDk2YjQwMzEyZGIzYjE4OGRlNzFm
NjA4OGJmNzI4ZmQ4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTE2
NSw2ICsxNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJ1bkphdmFTY3JpcHRBbGVydFJlc3VsdExp
c3RlbmVyLAogICAgICAgICBSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVyLAogICAg
ICAgICBSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXIsCisgICAgICAgIFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLAogICAgICAgICBUZXh0Q2hlY2tlciwKICAgICAg
ICAgVVJMU2NoZW1lVGFzaywKICAgICAgICAgVXNlckNvbnRlbnRDb250cm9sbGVyLApAQCAtNDEw
LDYgKzQxMSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8QVBJOjpPYmplY3Q6OlR5
cGU+IHsKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlJ1bkphdmFTY3JpcHRBbGVydFJlc3Vs
dExpc3RlbmVyLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6UnVuSmF2YVNjcmlwdENvbmZp
cm1SZXN1bHRMaXN0ZW5lciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlJ1bkphdmFTY3Jp
cHRQcm9tcHRSZXN1bHRMaXN0ZW5lciwKKyAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlw
ZTo6VGV4dENoZWNrZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpVUkxTY2hlbWVUYXNr
LAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6VXNlckNvbnRlbnRDb250cm9sbGVyLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAppbmRleCA5ZTgyZTU2MDAxODdlYzFjZjhhZjliZWU3
OWU3MWQwZThkN2ZkMTVhLi44NGVlNmMyODhmNmQyZWJkNTFmYTczZWE3MjcwOGYzMjk0NmJkZDg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAtMTQxLDYgKzE0MSw3IEBAIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2Vic2l0ZURhdGFDb25maWd1cmF0aW9uU3RvcmUq
IFdLV2Vic2l0ZURhdGFTdG9yZUNvCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNp
dGVEYXRhU3RvcmUqIFdLV2Vic2l0ZURhdGFTdG9yZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLV2Vic2l0ZVBvbGljaWVzKiBXS1dlYnNpdGVQb2xpY2llc1JlZjsKIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLV2luZG93RmVhdHVyZXMqIFdLV2luZG93RmVhdHVyZXNSZWY7
Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmOwogCiAv
KiBXZWJLaXQyIEJ1bmRsZSB0eXBlcyAqLwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA4M2QyODBjNzVlZjVm
NWJiMGEyZWI2ZDExYWE4YzBmYTkxOWI3NGQwLi5hOTBiYmEwOWNjNzRlZWJhMDViMDNkM2Y2ZTQ4
ZDc1NWQxMDJmYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI5MCw2ICsyOTAsNyBAQCBVSVByb2Nlc3Mv
UmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5jcHAKIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCiBVSVByb2Nlc3MvU3lzdGVt
UHJldmlld0NvbnRyb2xsZXIuY3BwCitVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlci5jcHAKIFVJUHJvY2Vzcy9UZXh0Q2hlY2tlci5jcHAKIFVJUHJvY2Vzcy9UZXh0
Q2hlY2tlckNvbXBsZXRpb24uY3BwCiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvbkNoZWNr
UHJveHkuY3BwCkBAIC00MDMsNiArNDA0LDcgQEAgVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5j
ZXMuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2UuY3BwCiBVSVByb2Nlc3Mv
QVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Np
b25TdGF0ZVJlZi5jcHAKK1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNhbGxiYWNrLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLVGV4dENoZWNrZXIuY3BwCiBVSVBy
b2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCiBVSVByb2Nlc3MvQVBJ
L0MvV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUmVmLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IDA4NGQ1MTM1MmQ0NGE0NTA5NDliM2ZiZDFkMWQ3NjEzNWZiMmJlYjIuLjA5OTc3MGI0
YWFmZThhZTA0Yzc4NmJkZDI4N2U3MGY0N2IxMzQ3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
QEAgLTM3Myw2ICszNzMsNyBAQCBVSVByb2Nlc3MvQ29jb2EvR2xvYmFsRmluZEluUGFnZVN0YXRl
Lm1tCiBVSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQogVUlQcm9jZXNzL0Nv
Y29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbQogVUlQcm9jZXNzL0NvY29h
L01lZGlhVXRpbGl0aWVzLm1tCitVSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0
aWVzLm1tCiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCiBVSVByb2Nlc3MvQ29j
b2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQu
aAppbmRleCBhYTdkODljMDFlNzM1MjBjZTNlZTA0MjI2YjlhZTg1OTcwYmZhYTZlLi5hMGRiYTgz
NzI3YTk2YWQ2MTA0N2I5ZWQxNWI2NGIzMTM0ZWVkYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtMjAyLDYgKzIwMiw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgfQog
CisgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCBiNTJjNDRiYWVhOWFjZjlm
YzAzMzJkNWE5ZjM3MzU2ZTlkMjM4NjI5Li4xOGNiZmQ1Yjc0ZWI4NzcwYTU3OGYxNWM4YTAxNjE0
OTkwMjE0NTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaApA
QCAtNzksNiArNzksNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXI7CiBj
bGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsK
IGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworY2xhc3MgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQ
cm94eTsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CiBjbGFzcyBXZWJC
YWNrRm9yd2FyZExpc3Q7CkBAIC0xNTIsNiArMTUzLDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdL
UHJlZmVyZW5jZXNSZWYsIFdlYlByZWZlcmVuY2VzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJv
dGVjdGlvblNwYWNlUmVmLCBXZWJQcm90ZWN0aW9uU3BhY2UpCiBXS19BRERfQVBJX01BUFBJTkco
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlclJlZiwgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbmFnZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tTZXNzaW9uU3RhdGVSZWYsIEFQSTo6
U2Vzc2lvblN0YXRlKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2tSZWYsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKQog
V0tfQUREX0FQSV9NQVBQSU5HKFdLVGV4dENoZWNrZXJSZWYsIFdlYlRleHRDaGVja2VyKQogV0tf
QUREX0FQSV9NQVBQSU5HKFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJDb250ZW50RXh0ZW5z
aW9uU3RvcmVSZWYsIEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA0MzY5Y2RkODI1YjUxNTdmYjAxMGMzZjgxYWU3
OGU2NjBkYWE3NGZjLi41ZTEwOWQ1NzllYjc1ZjFkOGZiZmIxZDAzYThmOGMwZDdiY2U2ZGZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTYzLDYgKzYzLDcg
QEAKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb3JtYXRpb24u
aCIKICNpbmNsdWRlICJQcmludEluZm8uaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tQ
YWdlUG9saWN5Q2xpZW50SW50ZXJuYWwuaCIKICNpbmNsdWRlICJXS1BhZ2VSZW5kZXJpbmdQcm9n
cmVzc0V2ZW50c0ludGVybmFsLmgiCkBAIC0xMTUsNyArMTE2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVBvbGljeUNsaWVudEJhc2U+IHsKIH07CiAKIHRlbXBsYXRl
PD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VVSUNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVm
IHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQYWdlVUlDbGllbnRWMSwgV0tQYWdlVUlD
bGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdlVUlDbGllbnRWNCwgV0tQYWdlVUlDbGll
bnRWNSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQYWdlVUlDbGllbnRWNywgV0tQYWdlVUlDbGllbnRW
OCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQYWdlVUlDbGllbnRWMTAsIFdLUGFnZVVJQ2xpZW50VjEx
LCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQYWdlVUlDbGllbnRWMTMsIFdLUGFnZVVJQ2xpZW50VjE0
PiBWZXJzaW9uczsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tQYWdlVUlDbGllbnRWMCwgV0tQ
YWdlVUlDbGllbnRWMSwgV0tQYWdlVUlDbGllbnRWMiwgV0tQYWdlVUlDbGllbnRWMywgV0tQYWdl
VUlDbGllbnRWNCwgV0tQYWdlVUlDbGllbnRWNSwgV0tQYWdlVUlDbGllbnRWNiwgV0tQYWdlVUlD
bGllbnRWNywgV0tQYWdlVUlDbGllbnRWOCwgV0tQYWdlVUlDbGllbnRWOSwgV0tQYWdlVUlDbGll
bnRWMTAsIFdLUGFnZVVJQ2xpZW50VjExLCBXS1BhZ2VVSUNsaWVudFYxMiwgV0tQYWdlVUlDbGll
bnRWMTMsIFdLUGFnZVVJQ2xpZW50VjE0LCBXS1BhZ2VVSUNsaWVudFYxNT4gVmVyc2lvbnM7CiB9
OwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0yMTEwLDYgKzIxMTEsMTMgQEAgdm9p
ZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJ
Q2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktp
dDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6UHJlc2VudGVkKTsKICAgICAgICAgfQog
I2VuZGlmCisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIG9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
ZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lG
b3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKCZvcmlnaW4pLCB0b0FQ
SShTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKS5wdHIoKSkpOworICAgICAgICB9CiAgICAgfTsKIAogICAgIHRvSW1w
bChwYWdlUmVmKS0+c2V0VUlDbGllbnQobWFrZVVuaXF1ZTxVSUNsaWVudD4od2tDbGllbnQpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCmluZGV4
IGI2Mzg4MTU1Y2QzMDM2ZTY2NjExMGYxOTI1NjE2YWZkMzdlODY4YmEuLjYzNjM1NTU2NGQwMGIx
MTIyYTg3ZTIyOWEzMGI5NGQ3ZTk5ZTRlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaApAQCAtMTM2LDYgKzEzNiw3IEBAIHR5cGVkZWYgdm9p
ZCAoKldLUGFnZURpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZUNh
bGxiYWNrKShXS1BhCiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VTaG91bGRBbGxvd0RldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uQWNjZXNzQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5
T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIAogdHlw
ZWRlZiB2b2lkICgqV0tQYWdlUnVuV2ViQXV0aGVudGljYXRpb25QYW5lbENhbGxiYWNrKSgpOwor
dHlwZWRlZiB2b2lkICgqV0tQYWdlRGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTZWN1cml0eU9yaWdpblJl
ZiB0b3BPcmlnaW4sIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgY2Fs
bGJhY2spOwogCiAvLyBEZXByZWNhdGVkCiB0eXBlZGVmIFdLUGFnZVJlZiAoKldLUGFnZUNyZWF0
ZU5ld1BhZ2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwKShXS1BhZ2VSZWYgcGFnZSwg
V0tEaWN0aW9uYXJ5UmVmIGZlYXR1cmVzLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tF
dmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKQEAg
LTEzNTMsNiArMTM1NCwxMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlDbGllbnRWMTQgewog
ICAgIFdLUGFnZVJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbDsKIH0gV0tQYWdlVUlDbGll
bnRWMTQ7CiAKK3R5cGVkZWYgc3RydWN0IFdLUGFnZVVJQ2xpZW50VjE1IHsKKyAgICBXS1BhZ2VV
SUNsaWVudEJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJhc2U7CisKKyAgICAvLyBWZXJzaW9uIDAuCisgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNh
bGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQ
YWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93UGFnZTsKKyAg
ICBXS1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNsb3NlOworICAgIFdLUGFnZVRha2VGb2N1c0NhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZUZvY3VzOworICAgIFdLUGFn
ZUZvY3VzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm9jdXM7CisgICAgV0tQYWdlVW5mb2N1c0NhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmZvY3VzOworICAgIFdLUGFnZVJ1bkphdmFT
Y3JpcHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgICAgcnVu
SmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlUnVuSmF2
YVNjcmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICAgICBy
dW5KYXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZVJ1
bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICAgICAg
ICAgcnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFn
ZVNldFN0YXR1c1RleHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0U3RhdHVzVGV4dDsKKyAgICBXS1BhZ2VNb3VzZURpZE1vdmVPdmVyRWxlbWVudENh
bGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVt
ZW50X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlTWlzc2luZ1BsdWdpbkJ1dHRv
bkNsaWNrZWRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAgICBtaXNzaW5nUGx1Z2lu
QnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAgIFdLUGFnZURpZE5vdEhh
bmRsZUtleUV2ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlk
Tm90SGFuZGxlS2V5RXZlbnQ7CisgICAgV0tQYWdlRGlkTm90SGFuZGxlV2hlZWxFdmVudENhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWROb3RIYW5kbGVXaGVlbEV2ZW50
OworICAgIFdLUGFnZUdldFRvb2xiYXJzQXJlVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdG9vbGJhcnNBcmVWaXNpYmxlOworICAgIFdLUGFnZVNldFRvb2xi
YXJzQXJlVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
VG9vbGJhcnNBcmVWaXNpYmxlOworICAgIFdLUGFnZUdldE1lbnVCYXJJc1Zpc2libGVDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudUJhcklzVmlzaWJsZTsKKyAg
ICBXS1BhZ2VTZXRNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE1lbnVCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlR2V0U3RhdHVzQmFy
SXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNC
YXJJc1Zpc2libGU7CisgICAgV0tQYWdlU2V0U3RhdHVzQmFySXNWaXNpYmxlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0dXNCYXJJc1Zpc2libGU7CisgICAg
V0tQYWdlR2V0SXNSZXNpemFibGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpc1Jlc2l6YWJsZTsKKyAgICBXS1BhZ2VTZXRJc1Jlc2l6YWJsZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzUmVzaXphYmxlOwor
ICAgIFdLUGFnZUdldFdpbmRvd0ZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2V0V2luZG93RnJhbWU7CisgICAgV0tQYWdlU2V0V2luZG93RnJhbWVD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRXaW5kb3dG
cmFtZTsKKyAgICBXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxDYWxsYmFja19kZXBy
ZWNhdGVkRm9yVXNlV2l0aFY2ICAgIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbF9kZXByZWNh
dGVkRm9yVXNlV2l0aFY2OworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRHJhdzsKKyAgICBXS1BhZ2VVSUNs
aWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhZ2VEaWRTY3JvbGw7CisgICAgV0tQYWdlRXhjZWVkZWREYXRhYmFzZVF1b3RhQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlZWRlZERhdGFiYXNlUXVvdGE7Cisg
ICAgV0tQYWdlUnVuT3BlblBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydW5PcGVuUGFuZWw7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgICBkZWNpZGVQb2xpY3lG
b3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZUhlYWRlckhlaWdodENh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVySGVp
Z2h0OworICAgIFdLUGFnZUZvb3RlckhlaWdodENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9vdGVySGVpZ2h0OworICAgIFdLUGFnZURyYXdIZWFkZXJD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0hl
YWRlcjsKKyAgICBXS1BhZ2VEcmF3Rm9vdGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRyYXdGb290ZXI7CisgICAgV0tQYWdlUHJpbnRGcmFtZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludEZy
YW1lOworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnVuTW9kYWw7CisgICAgdm9pZCogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQxOyAv
LyBVc2VkIHRvIGJlIGRpZENvbXBsZXRlUnViYmVyQmFuZEZvck1haW5GcmFtZQorICAgIFdLUGFn
ZVNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXJDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcjsKKyAgICB2b2lkKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo
b3VsZEludGVycnVwdEphdmFTY3JpcHRfdW5hdmFpbGFibGU7CisKKyAgICAvLyBWZXJzaW9uIDEu
CisgICAgV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEg
ICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjE7Cisg
ICAgV0tQYWdlTW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDsKKyAgICBXS1BhZ2VEZWNpZGVQ
b2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgIGRl
Y2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZVVu
YXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjEgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjE7
CisKKyAgICAvLyBWZXJzaW9uIDIuCisgICAgV0tQYWdlU2hvd0NvbG9yUGlja2VyQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q29sb3JQaWNrZXI7Cisg
ICAgV0tQYWdlSGlkZUNvbG9yUGlja2VyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoaWRlQ29sb3JQaWNrZXI7CisgICAgV0tQYWdlVW5hdmFpbGFibGVQbHVn
aW5CdXR0b25DbGlja2VkQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICB1bmF2YWlsYWJs
ZVBsdWdpbkJ1dHRvbkNsaWNrZWQ7CisKKyAgICAvLyBWZXJzaW9uIDMuCisgICAgV0tQYWdlUGlu
bmVkU3RhdGVEaWRDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwaW5uZWRTdGF0ZURpZENoYW5nZTsKKworICAgIC8vIFZlcnNpb24gNC4KKyAgICB2b2lkKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVudXNlZDI7IC8vIFVzZWQgdG8gYmUgZGlkQmVnaW5UcmFja2luZ1BvdGVudGlhbExvbmdN
b3VzZVByZXNzLgorICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkMzsgLy8gVXNlZCB0byBiZSBkaWRSZWNv
Z25pemVMb25nTW91c2VQcmVzcy4KKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDQ7IC8vIFVzZWQgdG8g
YmUgZGlkQ2FuY2VsVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcy4KKyAgICBXS1BhZ2VJ
c1BsYXlpbmdBdWRpb0RpZENoYW5nZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlOworCisgICAgLy8gVmVyc2lvbiA1LgorICAgIFdL
UGFnZURlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAg
ICAgICAgICAgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Q7CisgICAg
V0tQYWdlRGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWRDbGlja0F1dG9GaWxsQnV0dG9uOworICAgIFdLUGFnZVJ1bkphdmFTY3Jp
cHRBbGVydENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICAgcnVuSmF2
YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjU7CisgICAgV0tQYWdlUnVuSmF2YVNj
cmlwdENvbmZpcm1DYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICBydW5K
YXZhU2NyaXB0Q29uZmlybV9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OworICAgIFdLUGFnZVJ1bkph
dmFTY3JpcHRQcm9tcHRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFY1ICAgICAgICAgICAg
cnVuSmF2YVNjcmlwdFByb21wdF9kZXByZWNhdGVkRm9yVXNlV2l0aFY1OworICAgIHZvaWQqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW51c2VkNTsgLy8gVXNlZCB0byBiZSBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZS4K
KworICAgIC8vIFZlcnNpb24gNi4KKyAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2U7CisgICAg
V0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnQ7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdENv
bmZpcm1DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5KYXZhU2Ny
aXB0Q29uZmlybTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHQ7CisgICAgV0tD
aGVja1VzZXJNZWRpYVBlcm1pc3Npb25DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW47CisKKyAgICAvLyBWZXJz
aW9uIDcuCisgICAgV0tQYWdlUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CisgICAg
V0tGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmU7CisKKyAgICAvLyBWZXJzaW9u
IDguCisgICAgV0tSZXF1ZXN0UG9pbnRlckxvY2tDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0UG9pbnRlckxvY2s7CisgICAgV0tEaWRMb3NlUG9p
bnRlckxvY2tDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWRMb3NlUG9pbnRlckxvY2s7CisKKyAgICAvLyBWZXJzaW9uIDkuCisgICAgV0tIYW5kbGVBdXRv
cGxheUV2ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
YW5kbGVBdXRvcGxheUV2ZW50OworCisgICAgLy8gVmVyc2lvbiAxMC4KKyAgICBXS0hhc1ZpZGVv
SW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
IGhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlOworICAgIFdLRGlkRXhjZWVkQmFj
a2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZENhbGxiYWNrICAgICAgICAgZGlk
RXhjZWVkQmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDsKKworICAgIC8v
IFZlcnNpb24gMTEuCisgICAgV0tQYWdlRGlkUmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dv
cmRBcHBlYXJhbmNlQ2FsbGJhY2sgICAgICAgICBkaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQ
YXNzd29yZEFwcGVhcmFuY2U7CisKKyAgICAvLyBWZXJzaW9uIDEyLgorICAgIFdLUGFnZVJlcXVl
c3RTdG9yYWdlQWNjZXNzQ29uZmlybUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtOworCisgICAgLy8gVmVyc2lvbiAxMy4KKyAgICBX
S1BhZ2VTaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ2FsbGJhY2sg
ICAgICAgICAgIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3M7CisK
KyAgICAvLyBWZXJzaW9uIDE0LgorICAgIFdLUGFnZVJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWxD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25Q
YW5lbDsKKworICAgIC8vIFZlcnNpb24gMTUuCisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICBkZWNpZGVQb2xpY3lG
b3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OworICAgIAorfSBXS1BhZ2VVSUNs
aWVudFYxNTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNjOGY5YTM1ZGI4NDEx
ZTAzODVhN2FlMTU0OWEzOWFmODEzMmVkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
Y3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIgorCisjaW5j
bHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4g
dG9BUEkoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OkFQSVR5cGUpOworfQor
Cit2b2lkIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tDb21wbGV0ZShXS1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIHNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrLCBib29sIGdyYW50ZWQpCit7CisgICAgcmV0dXJuIHRvSW1wbChzcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayktPmNvbXBsZXRlKGdyYW50ZWQpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4YWVh
ZmM2OTg0YmE5NmY1NDg5MmU3MzJhZmVhM2EwNjNjOWM3MmQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVy
biAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrR2V0VHlwZUlEKHZvaWQpOworCitXS19FWFBPUlQgdm9pZCBXS1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUoV0tTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBzcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjaywgYm9vbCBncmFudGVkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2Vz
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0K
aW5kZXggMWVlYTIwNTRkMDZkZTc4ZWJiZjI2MzJmYjg5OTJjMzk4ZDNmYTBiNy4uYzRlNTUwNzJh
NTEyOWM5NTE3ZWYwYWM0YjFlYjJlOWIzMWI5OTMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KQEAgLTE0MzcsNiArMTQzNywx
NiBAQCBzdGF0aWMgV2ViQ29yZTo6RWRpdGFibGVMaW5rQmVoYXZpb3IgdG9FZGl0YWJsZUxpbmtC
ZWhhdmlvcihfV0tFZGl0YWJsZUxpbmtCZWhhdgogI2VuZGlmCiB9CiAKKy0gKEJPT0wpX3NwZWVj
aFJlY29nbml0aW9uRW5hYmxlZAoreworICAgIHJldHVybiBfcHJlZmVyZW5jZXMtPnNwZWVjaFJl
Y29nbml0aW9uRW5hYmxlZCgpOworfQorCistICh2b2lkKV9zZXRTcGVlY2hSZWNvZ25pdGlvbkVu
YWJsZWQ6KEJPT0wpc3BlZWNoUmVjb2duaXRpb25FbmFibGVkCit7CisgICAgX3ByZWZlcmVuY2Vz
LT5zZXRTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQoc3BlZWNoUmVjb2duaXRpb25FbmFibGVkKTsK
K30KKwogQGVuZAogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggZDQ5ZmU1OTY3NzI1ZGE0YTk1OTYw
ZjQ1Njc5MDk4YTdmMWNkZjZhMS4uZmQ1OGIwYTExODZhZjU4N2I4MzQzZDUxMWQ1NmY3MGJhNmRh
MTg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJl
ZmVyZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTE2MSw2ICsxNjEsNyBAQCB0eXBlZGVmIE5TX0VO
VU0oTlNJbnRlZ2VyLCBfV0tFZGl0YWJsZUxpbmtCZWhhdmlvcikgewogQHByb3BlcnR5IChub25h
dG9taWMsIHNldHRlcj1fc2V0UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZDopIEJPT0wgX3Jl
cXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dFNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZzopIEJPT0wgX3NlcnZp
Y2VXb3JrZXJFbnRpdGxlbWVudERpc2FibGVkRm9yVGVzdGluZyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMs
IHNldHRlcj1fc2V0QWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZUVuYWJsZWQ6KSBCT09MIF9hY2Nl
c3NpYmlsaXR5SXNvbGF0ZWRUcmVlRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE2
KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRTcGVlY2hSZWNvZ25pdGlvbkVu
YWJsZWQ6KSBCT09MIF9zcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogI2lmICFUQVJHRVRfT1NfSVBI
T05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRXZWJHTEVuYWJsZWQ6KSBCT09M
IF93ZWJHTEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZh
dGUuaAppbmRleCBkMWVhZTIwMWU2NTQyZjRmYWI2MDE5ODBkYzY2MTI0OTEzMTk3OTNmLi5mMGE5
YmE0MWY1MTVlZjcxOGY3NDZjN2ZkZmZmZWE0YTM1ZThkZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKQEAg
LTE1Miw2ICsxNTIsOCBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogCiAtICh2b2lkKV93ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IHdpbGxTaGFyZUFjdGl2aXR5SXRlbXM6KE5TQXJyYXkgKilh
Y3Rpdml0eUl0ZW1zIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKIAorLSAodm9p
ZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopb3JpZ2luIGRlY2lzaW9uSGFu
ZGxlcjoodm9pZCAoXikoQk9PTCBhdXRob3JpemVkKSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogI2lmIFRBUkdF
VF9PU19JUEhPTkUKIAogLSAoQk9PTClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzaG91
bGRJbmNsdWRlQXBwTGlua0FjdGlvbnNGb3JFbGVtZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5m
byAqKWVsZW1lbnQgV0tfQVBJX0FWQUlMQUJMRShpb3MoOS4wKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTk0ZjZjY2RjZDA3NDhlOGNiOGI4MDlmMmQ5NjAzMmY2NmQxODhiNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlz
c2lvblV0aWxpdGllcy5tbQpAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgiCisKKyNpbXBv
cnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRDQ1NQSS5oIgorI2ltcG9ydCA8d3Rm
L0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9z
cGkvZGFyd2luL1NhbmRib3hTUEkuaD4KKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKyNp
bXBvcnQgPFNwZWVjaC9TcGVlY2guaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhTcGVlY2gpCitT
T0ZUX0xJTktfQ0xBU1MoU3BlZWNoLCBTRlNwZWVjaFJlY29nbml6ZXIpCisjZW5kaWYKKworI2lt
cG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisKK1NPRlRfTElOS19QUklW
QVRFX0ZSQU1FV09SSyhUQ0MpCitTT0ZUX0xJTksoVENDLCBUQ0NBY2Nlc3NQcmVmbGlnaHQsIFRD
Q0FjY2Vzc1ByZWZsaWdodFJlc3VsdCwgKENGU3RyaW5nUmVmIHNlcnZpY2UsIENGRGljdGlvbmFy
eVJlZiBvcHRpb25zKSwgKHNlcnZpY2UsIG9wdGlvbnMpKQorU09GVF9MSU5LX0NPTlNUQU5UKFRD
Qywga1RDQ1NlcnZpY2VNaWNyb3Bob25lLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFO
VChUQ0MsIGtUQ0NTZXJ2aWNlQ2FtZXJhLCBDRlN0cmluZ1JlZikKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2Jvb2wgY2hlY2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlzc2lv
blR5cGUgdHlwZSkKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIGF1ZGlvRmxhZzsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgdmlkZW9GbGFnOworICAg
IHN0YXRpYyBib29sIGlzQXVkaW9FbnRpdGxlZCA9IHRydWU7CisgICAgc3RhdGljIGJvb2wgaXNW
aWRlb0VudGl0bGVkID0gdHJ1ZTsKKyAgICAKKyAgICBhdXRvIGNoZWNrRnVuY3Rpb24gPSBbXShj
b25zdCBjaGFyKiBvcGVyYXRpb24sIGJvb2wqIGVudGl0bGVkKSB7CisgICAgICAgIGlmICghY3Vy
cmVudFByb2Nlc3NJc1NhbmRib3hlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGludCByZXN1bHQgPSBzYW5kYm94X2NoZWNrKGdldHBpZCgpLCBvcGVyYXRpb24sIFNBTkRCT1hf
RklMVEVSX05PTkUpOworICAgICAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICAgICAgV1RG
TG9nQWx3YXlzKCJFcnJvciBjaGVja2luZyAnJXMnIHNhbmRib3ggYWNjZXNzLCBlcnJubz0lbGQi
LCBvcGVyYXRpb24sIChsb25nKWVycm5vKTsKKyAgICAgICAgKmVudGl0bGVkID0gIXJlc3VsdDsK
KyAgICB9OworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25U
eXBlOjpBdWRpbzoKKyAgICAgICAgc3RkOjpjYWxsX29uY2UoYXVkaW9GbGFnLCBjaGVja0Z1bmN0
aW9uLCAiZGV2aWNlLW1pY3JvcGhvbmUiLCAmaXNBdWRpb0VudGl0bGVkKTsKKyAgICAgICAgcmV0
dXJuIGlzQXVkaW9FbnRpdGxlZDsKKyAgICBjYXNlIE1lZGlhUGVybWlzc2lvblR5cGU6OlZpZGVv
OgorICAgICAgICBzdGQ6OmNhbGxfb25jZSh2aWRlb0ZsYWcsIGNoZWNrRnVuY3Rpb24sICJkZXZp
Y2UtY2FtZXJhIiwgJmlzVmlkZW9FbnRpdGxlZCk7CisgICAgICAgIHJldHVybiBpc1ZpZGVvRW50
aXRsZWQ7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgY2hlY2tV
c2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlIHR5cGUpCit7
CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRp
bzoKKyAgICAgICAgc3RhdGljIFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3VsdCBhdWRpb0FjY2VzcyA9
IFRDQ0FjY2Vzc1ByZWZsaWdodChnZXRrVENDU2VydmljZU1pY3JvcGhvbmUoKSwgTlVMTCk7Cisg
ICAgICAgIGlmIChhdWRpb0FjY2VzcyA9PSBrVENDQWNjZXNzUHJlZmxpZ2h0R3JhbnRlZCkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZHluYW1pY19vYmpjX2Nhc3Q8
TlNTdHJpbmc+KE5TQnVuZGxlLm1haW5CdW5kbGUuaW5mb0RpY3Rpb25hcnlbQCJOU01pY3JvcGhv
bmVVc2FnZURlc2NyaXB0aW9uIl0pLmxlbmd0aCA+IDA7CisgICAgY2FzZSBNZWRpYVBlcm1pc3Np
b25UeXBlOjpWaWRlbzoKKyAgICAgICAgc3RhdGljIFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3VsdCB2
aWRlb0FjY2VzcyA9IFRDQ0FjY2Vzc1ByZWZsaWdodChnZXRrVENDU2VydmljZUNhbWVyYSgpLCBO
VUxMKTsKKyAgICAgICAgaWYgKHZpZGVvQWNjZXNzID09IGtUQ0NBY2Nlc3NQcmVmbGlnaHRHcmFu
dGVkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBkeW5hbWljX29i
amNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5T
Q2FtZXJhVXNhZ2VEZXNjcmlwdGlvbiJdKS5sZW5ndGggPiAwOworICAgIH0KK30KKworYm9vbCBj
aGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdGb3JTcGVlY2hSZWNvZ25pdGlvbigpCit7CisgICAg
cmV0dXJuIGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihOU0J1bmRsZS5tYWluQnVuZGxlLmlu
Zm9EaWN0aW9uYXJ5W0AiTlNTcGVlY2hSZWNvZ25pdGlvblVzYWdlRGVzY3JpcHRpb24iXSkubGVu
Z3RoID4gMDsKK30KKworI2lmIEhBVkUoQVZDQVBUVVJFREVWSUNFKQorCit2b2lkIHJlcXVlc3RB
VkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGUgdHlwZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBBVk1lZGlhVHlwZSBtZWRpYVR5cGUg
PSB0eXBlID09IE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvID8gQVZNZWRpYVR5cGVBdWRpbyA6
IEFWTWVkaWFUeXBlVmlkZW87CisgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wg
YXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChpc01haW5UaHJlYWQoKSkgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBhdXRob3JpemVkXSgpIG11dGFibGUg
eworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgICAgIH0p
OworICAgIH0pOworICAgIFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgcmVxdWVzdEFj
Y2Vzc0Zvck1lZGlhVHlwZTptZWRpYVR5cGUgY29tcGxldGlvbkhhbmRsZXI6ZGVjaXNpb25IYW5k
bGVyLmdldCgpXTsKK30KKworTWVkaWFQZXJtaXNzaW9uUmVzdWx0IGNoZWNrQVZDYXB0dXJlQWNj
ZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlIHR5cGUpCit7CisgICAgQVZNZWRpYVR5cGUg
bWVkaWFUeXBlID0gdHlwZSA9PSBNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbyA/IEFWTWVkaWFU
eXBlQXVkaW8gOiBBVk1lZGlhVHlwZVZpZGVvOworICAgIGF1dG8gYXV0aG9yaXphdGlvblN0YXR1
cyA9IFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c0Zv
ck1lZGlhVHlwZTptZWRpYVR5cGVdOworICAgIGlmIChhdXRob3JpemF0aW9uU3RhdHVzID09IEFW
QXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCB8fCBhdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0
aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpCisgICAgICAgIHJldHVybiBNZWRpYVBlcm1pc3Np
b25SZXN1bHQ6OkRlbmllZDsKKyAgICBpZiAoYXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhv
cml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkKQorICAgICAgICByZXR1cm4gTWVkaWFQZXJtaXNz
aW9uUmVzdWx0OjpVbmtub3duOworICAgIHJldHVybiBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6Okdy
YW50ZWQ7Cit9CisKKyNlbmRpZiAvLyBIQVZFKEFWQ0FQVFVSRURFVklDRSkKKworI2lmIEhBVkUo
U1BFRUNIUkVDT0dOSVpFUikKKwordm9pZCByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25BY2Nlc3Mo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIGRlY2lzaW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1cyBzdGF0
dXMpIG11dGFibGUgeworICAgICAgICBib29sIGF1dGhvcml6ZWQgPSBzdGF0dXMgPT0gU0ZTcGVl
Y2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQ7CisgICAgICAgIGlmICgh
aXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGF1dGhvcml6ZWRdKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKKyAgICB9KTsKKyAgICBbZ2V0U0ZTcGVlY2hS
ZWNvZ25pemVyQ2xhc3MoKSByZXF1ZXN0QXV0aG9yaXphdGlvbjpkZWNpc2lvbkhhbmRsZXIuZ2V0
KCldOworfQorCitNZWRpYVBlcm1pc3Npb25SZXN1bHQgY2hlY2tTcGVlY2hSZWNvZ25pdGlvbkFj
Y2VzcygpCit7CisgICAgYXV0byBhdXRob3JpemF0aW9uU3RhdHVzID0gW2dldFNGU3BlZWNoUmVj
b2duaXplckNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c107CisgICAgaWYgKGF1dGhvcml6YXRp
b25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCB8
fCBhdXRob3JpemF0aW9uU3RhdHVzID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25T
dGF0dXNSZXN0cmljdGVkKQorICAgICAgICByZXR1cm4gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpE
ZW5pZWQ7CisgICAgaWYgKGF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZTcGVlY2hSZWNvZ25pemVy
QXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQpCisgICAgICAgIHJldHVybiBNZWRpYVBlcm1p
c3Npb25SZXN1bHQ6OkdyYW50ZWQ7CisgICAgcmV0dXJuIE1lZGlhUGVybWlzc2lvblJlc3VsdDo6
VW5rbm93bjsKK30KKworI2VuZGlmIC8vIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
LmgKaW5kZXggOGEwOTQ3NDVjMWYyNGJlMTA1ZGJiMDJhYjkxZTMwN2IzMWQ0ODZiMS4uNjJkN2E4
YTE4ZjZlYjgzOTRjYmUwMmNmYWM0Mzc2YTU0ZDBhMWZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtMTYxLDYgKzE2MSw3IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKFdFQl9BVVRITikKICAgICAgICAgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBh
bmVsKFdlYlBhZ2VQcm94eSYsIEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYkZyYW1l
UHJveHkmLCBGcmFtZUluZm9EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0aGVu
dGljYXRpb25QYW5lbFJlc3VsdCk+JiYpIGZpbmFsOwogI2VuZGlmCisgICAgICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJv
eHkmLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JikgZmluYWw7CiAKICAgICAgICAgVUlEZWxlZ2F0ZSYgbV91aURlbGVnYXRlOwogICAgIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCBkMDMzOGY4
ZDZlM2I5YTEzZGYyYWYxNTNhY2I1ZGViMzhlMWZjZDliLi4wZjllYTkwOWE2ZWY5OTkxMWJlODFl
ZWU5ZTA5Mzg5ODU3YTI2OGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW0KQEAgLTEzMzIsNCArMTMzMiwyNiBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjppbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNp
egogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4+KGRlbGVnYXRlKSBf
d2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNo
YW5nZWQ6bmV3U2l6ZV07CiB9CiAKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBv
bGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdl
UHJveHkmIHBhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGRlbGVnYXRl
ID0gKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPiltX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQo
KTsKKyAgICBpZiAoIWRlbGVnYXRlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkZvck9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KV0pIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBjaGVj
a2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLCBAc2Vs
ZWN0b3IoX3dlYlZpZXc6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkZvck9yaWdp
bjpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgW2RlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0
ZS5tX3dlYlZpZXcgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkZvck9yaWdpbjp3
cmFwcGVyKG9yaWdpbikgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhh
bmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGNvbXBsZXRpb25IYW5kbGVyLCB7IH0pLCBjaGVja2VyID0g
V1RGTW92ZShjaGVja2VyKV0gKEJPT0wgZ3JhbnRlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChj
aGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGdyYW50ZWQpOworICAgIH0pLmdldCgpXTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5Lm1tCmluZGV4IDk5NzU3NWRlMDIxNmE5YzBjZDc2YWZjYjQxYzc2NDFkYjEzMTVhZmIuLjhl
YmVjNTJjYzZiNjZkMTVhMjNlNTQ0ZTIzNGVlZDg1YWNlZjBiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmgiCiAKKyNpbXBvcnQgIk1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oIgogI2ltcG9ydCAi
U2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVENDU1BJLmgiCiAjaW1wb3J0ICJXZWJQYWdl
UHJveHkuaCIKQEAgLTM3LDQwICszOCwxMiBAQAogI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRh
dGlvblNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CiAK
LVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhUQ0MpCi1TT0ZUX0xJTksoVENDLCBUQ0NBY2Nl
c3NQcmVmbGlnaHQsIFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3VsdCwgKENGU3RyaW5nUmVmIHNlcnZp
Y2UsIENGRGljdGlvbmFyeVJlZiBvcHRpb25zKSwgKHNlcnZpY2UsIG9wdGlvbnMpKQotU09GVF9M
SU5LKFRDQywgVENDQWNjZXNzUHJlZmxpZ2h0V2l0aEF1ZGl0VG9rZW4sIFRDQ0FjY2Vzc1ByZWZs
aWdodFJlc3VsdCwgKENGU3RyaW5nUmVmIHNlcnZpY2UsIGF1ZGl0X3Rva2VuX3QgdG9rZW4sIENG
RGljdGlvbmFyeVJlZiBvcHRpb25zKSwgKHNlcnZpY2UsIHRva2VuLCBvcHRpb25zKSkKLVNPRlRf
TElOS19DT05TVEFOVChUQ0MsIGtUQ0NTZXJ2aWNlTWljcm9waG9uZSwgQ0ZTdHJpbmdSZWYpCi1T
T0ZUX0xJTktfQ09OU1RBTlQoVENDLCBrVENDU2VydmljZUNhbWVyYSwgQ0ZTdHJpbmdSZWYpCi0K
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBib29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5OjpwZXJtaXR0ZWRUb0NhcHR1cmVBdWRpbygpCiB7CiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUZsYWc7Ci0gICAgc3RhdGljIGJvb2wgZW50aXRsZWQgPSB0cnVlOwotICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIGlmICghY3VycmVudFByb2Nlc3NJc1NhbmRi
b3hlZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGludCByZXN1bHQgPSBzYW5k
Ym94X2NoZWNrKGdldHBpZCgpLCAiZGV2aWNlLW1pY3JvcGhvbmUiLCBTQU5EQk9YX0ZJTFRFUl9O
T05FKTsKLSAgICAgICAgZW50aXRsZWQgPSAhcmVzdWx0OwotICAgICAgICBpZiAocmVzdWx0ID09
IC0xKQotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciBjaGVja2luZyAnZGV2aWNlLW1p
Y3JvcGhvbmUnIHNhbmRib3ggYWNjZXNzLCBlcnJubz0lbGQiLCAobG9uZyllcnJubyk7Ci0gICAg
fSk7Ci0gICAgaWYgKCFlbnRpdGxlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmIC8v
IFBMQVRGT1JNKE1BQykKLQotICAgIHN0YXRpYyBUQ0NBY2Nlc3NQcmVmbGlnaHRSZXN1bHQgYWNj
ZXNzID0gVENDQWNjZXNzUHJlZmxpZ2h0KGdldGtUQ0NTZXJ2aWNlTWljcm9waG9uZSgpLCBOVUxM
KTsKLSAgICBpZiAoYWNjZXNzID09IGtUQ0NBY2Nlc3NQcmVmbGlnaHRHcmFudGVkKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgIHN0YXRpYyBib29sIGlzUGVybWl0dGVkID0gZHluYW1pY19v
YmpjX2Nhc3Q8TlNTdHJpbmc+KE5TQnVuZGxlLm1haW5CdW5kbGUuaW5mb0RpY3Rpb25hcnlbQCJO
U01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uIl0pLmxlbmd0aDsKLSAgICByZXR1cm4gaXNQZXJt
aXR0ZWQ7CisgICAgcmV0dXJuIGNoZWNrU2FuZGJveFJlcXVpcmVtZW50Rm9yVHlwZShNZWRpYVBl
cm1pc3Npb25UeXBlOjpBdWRpbykgJiYgY2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yVHlw
ZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbyk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsK
ICNlbmRpZgpAQCAtNzksNDkgKzUyLDEzIEBAIGJvb2wgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZUF1ZGlvKCkKIGJvb2wgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZVZpZGVvKCkK
IHsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGF0aWMgYm9vbCBlbnRpdGxlZCA9
IHRydWU7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgaWYgKCFj
dXJyZW50UHJvY2Vzc0lzU2FuZGJveGVkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgaW50IHJlc3VsdCA9IHNhbmRib3hfY2hlY2soZ2V0cGlkKCksICJkZXZpY2UtY2FtZXJhIiwg
U0FOREJPWF9GSUxURVJfTk9ORSk7Ci0gICAgICAgIGVudGl0bGVkID0gIXJlc3VsdDsKLSAgICAg
ICAgaWYgKHJlc3VsdCA9PSAtMSkKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3IgY2hl
Y2tpbmcgJ2RldmljZS1jYW1lcmEnIHNhbmRib3ggYWNjZXNzLCBlcnJubz0lbGQiLCAobG9uZyll
cnJubyk7Ci0gICAgfSk7Ci0gICAgaWYgKCFlbnRpdGxlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLQotICAgIHN0YXRpYyBUQ0NBY2Nlc3NQcmVmbGln
aHRSZXN1bHQgYWNjZXNzID0gVENDQWNjZXNzUHJlZmxpZ2h0KGdldGtUQ0NTZXJ2aWNlQ2FtZXJh
KCksIE5VTEwpOwotICAgIGlmIChhY2Nlc3MgPT0ga1RDQ0FjY2Vzc1ByZWZsaWdodEdyYW50ZWQp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgc3RhdGljIGJvb2wgaXNQZXJtaXR0ZWQgPSBk
eW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZvRGljdGlv
bmFyeVtAIk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlvbiJdKS5sZW5ndGg7Ci0gICAgcmV0dXJuIGlz
UGVybWl0dGVkOworICAgIHJldHVybiBjaGVja1NhbmRib3hSZXF1aXJlbWVudEZvclR5cGUoTWVk
aWFQZXJtaXNzaW9uVHlwZTo6VmlkZW8pICYmIGNoZWNrVXNhZ2VEZXNjcmlwdGlvblN0cmluZ0Zv
clR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6VmlkZW8pOwogI2Vsc2UKICAgICByZXR1cm4gZmFs
c2U7CiAjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi1zdGF0aWMgdm9pZCBy
ZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Qk9PTCBhdXRob3JpemVkKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQVZNZWRpYVR5cGUgdHlwZSkK
LXsKLSAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQk9PTCBhdXRob3JpemVkKSBtdXRh
YmxlIHsKLSAgICAgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewotICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgYXV0aG9yaXplZF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihhdXRob3JpemVkKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQpOwotICAgIH0p
OwotICAgIFtQQUw6OmdldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgcmVxdWVzdEFjY2Vzc0Zvck1l
ZGlhVHlwZTp0eXBlIGNvbXBsZXRpb25IYW5kbGVyOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07Ci19
Ci0KIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlcXVlc3RT
eXN0ZW1WYWxpZGF0aW9uKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSwgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eSYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjYWxsYmFjaykKIHsKICAgICBpZiAocGFnZS5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2
aWNlc0VuYWJsZWQoKSkgewpAQCAtMTMwLDM2ICs2Nyw0MCBAQCB2b2lkIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lzdGVtVmFsaWRhdGlvbihjb25zdCBX
ZWJQYQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBBZGQgVENDIGVudGl0bGVtZW50IGNoZWNrIGZv
ciBzY3JlZW5zaGFyaW5nLgotICAgIGJvb2wgcmVxdWlyZXNBdWRpb0NhcHR1cmUgPSByZXF1ZXN0
LnJlcXVpcmVzQXVkaW9DYXB0dXJlKCk7Ci0gICAgYm9vbCByZXF1aXJlc1ZpZGVvQ2FwdHVyZSA9
IHJlcXVlc3QucmVxdWlyZXNWaWRlb0NhcHR1cmUoKTsKLQotICAgIGF1dG8gbWljcm9waG9uZUF1
dGhvcml6YXRpb25TdGF0dXMgPSAhcmVxdWlyZXNBdWRpb0NhcHR1cmUgPyBBVkF1dGhvcml6YXRp
b25TdGF0dXNBdXRob3JpemVkIDogW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBhdXRo
b3JpemF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW9dOwotICAgIGlmICht
aWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNEZW5p
ZWQgfHwgbWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3Rh
dHVzUmVzdHJpY3RlZCkgeworICAgIGF1dG8gYXVkaW9TdGF0dXMgPSByZXF1ZXN0LnJlcXVpcmVz
QXVkaW9DYXB0dXJlKCkgPyBjaGVja0FWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNz
aW9uVHlwZTo6QXVkaW8pIDogTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpHcmFudGVkOworICAgIGlm
IChhdWRpb1N0YXR1cyA9PSBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkRlbmllZCkgewogICAgICAg
ICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNh
bWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPSAhcmVxdWlyZXNWaWRlb0NhcHR1cmUgPyBBVkF1dGhv
cml6YXRpb25TdGF0dXNBdXRob3JpemVkIDogW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3Mo
KSBhdXRob3JpemF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOkFWTWVkaWFUeXBlVmlkZW9dOwotICAg
IGlmIChjYW1lcmFBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0Rl
bmllZCB8fCBjYW1lcmFBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1
c1Jlc3RyaWN0ZWQpIHsKKyAgICBhdXRvIHZpZGVvU3RhdHVzID0gcmVxdWVzdC5yZXF1aXJlc1Zp
ZGVvQ2FwdHVyZSgpID8gY2hlY2tBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lv
blR5cGU6OlZpZGVvKSA6IE1lZGlhUGVybWlzc2lvblJlc3VsdDo6R3JhbnRlZDsKKyAgICBpZiAo
YXVkaW9TdGF0dXMgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpEZW5pZWQpIHsKICAgICAgICAg
Y2FsbGJhY2soZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCByZXF1
aXJlc1ZpZGVvVENDUHJvbXB0ID0gcmVxdWlyZXNWaWRlb0NhcHR1cmUgJiYgY2FtZXJhQXV0aG9y
aXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOwotICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSByZXF1aXJlc1ZpZGVvVENDUHJvbXB0ID8gW3JlcXVl
c3QgPSBtYWtlUmVmKHJlcXVlc3QpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29s
IGlzT0spIG11dGFibGUgewotICAgICAgICBpZiAoIWlzT0spIHsKLSAgICAgICAgICAgIGNhbGxi
YWNrKGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICByZXF1
ZXN0QVZDYXB0dXJlQWNjZXNzRm9yTWVkaWFUeXBlKFdURk1vdmUoY2FsbGJhY2spLCBBVk1lZGlh
VHlwZVZpZGVvKTsKLSAgICB9IDogV1RGTW92ZShjYWxsYmFjayk7CisgICAgaWYgKGF1ZGlvU3Rh
dHVzID09IE1lZGlhUGVybWlzc2lvblJlc3VsdDo6VW5rbm93bikgeworICAgICAgICByZXF1ZXN0
QVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbywgW3ZpZGVv
U3RhdHVzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIGF1dGhv
cml6ZWQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKHZpZGVvU3RhdHVzID09IE1lZGlhUGVy
bWlzc2lvblJlc3VsdDo6R3JhbnRlZCkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGF1dGhvcml6ZWQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JU
eXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OlZpZGVvLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBhdXRob3JpemVkKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIGJvb2wgcmVxdWly
ZXNBdWRpb1RDQ1Byb21wdCA9IHJlcXVpcmVzQXVkaW9DYXB0dXJlICYmIG1pY3JvcGhvbmVBdXRo
b3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWluZWQ7Ci0g
ICAgaWYgKCFyZXF1aXJlc0F1ZGlvVENDUHJvbXB0KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHRydWUpOworICAgIGlmICh2aWRlb1N0YXR1cyA9PSBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6
OlVua25vd24pIHsKKyAgICAgICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQ
ZXJtaXNzaW9uVHlwZTo6VmlkZW8sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY2FsbGJh
Y2spXShib29sIGF1dGhvcml6ZWQpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoYXV0aG9yaXplZCk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIEFWTWVkaWFUeXBlQXVkaW8pOworCisgICAgY2FsbGJhY2sodHJ1ZSk7CiB9CiAj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA4NjYyMzhiYWZl
OGYwNWMxN2EyM2Q2ZjljYzk5YTIxMDE0ZGQ5MzEwLi5jZDMwMTQxZmNlYTYyMjJkZTViYTdjZjFj
NjdhOWEyZjY0ZDAyMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtNDEsNiArNDEsMTAgQEAKICNpbXBvcnQg
PHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJv
eFNQSS5oPgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgIkFjY2Vzc2liaWxp
dHlTdXBwb3J0U1BJLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQog
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yQ29uc3RhbnRzLmg+CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhUGVybWlzc2lvblV0
aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0
aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTE3YWNjZGJlYjdlOWNiYmVkNzgwMzI0MTQ2OWM2ODRlNzI1MTFh
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01lZGlhUGVybWlz
c2lvblV0aWxpdGllcy5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgTWVkaWFQZXJtaXNz
aW9uVHlwZSB7CisgICAgQXVkaW8sCisgICAgVmlkZW8KK307CisKK2VudW0gY2xhc3MgTWVkaWFQ
ZXJtaXNzaW9uUmVzdWx0IHsKKyAgICBEZW5pZWQsCisgICAgR3JhbnRlZCwKKyAgICBVbmtub3du
Cit9OworCisjaWYgUExBVEZPUk0oQ09DT0EpCitib29sIGNoZWNrU2FuZGJveFJlcXVpcmVtZW50
Rm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlKTsKK2Jvb2wgY2hlY2tVc2FnZURlc2NyaXB0aW9u
U3RyaW5nRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlKTsKK2Jvb2wgY2hlY2tVc2FnZURlc2Ny
aXB0aW9uU3RyaW5nRm9yU3BlZWNoUmVjb2duaXRpb24oKTsKKyNlbmRpZgorCisjaWYgSEFWRShB
VkNBUFRVUkVERVZJQ0UpCit2b2lkIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlh
UGVybWlzc2lvblR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhdXRob3JpemVkKT4m
Jik7CitNZWRpYVBlcm1pc3Npb25SZXN1bHQgY2hlY2tBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1l
ZGlhUGVybWlzc2lvblR5cGUpOworI2VuZGlmCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIp
Cit2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvbkFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wgYXV0aG9yaXplZCk+JiYpOworTWVkaWFQZXJtaXNzaW9uUmVzdWx0IGNoZWNrU3Bl
ZWNoUmVjb2duaXRpb25BY2Nlc3MoKTsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDlhZTAyNzJhMzExNDlk
MTA5MWY4ZGIxZTU3ODU2Mjk2YTAyNWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKQEAgLTAs
MCArMSwyMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIgorCisjaW5jbHVkZSAiQVBJU2Vj
dXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJBUElVSUNsaWVudC5oIgorI2luY2x1ZGUgIk1lZGlh
UGVybWlzc2lvblV0aWxpdGllcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcihXZWJQYWdlUHJveHkmIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKworU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6flNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXIoKQoreworICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IG1fcmVxdWVzdHMpCisg
ICAgICAgIHJlcXVlc3QtPmNvbXBsZXRlKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lz
aW9uOjpEZW55KTsKK30KKyAgICAKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcjo6cmVxdWVzdChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYg
Y29tcGxldGlvbnRIYW5kbGVyKQoreworICAgIG1fcmVxdWVzdHMuYXBwZW5kKFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShvcmlnaW4sIFdURk1vdmUoY29tcGxldGlv
bnRIYW5kbGVyKSkpOworICAgIGlmIChtX3JlcXVlc3RzLnNpemUoKSA9PSAxKQorICAgICAgICBz
dGFydE5leHRSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6c3RhcnROZXh0UmVxdWVzdCgpCit7CisgICAgaWYgKG1fcmVxdWVzdHMuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUQ0Mgc3RhdHVzIG1heSBoYXZlIGNoYW5n
ZWQgYmV0d2VlbiByZXF1ZXN0cy4KKyAgICBtX21pY3JvcGhvbmVDaGVjayA9IENoZWNrUmVzdWx0
OjpVbmtub3duOworICAgIG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPSBDaGVja1Jl
c3VsdDo6VW5rbm93bjsKKworICAgIHN0YXJ0UHJvY2Vzc2luZ1JlcXVlc3QoKTsKK30KKwordm9p
ZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydFByb2Nlc3NpbmdSZXF1
ZXN0KCkKK3sKKyNpZiBQTEFURk9STShDT09DQSkKKyAgICBpZiAoIWNoZWNrU2FuZGJveFJlcXVp
cmVtZW50Rm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbykpIHsKKyAgICAgICAgY29t
cGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbjo6
RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIGlmICghY2hlY2tN
aWNyb3Bob25lQWNjZXNzKCkgfHwgIWNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNz
KCkgfHwgbV91c2VyUGVybWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAg
ICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25E
ZWNpc2lvbjo6RGVueSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb250aW51ZVBy
b2Nlc3NpbmdSZXF1ZXN0KCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6Y29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgpCit7CisgICAgaWYgKCFtX3BhZ2Uu
cHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCkpIHsKKyAgICAgICAgaWYg
KG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24p
IHsKKyAgICAgICAgICAgIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQobV9zcGVlY2hS
ZWNvZ25pdGlvblNlcnZpY2VDaGVjayA9PSBDaGVja1Jlc3VsdDo6R3JhbnRlZCk7CisKKyAgICAg
ICAgaWYgKG1fbWljcm9waG9uZUNoZWNrID09IENoZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAg
ICAgICAgICByZXF1ZXN0TWljcm9waG9uZUFjY2VzcygpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIEFTU0VSVChtX21pY3JvcGhvbmVDaGVjayA9PSBDaGVja1Jlc3Vs
dDo6R3JhbnRlZCk7CisgICAgfQorCisgICAgaWYgKG1fdXNlclBlcm1pc3Npb25DaGVjayA9PSBD
aGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAgICByZXF1ZXN0VXNlclBlcm1pc3Npb24oKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQobV91c2VyUGVybWlzc2lvbkNoZWNr
ID09IENoZWNrUmVzdWx0OjpHcmFudGVkKTsKKworICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3Qo
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkdyYW50KTsKK30KKwordm9pZCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0
KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKQoreworICAgIEFT
U0VSVCghbV9yZXF1ZXN0cy5pc0VtcHR5KCkpOworICAgIGF1dG8gY3VycmVudFJlcXVlc3QgPSBt
X3JlcXVlc3RzLnRha2VGaXJzdCgpOworICAgIGN1cnJlbnRSZXF1ZXN0LT5jb21wbGV0ZShkZWNp
c2lvbik7CisKKyAgICBzdGFydE5leHRSZXF1ZXN0KCk7Cit9CisKK2Jvb2wgU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKCkKK3sKKyAgICBp
ZiAobV9wYWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX21pY3JvcGhvbmVDaGVjayA9PSBDaGVja1Jl
c3VsdDo6VW5rbm93bikgeworI2lmIEhBVkUoQVZDQVBUVVJFREVWSUNFKQorICAgICAgICBhdXRv
IHJlc3VsdCA9IGNoZWNrQVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBl
OjpBdWRpbyk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpV
bmtub3duKQorICAgICAgICAgICAgbV9taWNyb3Bob25lQ2hlY2sgPSByZXN1bHQgPT0gTWVkaWFQ
ZXJtaXNzaW9uUmVzdWx0OjpHcmFudGVkID8gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBDaGVja1Jl
c3VsdDo6RGVuaWVkOworICAgICAgICBlbHNlIGlmICghY2hlY2tVc2FnZURlc2NyaXB0aW9uU3Ry
aW5nRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbykpCisgICAgICAgICAgICBtX21p
Y3JvcGhvbmVDaGVjayA9IENoZWNrUmVzdWx0OjpEZW5pZWQ7CisjZWxzZQorICAgICAgICBtX21p
Y3JvcGhvbmVDaGVjayA9IENoZWNrUmVzdWx0OjpHcmFudGVkOworI2VuZGlmCisgICAgfQorCisg
ICAgcmV0dXJuIG1fbWljcm9waG9uZUNoZWNrICE9IENoZWNrUmVzdWx0OjpEZW5pZWQ7Cit9CisK
K2Jvb2wgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hSZWNv
Z25pdGlvblNlcnZpY2VBY2Nlc3MoKQoreworICAgIGlmIChtX3BhZ2UucHJlZmVyZW5jZXMoKS5t
b2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
aWYgKG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25v
d24pIHsKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisgICAgICAgIGF1dG8gcmVzdWx0ID0g
Y2hlY2tTcGVlY2hSZWNvZ25pdGlvbkFjY2VzcygpOworICAgICAgICBpZiAocmVzdWx0ICE9IE1l
ZGlhUGVybWlzc2lvblJlc3VsdDo6VW5rbm93bikKKyAgICAgICAgICAgIG1fc3BlZWNoUmVjb2du
aXRpb25TZXJ2aWNlQ2hlY2sgPSByZXN1bHQgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpHcmFu
dGVkID8gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBDaGVja1Jlc3VsdDo6RGVuaWVkOworICAgICAg
ICBlbHNlIGlmICghY2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yU3BlZWNoUmVjb2duaXRp
b24oKSkKKyAgICAgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPSBDaGVj
a1Jlc3VsdDo6RGVuaWVkOworI2Vsc2UKKyAgICAgICAgbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZp
Y2VDaGVjayA9IENoZWNrUmVzdWx0OjpHcmFudGVkOworI2VuZGlmCisgICAgfQorCisgICAgcmV0
dXJuIG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgIT0gQ2hlY2tSZXN1bHQ6OkRlbmll
ZDsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0
U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVChtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrID09IENo
ZWNrUmVzdWx0OjpVbmtub3duKTsKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKyAgICBy
ZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25BY2Nlc3MoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIodGhpcyldKGJvb2wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1Ro
aXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9zcGVlY2hSZWNvZ25pdGlvblNl
cnZpY2VDaGVjayA9IGF1dGhvcml6ZWQgPyBDaGVja1Jlc3VsdDo6R3JhbnRlZCA6IENoZWNrUmVz
dWx0OjpEZW5pZWQ7CisgICAgICAgIGlmIChtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNr
ID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAgICAgICAgICAgIGNvbXBsZXRlQ3VycmVudFJl
cXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29udGludWVQcm9jZXNzaW5nUmVx
dWVzdCgpOworICAgIH0pOworI2VuZGlmCit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlcjo6cmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3MoKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fbWljcm9waG9uZUNoZWNrID09IENoZWNrUmVz
dWx0OjpVbmtub3duKTsKKworI2lmIEhBVkUoQVZDQVBUVVJFREVWSUNFKQorICAgIHJlcXVlc3RB
VkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvLCBbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYm9vbCBhdXRob3JpemVkKSB7CisgICAgICAg
IGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9taWNyb3Bo
b25lQ2hlY2sgPSBhdXRob3JpemVkID8gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBDaGVja1Jlc3Vs
dDo6RGVuaWVkOworICAgICAgICBpZiAobV9taWNyb3Bob25lQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6
OkRlbmllZCkgeworICAgICAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25EZWNpc2lvbjo6RGVueSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCk7CisgICAgfSk7
CisjZW5kaWYKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpy
ZXF1ZXN0VXNlclBlcm1pc3Npb24oKQoreworICAgIEFTU0VSVCghbV9yZXF1ZXN0cy5pc0VtcHR5
KCkpOworICAgIGF1dG8mIGN1cnJlbnRSZXF1ZXN0ID0gbV9yZXF1ZXN0cy5maXJzdCgpOworCisg
ICAgYXV0byBjbGllbnRPcmlnaW4gPSBjdXJyZW50UmVxdWVzdC0+b3JpZ2luKCk7CisgICAgYXV0
byByZXF1ZXN0aW5nT3JpZ2luID0gY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbi5zZWN1cml0eU9y
aWdpbigpOworICAgIGF1dG8gdG9wT3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1
cml0eU9yaWdpbigpOworICAgIGlmICghcmVxdWVzdGluZ09yaWdpbi0+aXNTYW1lT3JpZ2luQXMo
dG9wT3JpZ2luKSkgeworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpXShib29sIGdyYW50ZWQpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPSBncmFudGVk
ID8gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBDaGVja1Jlc3VsdDo6RGVuaWVkOworICAgICAgICBp
ZiAobV91c2VyUGVybWlzc2lvbkNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAgICAg
ICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
RGVjaXNpb246OkRlbnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgpOworICAgIH07CisgICAgbV9wYWdlLnVpQ2xp
ZW50KCkuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdCht
X3BhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0b3BPcmlnaW4uZ2V0KCkpLmdldCgp
LCBXVEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzZTRlNjFhZWM3MTM3ZmJiYWE5
ZDFiMzlkNjQwMjU3MjQ1ZmZhMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgKQEAgLTAsMCArMSw2
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdl
UHJveHk7CisKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcj4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoV2ViUGFnZVByb3h5Jik7CisgICAgflNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoKTsKKyAgICB2b2lkIHJlcXVlc3QoY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYpOworICAgIHZvaWQgcmVzZXQoKTsKKworcHJp
dmF0ZToKKyAgICB2b2lkIHN0YXJ0TmV4dFJlcXVlc3QoKTsKKyAgICB2b2lkIHN0YXJ0UHJvY2Vz
c2luZ1JlcXVlc3QoKTsKKyAgICB2b2lkIGNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoKTsKKyAg
ICB2b2lkIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
RGVjaXNpb24pOworICAgIGJvb2wgY2hlY2tNaWNyb3Bob25lQWNjZXNzKCk7CisgICAgYm9vbCBj
aGVja1NwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpOworICAgIHZvaWQgcmVxdWVzdE1p
Y3JvcGhvbmVBY2Nlc3MoKTsKKyAgICB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNlcnZp
Y2VBY2Nlc3MoKTsKKyAgICB2b2lkIHJlcXVlc3RVc2VyUGVybWlzc2lvbigpOworCisgICAgV2Vi
UGFnZVByb3h5JiBtX3BhZ2U7CisgICAgRGVxdWU8UmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3Q+PiBtX3JlcXVlc3RzOworICAgIGVudW0gY2xhc3MgQ2hlY2tSZXN1bHQgeyBE
ZW5pZWQsIEdyYW50ZWQsIFVua25vd24gfTsKKyAgICBDaGVja1Jlc3VsdCBtX3NhbmRib3hDaGVj
ayB7IENoZWNrUmVzdWx0OjpVbmtub3duIH07CisgICAgQ2hlY2tSZXN1bHQgbV9taWNyb3Bob25l
Q2hlY2sgeyBDaGVja1Jlc3VsdDo6VW5rbm93biB9OworICAgIENoZWNrUmVzdWx0IG1fc3BlZWNo
UmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgeyBDaGVja1Jlc3VsdDo6VW5rbm93biB9OworICAgIENo
ZWNrUmVzdWx0IG1fdXNlclBlcm1pc3Npb25DaGVjayB7IENoZWNrUmVzdWx0OjpVbmtub3duIH07
CisgICAgYm9vbCBtX2lzVXNpbmdNb2NrZWRDYXB0dXJlRGV2aWNlIHsgZmFsc2UgfTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIyNTE3YjNlZmE2MTI4OWQ0Mzc0M2NiNGY0Nzc5MTY1ZDBlMGEzOGUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4K
KyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2VudW0gY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24gOiBib29s
IHsgRGVueSwgR3JhbnQgfTsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVl
c3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3Q+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KG9yaWdpbiwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBsZXRlKFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKQorICAgIHsKKyAgICAgICAgYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGVjaXNpb24pOworICAgIH0KKworICAgIGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmln
aW47IH0KKworcHJpdmF0ZToKKyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICAgICAgOiBtX29yaWdpbihvcmlnaW4pCisgICAgICAgICwgbV9jb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICB7IH0KKworICAgIFdlYkNv
cmU6OkNsaWVudE9yaWdpbiBtX29yaWdpbjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4gbV9jb21wbGV0aW9uSGFuZGxlcjsK
K307CisKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6U3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrPiBjcmVhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKSk7CisgICAgfQorCisgICAgdm9pZCBjb21wbGV0ZShib29sIGdyYW50ZWQpIHsg
bV9jb21wbGV0aW9uSGFuZGxlcihncmFudGVkKTsgfQorCitwcml2YXRlOgorICAgIFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICB7IH0KKworICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+IG1fY29tcGxldGlvbkhhbmRsZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9u
U2VydmVyLmNwcAppbmRleCA5Y2U5NzRjZjlkYWE1NjU4MmVlYmNmYTAzMDY3MGI3YTM3NWJlNzFl
Li45NmFkYzc4NmU0YjhjOGY4ZWQ3Mjk4MmI1YjdkNjFiMDUyNTg2Y2I2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCkBAIC0z
MiwxNSArMzIsMTYgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVNwZWVjaFJlY29nbml0aW9u
U2VydmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNv
bm5lY3Rpb24sIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyKQor
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6
OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiBwZXJt
aXNzaW9uQ2hlY2tlcikKICAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQog
ICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX3Blcm1pc3Npb25DaGVja2Vy
KFdURk1vdmUocGVybWlzc2lvbkNoZWNrZXIpKQogewogfQogCi12b2lkIFNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYg
cmVxdWVzdEluZm8pCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50
aWZpZXIsIFN0cmluZyYmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0
cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmln
aW4pCiB7Ci0gICAgYXV0byByZXF1ZXN0ID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0OjpjcmVhdGUoV1RGTW92ZShyZXF1ZXN0SW5mbykpOworICAgIGF1dG8gcmVxdWVzdCA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PihTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3RJbmZvIHsgY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShsYW5nKSwgY29udGlu
dW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVybmF0aXZlcywgV1RGTW92ZShvcmlnaW4pIH0p
OwogICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFwcGVuZChXVEZNb3ZlKHJlcXVlc3QpKTsKIAogICAg
IHByb2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJZk5lZWRlZCgpOwpAQCAtNzIsOCArNzMsNyBAQCB2
b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjphYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZAogewogICAgIGlmIChtX2N1cnJlbnRSZXF1ZXN0ICYmIG1f
Y3VycmVudFJlcXVlc3QtPmNsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlmaWVyKSB7
CiAgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBudWxscHRyOwotICAgICAgICBhdXRvIHVwZGF0
ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoY2xpZW50SWRlbnRp
ZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOwotICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OkRpZFJlY2Vp
dmVVcGRhdGUodXBkYXRlKSwgbV9pZGVudGlmaWVyKTsKKyAgICAgICAgc2VuZFVwZGF0ZShjbGll
bnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7
CiAKICAgICAgICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7CiAgICAgICAg
IHJldHVybjsKQEAgLTg0LDEzICs4NCwxMiBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
OjphYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZAogCiB2
b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpyZW1vdmVQZW5kaW5nUmVxdWVzdChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50
aWZpZXIpCiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4g
dGFrZW5SZXF1ZXN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3Q+IHRha2VuUmVxdWVzdDsKICAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0cyA9IHN0
ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nUmVxdWVzdHMsIHsgfSk7CiAgICAgd2hpbGUgKCFwZW5kaW5n
UmVxdWVzdHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gcmVxdWVzdCA9IHBlbmRpbmdSZXF1
ZXN0cy50YWtlRmlyc3QoKTsKICAgICAgICAgaWYgKHJlcXVlc3QtPmNsaWVudElkZW50aWZpZXIo
KSA9PSBjbGllbnRJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBhdXRvIHVwZGF0ZSA9IFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoY2xpZW50SWRlbnRpZmllciwgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOwotICAgICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpEaWRSZWNlaXZlVXBk
YXRlKHVwZGF0ZSksIG1faWRlbnRpZmllcik7CisgICAgICAgICAgICBzZW5kVXBkYXRlKGNsaWVu
dElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIG1fcGVuZGluZ1JlcXVl
c3RzLmFwcGVuZChXVEZNb3ZlKHJlcXVlc3QpKTsKQEAgLTEwNSwxMiArMTA0LDUxIEBAIHZvaWQg
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpCiAgICAgfQogfQogCi12b2lkIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpzdGFydFBvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0JikKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0UG9jZXNzaW5nUmVxdWVz
dChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3QpCiB7CisgICAgbV9w
ZXJtaXNzaW9uQ2hlY2tlcihyZXF1ZXN0LmNsaWVudE9yaWdpbigpLCBbdGhpcywgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cih0aGlzKSwgd2Vha1JlcXVlc3QgPSBtYWtlV2Vha1B0cihyZXF1ZXN0KV0o
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24gZGVjaXNpb24pIG11dGFibGUgewor
ICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlm
ICghd2Vha1JlcXVlc3QpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgQVNTRVJUKG1f
Y3VycmVudFJlcXVlc3QuZ2V0KCkgPT0gd2Vha1JlcXVlc3QuZ2V0KCkpOworICAgICAgICBpZiAo
ZGVjaXNpb24gPT0gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpIHsK
KyAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNo
UmVjb2duaXRpb25FcnJvclR5cGU6Ok5vdEFsbG93ZWQsICJQZXJtaXNzaW9uIGNoZWNrIGZhaWxl
ZCJfcyB9OworICAgICAgICAgICAgc2VuZFVwZGF0ZSh3ZWFrUmVxdWVzdC0+Y2xpZW50SWRlbnRp
ZmllcigpLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yLCBlcnJv
cik7CisgICAgICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IHByb2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJZk5lZWRlZCgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgqd2Vha1Jl
cXVlc3QpOworICAgIH0pOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpjb250
aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYp
Cit7CisgICAgLy8gVE9ETzogc3RhcnQgY2FwdHVyaW5nIGF1ZGlvIGFuZCByZWNvZ25pemluZy4K
IH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RvcFByb2Nlc3NpbmdSZXF1ZXN0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpCit2b2lkIFNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjpzZW5kVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlIHR5
cGUsIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+IGVycm9yLCBPcHRpb25hbDxWZWN0
b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gcmVzdWx0KQogeworICAgIGF1dG8gdXBk
YXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVu
dGlmaWVyLCB0eXBlKTsKKyAgICBpZiAodHlwZSA9PSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5
cGU6OkVycm9yKQorICAgICAgICB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRlbnRpZmllciwgKmVycm9yKTsKKyAgICBpZiAodHlw
ZSA9PSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlJlc3VsdCkKKyAgICAgICAgdXBkYXRl
ID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZVJlc3VsdChjbGllbnRJ
ZGVudGlmaWVyLCAqcmVzdWx0KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb246OkRpZFJlY2VpdmVVcGRhdGUodXBkYXRlKSwgbV9pZGVudGlmaWVyKTsK
K30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RvcFByb2Nlc3NpbmdSZXF1ZXN0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICAvLyBU
T0RPOiBzdG9wIGNhcHR1cmluZyBhdWRpbyBhbmQgZmluYWxpemluZyByZWNvZ25pdGlvbiByZXN1
bHQgd2l0aCBjYXB0dXJlZCBhdWRpby4KKyAgICBzZW5kVXBkYXRlKHJlcXVlc3QuY2xpZW50SWRl
bnRpZmllcigpLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6Ok5vTWF0Y2gp
OworICAgIHNlbmRVcGRhdGUocmVxdWVzdC5jbGllbnRJZGVudGlmaWVyKCksIFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKTsKKyAgICBBU1NFUlQobV9jdXJyZW50UmVx
dWVzdC5nZXQoKSA9PSAmcmVxdWVzdCk7CisgICAgbV9jdXJyZW50UmVxdWVzdCA9IG51bGxwdHI7
CisgICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7CiB9CiAKIElQQzo6Q29u
bmVjdGlvbiogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29n
bml0aW9uU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5oCmluZGV4IDdhYTI0MTYzOGI5YzM1MTQ5NjY5ODQ0MzJkYmM1MzBkZjg0ODRhMzcu
LjU3ZmNjNjc3NzA2MGE4OTMzNWZjNWNhYTVhMDBjMmE4MDk5NWZhMzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaApAQCAtMjgsMjEg
KzI4LDMwIEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NwZWVjaFJlY29nbml0aW9uRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2du
aXRpb25SZXN1bHREYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2VudW0gY2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOworc3RydWN0
IENsaWVudE9yaWdpbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlByb2Nl
c3NQcm94eTsKK2VudW0gY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24g
OiBib29sOwogCiB1c2luZyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgPSBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcjsKK3VzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNo
ZWNrZXIgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYm
KT47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmVyIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVy
LCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVj
dGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyKTsKKyAgICBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJik7
CiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8m
Jik7CisgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50
ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiYpOwogICAgIHZvaWQgc3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyKTsKICAgICB2b2lkIGFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogICAgIHZvaWQgaW52YWxpZGF0ZShX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKQEAg
LTUxLDkgKzYwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1
ZXN0SWZOZWVkZWQoKTsKICAgICB2b2lkIHJlbW92ZVBlbmRpbmdSZXF1ZXN0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogCi0gICAgLy8gVE9E
TzogaW1wbGVtZW50IHRoZXNlLgogICAgIHZvaWQgc3RhcnRQb2Nlc3NpbmdSZXF1ZXN0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOworICAgIHZvaWQgY29udGludWVQcm9jZXNz
aW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKICAgICB2b2lk
IHN0b3BQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Qm
KTsKKyAgICB2b2lkIHNlbmRVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
LCBPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiA9IFdURjo6bnVsbG9w
dCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+
ID0gV1RGOjpudWxsb3B0KTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3Zl
cnJpZGU7CkBAIC02NCw4ICs3NCw5IEBAIHByaXZhdGU6CiAKICAgICBSZWY8SVBDOjpDb25uZWN0
aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVy
IG1faWRlbnRpZmllcjsKLSAgICBEZXF1ZTxSZWY8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0Pj4gbV9wZW5kaW5nUmVxdWVzdHM7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Pj4gbV9wZW5kaW5nUmVxdWVz
dHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVj
a2VyIG1fcGVybWlzc2lvbkNoZWNrZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVy
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIubWVzc2FnZXMuaW4KaW5kZXggZTMxYmVmYjA5NWFkODhkYWRjMzBmMDk5NWM1N2U0MTUz
NzNmMTJmNC4uYTI4YjkyMWNiOTY0YWZhZjJmZjIyYzkxNmJiZTQ2ZTgyOTkxMzI5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogIAogIG1lc3NhZ2VzIC0+
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyIE5vdFJlZkNvdW50ZWQgewotICAgIFN0YXJ0KHN0cnVj
dCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIGluZm8pCisgICAgU3RhcnQo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVu
dGlmaWVyLCBTdHJpbmcgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRz
LCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4g
b3JpZ2luKQogICAgIFN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBJbnZhbGlk
YXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIg
aWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IGE4ODczOGM0ODI3Y2NhZGRkYmMzZTEzZDcwODljZDAxOTkwNjdkYTkuLjJmMzdhNzVlMDkzNWQ1
NDE1YThkZmRlMzMxM2RkYTgyYzFkMzQ2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtODYsNiArODYsNyBAQAogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFn
ZVByb3h5LmgiCiAjaW5jbHVkZSAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgogI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRl
LmgiCkBAIC00ODkyLDYgKzQ4OTMsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlTWFp
bkRvY3VtZW50KEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIFVOVVNFRF9QQVJBTShmcmFt
ZUlEKTsKICNlbmRpZgogICAgIG1faXNRdW90YUluY3JlYXNlRGVuaWVkID0gZmFsc2U7CisKKyAg
ICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBudWxscHRyOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6dmlld0lzQmVjb21pbmdWaXNpYmxlKCkKQEAgLTc2MDUsNiArNzYw
OCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVz
ZXRTdGF0ZVJlYXNvbikKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgIG1fd2Vic2l0ZURhdGFT
dG9yZS0+YXV0aGVudGljYXRvck1hbmFnZXIoKS5jYW5jZWxSZXF1ZXN0KG1fd2ViUGFnZUlELCBX
VEY6Om51bGxvcHQpOwogI2VuZGlmCisKKyAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIgPSBudWxscHRyOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFm
dGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNzVGVybWluYXRpb25SZWFzb24gdGVybWluYXRpb25SZWFz
b24pCkBAIC0xMDI0Niw2ICsxMDI1MSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hB
Y3Rpdml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZygpCiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBpZiAoIW1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcikKKyAgICAgICAg
bV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyPigqdGhpcyk7CisKKyAgICBtX3NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXItPnJlcXVlc3QoY2xpZW50T3JpZ2luLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCA3Y2VmYmZjNjk0NWVkZmU0M2FlNTZjMmQ1NjRjMGU4MWU5NWJiNGE2Li5mYTRlYTA2
YjQ0ZmMxMDc1YTQ5YTg4OTM0ZDU2ZTRmMTZkYWUyYzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMzA1LDYgKzMwNSw3IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJl
ZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YTsKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOwogY2xhc3MgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTsKIGNsYXNzIFNlY0tl
eVByb3h5U3RvcmU7CitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOwog
Y2xhc3MgVXNlckRhdGE7CiBjbGFzcyBWaWV3U25hcHNob3Q7CiBjbGFzcyBWaXNpdGVkTGlua1N0
b3JlOwpAQCAtMzY1LDYgKzM2Niw3IEBAIHN0cnVjdCBVc2VyTWVzc2FnZTsKIAogZW51bSBjbGFz
cyBOZWdvdGlhdGVkTGVnYWN5VExTIDogYm9vbDsKIGVudW0gY2xhc3MgUHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCA6IGJvb2w7CitlbnVtIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkRlY2lzaW9uIDogYm9vbDsKIGVudW0gY2xhc3MgVW5kb09yUmVkbyA6IGJvb2w7CiBlbnVt
IGNsYXNzIFdlYkNvbnRlbnRNb2RlIDogdWludDhfdDsKIApAQCAtMTgxOSw2ICsxODIxLDggQEAg
cHVibGljOgogICAgIHZvaWQgc2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkoU2Vjb25kcyBj
YXB0dXJlUmVwb3J0aW5nRGVsYXkpIHsgbV9tZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheSA9IGNh
cHR1cmVSZXBvcnRpbmdEZWxheTsgfQogICAgIHNpemVfdCBzdXNwZW5kTWVkaWFQbGF5YmFja0Nv
dW50ZXIoKSB7IHJldHVybiBtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlcjsgfQogCisgICAg
dm9pZCByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uRGVjaXNpb24pPiYmKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsK
ICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjg0OSw2ICsyODUzLDkgQEAgcHJp
dmF0ZToKICAgICB9OwogICAgIE9wdGlvbmFsPFNwZWVjaFN5bnRoZXNpc0RhdGE+IG1fc3BlZWNo
U3ludGhlc2lzRGF0YTsKICNlbmRpZgorCisgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI+IG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcjsKKwogI2lmIFVTRShESVJFQ1QyRCkKICAgICBDT01QdHI8SUQzRDExRGV2aWNlMT4gbV9k
ZXZpY2U7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCmluZGV4IDdmODMxNWI3M2NmNDI5MDNmMjY3YTE0NDFiNGM2ODI0ZmU1YmY4ODkuLjY5Mjk3
YzI2NzJkODU0YzUyNjliOGFiZjAyNWZhNDdmODUwZjM3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IlBsdWdpbkluZm9TdG9yZS5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiVGV4dENo
ZWNrZXJTdGF0ZS5oIgpAQCAtMTcxMyw3ICsxNzE0LDE5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklk
ZW50CiB7CiAgICAgYXV0byBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1fc3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXJNYXAuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOwogICAgIEFTU0VSVChzcGVl
Y2hSZWNvZ25pdGlvblNlcnZlci5pc05ld0VudHJ5KTsKLSAgICBzcGVlY2hSZWNvZ25pdGlvblNl
cnZlci5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uU2VydmVy
PihtYWtlUmVmKCpjb25uZWN0aW9uKCkpLCBpZGVudGlmaWVyKTsKKyAgICBzcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9u
U2VydmVyPihtYWtlUmVmKCpjb25uZWN0aW9uKCkpLCBpZGVudGlmaWVyLCBbaWRlbnRpZmllciwg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNp
b24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGF1dG8qIHBhZ2UgOiB3ZWFr
VGhpcy0+cGFnZXMoKSkgeworICAgICAgICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+d2ViUGFnZUlE
KCkgPT0gaWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgIHBhZ2UtPnJlcXVlc3RTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb24ob3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNp
b246OkRlbnkpOworICAgIH0pOwogICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllciwg
KnNwZWVjaFJlY29nbml0aW9uU2VydmVyLml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMwMjc0OTRi
NzNhY2NlYzVlZmQ4MWM2OTRkM2E4NTNiNGVkZWYwY2EuLjkxNjBhMTJkZmQ1ZGIwMzZiZGE3N2Vh
ZjNjNTk1MDQwMjEwZTM1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTM3NCw2ICsxMzc0LDcgQEAKIAkJOTMzRTgzNTUyM0EwN0Mw
NjAwREVGMjg5IC8qIFdlYklEQlNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTMzRTgzNTMyM0EwN0JGODAwREVGMjg5IC8qIFdlYklEQlNlcnZl
ci5oICovOyB9OwogCQk5MzNFODM1QTIzQTFBRTI4MDBERUYyODkgLyogV2ViSURCU2VydmVyTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
M0U4MzU5MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlcy5oICovOyB9Owog
CQk5MzNFODM1QjIzQTFCNzUwMDBERUYyODkgLyogV2ViSURCU2VydmVyTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzM0U4
MzU4MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OworCQk5MzQyNTg5QTI1NUI1MzVBMDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQy
NTg5ODI1NUI1MzRCMDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggKi87IH07
CiAJCTkzNEI3MjQ0MTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEI3MjQzMTlG
NUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzU2RjJEQzIxNTJCNkI1MDBFNkQ1
REYgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTMwMjFGNDc5M0IyMDBEQ0RDMEEgLyogV2ViU1dDbGll
bnRDb25uZWN0aW9uLmggKi87IH07CiAJCTkzNTZGMkREMjE1MkI2RjYwMEU2RDVERiAvKiBXZWJT
V1NlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzQkEwNEUwMjE1MUFERjQwMDdGNDU1RiAvKiBXZWJTV1NlcnZlckNvbm5lY3Rp
b24uaCAqLzsgfTsKQEAgLTE0MDgsNiArMTQwOSw5IEBACiAJCTkzRDZCNzg3MjU0Q0NEOEMwMDU4
REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3ODYyNTRDQ0Q4QjAw
NThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07
CiAJCTkzRDZCNzg4MjU0Q0NEOTQwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25NZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRDZCNzdFMjU0Q0NBQkIwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25NZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKIAkJOTNENkI3OEEyNTRDRDQz
RTAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2
Qjc3RDI1NENDQUJCMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTNENkI3QjQyNTUyNjhENTAwNThERDNBIC8qIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi87IH07CisJCTkzRDZCN0I1MjU1MjY4
RDcwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdCMjI1NTI2OEEy
MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovOyB9Owor
CQk5M0Q2QjdCOTI1NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNkE0RUQxQkM1
REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y1NDlCNDFFMzE3NEI3MDAwRTcyMzkgLyog
V0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29u
ZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsg
fTsKIAkJOTUwRjI4ODAyNTI0MTRFQTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwRjI4N0Uy
NTI0MTRFOTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oICovOyB9OwpAQCAtNDQ2
OCw2ICs0NDcyLDggQEAKIAkJOTMzRTgzNTcyM0ExQTg3MjAwREVGMjg5IC8qIFdlYklEQlNlcnZl
ci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJREJTZXJ2ZXIubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzM0U4MzU4MjNBMUFERjUwMERF
RjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSURCU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSURCU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNw
cDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTMzRTgzNTkyM0ExQURG
NTAwREVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdlYklEQlNlcnZlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJLaXQyL1dlYklEQlNlcnZlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CisJCTkzNDI1ODhGMjU1NURDQTUwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Np
b25VdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZWRpYVBlcm1pc3Npb25VdGls
aXRpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNDI1ODk4MjU1QjUzNEIw
MDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzNEI3MjQzMTlGNUI5QkUwMEFFOTZENiAvKiBXS0FjdGlvbk1lbnVJ
dGVtVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tBY3Rpb25NZW51
SXRlbVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUVFQjk1MTI3NzYx
NkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUVFQjk2MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1
bmRsZUJhY2tGb3J3YXJkTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NDUyOCw2ICs0NTM0LDExIEBACiAJCTkzRDZCNzgwMjU0Q0NBQkMwMDU4REQzQSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNENkI3ODEyNTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9u
U2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNENkI3ODYyNTRDQ0Q4QjAwNThERDNBIC8qIFdlYlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjAyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdCODI1NTM0QTEyMDA1OEREM0EgLyogV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNkE0RUQxQkM1REQzOTAwRjhB
MEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y1
NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjUxRTMxNzREQTAwMEU3MjM5IC8qIFdL
U25hcHNob3RDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02NDU4LDYgKzY0NjksNyBAQAogCQkJCTdBODIxRjREMUUyRjY3OUUwMDYwNDU3
NyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQubW0gKi8sCiAJCQkJQTFERjYz
MTExOEUwQjdDODAwM0EzRTJBIC8qIExlZ2FjeURvd25sb2FkQ2xpZW50LmggKi8sCiAJCQkJQTFE
RjYzMTAxOEUwQjdDODAwM0EzRTJBIC8qIExlZ2FjeURvd25sb2FkQ2xpZW50Lm1tICovLAorCQkJ
CTkzNDI1ODhGMjU1NURDQTUwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0g
Ki8sCiAJCQkJNDExMjg2RUYyMUM4QTkwQzAwM0E4NTUwIC8qIE1lZGlhVXRpbGl0aWVzLmggKi8s
CiAJCQkJNDExMjg2RjAyMUM4QTkwRDAwM0E4NTUwIC8qIE1lZGlhVXRpbGl0aWVzLm1tICovLAog
CQkJCTFBQkMzREY0MTg5OUU0MzcwMDRGMDYyNiAvKiBOYXZpZ2F0aW9uU3RhdGUuaCAqLywKQEAg
LTkxODgsNiArOTIwMCw3IEBACiAJCQkJNUNFQUJBMkIyMzMzMjUxNDAwNzk3Nzk3IC8qIExlZ2Fj
eUdsb2JhbFNldHRpbmdzLmNwcCAqLywKIAkJCQk1Q0VBQkEyQTIzMzMyNDc3MDA3OTc3OTcgLyog
TGVnYWN5R2xvYmFsU2V0dGluZ3MuaCAqLywKIAkJCQkzMTYwN0YzODE5NjI3MDAyMDA5Qjg3REEg
LyogTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmggKi8sCisJCQkJOTM0MjU4OTgyNTVCNTM0QjAw
NTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oICovLAogCQkJCUJDNkVEQUE1MTEx
MjcxQzYwMEU3Njc4QiAvKiBQYWdlQ2xpZW50LmggKi8sCiAJCQkJMUFDNzUzNzkxODNBOUZEQTAw
NzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuY3BwICovLAogCQkJCTFBQzc1MzdBMTgzQTlGREIwMDcy
Q0IxNSAvKiBQYWdlTG9hZFN0YXRlLmggKi8sCkBAIC05MjA3LDYgKzkyMjAsOSBAQAogCQkJCUJD
MTExQjA4MTEyRjVFM0MwMDMzN0JBQiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLywKIAkJ
CQkxQTMwMDY2QzExMTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovLAog
CQkJCTVDQTk4NTQ5MjEwQkVCNUEwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nLmggKi8s
CisJCQkJOTNENkI3QjAyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXIuY3BwICovLAorCQkJCTkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi8sCisJCQkJOTNENkI3QUYyNTUyNjhB
MTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCAqLywKIAkJ
CQk5M0Q2Qjc2QjI1NEI4OTU4MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3Bw
ICovLAogCQkJCTkzRDZCNzZDMjU0Qjg5NTgwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlci5oICovLAogCQkJCTkzRDZCNzdBMjU0Qzk4NEQwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5tZXNzYWdlcy5pbiAqLywKQEAgLTk1NDcsNiArOTU2Myw4IEBACiAJCQkJMzMz
Njc2MzkxMzBDOTlEQzAwNkM5REUyIC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCAqLywKIAkJ
CQkxQURFNDZCMDE5NTRFQzYxMDAwRjc5ODUgLyogV0tTZXNzaW9uU3RhdGVSZWYuY3BwICovLAog
CQkJCTFBREU0NkIxMTk1NEVDNjEwMDBGNzk4NSAvKiBXS1Nlc3Npb25TdGF0ZVJlZi5oICovLAor
CQkJCTkzRDZCN0I4MjU1MzRBMTIwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNhbGxiYWNrLmNwcCAqLywKKwkJCQk5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICovLAogCQkJCTUxRjg4NkEzMUYy
QzIxNEEwMEMxOTNFRiAvKiBXS1Rlc3RpbmdTdXBwb3J0LmNwcCAqLywKIAkJCQk1MUY4ODZBNDFG
MkMyMTRBMDBDMTkzRUYgLyogV0tUZXN0aW5nU3VwcG9ydC5oICovLAogCQkJCTMxNDg4OEZFMUQ5
MUIxMUQwMDM3NzA0MiAvKiBXS1RleHRDaGVja2VyLmNwcCAqLywKQEAgLTExMTQ0LDYgKzExMTYy
LDcgQEAKIAkJCQkxQTZEODZDMjFERjc1MjY1MDA3NzQ1RTggLyogTWFjaE1lc3NhZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQzU2Rjc5MTE1OTk1N0QwMDFDQ0FGOSAvKiBNYWNoUG9ydC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUEyNEI1RjMxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzNDI1ODlBMjU1QjUzNUEwMDU5RUVERCAvKiBNZWRp
YVBlcm1pc3Npb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RTE5RUZDMjNENDAx
RjEwMDk0RkZCNCAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDdFMTlFRkQyM0Q0MDFGMTAwOTRGRkI0IC8qIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZU1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5MzNERUYxOTY1
RUIzMTAwOEFDM0VBIC8qIE1lbnVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTEzODUs
NiArMTE0MDQsOCBAQAogCQkJCTU3QkJFQTZEMjJCQzBCRkUwMDI3Mzk5NSAvKiBTT0F1dGhvcml6
YXRpb25Mb2FkUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzZDQTlENzIyQjg2MjE4MDAz
MDE0M0MgLyogU09BdXRob3JpemF0aW9uTlNVUkxFeHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU3RkQzMTg1MjJCMzUxNjkwMDhEMEU4QiAvKiBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5M0Q2QjdCNTI1NTI2OEQ3MDA1OEREM0EgLyogU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENkI3QjQyNTUy
NjhENTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzRDZCNzcyMjU0QkI1MTkwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3ODQyNTRDQ0QwRTAwNThERDNB
IC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzRDZCNzg1MjU0Q0NENDMwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3Nh
Z2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTk5OCw2ICsxMjAxOSw3IEBACiAJCQkJ
NTEzRTQ2MkQxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGNTQ5QjQxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25h
cHNob3RDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4NzIyQjM1MTcw
MDA4RDBFOEIgLyogV0tTT0F1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJOTNENkI3QjkyNTUzNEExNzAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTdBNzhGRjMyMjI0MTkxOTYwMDk2NDgz
RSAvKiBXS1N0b3JhZ2VBY2Nlc3NBbGVydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2MDYx
MjRGRjAyNzAwNjhGMjBBIC8qIFdLU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYx
QTEyNEZGMDM3MDA2OEYyMEEgLyogV0tTdHJpbmdDRi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCmluZGV4IGVhMTZiMmVk
NzY2NWIzMmJkMzljYWM0NjMyYjRiOWE1MWE3NWQ2YjEuLjNmMzUzMTk0YTMyYzNlNjc5YmNhMjlm
YmVhODUwMzFjOTIxZTRmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb24uY3BwCkBAIC01OSwxMCArNTksOSBAQCB2b2lkIFdlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbjo6cmVnaXN0ZXJDbGllbnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25D
bwogICAgIG1fY2xpZW50TWFwLmFkZChjbGllbnQuaWRlbnRpZmllcigpLCBtYWtlV2Vha1B0cihj
bGllbnQpKTsKIH0KIAotdm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0YXJ0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xp
ZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wg
aW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcykKK3ZvaWQgV2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uOjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhB
bHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbikKIHsKLSAg
ICBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIGluZm8geyBjbGllbnRJZGVu
dGlmaWVyLCBsYW5nLCBjb250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVz
IH07Ci0gICAgc2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlN0YXJ0KGlu
Zm8pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3RhcnQo
Y2xpZW50SWRlbnRpZmllciwgbGFuZywgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFs
dGVybmF0aXZlcywgV1RGTW92ZShjbGllbnRPcmlnaW4pKSk7CiB9CiAKIHZvaWQgV2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uOjpzdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKQEAgLTgwLDcgKzc5LDcg
QEAgdm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OmludmFsaWRhdGUoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWMKICAgICBzZW5kKE1lc3NhZ2VzOjpTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcjo6SW52YWxpZGF0ZShjbGllbnRJZGVudGlmaWVyKSk7CiB9CiAKLXZvaWQg
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiB1cGRhdGUpCit2b2lkIFdlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZSYmIHVwZGF0ZSkKIHsKICAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSB1
cGRhdGUuY2xpZW50SWRlbnRpZmllcigpOwogICAgIGlmICghbV9jbGllbnRNYXAuY29udGFpbnMo
Y2xpZW50SWRlbnRpZmllcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uLmgKaW5kZXggMjhkYmQxOTdjYjNmNzk4ZmM3NjMxOTllYmIxMmRlMTNhZWQ3NTFiMS4u
NDQzYjA0ZjFjY2FhYjBhMGU2YWE1MzgzMWU5ODVkMTBhNmE1MzMyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaApAQCAtNDMsMTEgKzQzLDExIEBAIGNs
YXNzIFdlYlBhZ2U7CiAKIHVzaW5nIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbklkZW50aWZp
ZXIgPSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcjsKIAotY2xhc3MgV2ViU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
biwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5k
ZXIgeworY2xhc3MgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uIGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiwgcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uPiBjcmVhdGUoU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBt
YXhBbHRlcm5hdGl2ZXMpIGZpbmFsOworICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBi
b29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0
aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYpIGZpbmFsOwogICAgIHZvaWQgc3RvcChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbDsK
ICAgICB2b2lkIGFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIpIGZpbmFsOwogCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgfldl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbigpOwogCiAgICAgdm9pZCByZWdpc3RlckNsaWVu
dChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25V
cGRhdGUmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGUmJikgZmluYWw7CiAgICAgdm9pZCBpbnZhbGlkYXRlKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogCiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIuCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggZDkxODRlODI1MTNlYzhjNGVjMGMyN2Y4MDdmM2U4MDhkYjBhZTEw
Mi4uN2E5ZWYwNGY1YjcxOTUwMDE0Yjg5NDM1Mjc3YzlkYjFhYjZmMTY2NyAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisy
MDIwLTExLTEwICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCBiYXNpYyBwZXJtaXNzaW9uIGNoZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc2CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS83MTIyMjYzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0OgorICAg
ICAgICAqIE1vYmlsZU1pbmlCcm93c2VyL01vYmlsZU1pbmlCcm93c2VyL0luZm8ucGxpc3Q6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TcGVlY2hS
ZWNvZ25pdGlvbi5tbTogQWRkZWQuCisgICAgICAgICgtW1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblVJRGVsZWdhdGUgX3dlYlZpZXc6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkZvck9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1NwZWVjaFJlY29nbml0
aW9uTWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRN
ZXNzYWdlOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9zcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1p
c3Npb24tcGVyc2lzdGVuY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V1RSOjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNvbXBsZXRlU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2hlY2spOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0SXNTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyk6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNl
aXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAyMC0xMS0xMCAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcmV2ZXJ0aW5nIHIyNjk2NjAuCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9t
YWMvSW5mby5wbGlzdCBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0CmluZGV4IDRl
MmIxZjQ4MTlhZDUxMDNlNGNmMTcwOWI3YzUzYTY2ZThiMzk1ZTUuLjMzYTNjYTFiZTczNTA4ZTFm
ZmNiMDI5NTdjODY0ZTg1OTJkYWFhNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9JbmZvLnBsaXN0CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0CkBAIC01
Miw5ICs1MiwxMSBAQAogCQkJPHN0cmluZz5FZGl0b3I8L3N0cmluZz4KIAkJPC9kaWN0PgogCTwv
YXJyYXk+Ci0gICAgPGtleT5OU0NhbWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KLSAgICA8c3Ry
aW5nPlJlY29yZGluZyB2aWRlbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KLSAgICA8
a2V5Pk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJlY29y
ZGluZyBhdWRpbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TQ2FtZXJh
VXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVjb3JkaW5nIHZpZGVvIG9uIGJlaGFs
ZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+TlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlv
bjwva2V5PgorCTxzdHJpbmc+UmVjb3JkaW5nIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwv
c3RyaW5nPgorCTxrZXk+TlNTcGVlY2hSZWNvZ25pdGlvblVzYWdlRGVzY3JpcHRpb248L2tleT4K
Kwk8c3RyaW5nPlJlY29nbml6aW5nIGNhcHR1cmVkIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRl
czwvc3RyaW5nPgogPC9kaWN0PgogPC9wbGlzdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL01vYmlsZU1p
bmlCcm93c2VyL01vYmlsZU1pbmlCcm93c2VyL0luZm8ucGxpc3QgYi9Ub29scy9Nb2JpbGVNaW5p
QnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9JbmZvLnBsaXN0CmluZGV4IDJkMWJjNTgyZmJlNzY1
Y2ZkYzQxMDVlZmU5ZWNjMWQ4MzIwY2M5NTkuLjUzODdiMzc0OWE0NzRmZTBiM2Q5YzYwOTVjYjI4
ODE3YjhmOTIzMGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01vYmlsZU1pbmlCcm93c2VyL01vYmlsZU1p
bmlCcm93c2VyL0luZm8ucGxpc3QKKysrIGIvVG9vbHMvTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxl
TWluaUJyb3dzZXIvSW5mby5wbGlzdApAQCAtNTQsOSArNTQsMTEgQEAKIAkJPGtleT5OU0FsbG93
c0FyYml0cmFyeUxvYWRzSW5XZWJDb250ZW50PC9rZXk+CiAJCTx0cnVlLz4KIAk8L2RpY3Q+Ci0g
ICAgPGtleT5OU0NhbWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJlY29y
ZGluZyB2aWRlbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KLSAgICA8a2V5Pk5TTWlj
cm9waG9uZVVzYWdlRGVzY3JpcHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJlY29yZGluZyBhdWRp
byBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TQ2FtZXJhVXNhZ2VEZXNj
cmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVjb3JkaW5nIHZpZGVvIG9uIGJlaGFsZiBvZiB3ZWJz
aXRlczwvc3RyaW5nPgorCTxrZXk+TlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlvbjwva2V5Pgor
CTxzdHJpbmc+UmVjb3JkaW5nIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgor
CTxrZXk+TlNTcGVlY2hSZWNvZ25pdGlvblVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5n
PlJlY29nbml6aW5nIGNhcHR1cmVkIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5n
PgogPC9kaWN0PgogPC9wbGlzdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2QxMjc0NTM4
YTczNmEwY2RhNTUzNGFhMzcyNmFlNjkwM2EwZjQ2Ny4uZTNkYTRkM2NhNjZhNjQ5M2M0NTdkNmVi
ZGZlYzU1YjYwNDIzNzc1YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgwMCw2ICs4MDAs
OCBAQAogCQk5MzI5QUEyOTFERTNGODFFMDAzQUJEMDcgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyOUFBMjgx
REUzRjgxRTAwM0FCRDA3IC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJOTMyQUU1
M0QxRDM3MTA0NzAwNURGRkFGIC8qIGZvY3VzLWlucHV0cy5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNTc1QzU1MUQzMDM2NkUwMDBE
NjA0RCAvKiBmb2N1cy1pbnB1dHMuaHRtbCAqLzsgfTsKIAkJOTMzRDYzMUQxRkNCNzYyMDAwMzJF
Q0Q2IC8qIEhhc2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzNENjMxQjFGQ0I3NjE4MDAzMkVDRDYgLyogSGFzaGVyLmNwcCAqLzsgfTsKKwkJ
OTM0MjU4OUMyNTVCNjA5QjAwNTlFRUREIC8qIFNwZWVjaFJlY29nbml0aW9uLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0MjU4OUIyNTVCNjA5QTAw
NTlFRUREIC8qIFNwZWVjaFJlY29nbml0aW9uLm1tICovOyB9OworCQk5MzQyNTg5RTI1NUI2QTEy
MDA1OUVFREQgLyogc3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNl
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTM0MjU4OUQyNTVCNjZBMDAwNTlFRUREIC8qIHNwZWVjaHJlY29nbml0aW9uLXVzZXItcGVy
bWlzc2lvbi1wZXJzaXN0ZW5jZS5odG1sICovOyB9OwogCQk5MzU3ODZDQzIwRjZBMjcwMDAwMENE
RkMgLyogSW5kZXhlZERCLnNxbGl0ZTMtd2FsIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEZBNUM1MjBGNjlGRUQwMDQwREMxQiAvKiBJbmRl
eGVkREIuc3FsaXRlMy13YWwgKi87IH07CiAJCTkzNTc4NkNEMjBGNkEyOTEwMDAwQ0RGQyAvKiBJ
bmRleGVkREIuc3FsaXRlMyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzRGQTVDNzIwRjY5RkVFMDA0MERDMUIgLyogSW5kZXhlZERCLnNxbGl0
ZTMgKi87IH07CiAJCTkzNTc4NkNFMjBGNkEyQTEwMDAwQ0RGQyAvKiBJbmRleGVkREIuc3FsaXRl
My1zaG0gaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTM0RkE1QzYyMEY2OUZFRDAwNDBEQzFCIC8qIEluZGV4ZWREQi5zcWxpdGUzLXNobSAqLzsg
fTsKQEAgLTE2MTAsNiArMTYxMiw3IEBACiAJCQkJRjRGNDA1QkQxRDRDMEQxQzAwN0E5NzA3IC8q
IHNraW5ueS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJQzAxQTIzRjIxMjY2MTU2NzAwQzlFRDU1IC8qIHNwYWNlYmFyLXNjcm9sbGlu
Zy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0Q0ZDRERBMjQ5RkM5RTQwMDUyNzQ4
MiAvKiBTcGFjZU9ubHkub3RmIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTkzNDI1ODlFMjU1
QjZBMTIwMDU5RUVERCAvKiBzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lz
dGVuY2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlFMTk0RTFCRDE3N0U1M0M3MDA5
QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCiAJCQkJNTE1QkUxNkYxRDQyOEJCMTAwREQ3QzY4IC8qIFN0b3JlQmxvYlRv
QmVEZWxldGVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJOUJENkQzQTIxRjdCMjE4
MzAwQkQ0OTYyIC8qIHN1bnNldC1pbi1jdXBlcnRpbm8tMTAwcHgudGlmZiBpbiBDb3B5IFJlc291
cmNlcyAqLywKQEAgLTI0MDEsNiArMjQwNCw4IEBACiAJCTkzMjlBQTI4MURFM0Y4MUUwMDNBQkQw
NyAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUZXh0QnJlYWtJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzMzE0MDdCMTdCNDQxOTAwMEYwODNCMSAvKiBEaWROb3RIYW5kbGVLZXlEb3duLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpZE5vdEhhbmRsZUtleURvd24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzNENjMxQjFGQ0I3NjE4MDAzMkVD
RDYgLyogSGFzaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhh
c2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNDI1ODlCMjU1QjYwOUEw
MDU5RUVERCAvKiBTcGVlY2hSZWNvZ25pdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5MzQyNTg5RDI1NUI2NkEwMDA1OUVFREQgLyogc3BlZWNocmVjb2duaXRpb24t
dXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAic3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzRGQTVDNTIwRjY5RkVEMDA0MERDMUIg
LyogSW5kZXhlZERCLnNxbGl0ZTMtd2FsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJJbmRleGVkREIuc3FsaXRlMy13YWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzRGQTVDNjIwRjY5RkVEMDA0MERDMUIgLyog
SW5kZXhlZERCLnNxbGl0ZTMtc2htICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJJbmRleGVkREIuc3FsaXRlMy1zaG0iOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzRGQTVDNzIwRjY5RkVFMDA0MERDMUIgLyogSW5k
ZXhlZERCLnNxbGl0ZTMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBmaWxlOyBwYXRoID0gSW5kZXhlZERCLnNxbGl0ZTM7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zMzgxLDYgKzMzODYsNyBAQAogCQkJCTM3QkNBNjFCMUI1OTZCQTkwMDIw
MTJDQSAvKiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzSW5OZXdXaW5kb3dBY3Rpb25zLm1tICovLAog
CQkJCTJEOUE1M0FFMUIzMUZBOEQwMDc0RDVBQSAvKiBTaHJpbmtUb0ZpdC5tbSAqLywKIAkJCQky
REZGN0I2QzFEQTQ4N0FGMDA4MTQ2MTQgLyogU25hcHNob3RTdG9yZS5tbSAqLywKKwkJCQk5MzQy
NTg5QjI1NUI2MDlBMDA1OUVFREQgLyogU3BlZWNoUmVjb2duaXRpb24ubW0gKi8sCiAJCQkJQ0RD
MDkzMkQyMUM5OTM0NDAwMzBDNEIwIC8qIFN0b3BTdXNwZW5kUmVzdW1lQWxsTWVkaWEubW0gKi8s
CiAJCQkJNDE0QUQ2ODUyMjg1RDFCMDAwNzc3RjJEIC8qIFN0b3JhZ2VRdW90YS5tbSAqLywKIAkJ
CQk1MTVCRTE3MDFENDI4QkQxMDBERDdDNjggLyogU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbSAqLywK
QEAgLTM5MDAsNiArMzkwNiw3IEBACiAJCQkJNDY1NkE3NTcyMEY5MDU0RjAwMDJFMjFGIC8qIFNp
bXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLywKIAkJCQlGNEY0MDVC
QjFENEMwQ0Y4MDA3QTk3MDcgLyogc2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8u
aHRtbCAqLywKIAkJCQlGNENGQ0REODI0OUZDOUQ5MDA1Mjc0ODIgLyogU3BhY2VPbmx5Lm90ZiAq
LywKKwkJCQk5MzQyNTg5RDI1NUI2NkEwMDA1OUVFREQgLyogc3BlZWNocmVjb2duaXRpb24tdXNl
ci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwgKi8sCiAJCQkJNTE1QkUxNkUxRDQyODhGRjAw
REQ3QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0bWwgKi8sCiAJCQkJOUJENkQzQTExRjdC
MjAyMTAwQkQ0OTYyIC8qIHN1bnNldC1pbi1jdXBlcnRpbm8tMTAwcHgudGlmZiAqLywKIAkJCQk5
QkQ2RDNBMDFGN0IyMDIwMDBCRDQ5NjIgLyogc3Vuc2V0LWluLWN1cGVydGluby0yMDBweC5wbmcg
Ki8sCkBAIC01NDUwLDYgKzU0NTcsNyBAQAogCQkJCTUxMEE5MUY4MjREMzYyMjEwMEJGRDg5QyAv
KiBTb255RHVhbFNob2NrMy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRUIxMjY0MjRDQTZCNjYw
MDBDQjAzMCAvKiBTb255RHVhbFNob2NrNC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjE1
MUE0MTFBRTYwMDQ0N0M0QyAvKiBTcGFjZWJhclNjcm9sbGluZy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk5MzQyNTg5QzI1NUI2MDlCMDA1OUVFREQgLyogU3BlZWNoUmVjb2duaXRpb24ubW0gaW4g
U291cmNlcyAqLywKIAkJCQk1N0Y0QUFBMDIwOEZBRUYwMDBBNjhFOUUgLyogU1NMS2V5R2VuZXJh
dG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODNCQzVBQzAyMEU2QzBERjAwRjU4NzlGIC8qIFN0
YXJ0TG9hZEluRGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUx
RUIxMjY1MjRDQTZCNjYwMDBDQjAzMCAvKiBTdGVlbFNlcmllc05pbWJ1cy5tbSBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9T
cGVlY2hSZWNvZ25pdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvU3BlZWNoUmVjb2duaXRpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMzYWQwMmI1NDE1MmMxMDU2ZTY0
OGM2YWEyYmY2MTMxNGJhMTQwNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU3BlZWNoUmVjb2duaXRpb24ubW0KQEAgLTAsMCArMSwxMDYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9X
S1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK3N0YXRp
YyBib29sIHNob3VsZEdyYW50UGVybWlzc2lvblJlcXVlc3QgPSB0cnVlOworc3RhdGljIGJvb2wg
cGVybWlzc2lvblJlcXVlc3RlZCA9IGZhbHNlOworc3RhdGljIGJvb2wgcmVjZWl2ZWRTY3JpcHRN
ZXNzYWdlOworc3RhdGljIFJldGFpblB0cjxXS1NjcmlwdE1lc3NhZ2U+IGxhc3RTY3JpcHRNZXNz
YWdlOworCitAaW50ZXJmYWNlIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblVJRGVsZWdhdGUg
OiBOU09iamVjdDxXS1VJRGVsZWdhdGVQcml2YXRlPgorLSAodm9pZClfd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2lu
OihXS1NlY3VyaXR5T3JpZ2luICopb3JpZ2luIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCkpZGVjaXNpb25IYW5kbGVyOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uVUlEZWxlZ2F0ZQorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOihXS1Nl
Y3VyaXR5T3JpZ2luICopb3JpZ2luIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVj
aXNpb25IYW5kbGVyCit7CisgICAgcGVybWlzc2lvblJlcXVlc3RlZCA9IHRydWU7CisgICAgZGVj
aXNpb25IYW5kbGVyKHNob3VsZEdyYW50UGVybWlzc2lvblJlcXVlc3QpOworfQorQGVuZAorCitA
aW50ZXJmYWNlIFNwZWVjaFJlY29nbml0aW9uTWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tT
Y3JpcHRNZXNzYWdlSGFuZGxlcj4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFNwZWVjaFJlY29n
bml0aW9uTWVzc2FnZUhhbmRsZXIKKy0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZlU2Ny
aXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQoreworICAgIHJlY2VpdmVkU2Ny
aXB0TWVzc2FnZSA9IHRydWU7CisgICAgbGFzdFNjcmlwdE1lc3NhZ2UgPSBtZXNzYWdlOworfQor
QGVuZAorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV2ViS2l0MiwgU3BlZWNo
UmVjb2duaXRpb25Vc2VyUGVybWlzc2lvblBlcnNpc3RlbmNlKQoreworICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1NwZWVjaFJlY29nbml0aW9uTWVzc2FnZUhh
bmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250
cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0
SGFuZGxlciJdOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBbY29uZmlndXJhdGlvbiBwcmVmZXJl
bmNlc107CisgICAgcHJlZmVyZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBZRVM7
CisgICAgcHJlZmVyZW5jZXMuX3NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCA9IFlFUzsKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURl
bGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIHNob3VsZEdyYW50UGVybWlzc2lvblJlcXVl
c3QgPSBmYWxzZTsKKyAgICBwZXJtaXNzaW9uUmVxdWVzdGVkID0gZmFsc2U7CisgICAgcmVjZWl2
ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6
QCJzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UiXTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgRVhQ
RUNUX1dLX1NUUkVRKEAiRXJyb3I6IG5vdC1hbGxvd2VkIC0gUGVybWlzc2lvbiBjaGVjayBmYWls
ZWQiLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAgIEVYUEVDVF9UUlVFKHBlcm1pc3Np
b25SZXF1ZXN0ZWQpOworCisgICAgLy8gUGVybWlzc2lvbiByZXN1bHQgaXMgcmVtZW1iZXJlZC4K
KyAgICBwZXJtaXNzaW9uUmVxdWVzdGVkID0gZmFsc2U7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNz
YWdlID0gZmFsc2U7CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
InN0YXJ0KCkiXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0
TWVzc2FnZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiRXJyb3I6IG5vdC1hbGxvd2VkIC0gUGVy
bWlzc2lvbiBjaGVjayBmYWlsZWQiLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAgIEVY
UEVDVF9GQUxTRShwZXJtaXNzaW9uUmVxdWVzdGVkKTsKKworICAgIC8vIFBlcm1pc3Npb24gcmVz
dWx0IHdpbGwgYmUgY2xlYXJlZCBhZnRlciBkb2N1bWVudCBjaGFuZ2VzLgorICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6YmxhbmsiXV1dOworCisgICAgc2hvdWxkR3JhbnRQ
ZXJtaXNzaW9uUmVxdWVzdCA9IHRydWU7CisgICAgcGVybWlzc2lvblJlcXVlc3RlZCA9IGZhbHNl
OworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGxvYWRU
ZXN0UGFnZU5hbWVkOkAic3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3Rl
bmNlIl07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZXJtaXNzaW9uUmVxdWVzdGVk
KTsKKyAgICAvLyBTaG91bGQgbm90IGdldCBlcnJvciBtZXNzYWdlIGFzIHBlcm1pc3Npb24gaXMg
Z3JhbnRlZC4KKyAgICBFWFBFQ1RfRkFMU0UocmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9zcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24t
cGVyc2lzdGVuY2UuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
c3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjRjYTZlZDBjODRmNGJjZTdlODZhZDEzY2RmN2YzMDQyMGZiZmNhMwotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evc3BlZWNocmVj
b2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwKQEAgLTAsMCArMSwyOSBA
QAorPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKzxzY3JpcHQ+CisKK3ZhciBzcGVlY2hSZWNvZ25p
dGlvbiA9IG51bGw7CitmdW5jdGlvbiBzdGFydCgpCit7CisgICAgc3RvcCgpOworCisgICAgc3Bl
ZWNoUmVjb2duaXRpb24gPSBuZXcgU3BlZWNoUmVjb2duaXRpb24oKTsKKyAgICBzcGVlY2hSZWNv
Z25pdGlvbi5vbmVycm9yID0gKGV2ZW50KSA9PiB7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVz
c2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJFcnJvcjogIiArIGV2ZW50LmVy
cm9yICsgIiAtICIgKyAgZXZlbnQubWVzc2FnZSk7CisgICAgfQorICAgIHNwZWVjaFJlY29nbml0
aW9uLm9uZW5kID0gKGV2ZW50KSA9PiB7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhh
bmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJFbmQiKTsKKyAgICB9CisgICAgc3BlZWNo
UmVjb2duaXRpb24uc3RhcnQoKTsKK30KKworZnVuY3Rpb24gc3RvcCgpCit7CisgICAgaWYgKCFz
cGVlY2hSZWNvZ25pdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgc3BlZWNoUmVjb2duaXRp
b24uc3RvcCgpOworICAgIHNwZWVjaFJlY29nbml0aW9uID0gbnVsbDsKK30KKworPC9zY3JpcHQ+
Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA1NTE2MmZmMzQzZDI1ZjY5
MDZjMzkyNzZmZDVhODkxZWRmMjliODY5Li42ZmRjZTIzZmI4NGQzMGJjY2Q1OTc0YWI3MjAzMzFj
OTI5OTg0Y2NiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTQwMyw0ICs0MDMsNyBA
QCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdW5kZWZpbmVkIHNldEFkQ2xpY2tBdHRyaWJ1
dGlvbk92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2xlYW4gdmFsdWUpOwogICAgIHVuZGVmaW5l
ZCBzZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZyhET01TdHJpbmcg
dXJsKTsKICAgICB1bmRlZmluZWQgbWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JU
ZXN0aW5nKCk7CisKKyAgICAvLyBTcGVlY2hSZWNvZ25pdGlvbgorICAgIHVuZGVmaW5lZCBzZXRJ
c1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbGVhbiB2YWx1ZSk7CiB9Owpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHAKaW5kZXggOTM0N2Y4MTg0ZmViZTI1ZDMzZjk0MWE0NGY5MmM3NmY3ZjVlNmE3ZC4uZDM2
NTc2MmQzMDc1MGVjYzEyOGQ4ZTFmNDc4NmM2MjQzNjlhNTIzZCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yMDY5
LDYgKzIwNjksMTEgQEAgdm9pZCBUZXN0UnVubmVyOjpkaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxs
YmFjaygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhEaWRTZXRBcHBCb3VuZERvbWFpbnND
YWxsYmFja0lEKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkdyYW50ZWQoYm9vbCBncmFudGVkKQoreworICAgIHBvc3RTeW5jaHJvbm91c1Bh
Z2VNZXNzYWdlKCJzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQiLCBncmFu
dGVkKTsKK30KKwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIH0gLy8gbmFt
ZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaAppbmRleCAwYmQzYTA5ZTMyZDcxYjM1MTZlNGY4ZTA1YmVhMjJhZjk5NGIx
ZDIzLi45NzkzYzc3N2FkMzhhYWQzNGNmNTI1ZDEyY2E4N2RlYTMxOWEyZDNlIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAt
NTE1LDYgKzUxNSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNv
bnZlcnNpb25VUkxGb3JUZXN0aW5nKEpTU3RyaW5nUmVmKTsKICAgICB2b2lkIG1hcmtBZENsaWNr
QXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZygpOwogCisgICAgdm9pZCBzZXRJc1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCk7CisKIHByaXZhdGU6CiAgICAgVGVz
dFJ1bm5lcigpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IGU0YWFmMzhiNThiYzJkZjA1NjBjNTI5MGYxYWQ4ZjRkNGRmYjM1NWEuLjQ2YzY1ZTgxMjgw
NWZjMzhhMGU4Y2U3M2NlYjM1NjA4ZWEyM2I0MzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dL
UHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5j
bHVkZSA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW5SZWYuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oPgogI2luY2x1ZGUgPFdlYktpdC9X
S1RleHRDaGVja2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVVJMLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmg+CkBAIC0yOTcsNiArMjk4LDIxIEBAIHN0
YXRpYyB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoKQogewogfQogCitzdGF0aWMgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdLUGFn
ZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFja1JlZiBjYWxsYmFjaykKK3sKKyAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
Y29tcGxldGVTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVjayhjYWxsYmFjayk7Cit9CisK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNvbXBsZXRlU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2hlY2soV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBjYWxsYmFjaykK
K3sKKyAgICBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29tcGxldGUoY2Fs
bGJhY2ssIG1faXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKTsKK30KKwordm9p
ZCBUZXN0Q29udHJvbGxlcjo6c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVk
KGJvb2wgZ3JhbnRlZCkKK3sKKyAgICBtX2lzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3Jh
bnRlZCA9IGdyYW50ZWQ7Cit9CisKIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3Ro
ZXJQYWdlKFdLUGFnZVJlZiwgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBX
S05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvbiwgV0tXaW5kb3dGZWF0dXJlc1Jl
ZiB3aW5kb3dGZWF0dXJlcywgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBQbGF0Zm9y
bVdlYlZpZXcqIHBhcmVudFZpZXcgPSBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdlYlZpZXcqPihjb25z
dF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CkBAIC02NTAsOCArNjY2LDggQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBv
cHRpb25zKQogICAgIFdLSFRUUENvb2tpZVN0b3JlRGVsZXRlQWxsQ29va2llcyhXS1dlYnNpdGVE
YXRhU3RvcmVHZXRIVFRQQ29va2llU3RvcmUod2Vic2l0ZURhdGFTdG9yZSgpKSwgbnVsbHB0ciwg
bnVsbHB0cik7CiAKICAgICBwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoY29uZmlndXJhdGlvbi5nZXQo
KSwgb3B0aW9ucyk7Ci0gICAgV0tQYWdlVUlDbGllbnRWMTQgcGFnZVVJQ2xpZW50ID0gewotICAg
ICAgICB7IDE0LCBtX21haW5XZWJWaWV3LmdldCgpIH0sCisgICAgV0tQYWdlVUlDbGllbnRWMTUg
cGFnZVVJQ2xpZW50ID0geworICAgICAgICB7IDE1LCBtX21haW5XZWJWaWV3LmdldCgpIH0sCiAg
ICAgICAgIDAsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAogICAgICAg
ICAwLCAvLyBzaG93UGFnZQogICAgICAgICAwLCAvLyBjbG9zZQpAQCAtNzI0LDcgKzc0MCw4IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0
T3B0aW9ucyYgb3B0aW9ucykKICAgICAgICAgMCwgLy8gZGlkUmVzaWduSW5wdXRFbGVtZW50U3Ry
b25nUGFzc3dvcmRBcHBlYXJhbmNlCiAgICAgICAgIDAsIC8vIHJlcXVlc3RTdG9yYWdlQWNjZXNz
Q29uZmlybQogICAgICAgICBzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNj
ZXNzLAotICAgICAgICBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsCisgICAgICAgIHJ1bldlYkF1
dGhlbnRpY2F0aW9uUGFuZWwsCisgICAgICAgIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudCht
X21haW5XZWJWaWV3LT5wYWdlKCksICZwYWdlVUlDbGllbnQuYmFzZSk7CiAKQEAgLTEwNTQsNiAr
MTA3MSw4IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1
ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgbV9zZXJ2ZXJUcnVzdEV2YWx1
YXRpb25DYWxsYmFja0NhbGxzQ291bnQgPSAwOwogICAgIG1fc2hvdWxkRGlzbWlzc0phdmFTY3Jp
cHRBbGVydHNBc3luY2hyb25vdXNseSA9IGZhbHNlOwogCisgICAgc2V0SXNTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25HcmFudGVkKHRydWUpOworCiAgICAgYXV0byBsb2FkQWJvdXRCbGFuayA9
IFt0aGlzXSB7CiAgICAgICAgIG1fZG9uZVJlc2V0dGluZyA9IGZhbHNlOwogICAgICAgICBXS1Bh
Z2VMb2FkVVJMKG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgYmxhbmtVUkwoKSk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggMzNiNjQ5NGFjNjI0NGI5MmZjYjc4MDlh
NThkNzIwM2M3YzEyNThhOC4uMDVjOGY4YmRhYTk1YWQ4N2U0MzllMzA5M2I4YTRmMzRmNWY4MmM1
NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMzUxLDYgKzM1
MSw5IEBAIHB1YmxpYzoKIAogICAgIFdLVVJMUmVmIGN1cnJlbnRUZXN0VVJMKCkgY29uc3Q7CiAK
KyAgICB2b2lkIGNvbXBsZXRlU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2soV0tTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZik7CisgICAgdm9pZCBzZXRJc1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCk7CisKIHByaXZhdGU6CiAgICAgV0tS
ZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVQYWdlQ29uZmlndXJhdGlv
bihjb25zdCBUZXN0T3B0aW9ucyYpOwogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3Vy
YXRpb25SZWY+IGdlbmVyYXRlQ29udGV4dENvbmZpZ3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnMm
KSBjb25zdDsKQEAgLTY0MCw2ICs2NDMsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGJvb2wgbV9oYXNTZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgeyBmYWxzZSB9
OwogI2VuZGlmCisKKyAgICBib29sIG1faXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFu
dGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAxNGMwNGVkMWZhOTM5NGY1NzJmNjQ5YTkx
YjQ3ZWZiMjA2ZWY4NTRlLi41YjY2NjE3YmVlMDE2YjY3NTFjN2JiMmJjZTZiYjhiYWU0NGViMGEw
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTM0NSw2
ICsxMzQ1LDExIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJl
Y2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAic2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkIikpIHsKKyAg
ICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldElzU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uR3JhbnRlZChib29sZWFuVmFsdWUobWVzc2FnZUJvZHkpKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGMwNGIyMWY2Zjk4MjZlYWIxM2VmOTMxYmU0MmEzZTA5
ZjM3ZGE4NS4uYWJiODZmOGJlYWVjYjBmN2VjMmVlZDFlZDBlMTEyMWNmY2M0NmIzOSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDIwLTExLTEwICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyBwZXJtaXNzaW9uIGNoZWNrIGZvciBTcGVl
Y2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE4NDc2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTIyMjYzOD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlv
bnM6CisgICAgICAgICogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJt
aXNzaW9uLWVycm9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhw
ZWN0YXRpb25zOgorCiAyMDIwLTExLTEwICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHTElCXSBHYXJkZW5pbmcgd2VicnRjIGZhaWx1cmVzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCAzODMyNGQxZDY1Zjc5OWU4MGVmZmYxNGM5ZTk1NWEyZGQxNzkxMWYwLi5kM2Yx
Yjc4MTU1ZTBjMGIzNzk4YmUwYjc5OTc3NGU4ZGM2NWQ1NGY2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTE3Nyw2ICsxNzcsNyBAQCBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNl
LWFmdGVyLXN0b3JhZ2UtY3Jhc2guaHRtbCBbIFNraXAgXQogc3RvcmFnZS9pbmRleGVkZGIvSURC
T2JqZWN0LWxlYWsuaHRtbCBbIFNraXAgXQogZmFzdC9mb3Jtcy9jYWxsLXRleHQtZGlkLWNoYW5n
ZS1pbi10ZXh0LWZpZWxkLXdoZW4tdHlwaW5nLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS8gWyBTa2lwIF0KK2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVy
bWlzc2lvbi1lcnJvci5odG1sIFsgU2tpcCBdCiAKICMgT25seSBwYXJ0aWFsIHN1cHBvcnQgb24g
Q29jb2EgcGxhdGZvcm1zLgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zcGVlY2gt
YXBpLyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25p
dGlvbi9wZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3Bl
ZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWUzZTc5NGRhMGE5YzhjODI4NWQyYmEzOTZmNDllNDVjYThjMTc1MwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVmVyaWZ5IHRoYXQgZXJyb3IgZXZlbnQgaXMg
ZmlyZWQgd2hlbiBwZXJtaXNzaW9uIGlzIGRlbmllZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgcmVjb2duaXRpb24gPSBuZXcgU3BlZWNoUmVjb2duaXRpb24oKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgcmVjb2duaXRpb24uc3RhcnQoKSBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KK1BBU1MgZXZlbnQuZXJyb3IgaXMgIm5vdC1hbGxvd2VkIgorUEFTUyBl
dmVudC5tZXNzYWdlIGlzICJQZXJtaXNzaW9uIGNoZWNrIGZhaWxlZCIKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjUyZDAzMzMwZTIwMzkwNDEwNjg3ZDU3ZTZjMTY3OWZhZjY4Y2I4NDEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24t
ZXJyb3IuaHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCBlcnJvciBldmVudCBpcyBmaXJlZCB3
aGVuIHBlcm1pc3Npb24gaXMgZGVuaWVkLiIpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICB0ZXN0UnVubmVyLnNldElzU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChmYWxzZSk7Cit9CisKK3Nob3VsZE5vdFRocm93KCJy
ZWNvZ25pdGlvbiA9IG5ldyBTcGVlY2hSZWNvZ25pdGlvbigpIik7CitzaG91bGROb3RUaHJvdygi
cmVjb2duaXRpb24uc3RhcnQoKSIpOworcmVjb2duaXRpb24ub25lcnJvciA9IChldmVudCkgPT4g
eworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQuZXJyb3IiLCAibm90LWFsbG93ZWQi
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50Lm1lc3NhZ2UiLCAiUGVybWlzc2lv
biBjaGVjayBmYWlsZWQiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDhkN2Q0OTBlYjMyODRjMzA5ZGNj
ZDJhMGUxODZkOTgwNDM2MjdlOTQuLmE3NDE5ODBlNWIyZTViMGIxYTBlOTE2OWRhYTlhNGI1Mjcz
MGYwNjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCkBAIC04
MDMsNCArODAzLDUgQEAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZWQtcG9y
dC1kZWxheS5odG1sIFsgUGFzcyBdCiAKICMgV2ViS2l0MiBvbmx5LgoganMvdGhyb3ctbGFyZ2Ut
c3RyaW5nLW9vbS5odG1sIFsgUGFzcyBdCitmYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Np
b24tZXJyb3IuaHRtbCBbIFBhc3MgXQogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1lbnRlci13aGls
ZS1leGl0aW5nLmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413839</attachid>
            <date>2020-11-11 10:40:38 -0800</date>
            <delta_ts>2020-11-13 14:26:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201111104036.patch</filename>
            <type>text/plain</type>
            <size>138521</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMzMWNmMGQxZjk5MjQ1ZDYyZWUwNTY1
MzRkZjc4ZWUxYjU2N2I1N2YuLmJlZDZkMGExMGQwNTNiOWRmOTVhNzk3NDg2NGUyODhhZjc2Nzc5
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMTEtMTEgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1Bs
YXRmb3JtSGF2ZS5oOgorCiAyMDIwLTExLTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2OTY2MC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBkYzMwZjNlZjkwOWQ4MGE4YTU5YzczYzY0NTAwNmUwOWJkYTEyMjUwLi41OTE2
Y2U0OWUyNzQxMmU2MzQ1MmNhYzQxYWY5YTEzZGVjYzFmZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMjAtMTEtMTEgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29n
bml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTg0NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNocmVjb2du
aXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bjo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdDo6Y2xpZW50T3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlOjplcnJvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6cmVzdWx0IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oOgorICAgICAgICAqIHBhZ2UvRHVtbXlT
cGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmg6CisKIDIwMjAtMTEtMTAgIENvbW1pdCBRdWV1ZSAg
PGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGlu
ZyByMjY5NjYwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBjZDM5YzE2OTg0NTZiOGFkOGQxNjJkZTI0OTAwNDA1N2U2
NWZkNmUyLi4yY2E5NWEzOGJhODBmODY5ODhjYWM3OWFlYTVlMGI4ZDVkOGFmYjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDExNSBAQAorMjAyMC0xMS0xMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFw
cGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3Ig
U3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxODQ3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMjI2Mzg+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIsIHdoaWNoIGNoZWNrcyBhbmQgcmVxdWVz
dHMgc3BlZWNoIHJlY29nbml0aW9uIHBlcm1pc3Npb25zIGJlZm9yZSAKKyAgICAgICAgd2UgYWN0
dWFsbHkgc3RhcnQgY2FwdHVyaW5nIGF1ZGlvIGFuZCBwZXJmb3JtIHJlY29nbml0aW9uLiBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyIGlzIHBlci1wYWdlLCBsaWtlCisgICAgICAg
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyLiBUaGUgY2hlY2tzIGluY2x1ZGU6CisgICAgICAgIDEu
IFNhbmRib3ggcmVxdWlyZW1lbnQgZm9yIG1pY3JvcGhvbmUKKyAgICAgICAgMi4gVENDIGNoZWNr
IGZvciBtaWNyb3Bob25lCisgICAgICAgIDMuIFRDQyBjaGVjayBmb3IgU0ZTcGVlY2hSZWNvZ25p
emVyCisgICAgICAgIDQuIFVzZXIgcGVybWlzc2lvbiBvbiBzcGVlY2ggcmVjb2duaXRpb24gZm9y
IG9yaWdpbgorCisgICAgICAgIEFkZCBhIGRlbGVnYXRlIGZ1bmN0aW9uIGZvciByZXF1ZXN0aW5n
IHVzZXIgcGVybWlzc2lvbi4gQnkgZGVmYXVsdCwgdXNlciBwZXJtaXNzaW9uIGlzIG5vdCBncmFu
dGVkLgorCisgICAgICAgIEFQSSB0ZXN0OiBXZWJLaXQyLlNwZWVjaFJlY29nbml0aW9uVXNlclBl
cm1pc3Npb25QZXJzaXN0ZW5jZQorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAg
KiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2Uu
aDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlD
bGllbnQ6OmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Qp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNsaWVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tH
ZXRUeXBlSUQpOgorICAgICAgICAoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
a0NvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJlZmVyZW5jZXMubW06CisgICAgICAgICgtW1dLUHJlZmVyZW5jZXMgX3NwZWVjaFJl
Y29nbml0aW9uRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9zZXRTcGVlY2hS
ZWNvZ25pdGlvbkVuYWJsZWQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
ZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURl
bGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Np
b25VdGlsaXRpZXMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpjaGVja1NhbmRib3hSZXF1
aXJlbWVudEZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpjaGVja1VzYWdlRGVzY3JpcHRpb25T
dHJpbmdGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6Y2hlY2tVc2FnZURlc2NyaXB0aW9uU3Ry
aW5nRm9yU3BlZWNoUmVjb2duaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpyZXF1ZXN0QVZDYXB0
dXJlQWNjZXNzRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrQVZDYXB0dXJlQWNjZXNz
Rm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvbkFjY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrU3BlZWNoUmVjb2duaXRpb25BY2Nlc3MpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpwZXJtaXR0ZWRUb0NhcHR1cmVBdWRpbyk6CisgICAgICAgIChXZWJLaXQ6
OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpwZXJtaXR0ZWRUb0NhcHR1
cmVWaWRlbyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5OjpyZXF1ZXN0U3lzdGVtVmFsaWRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OnJl
cXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nl
c3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OmNvbXB1dGVNaWNyb3Bob25lQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6Y29t
cHV0ZVNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OlNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAg
IChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFy
dE5leHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6c3RhcnRQcm9jZXNzaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
Ojpjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tNaWNyb3Bob25lQWNjZXNzKToKKyAgICAgICAg
KFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y2hlY2tTcGVlY2hS
ZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNj
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cjo6cmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0VXNlclBlcm1pc3Npb24pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0Ojpjb21wbGV0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3Q6Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q6OlNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25DYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2s6OmNvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6
c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVz
dFBlcm1pc3Npb25Gb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cjo6YWJvcnQpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aW52
YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpoYW5k
bGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0
b3BSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFi
b3J0UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpz
ZW5kVXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnBy
b2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpyZW1vdmVQZW5kaW5nUmVxdWVzdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydFBvY2Vz
c2luZ1JlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6c3RvcFByb2Nlc3NpbmdSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdl
TWFpbkRvY3VtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIpOgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpzdGFydCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVVw
ZGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24uaDoKKwogMjAyMC0xMS0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjk2
NjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmluZGV4IDUyOGJjNzYyNzI1NDYwM2E2YTMzODEzN2FkODIy
MDIyNzRhOGM0OWQuLmUyNDRkODU5NDg1MGNkYmQwNGJhZmFkMGYxN2JhNDc2ZDZhMzgxOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC03NjIsMyArNzYyLDExIEBACiAgICAgfHwgKFBMQVRGT1JN
KEFQUExFVFYpICYmIF9fVFZfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTQwMDAwKQogI2Rl
ZmluZSBIQVZFX0FWT1VUUFVUREVWSUNFX1NQQVRJQUxBVURJTyAxCiAjZW5kaWYKKworI2lmIFBM
QVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpIHx8IChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKQorI2RlZmluZSBIQVZF
X1NQRUVDSFJFQ09HTklaRVIgMQorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRG
T1JNKE1BQ0NBVEFMWVNUKSB8fCBQTEFURk9STShNQUMpCisjZGVmaW5lIEhBVkVfQVZDQVBUVVJF
REVWSUNFIDEKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb24uY3BwCmluZGV4IDUxYTMyY2RhYWNhYTFlZDAxMTQyNzY3ZDIyZTMw
MjUyNmRlYmY1OTUuLmYxMTdjMWZiMWI1YmQwNGFlNzU1MjU2NWZiYWE4ODkxYzVjMWFlYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
bi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJT
cGVlY2hSZWNvZ25pdGlvbi5oIgogCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgpAQCAtNjksNyArNzAsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTcGVlY2hSZWNvZ25pdGlvbjo6
c3RhcnRSZWNvZ25pdGlvbigpCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBVbmtub3duRXJyb3IsICJSZWNvZ25pdGlvbiBkb2VzIG5vdCBoYXZlIGEg
dmFsaWQgY29ubmVjdGlvbiJfcyB9OwogCi0gICAgbV9jb25uZWN0aW9uLT5zdGFydChpZGVudGlm
aWVyKCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVyaW1SZXN1bHRzLCBtX21heEFsdGVy
bmF0aXZlcyk7CisgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zdGFydChpZGVudGlmaWVy
KCksIG1fbGFuZywgbV9jb250aW51b3VzLCBtX2ludGVyaW1SZXN1bHRzLCBtX21heEFsdGVybmF0
aXZlcywgQ2xpZW50T3JpZ2luIHsgZG9jdW1lbnQudG9wT3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVu
dC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9KTsKICAgICBtX3N0YXRlID0gU3RhdGU6OlN0YXJ0
aW5nOwogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCmluZGV4IDNmZDJk
MzNhY2EwMjA1MjYzNDA1OGQwZmI1NjUyZWI3MDA3ZmE1MmEuLjY5ZWViYzI5M2Q1YjdkZTFlMzhj
ZWVhZDJhM2VlMzhmMDBkMWNhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCkBAIC0zMSwxNSAr
MzEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnQ7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTsKK3N0cnVjdCBD
bGllbnRPcmlnaW47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiA6IHB1Ymxp
YyBSZWZDb3VudGVkPFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbj4gewogcHVibGljOgogICAg
IHZpcnR1YWwgflNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbigpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlckNsaWVudChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29s
IGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3Vs
dHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgQ2xpZW50T3JpZ2luJiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc3RvcChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVVw
ZGF0ZShjb25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVVwZGF0ZShTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYmKSA9IDA7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmNwcAppbmRleCA0YTVlOGMx
NjMwM2MxODY1YzJiMWZmY2U5YjU2ZWUyNjIwM2E3ZmM1Li5kM2JkN2E5NGE0MmI5ZDVlMDU5MjBj
NWJmZTdkYmM0NGE5MTg4N2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5jcHAKQEAgLTI4LDExICsyOCw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dD4gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpjcmVhdGUoU3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0SW5mbyYmIHJlcXVlc3RJbmZvKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3RJbmZvKSkpOwotfQotCiBTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3Q6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdChTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3RJbmZvJiYgcmVxdWVzdEluZm8pCiAgICAgOiBtX2luZm8oV1RGTW92ZShyZXF1
ZXN0SW5mbykpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5oCmluZGV4IDVjZWVhMDFjNzM4NjU1NmQ0MjUxZjhj
OGI5NWMzMTI0YmFmYzYwMTIuLjlhYWRlNjE3MWUwNjJmNWE4Y2MzYTE2Mjg5Mjk5NDk5ZGZkOWQw
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uUmVxdWVzdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QgOiBwdWJsaWMgUmVmQ291
bnRlZDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IHsKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4gY3JlYXRlKFNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdEluZm8mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8mJik7CiAK
ICAgICBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2luZm8uY2xpZW50SWRlbnRpZmllcjsgfQogICAg
IGNvbnN0IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5sYW5nOyB9CiAgICAg
Ym9vbCBjb250aW51b3VzKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmNvbnRpbnVvdXM7OyB9CiAg
ICAgYm9vbCBpbnRlcmltUmVzdWx0cygpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5pbnRlcmltUmVz
dWx0czsgfQogICAgIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcygpIGNvbnN0IHsgcmV0dXJuIG1f
aW5mby5tYXhBbHRlcm5hdGl2ZXM7IH0KKyAgICBjb25zdCBDbGllbnRPcmlnaW4gY2xpZW50T3Jp
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmNsaWVudE9yaWdpbjsgfQogCiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3RJbmZvJiYpOwotCiAgICAgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyBtX2luZm87
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKaW5kZXggYWIxZTFhZTZlZjM4ODk4YzIxYTJh
OWRmN2FmMWYwMDdlMjRiMTdkMC4uMWVmZTllMDY0NmU3NDdjYjU1ZDdjY2IwZjdiMThmZjVlMGIz
YzRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIkNsaWVudE9yaWdpbi5oIgogI2luY2x1ZGUgIlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzUsNiArMzYsNyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5m
byB7CiAgICAgYm9vbCBjb250aW51b3VzIHsgZmFsc2UgfTsKICAgICBib29sIGludGVyaW1SZXN1
bHRzIHsgZmFsc2UgfTsKICAgICB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMgeyAxIH07CisgICAg
Q2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbz4gZGVjb2RlKERl
Y29kZXImKTsKQEAgLTQzLDcgKzQ1LDcgQEAgc3RydWN0IFNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dEluZm8gewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0SW5mbzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rl
ciA8PCBjbGllbnRJZGVudGlmaWVyIDw8IGxhbmcgPDwgY29udGludW91cyA8PCBpbnRlcmltUmVz
dWx0cyA8PCBtYXhBbHRlcm5hdGl2ZXM7CisgICAgZW5jb2RlciA8PCBjbGllbnRJZGVudGlmaWVy
IDw8IGxhbmcgPDwgY29udGludW91cyA8PCBpbnRlcmltUmVzdWx0cyA8PCBtYXhBbHRlcm5hdGl2
ZXMgPDwgY2xpZW50T3JpZ2luOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtNzQs
MTIgKzc2LDE4IEBAIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8+IFNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdEluZm86OmRlY29kZShEZWNvCiAgICAgaWYgKCFtYXhBbHRlcm5h
dGl2ZXMpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBPcHRpb25hbDxDbGll
bnRPcmlnaW4+IGNsaWVudE9yaWdpbjsKKyAgICBkZWNvZGVyID4+IGNsaWVudE9yaWdpbjsKKyAg
ICBpZiAoIWNsaWVudE9yaWdpbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAg
IHJldHVybiB7ewogICAgICAgICBXVEZNb3ZlKCpjbGllbnRJZGVudGlmaWVyKSwKICAgICAgICAg
V1RGTW92ZSgqbGFuZyksCiAgICAgICAgIFdURk1vdmUoKmNvbnRpbnVvdXMpLAogICAgICAgICBX
VEZNb3ZlKCppbnRlcmltUmVzdWx0cyksCi0gICAgICAgIFdURk1vdmUoKm1heEFsdGVybmF0aXZl
cykKKyAgICAgICAgV1RGTW92ZSgqbWF4QWx0ZXJuYXRpdmVzKSwKKyAgICAgICAgV1RGTW92ZSgq
Y2xpZW50T3JpZ2luKQogICAgIH19OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAKaW5kZXggNTM0ZWRh
M2QyNDc3ZWUxYzZmMTdlYzZhZjE3OTMyNmJiNzlmMDIwNy4uOWE5YTdkOTIwNjk2NTVjNDU3MTYw
N2RkYTE4YzRlNmIzMzBmNzJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcApAQCAtNjAsNyArNjAsNyBA
QCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoU3BlZWNoUmVjb2duaXRpb25VcGRh
dGVUeXBlIGVudW1lcmF0aW9uVmFsdWUpCiAKIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5
cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgeyBjbGllbnRJ
ZGVudGlmaWVyLCB0eXBlIH07CisgICAgcmV0dXJuIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIHsg
Y2xpZW50SWRlbnRpZmllciwgdHlwZSwgV1RGOjpNb25vc3RhdGUoKSB9OwogfQogCiBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVy
LCBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yJiBlcnJvcikKQEAgLTgzLDcgKzgzLDcgQEAg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlKFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWUKIFNwZWVjaFJlY29nbml0aW9uRXJyb3IgU3BlZWNoUmVj
b2duaXRpb25VcGRhdGU6OmVycm9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihtX2NvbnRlbnQsCi0gICAgICAgIFtdIChTcGVlY2hSZWNvZ25pdGlvbkVycm9yJiBlcnJvcikg
eyByZXR1cm4gZXJyb3I7IH0sCisgICAgICAgIFtdIChjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yJiBlcnJvcikgeyByZXR1cm4gZXJyb3I7IH0sCiAgICAgICAgIFtdIChjb25zdCBhdXRvJikg
eyByZXR1cm4gU3BlZWNoUmVjb2duaXRpb25FcnJvcigpOyB9CiAgICAgKTsKIH0KQEAgLTkxLDcg
KzkxLDcgQEAgU3BlZWNoUmVjb2duaXRpb25FcnJvciBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6
ZXJyb3IoKSBjb25zdAogVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4gU3BlZWNo
UmVjb2duaXRpb25VcGRhdGU6OnJlc3VsdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24obV9jb250ZW50LAotICAgICAgICBbXSAoVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVz
dWx0RGF0YT4mIGRhdGEpIHsgcmV0dXJuIGRhdGE7IH0sCisgICAgICAgIFtdIChjb25zdCBWZWN0
b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYgZGF0YSkgeyByZXR1cm4gZGF0YTsgfSwK
ICAgICAgICAgW10gKGNvbnN0IGF1dG8mKSB7IHJldHVybiBWZWN0b3I8U3BlZWNoUmVjb2duaXRp
b25SZXN1bHREYXRhPiB7IH07IH0KICAgICApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKaW5kZXggM2E4MmJm
NmJhZjU0Y2UwYzRiMTMzNGVmNmY4YjU4OTNmM2I4OTgyZS4uODkxNDkxNzkzZjRlMDFlYzJmZjYw
MTA3Y2I0ODVmNDg4ZmE0M2U4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCkBAIC01Miw4ICs1Miw4IEBAIFN0
cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5
cGUpOwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgewogcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGUoU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRh
dGVUeXBlKTsKLSAgICBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlRXJyb3Io
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3BlZWNo
UmVjb2duaXRpb25FcnJvciYpOwotICAgIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBj
cmVhdGVSZXN1bHQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwg
Y29uc3QgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4mKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgY3JlYXRlRXJyb3IoU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3BlZWNoUmVjb2du
aXRpb25FcnJvciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZSBjcmVhdGVSZXN1bHQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciwgY29uc3QgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4mKTsKIAog
ICAgIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50SWRlbnRpZmllcjsgfQogICAgIFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CkBA
IC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB1c2luZyBDb250ZW50ID0g
VmFyaWFudDxXVEY6Ok1vbm9zdGF0ZSwgU3BlZWNoUmVjb2duaXRpb25FcnJvciwgVmVjdG9yPFNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+OwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSwgQ29udGVudCA9IFdURjo6
TW9ub3N0YXRlKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZSwgQ29udGVudCk7CiAKICAgICBTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyIG1fY2xpZW50SWRlbnRpZmllcjsKICAgICBTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgKaW5kZXggY2Y5ZTcyYjkzYzA2NGE1NWRk
ZGZhYjdiM2NhZmI0ODkwZTAzNWY0Ni4uMjQwYWEzZDQ4NGE5NzNiNDQxMTJhZWY2MWU4ZWFhYTg0
N2I1OGQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNwZWVjaFJlY29n
bml0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVj
b2duaXRpb25Qcm92aWRlci5oCkBAIC0zOSwxMCArMzksMTAgQEAgcHVibGljOgogICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHVtbXlTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24o
KSk7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCByZWdpc3RlckNsaWVudChTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnQmKSBmaW5hbCB7IH0KLSAgICAgICAgdm9pZCBzdGFydChTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBi
b29sLCBib29sLCB1aW50NjRfdCkgZmluYWwgeyB9CisgICAgICAgIHZvaWQgc3RhcnQoU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgYm9v
bCwgYm9vbCwgdWludDY0X3QsIENsaWVudE9yaWdpbiYmKSBmaW5hbCB7IH0KICAgICAgICAgdm9p
ZCBzdG9wKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFs
IHsgfQogICAgICAgICB2b2lkIGFib3J0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIpIGZpbmFsIHsgfQotICAgICAgICB2b2lkIGRpZFJlY2VpdmVVcGRhdGUoY29u
c3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYpIGZpbmFsIHsgfQogICAgIH07
CiAgICAgRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyKCkgPSBkZWZhdWx0OwogICAgIFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiYgc3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQv
SGVhZGVycy5jbWFrZQppbmRleCA0MzYzOTcwZjFhZTAzNjZlYTAzOTU1N2EyNzNkOGI4M2U2NjE2
NDQ4Li4zZTdlNTk1ODRmZjI4MDAwZTEwZDk5YWU0NGFiZWMzZmZhMjEzOWEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9IZWFkZXJz
LmNtYWtlCkBAIC05OSw2ICs5OSw3IEBAIHNldChXZWJLaXRfUFVCTElDX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVjdGlvblNwYWNlVHlwZXMuaAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmgKICAgICBVSVByb2Nlc3MvQVBJ
L0MvV0tTZXNzaW9uU3RhdGVSZWYuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tUZXN0aW5n
U3VwcG9ydC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLVGV4dENoZWNrZXIuaAogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQVBJT2JqZWN0LmgKaW5kZXggNmQwNjU2NDVkY2VlNjJlNTlkNTBkYmVmMzc0MzVhNDlhODBl
YjY4Mi4uY2QxY2FkOTZiNDAzMTJkYjNiMTg4ZGU3MWY2MDg4YmY3MjhmZDg3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTY1LDYgKzE2NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgUnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1bkphdmFT
Y3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1bkphdmFTY3JpcHRQcm9tcHRS
ZXN1bHRMaXN0ZW5lciwKKyAgICAgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2ssCiAgICAgICAgIFRleHRDaGVja2VyLAogICAgICAgICBVUkxTY2hlbWVUYXNrLAogICAgICAg
ICBVc2VyQ29udGVudENvbnRyb2xsZXIsCkBAIC00MTAsNiArNDExLDcgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxBUEk6Ok9iamVjdDo6VHlwZT4gewogICAgICAgICBBUEk6Ok9iamVj
dDo6VHlwZTo6UnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIEFQSTo6
T2JqZWN0OjpUeXBlOjpSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVyLAogICAgICAg
ICBBUEk6Ok9iamVjdDo6VHlwZTo6UnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExpc3RlbmVyLAor
ICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2ssCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpUZXh0Q2hlY2tlciwKICAgICAgICAg
QVBJOjpPYmplY3Q6OlR5cGU6OlVSTFNjaGVtZVRhc2ssCiAgICAgICAgIEFQSTo6T2JqZWN0OjpU
eXBlOjpVc2VyQ29udGVudENvbnRyb2xsZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5o
CmluZGV4IDllODJlNTYwMDE4N2VjMWNmOGFmOWJlZTc5ZTcxZDBlOGQ3ZmQxNWEuLjg0ZWU2YzI4
OGY2ZDJlYmQ1MWZhNzNlYTcyNzA4ZjMyOTQ2YmRkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L1dLQmFzZS5oCkBAIC0xNDEsNiArMTQxLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tXZWJzaXRlRGF0YUNvbmZpZ3VyYXRpb25TdG9yZSogV0tXZWJzaXRlRGF0YVN0b3JlQ28KIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLV2Vic2l0ZURhdGFTdG9yZSogV0tXZWJzaXRlRGF0
YVN0b3JlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tXZWJzaXRlUG9saWNpZXMq
IFdLV2Vic2l0ZVBvbGljaWVzUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tXaW5k
b3dGZWF0dXJlcyogV0tXaW5kb3dGZWF0dXJlc1JlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sqIFdLU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWY7CiAKIC8qIFdlYktpdDIgQnVuZGxlIHR5cGVzICov
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CmluZGV4IDgzZDI4MGM3NWVmNWY1YmIwYTJlYjZkMTFhYThjMGZhOTE5Yjc0
ZDAuLmE5MGJiYTA5Y2M3NGVlYmEwNWIwM2QzZjZlNDhkNzU1ZDEwMmZhYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dApAQCAtMjkwLDYgKzI5MCw3IEBAIFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcAog
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAogVUlQcm9jZXNzL1N1c3BlbmRl
ZFBhZ2VQcm94eS5jcHAKIFVJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5jcHAKK1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcAogVUlQcm9jZXNz
L1RleHRDaGVja2VyLmNwcAogVUlQcm9jZXNzL1RleHRDaGVja2VyQ29tcGxldGlvbi5jcHAKIFVJ
UHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eS5jcHAKQEAgLTQwMyw2ICs0MDQs
NyBAQCBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9X
S1Byb3RlY3Rpb25TcGFjZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5h
Z2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRlUmVmLmNwcAorVUlQcm9jZXNz
L0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwCiBVSVByb2Nl
c3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50
Q29udHJvbGxlclJlZi5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50RXh0ZW5zaW9u
U3RvcmVSZWYuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMDg0ZDUxMzUyZDQ0YTQ1MDk0
OWIzZmJkMWQxZDc2MTM1ZmIyYmViMi4uMDk5NzcwYjRhYWZlOGFlMDRjNzg2YmRkMjg3ZTcwZjQ3
YjEzNDdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMzczLDYgKzM3Myw3IEBAIFVJUHJv
Y2Vzcy9Db2NvYS9HbG9iYWxGaW5kSW5QYWdlU3RhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9JY29u
TG9hZGluZ0RlbGVnYXRlLm1tCiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50Lm1tCiBVSVByb2Nlc3MvQ29jb2EvTWVkaWFVdGlsaXRpZXMubW0KK1VJUHJv
Y2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KIFVJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1t
CiBVSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4IGFhN2Q4OWMwMWU3MzUyMGNl
M2VlMDQyMjZiOWFlODU5NzBiZmFhNmUuLmEwZGJhODM3MjdhOTZhZDYxMDQ3YjllZDE1YjY0YjMx
MzRlZWRhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCkBA
IC0yMDIsNiArMjAyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0b3JD
b25maWd1cmF0aW9uOjpjcmVhdGUoKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGVjaWRl
UG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQog
fTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
QVBJQ2FzdC5oCmluZGV4IGI1MmM0NGJhZWE5YWNmOWZjMDMzMmQ1YTlmMzczNTZlOWQyMzg2Mjku
LjE4Y2JmZDViNzRlYjg3NzBhNTc4ZjE1YzhhMDE2MTQ5OTAyMTQ1NDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC03OSw2ICs3OSw3IEBAIGNsYXNzIEF1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcjsKIGNsYXNzIERvd25sb2FkUHJveHk7CiBjbGFz
cyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3Q7CitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjazsK
IGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5OwogY2xhc3MgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eTsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKQEAgLTE1Miw2
ICsxNTMsNyBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tQcmVmZXJlbmNlc1JlZiwgV2ViUHJlZmVy
ZW5jZXMpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQcm90ZWN0aW9uU3BhY2VSZWYsIFdlYlByb3Rl
Y3Rpb25TcGFjZSkKIFdLX0FERF9BUElfTUFQUElORyhXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyUmVmLCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFuYWdlcikKIFdLX0FERF9BUElf
TUFQUElORyhXS1Nlc3Npb25TdGF0ZVJlZiwgQVBJOjpTZXNzaW9uU3RhdGUpCitXS19BRERfQVBJ
X01BUFBJTkcoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiwgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2spCiBXS19BRERfQVBJX01BUFBJTkcoV0tUZXh0
Q2hlY2tlclJlZiwgV2ViVGV4dENoZWNrZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyQ29u
dGVudENvbnRyb2xsZXJSZWYsIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KQogV0tfQURE
X0FQSV9NQVBQSU5HKFdLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlZiwgQVBJOjpDb250ZW50
UnVsZUxpc3RTdG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmlu
ZGV4IDQzNjljZGQ4MjViNTE1N2ZiMDEwYzNmODFhZTc4ZTY2MGRhYTc0ZmMuLjVlMTA5ZDU3OWVi
NzVmMWQ4ZmJmYjFkMDNhOGY4YzBkN2JjZTZkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcApAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgIlBhZ2VDbGllbnQu
aCIKICNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIlByaW50SW5mby5o
IgorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKICNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS1BhZ2VQb2xpY3lDbGllbnRJbnRlcm5hbC5o
IgogI2luY2x1ZGUgIldLUGFnZVJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzSW50ZXJuYWwuaCIKQEAg
LTExNSw3ICsxMTYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tQYWdlUG9s
aWN5Q2xpZW50QmFzZT4gewogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdL
UGFnZVVJQ2xpZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1BhZ2VVSUNsaWVu
dFYwLCBXS1BhZ2VVSUNsaWVudFYxLCBXS1BhZ2VVSUNsaWVudFYyLCBXS1BhZ2VVSUNsaWVudFYz
LCBXS1BhZ2VVSUNsaWVudFY0LCBXS1BhZ2VVSUNsaWVudFY1LCBXS1BhZ2VVSUNsaWVudFY2LCBX
S1BhZ2VVSUNsaWVudFY3LCBXS1BhZ2VVSUNsaWVudFY4LCBXS1BhZ2VVSUNsaWVudFY5LCBXS1Bh
Z2VVSUNsaWVudFYxMCwgV0tQYWdlVUlDbGllbnRWMTEsIFdLUGFnZVVJQ2xpZW50VjEyLCBXS1Bh
Z2VVSUNsaWVudFYxMywgV0tQYWdlVUlDbGllbnRWMTQ+IFZlcnNpb25zOworICAgIHR5cGVkZWYg
c3RkOjp0dXBsZTxXS1BhZ2VVSUNsaWVudFYwLCBXS1BhZ2VVSUNsaWVudFYxLCBXS1BhZ2VVSUNs
aWVudFYyLCBXS1BhZ2VVSUNsaWVudFYzLCBXS1BhZ2VVSUNsaWVudFY0LCBXS1BhZ2VVSUNsaWVu
dFY1LCBXS1BhZ2VVSUNsaWVudFY2LCBXS1BhZ2VVSUNsaWVudFY3LCBXS1BhZ2VVSUNsaWVudFY4
LCBXS1BhZ2VVSUNsaWVudFY5LCBXS1BhZ2VVSUNsaWVudFYxMCwgV0tQYWdlVUlDbGllbnRWMTEs
IFdLUGFnZVVJQ2xpZW50VjEyLCBXS1BhZ2VVSUNsaWVudFYxMywgV0tQYWdlVUlDbGllbnRWMTQs
IFdLUGFnZVVJQ2xpZW50VjE1PiBWZXJzaW9uczsKIH07CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKQEAgLTIxMTAsNiArMjExMSwxMyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVs
UmVzdWx0OjpQcmVzZW50ZWQpOwogICAgICAgICB9CiAjZW5kaWYKKyAgICAgICAgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94
eSYgcGFnZSwgQVBJOjpTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3QpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2Ns
aWVudC5kZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KHRv
QVBJKCZwYWdlKSwgdG9BUEkoJm9yaWdpbiksIHRvQVBJKFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpLnB0cigpKSk7
CisgICAgICAgIH0KICAgICB9OwogCiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRVSUNsaWVudCht
YWtlVW5pcXVlPFVJQ2xpZW50Pih3a0NsaWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKaW5kZXggYjYzODgxNTVjZDMwMzZlNjY2MTEwZjE5
MjU2MTZhZmQzN2U4NjhiYS4uNjM2MzU1NTY0ZDAwYjExMjJhODdlMjI5YTMwYjk0ZDdlOTllNGVm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5o
CkBAIC0xMzYsNiArMTM2LDcgQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkUmVzaWduSW5wdXRF
bGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlQ2FsbGJhY2spKFdLUGEKIHR5cGVkZWYgYm9v
bCAoKldLUGFnZVNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDYWxs
YmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4s
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VSdW5XZWJB
dXRoZW50aWNhdGlvblBhbmVsQ2FsbGJhY2spKCk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEZWNp
ZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2spKFdL
UGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5T3JpZ2luUmVmIHRvcE9yaWdpbiwgV0tTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBjYWxsYmFjayk7CiAKIC8vIERlcHJlY2F0ZWQK
IHR5cGVkZWYgV0tQYWdlUmVmICgqV0tQYWdlQ3JlYXRlTmV3UGFnZUNhbGxiYWNrX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjApKFdLUGFnZVJlZiBwYWdlLCBXS0RpY3Rpb25hcnlSZWYgZmVhdHVyZXMs
IFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0
b24sIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwpAQCAtMTM1Myw2ICsxMzU0LDExNyBAQCB0eXBl
ZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudFYxNCB7CiAgICAgV0tQYWdlUnVuV2ViQXV0aGVudGlj
YXRpb25QYW5lbENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5XZWJBdXRo
ZW50aWNhdGlvblBhbmVsOwogfSBXS1BhZ2VVSUNsaWVudFYxNDsKIAordHlwZWRlZiBzdHJ1Y3Qg
V0tQYWdlVUlDbGllbnRWMTUgeworICAgIFdLUGFnZVVJQ2xpZW50QmFzZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTsKKworICAgIC8vIFZlcnNp
b24gMC4KKyAgICBXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMCAgICAgICAgICAgICAgICAgIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MDsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNob3dQYWdlOworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2U7CisgICAg
V0tQYWdlVGFrZUZvY3VzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0YWtlRm9jdXM7CisgICAgV0tQYWdlRm9jdXNDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1czsKKyAgICBXS1BhZ2VV
bmZvY3VzQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuZm9jdXM7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNr
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0X2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjA7CisgICAgV0tQYWdlU2V0U3RhdHVzVGV4dENhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0dXNUZXh0OworICAg
IFdLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVtZW50Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMCAgICAgICAgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MDsKKyAgICBXS1BhZ2VNaXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjAgICAgIG1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjA7CisgICAgV0tQYWdlRGlkTm90SGFuZGxlS2V5RXZlbnRDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWROb3RIYW5kbGVLZXlFdmVudDsKKyAgICBX
S1BhZ2VEaWROb3RIYW5kbGVXaGVlbEV2ZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQ7CisgICAgV0tQYWdlR2V0VG9vbGJhcnNB
cmVWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYmFy
c0FyZVZpc2libGU7CisgICAgV0tQYWdlU2V0VG9vbGJhcnNBcmVWaXNpYmxlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUb29sYmFyc0FyZVZpc2libGU7CisgICAg
V0tQYWdlR2V0TWVudUJhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZW51QmFySXNWaXNpYmxlOworICAgIFdLUGFnZVNldE1lbnVCYXJJc1Zpc2li
bGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWVudUJhcklz
VmlzaWJsZTsKKyAgICBXS1BhZ2VHZXRTdGF0dXNCYXJJc1Zpc2libGVDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c0JhcklzVmlzaWJsZTsKKyAgICBXS1BhZ2VT
ZXRTdGF0dXNCYXJJc1Zpc2libGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldFN0YXR1c0JhcklzVmlzaWJsZTsKKyAgICBXS1BhZ2VHZXRJc1Jlc2l6YWJsZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVzaXphYmxlOwor
ICAgIFdLUGFnZVNldElzUmVzaXphYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0SXNSZXNpemFibGU7CisgICAgV0tQYWdlR2V0V2luZG93RnJhbWVD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRXaW5kb3dG
cmFtZTsKKyAgICBXS1BhZ2VTZXRXaW5kb3dGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFdpbmRvd0ZyYW1lOworICAgIFdLUGFnZVJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbENhbGxiYWNrX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjYgICAgcnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjY7CisgICAgV0tQ
YWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWREcmF3OworICAgIFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZURpZFNjcm9sbDsKKyAgICBXS1Bh
Z2VFeGNlZWRlZERhdGFiYXNlUXVvdGFDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VlZGVkRGF0YWJhc2VRdW90YTsKKyAgICBXS1BhZ2VSdW5PcGVuUGFuZWxDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bk9wZW5QYW5l
bDsKKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
Q2FsbGJhY2sgICAgICAgICAgIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3Q7CisgICAgV0tQYWdlSGVhZGVySGVpZ2h0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJIZWlnaHQ7CisgICAgV0tQYWdlRm9vdGVySGVp
Z2h0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290
ZXJIZWlnaHQ7CisgICAgV0tQYWdlRHJhd0hlYWRlckNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3SGVhZGVyOworICAgIFdLUGFnZURyYXdGb290
ZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJh
d0Zvb3RlcjsKKyAgICBXS1BhZ2VQcmludEZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50RnJhbWU7CisgICAgV0tQYWdlVUlDbGllbnRD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5N
b2RhbDsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDE7IC8vIFVzZWQgdG8gYmUgZGlkQ29tcGxldGVS
dWJiZXJCYW5kRm9yTWFpbkZyYW1lCisgICAgV0tQYWdlU2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fk
c0ZvbGRlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBzYXZlRGF0YVRvRmlsZUluRG93
bmxvYWRzRm9sZGVyOworICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdF91
bmF2YWlsYWJsZTsKKworICAgIC8vIFZlcnNpb24gMS4KKyAgICBXS1BhZ2VDcmVhdGVOZXdQYWdl
Q2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSAgICAgICAgICAgICAgICAgIGNyZWF0ZU5l
d1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTsKKyAgICBXS1BhZ2VNb3VzZURpZE1vdmVPdmVy
RWxlbWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50OworICAgIFdLUGFnZURlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3Q7CisgICAgV0tQYWdlVW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlj
a2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRv
bkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMTsKKworICAgIC8vIFZlcnNpb24gMi4KKyAg
ICBXS1BhZ2VTaG93Q29sb3JQaWNrZXJDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNob3dDb2xvclBpY2tlcjsKKyAgICBXS1BhZ2VIaWRlQ29sb3JQaWNrZXJD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVDb2xvclBp
Y2tlcjsKKyAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZDsKKwor
ICAgIC8vIFZlcnNpb24gMy4KKyAgICBXS1BhZ2VQaW5uZWRTdGF0ZURpZENoYW5nZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZFN0YXRlRGlkQ2hhbmdlOwor
CisgICAgLy8gVmVyc2lvbiA0LgorICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkMjsgLy8gVXNlZCB0byBi
ZSBkaWRCZWdpblRyYWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MuCisgICAgdm9pZCogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnVzZWQzOyAvLyBVc2VkIHRvIGJlIGRpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzLgorICAg
IHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW51c2VkNDsgLy8gVXNlZCB0byBiZSBkaWRDYW5jZWxUcmFja2luZ1BvdGVu
dGlhbExvbmdNb3VzZVByZXNzLgorICAgIFdLUGFnZUlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQbGF5aW5nQXVkaW9EaWRDaGFu
Z2U7CisKKyAgICAvLyBWZXJzaW9uIDUuCisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayAgICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VEaWRDbGlja0F1dG9GaWxsQnV0
dG9uQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZENsaWNrQXV0b0Zp
bGxCdXR0b247CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0Q2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNSAgICAgICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZv
clVzZVdpdGhWNTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrX2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjU7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjUgICAgICAgICAgICBydW5KYXZhU2NyaXB0UHJvbXB0X2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjU7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQ1OyAvLyBVc2VkIHRvIGJl
IG1lZGlhU2Vzc2lvbk1ldGFkYXRhRGlkQ2hhbmdlLgorCisgICAgLy8gVmVyc2lvbiA2LgorICAg
IFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlTmV3UGFnZTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRB
bGVydDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRDb25maXJtOworICAgIFdLUGFnZVJ1
bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnVuSmF2YVNjcmlwdFByb21wdDsKKyAgICBXS0NoZWNrVXNlck1lZGlhUGVybWlzc2lvbkNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrVXNlck1lZGlhUGVy
bWlzc2lvbkZvck9yaWdpbjsKKworICAgIC8vIFZlcnNpb24gNy4KKyAgICBXS1BhZ2VSdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDsKKyAgICBXS0Z1bGxzY3JlZW5NYXlSZXR1cm5Ub0lu
bGluZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5NYXlS
ZXR1cm5Ub0lubGluZTsKKworICAgIC8vIFZlcnNpb24gOC4KKyAgICBXS1JlcXVlc3RQb2ludGVy
TG9ja0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3RQb2ludGVyTG9jazsKKyAgICBXS0RpZExvc2VQb2ludGVyTG9ja0NhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZExvc2VQb2ludGVyTG9jazsKKworICAg
IC8vIFZlcnNpb24gOS4KKyAgICBXS0hhbmRsZUF1dG9wbGF5RXZlbnRDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUF1dG9wbGF5RXZlbnQ7CisKKyAg
ICAvLyBWZXJzaW9uIDEwLgorICAgIFdLSGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFu
Z2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgaGFzVmlkZW9JblBpY3R1cmVJblBpY3R1
cmVEaWRDaGFuZ2U7CisgICAgV0tEaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxl
SW5Gb3JlZ3JvdW5kQ2FsbGJhY2sgICAgICAgICBkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VM
aW1pdFdoaWxlSW5Gb3JlZ3JvdW5kOworCisgICAgLy8gVmVyc2lvbiAxMS4KKyAgICBXS1BhZ2VE
aWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFwcGVhcmFuY2VDYWxsYmFjayAgICAg
ICAgIGRpZFJlc2lnbklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZTsKKworICAg
IC8vIFZlcnNpb24gMTIuCisgICAgV0tQYWdlUmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZp
cm07CisKKyAgICAvLyBWZXJzaW9uIDEzLgorICAgIFdLUGFnZVNob3VsZEFsbG93RGV2aWNlT3Jp
ZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDYWxsYmFjayAgICAgICAgICAgc2hvdWxkQWxsb3dEZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzczsKKworICAgIC8vIFZlcnNpb24gMTQuCisgICAg
V0tQYWdlUnVuV2ViQXV0aGVudGljYXRpb25QYW5lbENhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsOworCisgICAgLy8gVmVyc2lvbiAx
NS4KKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0Q2FsbGJhY2sgICAgIGRlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvblJlcXVlc3Q7CisgICAgCit9IFdLUGFnZVVJQ2xpZW50VjE1OworCiAjaWZkZWYgX19jcGx1
c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNr
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wY2M4ZjlhMzVkYjg0MTFlMDM4NWE3YWUxNTQ5YTM5YWY4MTMyZWQ2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgiCisKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2tHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b0FQSShTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjazo6QVBJVHlwZSk7Cit9CisKK3ZvaWQgV0tTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFja0NvbXBsZXRlKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2tSZWYgc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2ssIGJvb2wgZ3Jh
bnRlZCkKK3sKKyAgICByZXR1cm4gdG9JbXBsKHNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrKS0+Y29tcGxldGUoZ3JhbnRlZCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNhbGxiYWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhhZWFmYzY5ODRiYTk2ZjU0ODkyZTczMmFmZWEz
YTA2M2M5YzcyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaApAQCAtMCwwICsxLDQw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNl
Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQ
T1JUIFdLVHlwZUlEIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tHZXRUeXBl
SUQodm9pZCk7CisKK1dLX0VYUE9SVCB2b2lkIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2tDb21wbGV0ZShXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVm
IHNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLCBib29sIGdyYW50ZWQpOworCisj
aWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQppbmRleCAxZWVhMjA1NGQwNmRlNzhlYmJm
MjYzMmZiODk5MmMzOThkM2ZhMGI3Li5jNGU1NTA3MmE1MTI5Yzk1MTdlZjBhYzRiMWViMmU5YjMx
Yjk5MzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cmVmZXJlbmNlcy5tbQpAQCAtMTQzNyw2ICsxNDM3LDE2IEBAIHN0YXRpYyBXZWJDb3JlOjpFZGl0
YWJsZUxpbmtCZWhhdmlvciB0b0VkaXRhYmxlTGlua0JlaGF2aW9yKF9XS0VkaXRhYmxlTGlua0Jl
aGF2CiAjZW5kaWYKIH0KIAorLSAoQk9PTClfc3BlZWNoUmVjb2duaXRpb25FbmFibGVkCit7Cisg
ICAgcmV0dXJuIF9wcmVmZXJlbmNlcy0+c3BlZWNoUmVjb2duaXRpb25FbmFibGVkKCk7Cit9CisK
Ky0gKHZvaWQpX3NldFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZDooQk9PTClzcGVlY2hSZWNvZ25p
dGlvbkVuYWJsZWQKK3sKKyAgICBfcHJlZmVyZW5jZXMtPnNldFNwZWVjaFJlY29nbml0aW9uRW5h
YmxlZChzcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQpOworfQorCiBAZW5kCiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZh
dGUuaAppbmRleCBkNDlmZTU5Njc3MjVkYTRhOTU5NjBmNDU2NzkwOThhN2YxY2RmNmExLi5mZDU4
YjBhMTE4NmFmNTg3YjgzNDNkNTExZDU2ZjcwYmE2ZGExODhlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApA
QCAtMTYxLDYgKzE2MSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0VkaXRhYmxl
TGlua0JlaGF2aW9yKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRSZXF1ZXN0
QW5pbWF0aW9uRnJhbWVFbmFibGVkOikgQk9PTCBfcmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxl
ZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U2VydmljZVdvcmtlckVudGl0bGVtZW50
RGlzYWJsZWRGb3JUZXN0aW5nOikgQk9PTCBfc2VydmljZVdvcmtlckVudGl0bGVtZW50RGlzYWJs
ZWRGb3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBY2Nlc3NpYmlsaXR5
SXNvbGF0ZWRUcmVlRW5hYmxlZDopIEJPT0wgX2FjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVFbmFi
bGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTYpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBzZXR0ZXI9X3NldFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZDopIEJPT0wgX3NwZWVjaFJlY29n
bml0aW9uRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBzZXR0ZXI9X3NldFdlYkdMRW5hYmxlZDopIEJPT0wgX3dlYkdMRW5hYmxlZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjEzLjQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IGQxZWFlMjAxZTY1NDJm
NGZhYjYwMTk4MGRjNjYxMjQ5MTMxOTc5M2YuLmYwYTliYTQxZjUxNWVmNzE4Zjc0NmM3ZmRmZmZl
YTRhMzVlOGRlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTUyLDYgKzE1Miw4IEBAIHN0cnVjdCBV
SUVkZ2VJbnNldHM7CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2ls
bFNoYXJlQWN0aXZpdHlJdGVtczooTlNBcnJheSAqKWFjdGl2aXR5SXRlbXMgV0tfQVBJX0FWQUlM
QUJMRShpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2Vj
dXJpdHlPcmlnaW4gKilvcmlnaW4gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShCT09MIGF1dGhv
cml6ZWQpKWRlY2lzaW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogCiAtIChCT09MKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHNob3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0Zv
ckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudCBXS19BUElfQVZBSUxB
QkxFKGlvcyg5LjApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTRmNmNjZGNkMDc0
OGU4Y2I4YjgwOWYyZDk2MDMyZjY2ZDE4OGI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCkBAIC0wLDAg
KzEsMTY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNZWRp
YVBlcm1pc3Npb25VdGlsaXRpZXMuaCIKKworI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgor
I2ltcG9ydCAiVENDU1BJLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0
Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgor
CisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorI2ltcG9ydCA8U3BlZWNoL1NwZWVjaC5oPgor
CitTT0ZUX0xJTktfRlJBTUVXT1JLKFNwZWVjaCkKK1NPRlRfTElOS19DTEFTUyhTcGVlY2gsIFNG
U3BlZWNoUmVjb2duaXplcikKKyNlbmRpZgorCisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0
aW9uU29mdExpbmsuaD4KKworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFRDQykKK1NPRlRf
TElOSyhUQ0MsIFRDQ0FjY2Vzc1ByZWZsaWdodCwgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0LCAo
Q0ZTdHJpbmdSZWYgc2VydmljZSwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpLCAoc2VydmljZSwg
b3B0aW9ucykpCitTT0ZUX0xJTktfQ09OU1RBTlQoVENDLCBrVENDU2VydmljZU1pY3JvcGhvbmUs
IENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RDQ1NlcnZpY2VDYW1lcmEs
IENGU3RyaW5nUmVmKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBjaGVja1NhbmRib3hS
ZXF1aXJlbWVudEZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSB0eXBlKQoreworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgYXVkaW9GbGFnOworICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyB2aWRlb0ZsYWc7CisgICAgc3RhdGljIGJvb2wgaXNBdWRpb0VudGl0
bGVkID0gdHJ1ZTsKKyAgICBzdGF0aWMgYm9vbCBpc1ZpZGVvRW50aXRsZWQgPSB0cnVlOworICAg
IAorICAgIGF1dG8gY2hlY2tGdW5jdGlvbiA9IFtdKGNvbnN0IGNoYXIqIG9wZXJhdGlvbiwgYm9v
bCogZW50aXRsZWQpIHsKKyAgICAgICAgaWYgKCFjdXJyZW50UHJvY2Vzc0lzU2FuZGJveGVkKCkp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaW50IHJlc3VsdCA9IHNhbmRib3hfY2hl
Y2soZ2V0cGlkKCksIG9wZXJhdGlvbiwgU0FOREJPWF9GSUxURVJfTk9ORSk7CisgICAgICAgIGlm
IChyZXN1bHQgPT0gLTEpCisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIGNoZWNraW5n
ICclcycgc2FuZGJveCBhY2Nlc3MsIGVycm5vPSVsZCIsIG9wZXJhdGlvbiwgKGxvbmcpZXJybm8p
OworICAgICAgICAqZW50aXRsZWQgPSAhcmVzdWx0OworICAgIH07CisKKyAgICBzd2l0Y2ggKHR5
cGUpIHsKKyAgICBjYXNlIE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvOgorICAgICAgICBzdGQ6
OmNhbGxfb25jZShhdWRpb0ZsYWcsIGNoZWNrRnVuY3Rpb24sICJkZXZpY2UtbWljcm9waG9uZSIs
ICZpc0F1ZGlvRW50aXRsZWQpOworICAgICAgICByZXR1cm4gaXNBdWRpb0VudGl0bGVkOworICAg
IGNhc2UgTWVkaWFQZXJtaXNzaW9uVHlwZTo6VmlkZW86CisgICAgICAgIHN0ZDo6Y2FsbF9vbmNl
KHZpZGVvRmxhZywgY2hlY2tGdW5jdGlvbiwgImRldmljZS1jYW1lcmEiLCAmaXNWaWRlb0VudGl0
bGVkKTsKKyAgICAgICAgcmV0dXJuIGlzVmlkZW9FbnRpdGxlZDsKKyAgICB9CisjZW5kaWYKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdGb3JU
eXBlKE1lZGlhUGVybWlzc2lvblR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAg
ICBjYXNlIE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvOgorICAgICAgICBzdGF0aWMgVENDQWNj
ZXNzUHJlZmxpZ2h0UmVzdWx0IGF1ZGlvQWNjZXNzID0gVENDQWNjZXNzUHJlZmxpZ2h0KGdldGtU
Q0NTZXJ2aWNlTWljcm9waG9uZSgpLCBOVUxMKTsKKyAgICAgICAgaWYgKGF1ZGlvQWNjZXNzID09
IGtUQ0NBY2Nlc3NQcmVmbGlnaHRHcmFudGVkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIHJldHVybiBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1
bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb24iXSkubGVu
Z3RoID4gMDsKKyAgICBjYXNlIE1lZGlhUGVybWlzc2lvblR5cGU6OlZpZGVvOgorICAgICAgICBz
dGF0aWMgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0IHZpZGVvQWNjZXNzID0gVENDQWNjZXNzUHJl
ZmxpZ2h0KGdldGtUQ0NTZXJ2aWNlQ2FtZXJhKCksIE5VTEwpOworICAgICAgICBpZiAodmlkZW9B
Y2Nlc3MgPT0ga1RDQ0FjY2Vzc1ByZWZsaWdodEdyYW50ZWQpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgcmV0dXJuIGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihOU0J1bmRs
ZS5tYWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uIl0p
Lmxlbmd0aCA+IDA7CisgICAgfQorfQorCitib29sIGNoZWNrVXNhZ2VEZXNjcmlwdGlvblN0cmlu
Z0ZvclNwZWVjaFJlY29nbml0aW9uKCkKK3sKKyAgICByZXR1cm4gZHluYW1pY19vYmpjX2Nhc3Q8
TlNTdHJpbmc+KE5TQnVuZGxlLm1haW5CdW5kbGUuaW5mb0RpY3Rpb25hcnlbQCJOU1NwZWVjaFJl
Y29nbml0aW9uVXNhZ2VEZXNjcmlwdGlvbiJdKS5sZW5ndGggPiAwOworfQorCisjaWYgSEFWRShB
VkNBUFRVUkVERVZJQ0UpCisKK3ZvaWQgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVk
aWFQZXJtaXNzaW9uVHlwZSB0eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgYXV0aG9y
aXplZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIEFWTWVkaWFUeXBlIG1lZGlhVHlwZSA9IHR5cGUgPT0gTWVkaWFQZXJtaXNzaW9u
VHlwZTo6QXVkaW8gPyBBVk1lZGlhVHlwZUF1ZGlvIDogQVZNZWRpYVR5cGVWaWRlbzsKKyAgICBh
dXRvIGRlY2lzaW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oQk9PTCBhdXRob3JpemVkKSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihhdXRob3JpemVkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIGF1dGhvcml6ZWRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihhdXRob3JpemVkKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisgICAgW1BBTDo6Z2V0
QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSByZXF1ZXN0QWNjZXNzRm9yTWVkaWFUeXBlOm1lZGlhVHlw
ZSBjb21wbGV0aW9uSGFuZGxlcjpkZWNpc2lvbkhhbmRsZXIuZ2V0KCldOworfQorCitNZWRpYVBl
cm1pc3Npb25SZXN1bHQgY2hlY2tBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lv
blR5cGUgdHlwZSkKK3sKKyAgICBBVk1lZGlhVHlwZSBtZWRpYVR5cGUgPSB0eXBlID09IE1lZGlh
UGVybWlzc2lvblR5cGU6OkF1ZGlvID8gQVZNZWRpYVR5cGVBdWRpbyA6IEFWTWVkaWFUeXBlVmlk
ZW87CisgICAgYXV0byBhdXRob3JpemF0aW9uU3RhdHVzID0gW1BBTDo6Z2V0QVZDYXB0dXJlRGV2
aWNlQ2xhc3MoKSBhdXRob3JpemF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOm1lZGlhVHlwZV07Cisg
ICAgaWYgKGF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVk
IHx8IGF1dGhvcml6YXRpb25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3Rl
ZCkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGVybWlzc2lvblJlc3VsdDo6RGVuaWVkOworICAgIGlm
IChhdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c05vdERldGVybWlu
ZWQpCisgICAgICAgIHJldHVybiBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OlVua25vd247CisgICAg
cmV0dXJuIE1lZGlhUGVybWlzc2lvblJlc3VsdDo6R3JhbnRlZDsKK30KKworI2VuZGlmIC8vIEhB
VkUoQVZDQVBUVVJFREVWSUNFKQorCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCit2b2lk
IHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvbkFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wgYXV0aG9yaXplZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTRlNwZWVjaFJl
Y29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cykgbXV0YWJsZSB7CisgICAgICAgIGJv
b2wgYXV0aG9yaXplZCA9IHN0YXR1cyA9PSBTRlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9u
U3RhdHVzQXV0aG9yaXplZDsKKyAgICAgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgYXV0aG9yaXplZF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihhdXRob3JpemVkKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6
ZWQpOworICAgIH0pOworICAgIFtnZXRTRlNwZWVjaFJlY29nbml6ZXJDbGFzcygpIHJlcXVlc3RB
dXRob3JpemF0aW9uOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07Cit9CisKK01lZGlhUGVybWlzc2lv
blJlc3VsdCBjaGVja1NwZWVjaFJlY29nbml0aW9uQWNjZXNzKCkKK3sKKyAgICBhdXRvIGF1dGhv
cml6YXRpb25TdGF0dXMgPSBbZ2V0U0ZTcGVlY2hSZWNvZ25pemVyQ2xhc3MoKSBhdXRob3JpemF0
aW9uU3RhdHVzXTsKKyAgICBpZiAoYXV0aG9yaXphdGlvblN0YXR1cyA9PSBTRlNwZWVjaFJlY29n
bml6ZXJBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IGF1dGhvcml6YXRpb25TdGF0dXMgPT0g
U0ZTcGVlY2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpCisgICAgICAg
IHJldHVybiBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkRlbmllZDsKKyAgICBpZiAoYXV0aG9yaXph
dGlvblN0YXR1cyA9PSBTRlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9y
aXplZCkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGVybWlzc2lvblJlc3VsdDo6R3JhbnRlZDsKKyAg
ICByZXR1cm4gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duOworfQorCisjZW5kaWYgLy8g
SEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAppbmRleCA4YTA5NDc0NWMxZjI0YmUx
MDVkYmIwMmFiOTFlMzA3YjMxZDQ4NmIxLi42MmQ3YThhMThmNmViODM5NGNiZTAyY2ZhYzQzNzZh
NTRkMGExZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
CkBAIC0xNjEsNiArMTYxLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAg
ICAgICB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpX
ZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2ViRnJhbWVQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJikg
ZmluYWw7CiAjZW5kaWYKKyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKIAogICAgICAgICBVSURl
bGVnYXRlJiBtX3VpRGVsZWdhdGU7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGQwMzM4ZjhkNmUzYjlhMTNkZjJhZjE1M2FjYjVkZWIz
OGUxZmNkOWIuLjBmOWVhOTA5YTZlZjk5OTExYmU4MWVlZTllMDkzODk4NTdhMjY4ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMTMzMiw0ICsx
MzMyLDI2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmltYWdlT3JNZWRpYURvY3VtZW50
U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6CiAgICAgW3N0YXRpY19jYXN0PGlkIDxX
S1VJRGVsZWdhdGVQcml2YXRlPj4oZGVsZWdhdGUpIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dl
YlZpZXcgaW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZDpuZXdTaXplXTsKIH0KIAordm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpTZWN1cml0
eU9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIGF1dG8gZGVsZWdhdGUgPSAoaWQgPFdLVUlEZWxlZ2F0ZVByaXZh
dGU+KW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKCFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2Vi
VmlldzpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOmRlY2lzaW9u
SGFuZGxlcjopXSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNh
bGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUsIEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOmRlY2lzaW9uSGFuZGxlcjopKTsKKyAg
ICBbZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyByZXF1ZXN0U3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOndyYXBwZXIob3JpZ2luKSBkZWNpc2lvbkhh
bmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UoY29t
cGxldGlvbkhhbmRsZXIsIHsgfSksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCBn
cmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVy
SGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2VyLT5k
aWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZ3Jh
bnRlZCk7CisgICAgfSkuZ2V0KCldOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0KaW5kZXggOTk3NTc1ZGUwMjE2
YTljMGNkNzZhZmNiNDFjNzY0MWRiMTMxNWFmYi4uZTJlZmEzOTQ0NjM3MWM4MDhiMGQ2YjAzNWY4
N2FmNWFlOTBmMzJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKIAorI2ltcG9ydCAiTWVkaWFQ
ZXJtaXNzaW9uVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJUQ0NTUEkuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgpAQCAtMzcsNDAgKzM4LDEy
IEBACiAjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KICNpbXBvcnQg
PHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KIAotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVX
T1JLKFRDQykKLVNPRlRfTElOSyhUQ0MsIFRDQ0FjY2Vzc1ByZWZsaWdodCwgVENDQWNjZXNzUHJl
ZmxpZ2h0UmVzdWx0LCAoQ0ZTdHJpbmdSZWYgc2VydmljZSwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlv
bnMpLCAoc2VydmljZSwgb3B0aW9ucykpCi1TT0ZUX0xJTksoVENDLCBUQ0NBY2Nlc3NQcmVmbGln
aHRXaXRoQXVkaXRUb2tlbiwgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0LCAoQ0ZTdHJpbmdSZWYg
c2VydmljZSwgYXVkaXRfdG9rZW5fdCB0b2tlbiwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpLCAo
c2VydmljZSwgdG9rZW4sIG9wdGlvbnMpKQotU09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RDQ1Nl
cnZpY2VNaWNyb3Bob25lLCBDRlN0cmluZ1JlZikKLVNPRlRfTElOS19DT05TVEFOVChUQ0MsIGtU
Q0NTZXJ2aWNlQ2FtZXJhLCBDRlN0cmluZ1JlZikKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJv
b2wgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRvQ2Fw
dHVyZUF1ZGlvKCkKIHsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaWYgUExBVEZPUk0o
TUFDKQotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGF0aWMgYm9v
bCBlbnRpdGxlZCA9IHRydWU7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAg
ICAgICAgaWYgKCFjdXJyZW50UHJvY2Vzc0lzU2FuZGJveGVkKCkpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgaW50IHJlc3VsdCA9IHNhbmRib3hfY2hlY2soZ2V0cGlkKCksICJkZXZp
Y2UtbWljcm9waG9uZSIsIFNBTkRCT1hfRklMVEVSX05PTkUpOwotICAgICAgICBlbnRpdGxlZCA9
ICFyZXN1bHQ7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAgICAgICAgICBXVEZMb2dB
bHdheXMoIkVycm9yIGNoZWNraW5nICdkZXZpY2UtbWljcm9waG9uZScgc2FuZGJveCBhY2Nlc3Ms
IGVycm5vPSVsZCIsIChsb25nKWVycm5vKTsKLSAgICB9KTsKLSAgICBpZiAoIWVudGl0bGVkKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQotCi0gICAgc3Rh
dGljIFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3VsdCBhY2Nlc3MgPSBUQ0NBY2Nlc3NQcmVmbGlnaHQo
Z2V0a1RDQ1NlcnZpY2VNaWNyb3Bob25lKCksIE5VTEwpOwotICAgIGlmIChhY2Nlc3MgPT0ga1RD
Q0FjY2Vzc1ByZWZsaWdodEdyYW50ZWQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgc3Rh
dGljIGJvb2wgaXNQZXJtaXR0ZWQgPSBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5k
bGUubWFpbkJ1bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRp
b24iXSkubGVuZ3RoOwotICAgIHJldHVybiBpc1Blcm1pdHRlZDsKKyAgICByZXR1cm4gY2hlY2tT
YW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKSAmJiBj
aGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1
ZGlvKTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC03OSw0OSArNTIsMTMg
QEAgYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cGVybWl0dGVk
VG9DYXB0dXJlQXVkaW8oKQogYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6cGVybWl0dGVkVG9DYXB0dXJlVmlkZW8oKQogewogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCi0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VG
bGFnOwotICAgIHN0YXRpYyBib29sIGVudGl0bGVkID0gdHJ1ZTsKLSAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlRmxhZywgW10gewotICAgICAgICBpZiAoIWN1cnJlbnRQcm9jZXNzSXNTYW5kYm94ZWQo
KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpbnQgcmVzdWx0ID0gc2FuZGJveF9j
aGVjayhnZXRwaWQoKSwgImRldmljZS1jYW1lcmEiLCBTQU5EQk9YX0ZJTFRFUl9OT05FKTsKLSAg
ICAgICAgZW50aXRsZWQgPSAhcmVzdWx0OwotICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciBjaGVja2luZyAnZGV2aWNlLWNhbWVyYScgc2Fu
ZGJveCBhY2Nlc3MsIGVycm5vPSVsZCIsIChsb25nKWVycm5vKTsKLSAgICB9KTsKLSAgICBpZiAo
IWVudGl0bGVkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFD
KQotCi0gICAgc3RhdGljIFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3VsdCBhY2Nlc3MgPSBUQ0NBY2Nl
c3NQcmVmbGlnaHQoZ2V0a1RDQ1NlcnZpY2VDYW1lcmEoKSwgTlVMTCk7Ci0gICAgaWYgKGFjY2Vz
cyA9PSBrVENDQWNjZXNzUHJlZmxpZ2h0R3JhbnRlZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBzdGF0aWMgYm9vbCBpc1Blcm1pdHRlZCA9IGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5n
PihOU0J1bmRsZS5tYWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNDYW1lcmFVc2FnZURlc2Ny
aXB0aW9uIl0pLmxlbmd0aDsKLSAgICByZXR1cm4gaXNQZXJtaXR0ZWQ7CisgICAgcmV0dXJuIGNo
ZWNrU2FuZGJveFJlcXVpcmVtZW50Rm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpWaWRlbykg
JiYgY2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBl
OjpWaWRlbyk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogfQogCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKLXN0YXRpYyB2b2lkIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JN
ZWRpYVR5cGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChCT09MIGF1dGhvcml6ZWQpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyLCBBVk1lZGlhVHlwZSB0eXBlKQotewotICAgIGF1dG8gZGVjaXNpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShCT09MIGF1dGhvcml6ZWQpIG11dGFibGUgewotICAgICAgICBpZiAoIWlzTWFp
blRocmVhZCgpKSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBhdXRob3JpemVkXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7Ci0gICAgfSk7Ci0gICAgW1BBTDo6Z2V0QVZDYXB0dXJl
RGV2aWNlQ2xhc3MoKSByZXF1ZXN0QWNjZXNzRm9yTWVkaWFUeXBlOnR5cGUgY29tcGxldGlvbkhh
bmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKLX0KLQogdm9pZCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cmVxdWVzdFN5c3RlbVZhbGlkYXRpb24oY29uc3QgV2Vi
UGFnZVByb3h5JiBwYWdlLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JiByZXF1ZXN0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChw
YWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpKSB7CkBAIC0xMzAs
MzYgKzY3LDM2IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6
OnJlcXVlc3RTeXN0ZW1WYWxpZGF0aW9uKGNvbnN0IFdlYlBhCiAgICAgfQogCiAgICAgLy8gRklY
TUU6IEFkZCBUQ0MgZW50aXRsZW1lbnQgY2hlY2sgZm9yIHNjcmVlbnNoYXJpbmcuCi0gICAgYm9v
bCByZXF1aXJlc0F1ZGlvQ2FwdHVyZSA9IHJlcXVlc3QucmVxdWlyZXNBdWRpb0NhcHR1cmUoKTsK
LSAgICBib29sIHJlcXVpcmVzVmlkZW9DYXB0dXJlID0gcmVxdWVzdC5yZXF1aXJlc1ZpZGVvQ2Fw
dHVyZSgpOwotCi0gICAgYXV0byBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9ICFyZXF1
aXJlc0F1ZGlvQ2FwdHVyZSA/IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQgOiBbUEFM
OjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5
cGU6QVZNZWRpYVR5cGVBdWRpb107Ci0gICAgaWYgKG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3Rh
dHVzID09IEFWQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCB8fCBtaWNyb3Bob25lQXV0aG9yaXph
dGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkKSB7CisgICAgYXV0
byBhdWRpb1N0YXR1cyA9IHJlcXVlc3QucmVxdWlyZXNBdWRpb0NhcHR1cmUoKSA/IGNoZWNrQVZD
YXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbykgOiBNZWRpYVBl
cm1pc3Npb25SZXN1bHQ6OkdyYW50ZWQ7CisgICAgaWYgKGF1ZGlvU3RhdHVzID09IE1lZGlhUGVy
bWlzc2lvblJlc3VsdDo6RGVuaWVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FtZXJhQXV0aG9yaXphdGlvblN0YXR1cyA9
ICFyZXF1aXJlc1ZpZGVvQ2FwdHVyZSA/IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQg
OiBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JN
ZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlb107Ci0gICAgaWYgKGNhbWVyYUF1dGhvcml6YXRpb25T
dGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IGNhbWVyYUF1dGhvcml6YXRp
b25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkgeworICAgIGF1dG8g
dmlkZW9TdGF0dXMgPSByZXF1ZXN0LnJlcXVpcmVzVmlkZW9DYXB0dXJlKCkgPyBjaGVja0FWQ2Fw
dHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6VmlkZW8pIDogTWVkaWFQZXJt
aXNzaW9uUmVzdWx0OjpHcmFudGVkOworICAgIGlmICh2aWRlb1N0YXR1cyA9PSBNZWRpYVBlcm1p
c3Npb25SZXN1bHQ6OkRlbmllZCkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBib29sIHJlcXVpcmVzVmlkZW9UQ0NQcm9tcHQgPSByZXF1
aXJlc1ZpZGVvQ2FwdHVyZSAmJiBjYW1lcmFBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9y
aXphdGlvblN0YXR1c05vdERldGVybWluZWQ7Ci0gICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9
IHJlcXVpcmVzVmlkZW9UQ0NQcm9tcHQgPyBbcmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgaXNPSykgbXV0YWJsZSB7Ci0gICAgICAg
IGlmICghaXNPSykgewotICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRp
YVR5cGUoV1RGTW92ZShjYWxsYmFjayksIEFWTWVkaWFUeXBlVmlkZW8pOwotICAgIH0gOiBXVEZN
b3ZlKGNhbGxiYWNrKTsKKyAgICBpZiAoYXVkaW9TdGF0dXMgPT0gTWVkaWFQZXJtaXNzaW9uUmVz
dWx0OjpVbmtub3duKSB7CisgICAgICAgIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1l
ZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvLCBbdmlkZW9TdGF0dXMsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBpZiAodmlkZW9TdGF0dXMgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpHcmFudGVkKSB7
CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6
VmlkZW8sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAKLSAgICBib29sIHJlcXVpcmVzQXVkaW9UQ0NQcm9tcHQgPSByZXF1
aXJlc0F1ZGlvQ2FwdHVyZSAmJiBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1
dGhvcml6YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOwotICAgIGlmICghcmVxdWlyZXNBdWRpb1RD
Q1Byb21wdCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICBpZiAodmlk
ZW9TdGF0dXMgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIHJl
cXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OlZpZGVvLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcmVxdWVzdEFW
Q2FwdHVyZUFjY2Vzc0Zvck1lZGlhVHlwZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgQVZN
ZWRpYVR5cGVBdWRpbyk7CisKKyAgICBjYWxsYmFjayh0cnVlKTsKIH0KICNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDg2NjIzOGJhZmU4ZjA1YzE3YTIzZDZm
OWNjOTlhMjEwMTRkZDkzMTAuLmNkMzAxNDFmY2VhNjIyMmRlNWJhN2NmMWM2N2E5YTJmNjRkMDIw
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
cm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tCkBAIC00MSw2ICs0MSwxMCBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1Zl
Y3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CiAKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEku
aCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAjaW1wb3J0IDxKYXZh
U2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaD4KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMTdhY2NkYmViN2U5Y2JiZWQ3ODAzMjQxNDY5YzY4NGU3MjUxMWE2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVz
LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBNZWRpYVBlcm1pc3Npb25UeXBlIHsKKyAg
ICBBdWRpbywKKyAgICBWaWRlbworfTsKKworZW51bSBjbGFzcyBNZWRpYVBlcm1pc3Npb25SZXN1
bHQgeworICAgIERlbmllZCwKKyAgICBHcmFudGVkLAorICAgIFVua25vd24KK307CisKKyNpZiBQ
TEFURk9STShDT0NPQSkKK2Jvb2wgY2hlY2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlh
UGVybWlzc2lvblR5cGUpOworYm9vbCBjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdGb3JUeXBl
KE1lZGlhUGVybWlzc2lvblR5cGUpOworYm9vbCBjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdG
b3JTcGVlY2hSZWNvZ25pdGlvbigpOworI2VuZGlmCisKKyNpZiBIQVZFKEFWQ0FQVFVSRURFVklD
RSkKK3ZvaWQgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlw
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQpPiYmKTsKK01lZGlhUGVy
bWlzc2lvblJlc3VsdCBjaGVja0FWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9u
VHlwZSk7CisjZW5kaWYKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKK3ZvaWQgcmVxdWVz
dFNwZWVjaFJlY29nbml0aW9uQWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhdXRo
b3JpemVkKT4mJik7CitNZWRpYVBlcm1pc3Npb25SZXN1bHQgY2hlY2tTcGVlY2hSZWNvZ25pdGlv
bkFjY2VzcygpOworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmZDE5NjczNTFlODc3NjM2N2Y4OWU0YTJkMTkx
ODQ3OGIzN2EwYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcApAQCAtMCwwICsxLDIzMyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJBUElTZWN1cml0eU9yaWdpbi5o
IgorI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCisjaW5jbHVkZSAiTWVkaWFQZXJtaXNzaW9uVXRp
bGl0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcjo6Q2hlY2tSZXN1bHQgY29tcHV0ZU1pY3JvcGhvbmVBY2Nlc3Mo
KQoreworI2lmIEhBVkUoQVZDQVBUVVJFREVWSUNFKQorICAgIGF1dG8gcmVzdWx0ID0gY2hlY2tB
VkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKTsKKyAgICBp
ZiAocmVzdWx0ICE9IE1lZGlhUGVybWlzc2lvblJlc3VsdDo6VW5rbm93bikKKyAgICAgICAgcmV0
dXJuIHJlc3VsdCA9PSBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkdyYW50ZWQgPyBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpDaGVja1Jlc3VsdDo6R3JhbnRlZCA6IFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OkNoZWNrUmVzdWx0OjpEZW5pZWQ7CisgICAgCisg
ICAgaWYgKCFjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdGb3JUeXBlKE1lZGlhUGVybWlzc2lv
blR5cGU6OkF1ZGlvKSkKKyAgICAgICAgcmV0dXJuIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OkNoZWNrUmVzdWx0OjpEZW5pZWQ7CisKKyAgICByZXR1cm4gU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Q2hlY2tSZXN1bHQ6OlVua25vd247CisjZWxzZQorICAg
IHJldHVybiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpDaGVja1Jlc3VsdDo6
R3JhbnRlZDsKKyNlbmRpZgorfQorCitzdGF0aWMgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlcjo6Q2hlY2tSZXN1bHQgY29tcHV0ZVNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vz
cygpCit7CisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorICAgIGF1dG8gcmVzdWx0ID0gY2hl
Y2tTcGVlY2hSZWNvZ25pdGlvbkFjY2VzcygpOworICAgIGlmIChyZXN1bHQgIT0gTWVkaWFQZXJt
aXNzaW9uUmVzdWx0OjpVbmtub3duKQorICAgICAgICByZXR1cm4gcmVzdWx0ID09IE1lZGlhUGVy
bWlzc2lvblJlc3VsdDo6R3JhbnRlZCA/IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI6OkNoZWNrUmVzdWx0OjpHcmFudGVkIDogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcjo6Q2hlY2tSZXN1bHQ6OkRlbmllZDsKKworICAgIGlmICghY2hlY2tVc2FnZURlc2NyaXB0
aW9uU3RyaW5nRm9yU3BlZWNoUmVjb2duaXRpb24oKSkKKyAgICAgICAgcmV0dXJuIFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OkNoZWNrUmVzdWx0OjpEZW5pZWQ7CisKKyAgICBy
ZXR1cm4gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Q2hlY2tSZXN1bHQ6OlVu
a25vd247CisjZWxzZQorICAgIHJldHVybiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyOjpDaGVja1Jlc3VsdDo6R3JhbnRlZDsKKyNlbmRpZgorfQorCitTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKFdl
YlBhZ2VQcm94eSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCitTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcigpCit7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9yZXF1ZXN0cykKKyAgICAgICAg
cmVxdWVzdC0+Y29tcGxldGUoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRl
bnkpOworfQorICAgIAordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpy
ZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0
aW9udEhhbmRsZXIpCit7CisgICAgbV9yZXF1ZXN0cy5hcHBlbmQoU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9udEhhbmRs
ZXIpKSk7CisgICAgaWYgKG1fcmVxdWVzdHMuc2l6ZSgpID09IDEpCisgICAgICAgIHN0YXJ0TmV4
dFJlcXVlc3QoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
OjpzdGFydE5leHRSZXF1ZXN0KCkKK3sKKyAgICBpZiAobV9yZXF1ZXN0cy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIFRDQyBzdGF0dXMgbWF5IGhhdmUgY2hhbmdlZCBiZXR3
ZWVuIHJlcXVlc3RzLgorICAgIG1fbWljcm9waG9uZUNoZWNrID0gY29tcHV0ZU1pY3JvcGhvbmVB
Y2Nlc3MoKTsKKyAgICBtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrID0gY29tcHV0ZVNw
ZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpOworCisgICAgc3RhcnRQcm9jZXNzaW5nUmVx
dWVzdCgpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0
YXJ0UHJvY2Vzc2luZ1JlcXVlc3QoKQoreworI2lmIFBMQVRGT1JNKENPT0NBKQorICAgIGlmICgh
Y2hlY2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlv
KSkgeworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgor
CisgICAgaWYgKCFjaGVja01pY3JvcGhvbmVBY2Nlc3MoKSB8fCAhY2hlY2tTcGVlY2hSZWNvZ25p
dGlvblNlcnZpY2VBY2Nlc3MoKSB8fCBtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPT0gQ2hlY2tSZXN1
bHQ6OkRlbmllZCkgeworICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoKTsKK30KKwordm9pZCBTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCkKK3sK
KyAgICBpZiAobV9zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VDaGVjayA9PSBDaGVja1Jlc3VsdDo6
VW5rbm93bikgeworICAgICAgICByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNz
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKG1fc3BlZWNoUmVjb2duaXRp
b25TZXJ2aWNlQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQpOworCisgICAgaWYgKG1fbWlj
cm9waG9uZUNoZWNrID09IENoZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIHJlcXVlc3RN
aWNyb3Bob25lQWNjZXNzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKG1f
bWljcm9waG9uZUNoZWNrID09IENoZWNrUmVzdWx0OjpHcmFudGVkKTsKKworICAgIGlmIChtX3Vz
ZXJQZXJtaXNzaW9uQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgcmVx
dWVzdFVzZXJQZXJtaXNzaW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJU
KG1fdXNlclBlcm1pc3Npb25DaGVjayA9PSBDaGVja1Jlc3VsdDo6R3JhbnRlZCk7CisKKyAgICBj
b21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9u
OjpHcmFudCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6
Y29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lv
biBkZWNpc2lvbikKK3sKKyAgICBBU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKyAgICBh
dXRvIGN1cnJlbnRSZXF1ZXN0ID0gbV9yZXF1ZXN0cy50YWtlRmlyc3QoKTsKKyAgICBjdXJyZW50
UmVxdWVzdC0+Y29tcGxldGUoZGVjaXNpb24pOworCisgICAgc3RhcnROZXh0UmVxdWVzdCgpOwor
fQorCitib29sIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OmNoZWNrTWljcm9w
aG9uZUFjY2VzcygpCit7CisgICAgaWYgKG1fcGFnZS5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJl
RGV2aWNlc0VuYWJsZWQoKSkKKyAgICAgICAgbV9taWNyb3Bob25lQ2hlY2sgPSBDaGVja1Jlc3Vs
dDo6R3JhbnRlZDsKKworICAgIHJldHVybiBtX21pY3JvcGhvbmVDaGVjayAhPSBDaGVja1Jlc3Vs
dDo6RGVuaWVkOworfQorCitib29sIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6
OmNoZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCkKK3sKKyAgICBpZiAobV9wYWdl
LnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpKQorICAgICAgICBtX3Nw
ZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNrID0gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQ7CisKKyAg
ICByZXR1cm4gbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VDaGVjayAhPSBDaGVja1Jlc3VsdDo6
RGVuaWVkOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJl
cXVlc3RTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKQoreworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sg
PT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pOworCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQor
ICAgIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvbkFjY2VzcyhbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKV0oYm9vbCBhdXRob3JpemVkKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX3NwZWVjaFJlY29nbml0
aW9uU2VydmljZUNoZWNrID0gYXV0aG9yaXplZCA/IENoZWNrUmVzdWx0OjpHcmFudGVkIDogQ2hl
Y2tSZXN1bHQ6OkRlbmllZDsKKyAgICAgICAgaWYgKG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNl
Q2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OkRlbmllZCkgeworICAgICAgICAgICAgY29tcGxldGVDdXJy
ZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbjo6RGVueSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250aW51ZVByb2Nlc3Np
bmdSZXF1ZXN0KCk7CisgICAgfSk7CisjZW5kaWYKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25NYW5hZ2VyOjpyZXF1ZXN0TWljcm9waG9uZUFjY2VzcygpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9taWNyb3Bob25lQ2hlY2sgPT0gQ2hl
Y2tSZXN1bHQ6OlVua25vd24pOworCisjaWYgSEFWRShBVkNBUFRVUkVERVZJQ0UpCisgICAgcmVx
dWVzdEFWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6QXVkaW8sIFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShib29sIGF1dGhvcml6ZWQpIHsKKyAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX21p
Y3JvcGhvbmVDaGVjayA9IGF1dGhvcml6ZWQgPyBDaGVja1Jlc3VsdDo6R3JhbnRlZCA6IENoZWNr
UmVzdWx0OjpEZW5pZWQ7CisgICAgICAgIGlmIChtX21pY3JvcGhvbmVDaGVjayA9PSBDaGVja1Jl
c3VsdDo6RGVuaWVkKSB7CisgICAgICAgICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoKTsKKyAg
ICB9KTsKKyNlbmRpZgorfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI6OnJlcXVlc3RVc2VyUGVybWlzc2lvbigpCit7CisgICAgQVNTRVJUKCFtX3JlcXVlc3RzLmlz
RW1wdHkoKSk7CisgICAgYXV0byYgY3VycmVudFJlcXVlc3QgPSBtX3JlcXVlc3RzLmZpcnN0KCk7
CisKKyAgICBhdXRvIGNsaWVudE9yaWdpbiA9IGN1cnJlbnRSZXF1ZXN0LT5vcmlnaW4oKTsKKyAg
ICBhdXRvIHJlcXVlc3RpbmdPcmlnaW4gPSBjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3Vy
aXR5T3JpZ2luKCk7CisgICAgYXV0byB0b3BPcmlnaW4gPSBjbGllbnRPcmlnaW4udG9wT3JpZ2lu
LnNlY3VyaXR5T3JpZ2luKCk7CisgICAgaWYgKCFyZXF1ZXN0aW5nT3JpZ2luLT5pc1NhbWVPcmln
aW5Bcyh0b3BPcmlnaW4pKSB7CisgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyldKGJvb2wgZ3JhbnRlZCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fdXNlclBlcm1pc3Npb25DaGVjayA9IGdy
YW50ZWQgPyBDaGVja1Jlc3VsdDo6R3JhbnRlZCA6IENoZWNrUmVzdWx0OjpEZW5pZWQ7CisgICAg
ICAgIGlmIChtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OkRlbmllZCkgewor
ICAgICAgICAgICAgY29tcGxldGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25EZWNpc2lvbjo6RGVueSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCk7CisgICAgfTsKKyAgICBtX3BhZ2Uu
dWlDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0KG1fcGFnZSwgQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRvcE9yaWdpbi5nZXQoKSku
Z2V0KCksIFdURk1vdmUoZGVjaXNpb25IYW5kbGVyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQyM2ZjNDNmNmM5YjJm
OGVkMzU2ODE5MWM4MWU4MDVhZWE0NGE3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaApAQCAtMCww
ICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Cisj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlBhZ2VQcm94eTsKKworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZW51bSBjbGFz
cyBDaGVja1Jlc3VsdCB7IERlbmllZCwgR3JhbnRlZCwgVW5rbm93biB9OworICAgIGV4cGxpY2l0
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoV2ViUGFnZVByb3h5Jik7CisgICAg
flNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIoKTsKKyAgICB2b2lkIHJlcXVlc3Qo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYpOworCitwcml2YXRlOgorICAgIHZv
aWQgc3RhcnROZXh0UmVxdWVzdCgpOworICAgIHZvaWQgc3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgp
OworICAgIHZvaWQgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgpOworICAgIHZvaWQgY29tcGxl
dGVDdXJyZW50UmVxdWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik7Cisg
ICAgYm9vbCBjaGVja01pY3JvcGhvbmVBY2Nlc3MoKTsKKyAgICBib29sIGNoZWNrU3BlZWNoUmVj
b2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7CisgICAgdm9pZCByZXF1ZXN0TWljcm9waG9uZUFjY2Vz
cygpOworICAgIHZvaWQgcmVxdWVzdFNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2VzcygpOwor
ICAgIHZvaWQgcmVxdWVzdFVzZXJQZXJtaXNzaW9uKCk7CisKKyAgICBXZWJQYWdlUHJveHkmIG1f
cGFnZTsKKyAgICBEZXF1ZTxSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4+
IG1fcmVxdWVzdHM7CisgICAgQ2hlY2tSZXN1bHQgbV9taWNyb3Bob25lQ2hlY2sgeyBDaGVja1Jl
c3VsdDo6VW5rbm93biB9OworICAgIENoZWNrUmVzdWx0IG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2
aWNlQ2hlY2sgeyBDaGVja1Jlc3VsdDo6VW5rbm93biB9OworICAgIENoZWNrUmVzdWx0IG1fdXNl
clBlcm1pc3Npb25DaGVjayB7IENoZWNrUmVzdWx0OjpVbmtub3duIH07Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjUxN2Iz
ZWZhNjEyODlkNDM3NDNjYjRmNDc3OTE2NWQwZTBhMzhlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5o
CkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CisjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVt
IGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIDogYm9vbCB7IERlbnks
IEdyYW50IH07CisKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QgOiBw
dWJsaWMgUmVmQ291bnRlZDxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0PiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0
PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKSk7CisgICAgfQorCisgICAgdm9pZCBjb21wbGV0ZShTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikKKyAgICB7CisgICAgICAgIGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGRlY2lzaW9uKTsKKyAgICB9CisKKyAgICBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CisK
K3ByaXZhdGU6CisgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgICAgIDogbV9vcmlnaW4ob3JpZ2luKQorICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgeyB9CisKKyAgICBXZWJDb3JlOjpDbGll
bnRPcmlnaW4gbV9vcmlnaW47CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+IG1fY29tcGxldGlvbkhhbmRsZXI7Cit9OworCitj
bGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayA6IHB1YmxpYyBBUEk6Ok9i
amVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNh
bGxiYWNrPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjaz4gY3JlYXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkpOworICAgIH0KKworICAgIHZvaWQgY29tcGxldGUoYm9vbCBncmFudGVkKSB7IG1fY29tcGxl
dGlvbkhhbmRsZXIoZ3JhbnRlZCk7IH0KKworcHJpdmF0ZToKKyAgICBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpCisgICAgeyB9CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiBtX2NvbXBsZXRpb25IYW5kbGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5j
cHAKaW5kZXggOWNlOTc0Y2Y5ZGFhNTY1ODJlZWJjZmEwMzA2NzBiN2EzNzViZTcxZS4uNWUzOGVm
NWIyZDRlNjExNWZjYzBkNzk1MTcxM2FhMzAwOTQ5Y2M0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcApAQCAtMzIsODUgKzMy
LDEwMCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6
OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlv
biwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCitTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVj
dGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmIHBlcm1pc3Npb25D
aGVja2VyKQogICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBt
X2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fcGVybWlzc2lvbkNoZWNrZXIoV1RGTW92
ZShwZXJtaXNzaW9uQ2hlY2tlcikpCiB7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8mJiByZXF1ZXN0
SW5mbykKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwg
U3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50
NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbikKIHsK
LSAgICBhdXRvIHJlcXVlc3QgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q6OmNy
ZWF0ZShXVEZNb3ZlKHJlcXVlc3RJbmZvKSk7Ci0gICAgbV9wZW5kaW5nUmVxdWVzdHMuYXBwZW5k
KFdURk1vdmUocmVxdWVzdCkpOworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtX3BlbmRpbmdS
ZXF1ZXN0cy5hZGQoY2xpZW50SWRlbnRpZmllciwgbnVsbHB0cik7CisgICAgQVNTRVJUKHBlbmRp
bmdSZXF1ZXN0LmlzTmV3RW50cnkpOworICAgIHBlbmRpbmdSZXF1ZXN0Lml0ZXJhdG9yLT52YWx1
ZSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PihTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvIHsgY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShsYW5nKSwg
Y29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVybmF0aXZlcywgV1RGTW92ZShvcmln
aW4pIH0pOwogCi0gICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7CisgICAg
cmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KCpwZW5kaW5nUmVxdWVzdC5pdGVyYXRvci0+dmFs
dWUpOwogfQogCi12b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpwcm9jZXNzTmV4dFBlbmRp
bmdSZXF1ZXN0SWZOZWVkZWQoKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVz
dFBlcm1pc3Npb25Gb3JSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYg
cmVxdWVzdCkKIHsKLSAgICBpZiAobV9jdXJyZW50UmVxdWVzdCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKG1fcGVuZGluZ1JlcXVlc3RzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgIG1fcGVybWlzc2lvbkNoZWNrZXIocmVxdWVzdC5jbGllbnRPcmlnaW4oKSwgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYWtSZXF1ZXN0ID0gbWFrZVdlYWtQdHIocmVx
dWVzdCldKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIGRlY2lzaW9uKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBpZiAoIXdlYWtSZXF1ZXN0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1
dG8gaWRlbnRpZmllciA9IHdlYWtSZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCk7CisgICAgICAg
IGF1dG8gdGFrZW5SZXF1ZXN0ID0gbV9wZW5kaW5nUmVxdWVzdHMudGFrZShpZGVudGlmaWVyKTsK
KyAgICAgICAgaWYgKGRlY2lzaW9uID09IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lz
aW9uOjpEZW55KSB7CisgICAgICAgICAgICBhdXRvIGVycm9yID0gU3BlZWNoUmVjb2duaXRpb25F
cnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpOb3RBbGxvd2VkLCAiUGVybWlzc2lv
biBjaGVjayBmYWlsZWQiX3MgfTsKKyAgICAgICAgICAgIHNlbmRVcGRhdGUoaWRlbnRpZmllciwg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvciwgZXJyb3IpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbV9w
ZW5kaW5nUmVxdWVzdHMudGFrZUZpcnN0KCk7Ci0gICAgc3RhcnRQb2Nlc3NpbmdSZXF1ZXN0KCpt
X2N1cnJlbnRSZXF1ZXN0KTsKKyAgICAgICAgbV9vbmdvaW5nUmVxdWVzdHMuYWRkKGlkZW50aWZp
ZXIsIFdURk1vdmUodGFrZW5SZXF1ZXN0KSk7CisgICAgICAgIGhhbmRsZVJlcXVlc3QoKm1fb25n
b2luZ1JlcXVlc3RzLmdldChpZGVudGlmaWVyKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OnN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQogewotICAgIGlmIChtX2N1cnJl
bnRSZXF1ZXN0ICYmIG1fY3VycmVudFJlcXVlc3QtPmNsaWVudElkZW50aWZpZXIoKSA9PSBjbGll
bnRJZGVudGlmaWVyKSB7Ci0gICAgICAgIHN0b3BQcm9jZXNzaW5nUmVxdWVzdCgqbV9jdXJyZW50
UmVxdWVzdCk7CisgICAgaWYgKG1fcGVuZGluZ1JlcXVlc3RzLmNvbnRhaW5zKGNsaWVudElkZW50
aWZpZXIpKSB7CisgICAgICAgIG1fcGVuZGluZ1JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlm
aWVyKTsKKyAgICAgICAgc2VuZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICByZW1vdmVQZW5kaW5nUmVxdWVzdChjbGllbnRJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQo
bV9vbmdvaW5nUmVxdWVzdHMuY29udGFpbnMoY2xpZW50SWRlbnRpZmllcikpOworICAgIHN0b3BS
ZXF1ZXN0KCptX29uZ29pbmdSZXF1ZXN0cy5nZXQoY2xpZW50SWRlbnRpZmllcikpOwogfQogCiB2
b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjphYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCiB7Ci0gICAg
aWYgKG1fY3VycmVudFJlcXVlc3QgJiYgbV9jdXJyZW50UmVxdWVzdC0+Y2xpZW50SWRlbnRpZmll
cigpID09IGNsaWVudElkZW50aWZpZXIpIHsKLSAgICAgICAgbV9jdXJyZW50UmVxdWVzdCA9IG51
bGxwdHI7Ci0gICAgICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25V
cGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OkVuZCk7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbjo6RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50aWZpZXIp
OwotCi0gICAgICAgIHByb2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJZk5lZWRlZCgpOworICAgIGlm
IChtX3BlbmRpbmdSZXF1ZXN0cy5jb250YWlucyhjbGllbnRJZGVudGlmaWVyKSkgeworICAgICAg
ICBtX3BlbmRpbmdSZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRlbnRpZmllcik7CisgICAgICAgIHNl
bmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRh
dGVUeXBlOjpFbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmVtb3ZlUGVuZGlu
Z1JlcXVlc3QoY2xpZW50SWRlbnRpZmllcik7CisgICAgQVNTRVJUKG1fb25nb2luZ1JlcXVlc3Rz
LmNvbnRhaW5zKGNsaWVudElkZW50aWZpZXIpKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBtX29uZ29p
bmdSZXF1ZXN0cy50YWtlKGNsaWVudElkZW50aWZpZXIpOworICAgIGFib3J0UmVxdWVzdCgqcmVx
dWVzdCk7CisgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBk
YXRlVHlwZTo6RW5kKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb246OkRpZFJlY2VpdmVVcGRhdGUodXBkYXRlKSwgbV9pZGVudGlmaWVyKTsKIH0KIAot
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVtb3ZlUGVuZGluZ1JlcXVlc3QoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVu
dGlmaWVyKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aW52YWxpZGF0ZShXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50
aWZpZXIpCiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4g
dGFrZW5SZXF1ZXN0OwotICAgIGF1dG8gcGVuZGluZ1JlcXVlc3RzID0gc3RkOjpleGNoYW5nZSht
X3BlbmRpbmdSZXF1ZXN0cywgeyB9KTsKLSAgICB3aGlsZSAoIXBlbmRpbmdSZXF1ZXN0cy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgYXV0byByZXF1ZXN0ID0gcGVuZGluZ1JlcXVlc3RzLnRha2VGaXJz
dCgpOwotICAgICAgICBpZiAocmVxdWVzdC0+Y2xpZW50SWRlbnRpZmllcigpID09IGNsaWVudElk
ZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7Ci0gICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OkRpZFJlY2VpdmVVcGRhdGUodXBkYXRlKSwg
bV9pZGVudGlmaWVyKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAg
IG1fcGVuZGluZ1JlcXVlc3RzLmFwcGVuZChXVEZNb3ZlKHJlcXVlc3QpKTsKLSAgICB9CisgICAg
YXV0byByZXF1ZXN0ID0gbV9vbmdvaW5nUmVxdWVzdHMudGFrZShjbGllbnRJZGVudGlmaWVyKTsK
KyAgICBhYm9ydFJlcXVlc3QoKnJlcXVlc3QpOwogfQogCi12b2lkIFNwZWVjaFJlY29nbml0aW9u
U2VydmVyOjppbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6OmhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JiBy
ZXF1ZXN0KQogewotICAgIGlmIChtX2N1cnJlbnRSZXF1ZXN0ICYmIG1fY3VycmVudFJlcXVlc3Qt
PmNsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlmaWVyKSB7Ci0gICAgICAgIG1fY3Vy
cmVudFJlcXVlc3QgPSBudWxscHRyOwotICAgICAgICBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0
SWZOZWVkZWQoKTsKLSAgICB9CisgICAgLy8gVE9ETzogc3RhcnQgY2FwdHVyaW5nIGF1ZGlvIGFu
ZCByZWNvZ25pdGlvbi4KK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RvcFJl
cXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JiByZXF1ZXN0KQoreworICAg
IC8vIFRPRE86IHN0b3AgY2FwdHVyaW5nIGF1ZGlvIGFuZCBmaW5hbGl6aW5nIHJlc3VsdHMgYnkg
cmVjb2duaXppbmcgY2FwdHVyZWQgYXVkaW8uCiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6OnN0YXJ0UG9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3QmKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnRSZXF1ZXN0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkKIHsKKyAgICAvLyBUT0RPOiBz
dG9wIGNhcHR1cmluZyBhdWRpbyBhbmQgcmVjb2duaXRpb24gaW1tZWRpYXRlbHkgd2l0aG91dCBn
ZW5lcmF0aW5nIHJlc3VsdHMuCiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0
b3BQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKQor
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c2VuZFVwZGF0ZShTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZSB0eXBlLCBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiBl
cnJvciwgT3B0aW9uYWw8VmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+IHJlc3Vs
dCkKIHsKKyAgICBhdXRvIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
OjpjcmVhdGUoY2xpZW50SWRlbnRpZmllciwgdHlwZSk7CisgICAgaWYgKHR5cGUgPT0gU3BlZWNo
UmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvcikKKyAgICAgICAgdXBkYXRlID0gV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKGNsaWVudElkZW50aWZpZXIsICpl
cnJvcik7CisgICAgaWYgKHR5cGUgPT0gU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpSZXN1
bHQpCisgICAgICAgIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpj
cmVhdGVSZXN1bHQoY2xpZW50SWRlbnRpZmllciwgKnJlc3VsdCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpEaWRSZWNlaXZlVXBkYXRlKHVwZGF0
ZSksIG1faWRlbnRpZmllcik7CiB9CiAKIElQQzo6Q29ubmVjdGlvbiogU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCmluZGV4IDdhYTI0MTYz
OGI5YzM1MTQ5NjY5ODQ0MzJkYmM1MzBkZjg0ODRhMzcuLjM2M2NhMjBlYmJlM2NmY2VlZGFmNThm
ZWUzNGZiYzJlMWQxOGEyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIuaApAQCAtMjgsMzIgKzI4LDQwIEBACiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NwZWVjaFJlY29nbml0
aW9uRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhLmg+CiAjaW5j
bHVkZSA8d3RmL0RlcXVlLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2VudW0gY2xhc3MgU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOworc3RydWN0IENsaWVudE9yaWdpbjsKK30KKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKK2VudW0gY2xhc3MgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24gOiBib29sOwogCiB1c2luZyBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgPSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcjsKK3Vz
aW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXIgPSBGdW5jdGlvbjx2b2lkKGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmKT47CiAKIGNsYXNzIFNwZWVjaFJlY29n
bml0aW9uU2VydmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNl
bmRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXJJZGVudGlmaWVyKTsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBD
OjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJik7CiAKLSAgICB2b2lkIHN0YXJ0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8mJik7CisgICAgdm9pZCBzdGFydChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTdHJpbmcm
JiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1h
eEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYpOwogICAgIHZvaWQgc3RvcChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKICAg
ICB2b2lkIGFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIpOwogICAgIHZvaWQgaW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHByb2Nl
c3NOZXh0UGVuZGluZ1JlcXVlc3RJZk5lZWRlZCgpOwotICAgIHZvaWQgcmVtb3ZlUGVuZGluZ1Jl
cXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
cik7Ci0KLSAgICAvLyBUT0RPOiBpbXBsZW1lbnQgdGhlc2UuCi0gICAgdm9pZCBzdGFydFBvY2Vz
c2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7Ci0gICAgdm9p
ZCBzdG9wUHJvY2Vzc2luZ1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
Jik7CisgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0Jik7CisgICAgdm9pZCBoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOworICAgIHZvaWQgc3RvcFJlcXVlc3QoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7CisgICAgdm9pZCBhYm9ydFJlcXVlc3QoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7CisgICAgdm9pZCBzZW5kVXBkYXRlKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25FcnJvcj4gPSBXVEY6Om51bGxvcHQsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PiA9IFdURjo6bnVsbG9wdCk7CiAKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwpAQCAtNjQsOCArNzIsOSBAQCBwcml2
YXRlOgogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFNwZWVj
aFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAgRGVxdWU8UmVm
PFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4+IG1fcGVuZGluZ1JlcXVlc3RzOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IG1fY3VycmVudFJl
cXVlc3Q7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0Pj4gbV9wZW5kaW5nUmVxdWVzdHM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Pj4gbV9vbmdvaW5nUmVxdWVzdHM7Cisg
ICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciBtX3Blcm1pc3Npb25DaGVja2Vy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluCmluZGV4
IGUzMWJlZmIwOTVhZDg4ZGFkYzMwZjA5OTVjNTdlNDE1MzczZjEyZjQuLmEyOGI5MjFjYjk2NGFm
YWYyZmYyMmM5MTZiYmU0NmU4Mjk5MTMyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluCkBAIC0y
NCw3ICsyNCw3IEBACiAgKi8KICAKICBtZXNzYWdlcyAtPiBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
ciBOb3RSZWZDb3VudGVkIHsKLSAgICBTdGFydChzdHJ1Y3QgV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0SW5mbyBpbmZvKQorICAgIFN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIGxhbmcsIGJv
b2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRp
dmVzLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbikKICAgICBTdG9wKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICBBYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgSW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBhODg3MzhjNDgyN2NjYWRkZGJjM2Ux
M2Q3MDg5Y2QwMTk5MDY3ZGE5Li4yZjM3YTc1ZTA5MzVkNTQxNWE4ZGZkZTMzMTNkZGE4MmMxZDM0
Njg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg2LDYg
Kzg2LDcgQEAKICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIlNh
ZmVCcm93c2luZ1dhcm5pbmcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
LmgiCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZS5oIgogI2luY2x1ZGUgIlRleHRDaGVj
a2VyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgpAQCAtNDg5Miw2ICs0ODkzLDgg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZU1haW5Eb2N1bWVudChGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCkKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAjZW5kaWYKICAgICBtX2lz
UXVvdGFJbmNyZWFzZURlbmllZCA9IGZhbHNlOworCisgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyID0gbnVsbHB0cjsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdJ
c0JlY29taW5nVmlzaWJsZSgpCkBAIC03NjA1LDYgKzc2MDgsOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0U3RhdGVSZWFzb24pCiAjaWYgRU5B
QkxFKFdFQl9BVVRITikKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPmF1dGhlbnRpY2F0b3JNYW5h
Z2VyKCkuY2FuY2VsUmVxdWVzdChtX3dlYlBhZ2VJRCwgV1RGOjpudWxsb3B0KTsKICNlbmRpZgor
CisgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyID0gbnVsbHB0cjsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQoUHJvY2Vz
c1Rlcm1pbmF0aW9uUmVhc29uIHRlcm1pbmF0aW9uUmVhc29uKQpAQCAtMTAyNDYsNiArMTAyNTEs
MTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZVVwZGF0ZUZvclRl
c3RpbmcoKQogICAgIH0pOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIGNsaWVudE9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25E
ZWNpc2lvbik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX3NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIpCisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlcj4oKnRoaXMpOworCisgICAgbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
LT5yZXF1ZXN0KGNsaWVudE9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2NlZmJmYzY5NDVlZGZl
NDNhZTU2YzJkNTY0YzBlODFlOTViYjRhNi4uZmE0ZWEwNmI0NGZjMTA3NWE0OWE4ODkzNGQ1NmU0
ZjE2ZGFlMmM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTMw
NSw2ICszMDUsNyBAQCBjbGFzcyBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURh
dGE7CiBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHk7CiBjbGFzcyBTZWNLZXlQcm94eVN0b3JlOworY2xhc3MgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjsKIGNsYXNzIFVzZXJEYXRhOwogY2xhc3Mg
Vmlld1NuYXBzaG90OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKQEAgLTM2NSw2ICszNjYsNyBA
QCBzdHJ1Y3QgVXNlck1lc3NhZ2U7CiAKIGVudW0gY2xhc3MgTmVnb3RpYXRlZExlZ2FjeVRMUyA6
IGJvb2w7CiBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgOiBib29sOwor
ZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiA6IGJvb2w7CiBl
bnVtIGNsYXNzIFVuZG9PclJlZG8gOiBib29sOwogZW51bSBjbGFzcyBXZWJDb250ZW50TW9kZSA6
IHVpbnQ4X3Q7CiAKQEAgLTE4MTksNiArMTgyMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1l
ZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5KFNlY29uZHMgY2FwdHVyZVJlcG9ydGluZ0RlbGF5KSB7
IG1fbWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkgPSBjYXB0dXJlUmVwb3J0aW5nRGVsYXk7IH0K
ICAgICBzaXplX3Qgc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyKCkgeyByZXR1cm4gbV9zdXNw
ZW5kTWVkaWFQbGF5YmFja0NvdW50ZXI7IH0KIAorICAgIHZvaWQgcmVxdWVzdFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJik7CisK
IHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkm
LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKQEAgLTI4NDksNiArMjg1Myw5IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBPcHRp
b25hbDxTcGVlY2hTeW50aGVzaXNEYXRhPiBtX3NwZWVjaFN5bnRoZXNpc0RhdGE7CiAjZW5kaWYK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
PiBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI7CisKICNpZiBVU0UoRElSRUNU
MkQpCiAgICAgQ09NUHRyPElEM0QxMURldmljZTE+IG1fZGV2aWNlOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA3ZjgzMTViNzNjZjQy
OTAzZjI2N2ExNDQxYjRjNjgyNGZlNWJmODg5Li5hOWQ1OTQ1NzJhM2E5NmUyMTM4ZDRjYTA3ZmZm
NWM3ODY1ZDE2NDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKICNp
bmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFn
ZVByb3h5LmgiCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5o
IgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKQEAgLTE3MTMs
NyArMTcxNCwyNCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIoU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudAogewogICAgIGF1dG8gc3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIgPSBtX3NwZWVjaFJlY29nbml0aW9uU2VydmVyTWFwLmFkZChpZGVu
dGlmaWVyLCBudWxscHRyKTsKICAgICBBU1NFUlQoc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXNO
ZXdFbnRyeSk7Ci0gICAgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlID0g
bWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigp
KSwgaWRlbnRpZmllcik7CisgICAgV2ViUGFnZVByb3h5KiB0YXJnZXRQYWdlID0gbnVsbHB0cjsK
KyAgICBmb3IgKGF1dG8qIHBhZ2UgOiBwYWdlcygpKSB7CisgICAgICAgIGlmIChwYWdlICYmIHBh
Z2UtPndlYlBhZ2VJRCgpID09IGlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIHRhcmdldFBhZ2Ug
PSBwYWdlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzcGVl
Y2hSZWNvZ25pdGlvblNlcnZlci5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyPihtYWtlUmVmKCpjb25uZWN0aW9uKCkpLCBpZGVudGlmaWVyLCBbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQ
YWdlKV0oY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgaWYgKCF3ZWFrUGFnZSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgd2Vha1BhZ2UtPnJlcXVlc3RTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb24ob3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgfSk7CiAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyLCAqc3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzAyNzQ5NGI3M2FjY2VjNWVmZDgx
YzY5NGQzYTg1M2I0ZWRlZjBjYS4uOTE2MGExMmRmZDVkYjAzNmJkYTc3ZWFmM2M1OTUwNDAyMTBl
MzU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMzc0LDYgKzEzNzQsNyBAQAogCQk5MzNFODM1NTIzQTA3QzA2MDBERUYyODkgLyog
V2ViSURCU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzNFODM1MzIzQTA3QkY4MDBERUYyODkgLyogV2ViSURCU2VydmVyLmggKi87IH07CiAJ
CTkzM0U4MzVBMjNBMUFFMjgwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzRTgzNTkyM0ExQURG
NTAwREVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VzLmggKi87IH07CiAJCTkzM0U4MzVCMjNB
MUI3NTAwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzRTgzNTgyM0ExQURGNTAw
REVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTkzNDI1
ODlBMjU1QjUzNUEwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDI1ODk4MjU1QjUzNEIw
MDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCAqLzsgfTsKIAkJOTM0QjcyNDQx
OUY1QjlCRTAwQUU5NkQ2IC8qIFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0QjcyNDMxOUY1QjlCRTAwQUU5NkQ2
IC8qIFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTkzNTZGMkRDMjE1MkI2QjUwMEU2RDVERiAvKiBXZWJTV0Ns
aWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxN0E1MzAyMUY0NzkzQjIwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24u
aCAqLzsgfTsKIAkJOTM1NkYyREQyMTUyQjZGNjAwRTZENURGIC8qIFdlYlNXU2VydmVyQ29ubmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNC
QTA0RTAyMTUxQURGNDAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbi5oICovOyB9OwpA
QCAtMTQwOCw2ICsxNDA5LDkgQEAKIAkJOTNENkI3ODcyNTRDQ0Q4QzAwNThERDNBIC8qIFdlYlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc4NjI1NENDRDhCMDA1OEREM0EgLyogV2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXMuaCAqLzsgfTsKIAkJOTNENkI3ODgy
NTRDQ0Q5NDAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2Vz
UmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNENkI3N0UyNTRDQ0FCQjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bk1lc3NhZ2VzUmVwbGllcy5oICovOyB9OwogCQk5M0Q2Qjc4QTI1NENENDNFMDA1OEREM0EgLyog
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCNzdEMjU0Q0NBQkIw
MDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OworCQk5M0Q2QjdCNDI1NTI2OEQ1MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNENkI3QUYyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3QuaCAqLzsgfTsKKwkJOTNENkI3QjUyNTUyNjhENzAwNThERDNBIC8q
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggKi87IH07CisJCTkzRDZCN0I5MjU1
MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdCNzI1
NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRTZB
NEVFMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcg
LyogX1dLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzRjU0OUI0MUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29u
ZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk5NTBGMjg4
MDI1MjQxNEVBMDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBGMjg3RTI1MjQxNEU5MDBCNzRG
MUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLmggKi87IH07CkBAIC00NDY4LDYgKzQ0NzIsOCBA
QAogCQk5MzNFODM1NzIzQTFBODcyMDBERUYyODkgLyogV2ViSURCU2VydmVyLm1lc3NhZ2VzLmlu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYklEQlNlcnZlci5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzRTgzNTgyM0ExQURGNTAwREVGMjg5IC8qIFdlYklE
QlNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBXZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9XZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5MzNFODM1OTIzQTFBREY1MDBERUYyODkgLyog
V2ViSURCU2VydmVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V2ViSURCU2VydmVyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2Vi
SURCU2VydmVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
KwkJOTM0MjU4OEYyNTU1RENBNTAwNTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM0MjU4OTgyNTVCNTM0QjAwNTlFRUREIC8qIE1l
ZGlhUGVybWlzc2lvblV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTM0QjcyNDMxOUY1QjlCRTAwQUU5NkQ2IC8qIFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1RUVCOTUxMjc3NjE2RDAwMzMyMkI4IC8q
IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTM1RUVCOTYxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0Zvcndh
cmRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlQmFja0Zv
cndhcmRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTI4LDYgKzQ1MzQs
MTEgQEAKIAkJOTNENkI3ODAyNTRDQ0FCQzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0Q2Qjc4MTI1NENDQUJDMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0Q2Qjc4NjI1NENDRDhCMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTNENkI3QUYyNTUyNjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvblJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5M0Q2QjdCMDI1NTI2OEExMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjIyNTUyNjhBMjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzRDZCN0I4MjU1MzRBMTIwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0
VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tIaXRUZXN0
UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjU0OUIzMUUzMTc0Qjcw
MDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0Y1NDlCNTFFMzE3NERBMDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZp
Z3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1Nu
YXBzaG90Q29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0
NTgsNiArNjQ2OSw3IEBACiAJCQkJN0E4MjFGNEQxRTJGNjc5RTAwNjA0NTc3IC8qIExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbSAqLywKIAkJCQlBMURGNjMxMTE4RTBCN0M4MDAz
QTNFMkEgLyogTGVnYWN5RG93bmxvYWRDbGllbnQuaCAqLywKIAkJCQlBMURGNjMxMDE4RTBCN0M4
MDAzQTNFMkEgLyogTGVnYWN5RG93bmxvYWRDbGllbnQubW0gKi8sCisJCQkJOTM0MjU4OEYyNTU1
RENBNTAwNTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbSAqLywKIAkJCQk0MTEy
ODZFRjIxQzhBOTBDMDAzQTg1NTAgLyogTWVkaWFVdGlsaXRpZXMuaCAqLywKIAkJCQk0MTEyODZG
MDIxQzhBOTBEMDAzQTg1NTAgLyogTWVkaWFVdGlsaXRpZXMubW0gKi8sCiAJCQkJMUFCQzNERjQx
ODk5RTQzNzAwNEYwNjI2IC8qIE5hdmlnYXRpb25TdGF0ZS5oICovLApAQCAtOTE4OCw2ICs5MjAw
LDcgQEAKIAkJCQk1Q0VBQkEyQjIzMzMyNTE0MDA3OTc3OTcgLyogTGVnYWN5R2xvYmFsU2V0dGlu
Z3MuY3BwICovLAogCQkJCTVDRUFCQTJBMjMzMzI0NzcwMDc5Nzc5NyAvKiBMZWdhY3lHbG9iYWxT
ZXR0aW5ncy5oICovLAogCQkJCTMxNjA3RjM4MTk2MjcwMDIwMDlCODdEQSAvKiBMZWdhY3lTZXNz
aW9uU3RhdGVDb2RpbmcuaCAqLywKKwkJCQk5MzQyNTg5ODI1NUI1MzRCMDA1OUVFREQgLyogTWVk
aWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggKi8sCiAJCQkJQkM2RURBQTUxMTEyNzFDNjAwRTc2NzhC
IC8qIFBhZ2VDbGllbnQuaCAqLywKIAkJCQkxQUM3NTM3OTE4M0E5RkRBMDA3MkNCMTUgLyogUGFn
ZUxvYWRTdGF0ZS5jcHAgKi8sCiAJCQkJMUFDNzUzN0ExODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VM
b2FkU3RhdGUuaCAqLywKQEAgLTkyMDcsNiArOTIyMCw5IEBACiAJCQkJQkMxMTFCMDgxMTJGNUUz
QzAwMzM3QkFCIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovLAogCQkJCTFBMzAwNjZDMTEx
MEY0RjcwMDMxOTM3QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8sCiAJCQkJNUNBOTg1NDky
MTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmcuaCAqLywKKwkJCQk5M0Q2QjdC
MDI1NTI2OEExMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5j
cHAgKi8sCisJCQkJOTNENkI3QjIyNTUyNjhBMjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbk1hbmFnZXIuaCAqLywKKwkJCQk5M0Q2QjdBRjI1NTI2OEExMDA1OEREM0EgLyog
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oICovLAogCQkJCTkzRDZCNzZCMjU0
Qjg5NTgwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAgKi8sCiAJCQkJOTNE
NkI3NkMyNTRCODk1ODAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmggKi8sCiAJ
CQkJOTNENkI3N0EyNTRDOTg0RDAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLm1l
c3NhZ2VzLmluICovLApAQCAtOTU0Nyw2ICs5NTYzLDggQEAKIAkJCQkzMzM2NzYzOTEzMEM5OURD
MDA2QzlERTIgLyogV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oICovLAogCQkJCTFBREU0NkIwMTk1
NEVDNjEwMDBGNzk4NSAvKiBXS1Nlc3Npb25TdGF0ZVJlZi5jcHAgKi8sCiAJCQkJMUFERTQ2QjEx
OTU0RUM2MTAwMEY3OTg1IC8qIFdLU2Vzc2lvblN0YXRlUmVmLmggKi8sCisJCQkJOTNENkI3Qjgy
NTUzNEExMjAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2su
Y3BwICovLAorCQkJCTkzRDZCN0I3MjU1MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggKi8sCiAJCQkJNTFGODg2QTMxRjJDMjE0QTAwQzE5M0VG
IC8qIFdLVGVzdGluZ1N1cHBvcnQuY3BwICovLAogCQkJCTUxRjg4NkE0MUYyQzIxNEEwMEMxOTNF
RiAvKiBXS1Rlc3RpbmdTdXBwb3J0LmggKi8sCiAJCQkJMzE0ODg4RkUxRDkxQjExRDAwMzc3MDQy
IC8qIFdLVGV4dENoZWNrZXIuY3BwICovLApAQCAtMTExNDQsNiArMTExNjIsNyBAQAogCQkJCTFB
NkQ4NkMyMURGNzUyNjUwMDc3NDVFOCAvKiBNYWNoTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNDNTZGNzkxMTU5OTU3RDAwMUNDQUY5IC8qIE1hY2hQb3J0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTI0QjVGMzExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOTM0MjU4OUEyNTVCNTM1QTAwNTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdFMTlFRkMyM0Q0MDFGMTAwOTRGRkI0IC8q
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
N0UxOUVGRDIzRDQwMUYxMDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2Fn
ZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEg
LyogTWVudVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTM4NSw2ICsxMTQwNCw4IEBA
CiAJCQkJNTdCQkVBNkQyMkJDMEJGRTAwMjczOTk1IC8qIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xp
Y3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3NkNBOUQ3MjJCODYyMTgwMDMwMTQzQyAvKiBTT0F1
dGhvcml6YXRpb25OU1VSTEV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODUyMkIz
NTE2OTAwOEQwRThCIC8qIFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTkzRDZCN0I1MjU1MjY4RDcwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q2QjdCNDI1NTI2OEQ1MDA1OEREM0Eg
LyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNENkI3NzIyNTRCQjUxOTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4NDI1NENDRDBFMDA1OEREM0EgLyogU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3ODUyNTRD
Q0Q0MzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXNSZXBsaWVzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTExOTk4LDYgKzEyMDE5LDcgQEAKIAkJCQk1MTNFNDYyRDFBRDgz
NzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0Y1NDlCNDFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3Vy
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTg3MjJCMzUxNzAwMDhEMEU4QiAvKiBX
S1NPQXV0aG9yaXphdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Q2QjdCOTI1
NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0E3OEZGMzIyMjQxOTE5NjAwOTY0ODNFIC8qIFdLU3RvcmFn
ZUFjY2Vzc0FsZXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYwNjEyNEZGMDI3MDA2OEYy
MEEgLyogV0tTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjFBMTI0RkYwMzcwMDY4
RjIwQSAvKiBXS1N0cmluZ0NGLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAKaW5kZXggZWExNmIyZWQ3NjY1YjMyYmQzOWNh
YzQ2MzJiNGI5YTUxYTc1ZDZiMS4uM2YzNTMxOTRhMzJjM2U2NzliY2EyOWZiZWE4NTAzMWM5MjFl
NGZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5j
cHAKQEAgLTU5LDEwICs1OSw5IEBAIHZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
OjpyZWdpc3RlckNsaWVudChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvCiAgICAgbV9jbGll
bnRNYXAuYWRkKGNsaWVudC5pZGVudGlmaWVyKCksIG1ha2VXZWFrUHRyKGNsaWVudCkpOwogfQog
Ci12b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0
cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKQordm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb246OnN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNv
bnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luKQogewotICAgIFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gaW5mbyB7IGNsaWVudElkZW50aWZpZXIsIGxhbmcs
IGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMgfTsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3RhcnQoaW5mbykpOworICAgIHNl
bmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTdGFydChjbGllbnRJZGVudGlm
aWVyLCBsYW5nLCBjb250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzLCBX
VEZNb3ZlKGNsaWVudE9yaWdpbikpKTsKIH0KIAogdm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb246OnN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQpAQCAtODAsNyArNzksNyBAQCB2b2lkIFdlYlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6aW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lYwogICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVy
OjpJbnZhbGlkYXRlKGNsaWVudElkZW50aWZpZXIpKTsKIH0KIAotdm9pZCBXZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb246OmRpZFJlY2VpdmVVcGRhdGUoY29uc3QgV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGUmIHVwZGF0ZSkKK3ZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uOjpkaWRSZWNlaXZlVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
JiYgdXBkYXRlKQogewogICAgIGF1dG8gY2xpZW50SWRlbnRpZmllciA9IHVwZGF0ZS5jbGllbnRJ
ZGVudGlmaWVyKCk7CiAgICAgaWYgKCFtX2NsaWVudE1hcC5jb250YWlucyhjbGllbnRJZGVudGlm
aWVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAppbmRl
eCAyOGRiZDE5N2NiM2Y3OThmYzc2MzE5OWViYjEyZGUxM2FlZDc1MWIxLi40NDNiMDRmMWNjYWFi
MGEwZTZhYTUzODMxZTk4NWQxMGE2YTUzMzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbi5oCkBAIC00MywxMSArNDMsMTEgQEAgY2xhc3MgV2ViUGFnZTsK
IAogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uSWRlbnRpZmllciA9IFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyOwogCi1jbGFzcyBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24g
OiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLCBwcml2YXRlIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CitjbGFzcyBX
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBw
cml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24+IGNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25JZGVudGlmaWVyKTsKIAotICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29s
IGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZl
cykgZmluYWw7CisgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91
cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mJikgZmluYWw7CiAgICAgdm9pZCBzdG9wKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgYWJv
cnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikg
ZmluYWw7CiAKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB+V2ViU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uKCk7CiAKICAgICB2b2lkIHJlZ2lzdGVyQ2xpZW50KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpIGZpbmFs
OworICAgIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZSYmKSBmaW5hbDsKICAgICB2b2lkIGludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlci4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBkOTE4NGU4MjUxM2VjOGM0ZWMwYzI3ZjgwN2YzZTgwOGRiMGFlMTAyLi5kMjc4NmUyOTNj
MzE1NzdmMzBlM2ZkN2M4MGI1NWJiZGU4NWQwOWFiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjAtMTEtMTEgIFNp
aHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2lj
IHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzcxMjIyNjM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3Q6CisgICAgICAgICogTW9iaWxl
TWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5mby5wbGlzdDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9uLm1t
OiBBZGRlZC4KKyAgICAgICAgKC1bU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uVUlEZWxlZ2F0
ZSBfd2ViVmlldzpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOmRl
Y2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bU3BlZWNoUmVjb2duaXRpb25NZXNzYWdlSGFu
ZGxlciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL3NwZWVjaHJlY29nbml0aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0
ZW5jZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6
OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OmRlY2lkZVBv
bGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6Y29tcGxldGVTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVj
ayk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkdyYW50ZWQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRl
V2ViVmlld1dpdGhPcHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0
U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91
c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDIwLTExLTEwICBDb21taXQgUXVldWUg
IDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRp
bmcgcjI2OTY2MC4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0
IGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QKaW5kZXggNGUyYjFmNDgxOWFkNTEw
M2U0Y2YxNzA5YjdjNTNhNjZlOGIzOTVlNS4uMzNhM2NhMWJlNzM1MDhlMWZmY2IwMjk1N2M4NjRl
ODU5MmRhYWE0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QK
KysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QKQEAgLTUyLDkgKzUyLDExIEBA
CiAJCQk8c3RyaW5nPkVkaXRvcjwvc3RyaW5nPgogCQk8L2RpY3Q+CiAJPC9hcnJheT4KLSAgICA8
a2V5Pk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5n
IHZpZGVvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgotICAgIDxrZXk+TlNNaWNyb3Bo
b25lVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5nIGF1ZGlvIG9u
IGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0
aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVz
PC9zdHJpbmc+CisJPGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0
cmluZz5SZWNvcmRpbmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtl
eT5OU1NwZWVjaFJlY29nbml0aW9uVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVj
b2duaXppbmcgY2FwdHVyZWQgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CiA8
L2RpY3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvTW9iaWxlTWluaUJyb3dzZXIvTW9i
aWxlTWluaUJyb3dzZXIvSW5mby5wbGlzdCBiL1Rvb2xzL01vYmlsZU1pbmlCcm93c2VyL01vYmls
ZU1pbmlCcm93c2VyL0luZm8ucGxpc3QKaW5kZXggMmQxYmM1ODJmYmU3NjVjZmRjNDEwNWVmZTll
Y2MxZDgzMjBjYzk1OS4uNTM4N2IzNzQ5YTQ3NGZlMGIzZDljNjA5NWNiMjg4MTdiOGY5MjMwYSAx
MDA2NDQKLS0tIGEvVG9vbHMvTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5m
by5wbGlzdAorKysgYi9Ub29scy9Nb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9J
bmZvLnBsaXN0CkBAIC01NCw5ICs1NCwxMSBAQAogCQk8a2V5Pk5TQWxsb3dzQXJiaXRyYXJ5TG9h
ZHNJbldlYkNvbnRlbnQ8L2tleT4KIAkJPHRydWUvPgogCTwvZGljdD4KLSAgICA8a2V5Pk5TQ2Ft
ZXJhVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5nIHZpZGVvIG9u
IGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgotICAgIDxrZXk+TlNNaWNyb3Bob25lVXNhZ2VE
ZXNjcmlwdGlvbjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5nIGF1ZGlvIG9uIGJlaGFsZiBv
ZiB3ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uPC9rZXk+
CisJPHN0cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+
CisJPGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5SZWNv
cmRpbmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5OU1NwZWVj
aFJlY29nbml0aW9uVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVjb2duaXppbmcg
Y2FwdHVyZWQgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CiA8L2RpY3Q+CiA8
L3BsaXN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZDEyNzQ1MzhhNzM2YTBjZGE1NTM0
YWEzNzI2YWU2OTAzYTBmNDY3Li5lM2RhNGQzY2E2NmE2NDkzYzQ1N2Q2ZWJkZmVjNTViNjA0MjM3
NzVjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODAwLDYgKzgwMCw4IEBACiAJCTkzMjlB
QTI5MURFM0Y4MUUwMDNBQkQwNyAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzI5QUEyODFERTNGODFFMDAzQUJE
MDcgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwICovOyB9OwogCQk5MzJBRTUzRDFEMzcxMDQ3MDA1
REZGQUYgLyogZm9jdXMtaW5wdXRzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1NzVDNTUxRDMwMzY2RTAwMEQ2MDREIC8qIGZvY3Vz
LWlucHV0cy5odG1sICovOyB9OwogCQk5MzNENjMxRDFGQ0I3NjIwMDAzMkVDRDYgLyogSGFzaGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzM0Q2
MzFCMUZDQjc2MTgwMDMyRUNENiAvKiBIYXNoZXIuY3BwICovOyB9OworCQk5MzQyNTg5QzI1NUI2
MDlCMDA1OUVFREQgLyogU3BlZWNoUmVjb2duaXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQyNTg5QjI1NUI2MDlBMDA1OUVFREQgLyogU3Bl
ZWNoUmVjb2duaXRpb24ubW0gKi87IH07CisJCTkzNDI1ODlFMjU1QjZBMTIwMDU5RUVERCAvKiBz
cGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQyNTg5RDI1
NUI2NkEwMDA1OUVFREQgLyogc3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNp
c3RlbmNlLmh0bWwgKi87IH07CiAJCTkzNTc4NkNDMjBGNkEyNzAwMDAwQ0RGQyAvKiBJbmRleGVk
REIuc3FsaXRlMy13YWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTM0RkE1QzUyMEY2OUZFRDAwNDBEQzFCIC8qIEluZGV4ZWREQi5zcWxpdGUz
LXdhbCAqLzsgfTsKIAkJOTM1Nzg2Q0QyMEY2QTI5MTAwMDBDREZDIC8qIEluZGV4ZWREQi5zcWxp
dGUzIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzNEZBNUM3MjBGNjlGRUUwMDQwREMxQiAvKiBJbmRleGVkREIuc3FsaXRlMyAqLzsgfTsKIAkJ
OTM1Nzg2Q0UyMEY2QTJBMTAwMDBDREZDIC8qIEluZGV4ZWREQi5zcWxpdGUzLXNobSBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRGQTVDNjIw
RjY5RkVEMDA0MERDMUIgLyogSW5kZXhlZERCLnNxbGl0ZTMtc2htICovOyB9OwpAQCAtMTYxMCw2
ICsxNjEyLDcgQEAKIAkJCQlGNEY0MDVCRDFENEMwRDFDMDA3QTk3MDcgLyogc2tpbm55LWF1dG9w
bGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlD
MDFBMjNGMjEyNjYxNTY3MDBDOUVENTUgLyogc3BhY2ViYXItc2Nyb2xsaW5nLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRDRkNEREEyNDlGQzlFNDAwNTI3NDgyIC8qIFNwYWNlT25s
eS5vdGYgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJOTM0MjU4OUUyNTVCNkExMjAwNTlFRURE
IC8qIHNwZWVjaHJlY29nbml0aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5jZS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCUUxOTRFMUJEMTc3RTUzQzcwMDlDNEQ0RSAvKiBTdG9w
TG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQk1MTVCRTE2RjFENDI4QkIxMDBERDdDNjggLyogU3RvcmVCbG9iVG9CZURlbGV0ZWQuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk5QkQ2RDNBMjFGN0IyMTgzMDBCRDQ5NjIgLyog
c3Vuc2V0LWluLWN1cGVydGluby0xMDBweC50aWZmIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAt
MjQwMSw2ICsyNDA0LDggQEAKIAkJOTMyOUFBMjgxREUzRjgxRTAwM0FCRDA3IC8qIFRleHRCcmVh
a0l0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRC
cmVha0l0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzMTQwN0Ix
N0I0NDE5MDAwRjA4M0IxIC8qIERpZE5vdEhhbmRsZUtleURvd24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlkTm90SGFuZGxlS2V5RG93bi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzM0Q2MzFCMUZDQjc2MTgwMDMyRUNENiAvKiBIYXNoZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGFzaGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM0MjU4OUIyNTVCNjA5QTAwNTlFRUREIC8qIFNw
ZWVjaFJlY29nbml0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU3BlZWNoUmVjb2duaXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkz
NDI1ODlEMjU1QjY2QTAwMDU5RUVERCAvKiBzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Np
b24tcGVyc2lzdGVuY2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJzcGVlY2hy
ZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzNEZBNUM1MjBGNjlGRUQwMDQwREMxQiAvKiBJbmRleGVkREIu
c3FsaXRlMy13YWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBmaWxlOyBwYXRoID0gIkluZGV4ZWREQi5zcWxpdGUzLXdhbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzNEZBNUM2MjBGNjlGRUQwMDQwREMxQiAvKiBJbmRleGVkREIuc3Fs
aXRlMy1zaG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBmaWxlOyBwYXRoID0gIkluZGV4ZWREQi5zcWxpdGUzLXNobSI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzNEZBNUM3MjBGNjlGRUUwMDQwREMxQiAvKiBJbmRleGVkREIuc3FsaXRl
MyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7
IHBhdGggPSBJbmRleGVkREIuc3FsaXRlMzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTMzODEsNiArMzM4Niw3IEBACiAJCQkJMzdCQ0E2MUIxQjU5NkJBOTAwMjAxMkNBIC8qIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0FjdGlvbnMubW0gKi8sCiAJCQkJMkQ5QTUzQUUx
QjMxRkE4RDAwNzRENUFBIC8qIFNocmlua1RvRml0Lm1tICovLAogCQkJCTJERkY3QjZDMURBNDg3
QUYwMDgxNDYxNCAvKiBTbmFwc2hvdFN0b3JlLm1tICovLAorCQkJCTkzNDI1ODlCMjU1QjYwOUEw
MDU5RUVERCAvKiBTcGVlY2hSZWNvZ25pdGlvbi5tbSAqLywKIAkJCQlDREMwOTMyRDIxQzk5MzQ0
MDAzMEM0QjAgLyogU3RvcFN1c3BlbmRSZXN1bWVBbGxNZWRpYS5tbSAqLywKIAkJCQk0MTRBRDY4
NTIyODVEMUIwMDA3NzdGMkQgLyogU3RvcmFnZVF1b3RhLm1tICovLAogCQkJCTUxNUJFMTcwMUQ0
MjhCRDEwMEREN0M2OCAvKiBTdG9yZUJsb2JUaGVuRGVsZXRlLm1tICovLApAQCAtMzkwMCw2ICsz
OTA2LDcgQEAKIAkJCQk0NjU2QTc1NzIwRjkwNTRGMDAwMkUyMUYgLyogU2ltcGxlU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovLAogCQkJCUY0RjQwNUJCMUQ0QzBDRjgwMDdB
OTcwNyAvKiBza2lubnktYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sICovLAogCQkJ
CUY0Q0ZDREQ4MjQ5RkM5RDkwMDUyNzQ4MiAvKiBTcGFjZU9ubHkub3RmICovLAorCQkJCTkzNDI1
ODlEMjU1QjY2QTAwMDU5RUVERCAvKiBzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24t
cGVyc2lzdGVuY2UuaHRtbCAqLywKIAkJCQk1MTVCRTE2RTFENDI4OEZGMDBERDdDNjggLyogU3Rv
cmVCbG9iVG9CZURlbGV0ZWQuaHRtbCAqLywKIAkJCQk5QkQ2RDNBMTFGN0IyMDIxMDBCRDQ5NjIg
Lyogc3Vuc2V0LWluLWN1cGVydGluby0xMDBweC50aWZmICovLAogCQkJCTlCRDZEM0EwMUY3QjIw
MjAwMEJENDk2MiAvKiBzdW5zZXQtaW4tY3VwZXJ0aW5vLTIwMHB4LnBuZyAqLywKQEAgLTU0NTAs
NiArNTQ1Nyw3IEBACiAJCQkJNTEwQTkxRjgyNEQzNjIyMTAwQkZEODlDIC8qIFNvbnlEdWFsU2hv
Y2szLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFQjEyNjQyNENBNkI2NjAwMENCMDMwIC8qIFNv
bnlEdWFsU2hvY2s0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMTUxQTQxMUFFNjAwNDQ3
QzRDIC8qIFNwYWNlYmFyU2Nyb2xsaW5nLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzNDI1ODlD
MjU1QjYwOUIwMDU5RUVERCAvKiBTcGVlY2hSZWNvZ25pdGlvbi5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTU3RjRBQUEwMjA4RkFFRjAwMEE2OEU5RSAvKiBTU0xLZXlHZW5lcmF0b3IubW0gaW4gU291
cmNlcyAqLywKIAkJCQk4M0JDNUFDMDIwRTZDMERGMDBGNTg3OUYgLyogU3RhcnRMb2FkSW5EaWRG
YWlsUHJvdmlzaW9uYWxMb2FkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFQjEyNjUyNENBNkI2
NjAwMENCMDMwIC8qIFN0ZWVsU2VyaWVzTmltYnVzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0
aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TcGVlY2hSZWNv
Z25pdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzNhZDAyYjU0MTUyYzEwNTZlNjQ4YzZhYTJiZjYxMzE0
YmExNDA0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9TcGVlY2hSZWNvZ25pdGlvbi5tbQpAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgor
I2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQ
cml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgorI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlldy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworc3RhdGljIGJvb2wgc2hvdWxk
R3JhbnRQZXJtaXNzaW9uUmVxdWVzdCA9IHRydWU7CitzdGF0aWMgYm9vbCBwZXJtaXNzaW9uUmVx
dWVzdGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3NhZ2U7CitzdGF0
aWMgUmV0YWluUHRyPFdLU2NyaXB0TWVzc2FnZT4gbGFzdFNjcmlwdE1lc3NhZ2U7CisKK0BpbnRl
cmZhY2UgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uVUlEZWxlZ2F0ZSA6IE5TT2JqZWN0PFdL
VUlEZWxlZ2F0ZVByaXZhdGU+CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlP
cmlnaW4gKilvcmlnaW4gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShCT09MKSlkZWNpc2lvbkhh
bmRsZXI7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25VSURlbGVnYXRlCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVl
c3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4g
KilvcmlnaW4gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShCT09MKSlkZWNpc2lvbkhhbmRsZXIK
K3sKKyAgICBwZXJtaXNzaW9uUmVxdWVzdGVkID0gdHJ1ZTsKKyAgICBkZWNpc2lvbkhhbmRsZXIo
c2hvdWxkR3JhbnRQZXJtaXNzaW9uUmVxdWVzdCk7Cit9CitAZW5kCisKK0BpbnRlcmZhY2UgU3Bl
ZWNoUmVjb2duaXRpb25NZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gU3BlZWNoUmVjb2duaXRpb25NZXNzYWdl
SGFuZGxlcgorLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250
cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihX
S1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdlCit7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0g
dHJ1ZTsKKyAgICBsYXN0U2NyaXB0TWVzc2FnZSA9IG1lc3NhZ2U7Cit9CitAZW5kCisKK25hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXZWJLaXQyLCBTcGVlY2hSZWNvZ25pdGlvblVz
ZXJQZXJtaXNzaW9uUGVyc2lzdGVuY2UpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGhh
bmRsZXIgPSBhZG9wdE5TKFtbU3BlZWNoUmVjb2duaXRpb25NZXNzYWdlSGFuZGxlciBhbGxvY10g
aW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNj
cmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07Cisg
ICAgYXV0byBwcmVmZXJlbmNlcyA9IFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKKyAgICBw
cmVmZXJlbmNlcy5fbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKKyAgICBwcmVmZXJl
bmNlcy5fc3BlZWNoUmVjb2duaXRpb25FbmFibGVkID0gWUVTOworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uVUlE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdh
dGUuZ2V0KCldOworCisgICAgc2hvdWxkR3JhbnRQZXJtaXNzaW9uUmVxdWVzdCA9IGZhbHNlOwor
ICAgIHBlcm1pc3Npb25SZXF1ZXN0ZWQgPSBmYWxzZTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3Nh
Z2UgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNwZWVjaHJlY29n
bml0aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5jZSJdOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
QCJFcnJvcjogbm90LWFsbG93ZWQgLSBQZXJtaXNzaW9uIGNoZWNrIGZhaWxlZCIsIFtsYXN0U2Ny
aXB0TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX1RSVUUocGVybWlzc2lvblJlcXVlc3RlZCk7
CisKKyAgICAvLyBQZXJtaXNzaW9uIHJlc3VsdCBpcyByZW1lbWJlcmVkLgorICAgIHBlcm1pc3Np
b25SZXF1ZXN0ZWQgPSBmYWxzZTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsK
KyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic3RhcnQoKSJdOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoQCJFcnJvcjogbm90LWFsbG93ZWQgLSBQZXJtaXNzaW9uIGNoZWNr
IGZhaWxlZCIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX0ZBTFNFKHBl
cm1pc3Npb25SZXF1ZXN0ZWQpOworCisgICAgLy8gUGVybWlzc2lvbiByZXN1bHQgd2lsbCBiZSBj
bGVhcmVkIGFmdGVyIGRvY3VtZW50IGNoYW5nZXMuCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJhYm91dDpibGFuayJdXV07CisKKyAgICBzaG91bGRHcmFudFBlcm1pc3Npb25SZXF1
ZXN0ID0gdHJ1ZTsKKyAgICBwZXJtaXNzaW9uUmVxdWVzdGVkID0gZmFsc2U7CisgICAgcmVjZWl2
ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6
QCJzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UiXTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlcm1pc3Npb25SZXF1ZXN0ZWQpOworICAgIC8vIFNo
b3VsZCBub3QgZ2V0IGVycm9yIG1lc3NhZ2UgYXMgcGVybWlzc2lvbiBpcyBncmFudGVkLgorICAg
IEVYUEVDVF9GQUxTRShyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL3NwZWVjaHJlY29nbml0aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5jZS5o
dG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9zcGVlY2hyZWNvZ25p
dGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGNhNmVk
MGM4NGY0YmNlN2U4NmFkMTNjZGY3ZjMwNDIwZmJmY2EzCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9zcGVlY2hyZWNvZ25pdGlvbi11c2Vy
LXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbApAQCAtMCwwICsxLDI5IEBACis8Ym9keSBvbmxv
YWQ9InN0YXJ0KCkiPgorPHNjcmlwdD4KKwordmFyIHNwZWVjaFJlY29nbml0aW9uID0gbnVsbDsK
K2Z1bmN0aW9uIHN0YXJ0KCkKK3sKKyAgICBzdG9wKCk7CisKKyAgICBzcGVlY2hSZWNvZ25pdGlv
biA9IG5ldyBTcGVlY2hSZWNvZ25pdGlvbigpOworICAgIHNwZWVjaFJlY29nbml0aW9uLm9uZXJy
b3IgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMu
dGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIkVycm9yOiAiICsgZXZlbnQuZXJyb3IgKyAiIC0gIiAr
ICBldmVudC5tZXNzYWdlKTsKKyAgICB9CisgICAgc3BlZWNoUmVjb2duaXRpb24ub25lbmQgPSAo
ZXZlbnQpID0+IHsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhh
bmRsZXIucG9zdE1lc3NhZ2UoIkVuZCIpOworICAgIH0KKyAgICBzcGVlY2hSZWNvZ25pdGlvbi5z
dGFydCgpOworfQorCitmdW5jdGlvbiBzdG9wKCkKK3sKKyAgICBpZiAoIXNwZWVjaFJlY29nbml0
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzcGVlY2hSZWNvZ25pdGlvbi5zdG9wKCk7Cisg
ICAgc3BlZWNoUmVjb2duaXRpb24gPSBudWxsOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDU1MTYyZmYzNDNkMjVmNjkwNmMzOTI3NmZkNWE4
OTFlZGYyOWI4NjkuLjZmZGNlMjNmYjg0ZDMwYmNjZDU5NzRhYjcyMDMzMWM5Mjk5ODRjY2IgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtNDAzLDQgKzQwMyw3IEBAIGludGVyZmFjZSBU
ZXN0UnVubmVyIHsKICAgICB1bmRlZmluZWQgc2V0QWRDbGlja0F0dHJpYnV0aW9uT3ZlcnJpZGVU
aW1lckZvclRlc3RpbmcoYm9vbGVhbiB2YWx1ZSk7CiAgICAgdW5kZWZpbmVkIHNldEFkQ2xpY2tB
dHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKERPTVN0cmluZyB1cmwpOwogICAgIHVu
ZGVmaW5lZCBtYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKKwor
ICAgIC8vIFNwZWVjaFJlY29nbml0aW9uCisgICAgdW5kZWZpbmVkIHNldElzU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uR3JhbnRlZChib29sZWFuIHZhbHVlKTsKIH07CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA5
MzQ3ZjgxODRmZWJlMjVkMzNmOTQxYTQ0ZjkyYzc2ZjdmNWU2YTdkLi5kMzY1NzYyZDMwNzUwZWNj
MTI4ZDhlMWY0Nzg2YzYyNDM2OWE1MjNkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTIwNjksNiArMjA2OSwxMSBA
QCB2b2lkIFRlc3RSdW5uZXI6OmRpZFNldEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKCkKICAgICBj
YWxsVGVzdFJ1bm5lckNhbGxiYWNrKERpZFNldEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrSUQpOwog
fQogCit2b2lkIFRlc3RSdW5uZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3Jh
bnRlZChib29sIGdyYW50ZWQpCit7CisgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2UoInNl
dElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCIsIGdyYW50ZWQpOworfQorCiBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
CmluZGV4IDBiZDNhMDllMzJkNzFiMzUxNmU0ZjhlMDViZWEyMmFmOTk0YjFkMjMuLjk3OTNjNzc3
YWQzOGFhZDM0Y2Y1MjVkMTJjYTg3ZGVhMzE5YTJkM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC01MTUsNiArNTE1LDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZv
clRlc3RpbmcoSlNTdHJpbmdSZWYpOwogICAgIHZvaWQgbWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNB
c0V4cGlyZWRGb3JUZXN0aW5nKCk7CiAKKyAgICB2b2lkIHNldElzU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uR3JhbnRlZChib29sKTsKKwogcHJpdmF0ZToKICAgICBUZXN0UnVubmVyKCk7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZTRhYWYzOGI1
OGJjMmRmMDU2MGM1MjkwZjFhZDhmNGQ0ZGZiMzU1YS4uNDZjNjVlODEyODA1ZmMzOGEwZThjZTcz
Y2ViMzU2MDhlYTIzYjQzMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tQcm90ZWN0aW9uU3Bh
Y2UuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJLaXQv
V0tTZWN1cml0eU9yaWdpblJlZi5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVGV4dENoZWNrZXIu
aD4KICNpbmNsdWRlIDxXZWJLaXQvV0tVUkwuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tVc2VyQ29u
dGVudENvbnRyb2xsZXJSZWYuaD4KQEAgLTI5Nyw2ICsyOTgsMjEgQEAgc3RhdGljIHZvaWQgcnVu
V2ViQXV0aGVudGljYXRpb25QYW5lbCgpCiB7CiB9CiAKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGlj
eUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoV0tQYWdlUmVmLCBXS1NlY3Vy
aXR5T3JpZ2luUmVmLCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIGNh
bGxiYWNrKQoreworICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5jb21wbGV0ZVNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrKGNhbGxiYWNrKTsKK30KKwordm9pZCBUZXN0Q29u
dHJvbGxlcjo6Y29tcGxldGVTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVjayhXS1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmIGNhbGxiYWNrKQoreworICAgIFdLU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tDb21wbGV0ZShjYWxsYmFjaywgbV9pc1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQpOworfQorCit2b2lkIFRlc3RDb250cm9s
bGVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCBncmFudGVk
KQoreworICAgIG1faXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkID0gZ3JhbnRl
ZDsKK30KKwogV0tQYWdlUmVmIFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UoV0tQYWdl
UmVmLCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLTmF2aWdhdGlvbkFj
dGlvblJlZiBuYXZpZ2F0aW9uQWN0aW9uLCBXS1dpbmRvd0ZlYXR1cmVzUmVmIHdpbmRvd0ZlYXR1
cmVzLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewogICAgIFBsYXRmb3JtV2ViVmlldyogcGFy
ZW50VmlldyA9IHN0YXRpY19jYXN0PFBsYXRmb3JtV2ViVmlldyo+KGNvbnN0X2Nhc3Q8dm9pZCo+
KGNsaWVudEluZm8pKTsKQEAgLTY1MCw4ICs2NjYsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpj
cmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAgICAg
V0tIVFRQQ29va2llU3RvcmVEZWxldGVBbGxDb29raWVzKFdLV2Vic2l0ZURhdGFTdG9yZUdldEhU
VFBDb29raWVTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKCkpLCBudWxscHRyLCBudWxscHRyKTsKIAog
ICAgIHBsYXRmb3JtQ3JlYXRlV2ViVmlldyhjb25maWd1cmF0aW9uLmdldCgpLCBvcHRpb25zKTsK
LSAgICBXS1BhZ2VVSUNsaWVudFYxNCBwYWdlVUlDbGllbnQgPSB7Ci0gICAgICAgIHsgMTQsIG1f
bWFpbldlYlZpZXcuZ2V0KCkgfSwKKyAgICBXS1BhZ2VVSUNsaWVudFYxNSBwYWdlVUlDbGllbnQg
PSB7CisgICAgICAgIHsgMTUsIG1fbWFpbldlYlZpZXcuZ2V0KCkgfSwKICAgICAgICAgMCwgLy8g
Y3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCiAgICAgICAgIDAsIC8vIHNob3dQ
YWdlCiAgICAgICAgIDAsIC8vIGNsb3NlCkBAIC03MjQsNyArNzQwLDggQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRp
b25zKQogICAgICAgICAwLCAvLyBkaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29yZEFw
cGVhcmFuY2UKICAgICAgICAgMCwgLy8gcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtCiAgICAg
ICAgIHNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3MsCi0gICAgICAg
IHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwKKyAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25Q
YW5lbCwKKyAgICAgICAgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdAogICAgIH07CiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KG1fbWFpbldlYlZpZXct
PnBhZ2UoKSwgJnBhZ2VVSUNsaWVudC5iYXNlKTsKIApAQCAtMTA1NCw2ICsxMDcxLDggQEAgYm9v
bCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0
T3B0aW9ucyYgb3B0aW9ucywgUmUKICAgICBtX3NlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNr
Q2FsbHNDb3VudCA9IDA7CiAgICAgbV9zaG91bGREaXNtaXNzSmF2YVNjcmlwdEFsZXJ0c0FzeW5j
aHJvbm91c2x5ID0gZmFsc2U7CiAKKyAgICBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkdyYW50ZWQodHJ1ZSk7CisKICAgICBhdXRvIGxvYWRBYm91dEJsYW5rID0gW3RoaXNdIHsKICAg
ICAgICAgbV9kb25lUmVzZXR0aW5nID0gZmFsc2U7CiAgICAgICAgIFdLUGFnZUxvYWRVUkwobV9t
YWluV2ViVmlldy0+cGFnZSgpLCBibGFua1VSTCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaAppbmRleCAzM2I2NDk0YWM2MjQ0YjkyZmNiNzgwOWE1OGQ3MjAzYzdjMTI1
OGE4Li4wNWM4ZjhiZGFhOTVhZDg3ZTQzOWUzMDkzYjhhNGYzNGY1ZjgyYzU2IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0zNTEsNiArMzUxLDkgQEAgcHVibGlj
OgogCiAgICAgV0tVUkxSZWYgY3VycmVudFRlc3RVUkwoKSBjb25zdDsKIAorICAgIHZvaWQgY29t
cGxldGVTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVjayhXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrUmVmKTsKKyAgICB2b2lkIHNldElzU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uR3JhbnRlZChib29sKTsKKwogcHJpdmF0ZToKICAgICBXS1JldGFpblB0cjxXS1Bh
Z2VDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RP
cHRpb25zJik7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZj4gZ2Vu
ZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9ucyYpIGNvbnN0OwpAQCAt
NjQwLDYgKzY0Myw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBt
X2hhc1NldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciB7IGZhbHNlIH07CiAjZW5kaWYKKwor
ICAgIGJvb2wgbV9pc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQgeyBmYWxzZSB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCmluZGV4IDE0YzA0ZWQxZmE5Mzk0ZjU3MmY2NDlhOTFiNDdlZmIyMDZlZjg1
NGUuLjViNjY2MTdiZWUwMTZiNjc1MWM3YmIyYmNlNmJiOGJhZTQ0ZWIwYTAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xMzQ1LDYgKzEzNDUsMTEgQEAg
V0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9u
b3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJzZXRJ
c1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQiKSkgeworICAgICAgICBUZXN0Q29u
dHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFu
dGVkKGJvb2xlYW5WYWx1ZShtZXNzYWdlQm9keSkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAwYzA0YjIxZjZmOTgyNmVhYjEzZWY5MzFiZTQyYTNlMDlmMzdkYTg1Li41MjFl
ZGVjY2Y1ZGY3OTk1NjdlOGRiNmQyMzA0YWQxMWQzNzNkMmJhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMjAtMTEtMTEgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAg
KiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3ItZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3Iu
aHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisK
IDIwMjAtMTEtMTAgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dMSUJdIEdhcmRlbmluZyB3ZWJydGMgZmFpbHVyZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDM4
MzI0ZDFkNjVmNzk5ZTgwZWZmZjE0YzllOTU1YTJkZDE3OTExZjAuLmQzZjFiNzgxNTVlMGMwYjM3
OThiZTBiNzk5Nzc0ZThkYzY1ZDU0ZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTc3LDYgKzE3
Nyw3IEBAIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtYWZ0ZXItc3RvcmFn
ZS1jcmFzaC5odG1sIFsgU2tpcCBdCiBzdG9yYWdlL2luZGV4ZWRkYi9JREJPYmplY3QtbGVhay5o
dG1sIFsgU2tpcCBdCiBmYXN0L2Zvcm1zL2NhbGwtdGV4dC1kaWQtY2hhbmdlLWluLXRleHQtZmll
bGQtd2hlbi10eXBpbmcuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1w
cml2YWN5LyBbIFNraXAgXQorZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9y
Lmh0bWwgWyBTa2lwIF0KIAogIyBPbmx5IHBhcnRpYWwgc3VwcG9ydCBvbiBDb2NvYSBwbGF0Zm9y
bXMuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NwZWVjaC1hcGkvIFsgU2tpcCBd
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Np
b24tZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlv
bi9wZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTNlNzk0ZGEwYTlj
OGM4Mjg1ZDJiYTM5NmY0OWU0NWNhOGMxNzUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEzIEBACitWZXJpZnkgdGhhdCBlcnJvciBldmVudCBpcyBmaXJlZCB3aGVuIHBl
cm1pc3Npb24gaXMgZGVuaWVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyByZWNvZ25pdGlvbiA9IG5ldyBTcGVlY2hSZWNvZ25pdGlvbigpIGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgorUEFTUyByZWNvZ25pdGlvbi5zdGFydCgpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgorUEFTUyBldmVudC5lcnJvciBpcyAibm90LWFsbG93ZWQiCitQQVNTIGV2ZW50Lm1lc3NhZ2Ug
aXMgIlBlcm1pc3Npb24gY2hlY2sgZmFpbGVkIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3Bl
ZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9z
cGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJkMDMz
MzBlMjAzOTA0MTA2ODdkNTdlNmMxNjc5ZmFmNjhjYjg0MQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCkBA
IC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oIlZlcmlmeSB0aGF0IGVycm9yIGV2ZW50IGlzIGZpcmVkIHdoZW4gcGVybWlzc2lv
biBpcyBkZW5pZWQuIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIGpzVGVzdElz
QXN5bmMgPSB0cnVlOworICAgIHRlc3RSdW5uZXIuc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25HcmFudGVkKGZhbHNlKTsKK30KKworc2hvdWxkTm90VGhyb3coInJlY29nbml0aW9uID0g
bmV3IFNwZWVjaFJlY29nbml0aW9uKCkiKTsKK3Nob3VsZE5vdFRocm93KCJyZWNvZ25pdGlvbi5z
dGFydCgpIik7CityZWNvZ25pdGlvbi5vbmVycm9yID0gKGV2ZW50KSA9PiB7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJldmVudC5lcnJvciIsICJub3QtYWxsb3dlZCIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZXZlbnQubWVzc2FnZSIsICJQZXJtaXNzaW9uIGNoZWNrIGZhaWxl
ZCIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOGQ3ZDQ5MGViMzI4NGMzMDlkY2NkMmEwZTE4NmQ5ODA0
MzYyN2U5NC4uYTc0MTk4MGU1YjJlNWIwYjFhMGU5MTY5ZGFhOWE0YjUyNzMwZjA2OCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTgwMyw0ICs4MDMsNSBA
QCBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlZC1wb3J0LWRlbGF5Lmh0bWwg
WyBQYXNzIF0KIAogIyBXZWJLaXQyIG9ubHkuCiBqcy90aHJvdy1sYXJnZS1zdHJpbmctb29tLmh0
bWwgWyBQYXNzIF0KK2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1s
IFsgUGFzcyBdCiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWVudGVyLXdoaWxlLWV4aXRpbmcuaHRt
bCBbIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414091</attachid>
            <date>2020-11-13 14:26:54 -0800</date>
            <delta_ts>2020-11-13 16:27:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218476-20201113142654.patch</filename>
            <type>text/plain</type>
            <size>141858</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNhNzViNThmM2I5NTMxYTMzNzM0YjJh
ZjE2MjZmMDczMzViNmI2MjkuLmJiNTMzNzNiZGE5MmE0ZjljMzkzMjc2NTYzNGNhNWRmODM4OGU2
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMTEtMTMgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiB3dGYvUGxh
dGZvcm1IYXZlLmg6CisKIDIwMjAtMTEtMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgRm9yY2Ugd2hlZWwgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSBy
b290IHRvIGJlIHBhc3NpdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NTIwOWNjODY2NTA2ZmMwMWVlNDBkYmJi
ZDIzZmNiYzJiNDliZDZhLi4yYTY1OTU1NTZjYjVkZGEwMmVkMjkwMGRjYmIwZDg1ZDMxYjZhYzJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMTEtMTMgIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24g
Y2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIy
NjM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgVGVz
dHM6IGZhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJlY29nbml0aW9uLWluLXJlbW92
ZWQtaWZyYW1lLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uOjpzdGFydFJlY29n
bml0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpjcmVh
dGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
UmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Ojpj
bGllbnRPcmlnaW4gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uUmVxdWVzdEluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm86OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGU6OmVycm9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uVXBkYXRlOjpyZXN1bHQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uVXBkYXRlLmg6CisgICAgICAgICogcGFnZS9EdW1teVNwZWVjaFJlY29nbml0
aW9uUHJvdmlkZXIuaDoKKwogMjAyMC0xMS0xMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBGb3JjZSB3aGVlbCBldmVudCBsaXN0ZW5lcnMgb24gdGhl
IHJvb3QgdG8gYmUgcGFzc2l2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyN2JhNjZjODcyNTEwZThhMmY3YjE2NjBi
Y2RhOWQ1NjNmNjRjMGFjLi42NGVkYTk2NWRhZjI4MzcwZjQ1MDVlNTVlODc4NjZkNTQyMjRlMWQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAyMC0xMS0xMyAgU2lodWkgTGl1ICA8c2lo
dWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBj
aGVjayBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxODQ3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMjI2
Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBJbnRy
b2R1Y2UgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciwgd2hpY2ggY2hlY2tzIGFu
ZCByZXF1ZXN0cyBzcGVlY2ggcmVjb2duaXRpb24gcGVybWlzc2lvbnMgYmVmb3JlIAorICAgICAg
ICB3ZSBhY3R1YWxseSBzdGFydCBjYXB0dXJpbmcgYXVkaW8gYW5kIHBlcmZvcm0gcmVjb2duaXRp
b24uIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgaXMgcGVyLXBhZ2UsIGxpa2UK
KyAgICAgICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuIFRoZSBjaGVja3MgaW5jbHVkZToKKyAg
ICAgICAgMS4gU2FuZGJveCByZXF1aXJlbWVudCBmb3IgbWljcm9waG9uZQorICAgICAgICAyLiBU
Q0MgY2hlY2sgZm9yIG1pY3JvcGhvbmUKKyAgICAgICAgMy4gVENDIGNoZWNrIGZvciBTRlNwZWVj
aFJlY29nbml6ZXIKKyAgICAgICAgNC4gVXNlciBwZXJtaXNzaW9uIG9uIHNwZWVjaCByZWNvZ25p
dGlvbiBmb3Igb3JpZ2luCisKKyAgICAgICAgQWRkIGEgZGVsZWdhdGUgZnVuY3Rpb24gZm9yIHJl
cXVlc3RpbmcgdXNlciBwZXJtaXNzaW9uLiBCeSBkZWZhdWx0LCB1c2VyIHBlcm1pc3Npb24gaXMg
bm90IGdyYW50ZWQuCisKKyAgICAgICAgQVBJIHRlc3Q6IFdlYktpdDIuU3BlZWNoUmVjb2duaXRp
b25Vc2VyUGVybWlzc2lvblBlcnNpc3RlbmNlCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9j
L1dLQmFzZS5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgorICAgICAgICAo
QVBJOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJ
Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFja0dldFR5cGVJRCk6CisgICAgICAgIChXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBf
c3BlZWNoUmVjb2duaXRpb25FbmFibGVkXSk6CisgICAgICAgICgtW1dLUHJlZmVyZW5jZXMgX3Nl
dFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL01lZGlh
UGVybWlzc2lvblV0aWxpdGllcy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmNoZWNrU2Fu
ZGJveFJlcXVpcmVtZW50Rm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrVXNhZ2VEZXNj
cmlwdGlvblN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpjaGVja1VzYWdlRGVzY3Jp
cHRpb25TdHJpbmdGb3JTcGVlY2hSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJLaXQ6OnJlcXVl
c3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6Y2hlY2tBVkNhcHR1
cmVBY2Nlc3NGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6cmVxdWVzdFNwZWVjaFJlY29nbml0
aW9uQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZp
Y2VBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpwZXJtaXR0ZWRUb0NhcHR1cmVBdWRpbyk6Cisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpw
ZXJtaXR0ZWRUb0NhcHR1cmVWaWRlbyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lzdGVtVmFsaWRhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OnJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmg6IENvcGllZCBmcm9t
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmNvbXB1dGVNaWNyb3Bob25lQWNj
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6Y29tcHV0ZVNwZWVjaFJlY29nbml0aW9uU2VydmljZUFj
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0
OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydE5leHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnRQcm9jZXNzaW5nUmVx
dWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI6OmNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVz
dFNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNjZXNzKToK
KyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVx
dWVzdFVzZXJQZXJtaXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y29tcGxldGUpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpvcmlnaW4g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjb21wbGV0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdG9wKToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFib3J0KToKKyAgICAgICAgKFdlYktpdDo6
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdG9wUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjphYm9ydFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0
OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c2VuZFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVk
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6
cmVtb3ZlUGVuZGluZ1JlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcjo6c3RhcnRQb2Nlc3NpbmdSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0b3BQcm9jZXNzaW5nUmVxdWVz
dCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZENoYW5nZU1haW5Eb2N1bWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJl
Y29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbjo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb246OmRpZFJlY2VpdmVVcGRhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisKIDIwMjAt
MTEtMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
Rm9yY2Ugd2hlZWwgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSByb290IHRvIGJlIHBhc3NpdmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1IYXZlLmgKaW5kZXggNTI4YmM3NjI3MjU0NjAzYTZhMzM4MTM3YWQ4MjIwMjI3NGE4
YzQ5ZC4uZTI0NGQ4NTk0ODUwY2RiZDA0YmFmYWQwZjE3YmE0NzZkNmEzODE4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1IYXZlLmgKQEAgLTc2MiwzICs3NjIsMTEgQEAKICAgICB8fCAoUExBVEZPUk0oQVBQTEVU
VikgJiYgX19UVl9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCiAjZGVmaW5lIEhB
VkVfQVZPVVRQVVRERVZJQ0VfU1BBVElBTEFVRElPIDEKICNlbmRpZgorCisjaWYgUExBVEZPUk0o
SU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApCisjZGVmaW5lIEhBVkVfU1BFRUNI
UkVDT0dOSVpFUiAxCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFD
Q0FUQUxZU1QpIHx8IFBMQVRGT1JNKE1BQykKKyNkZWZpbmUgSEFWRV9BVkNBUFRVUkVERVZJQ0Ug
MQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvbi5jcHAKaW5kZXggNTFhMzJjZGFhY2FhMWVkMDExNDI3NjdkMjJlMzAyNTI2ZGVi
ZjU5NS4uZjExN2MxZmIxYjViZDA0YWU3NTUyNTY1ZmJhYTg4OTFjNWMxYWViYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNwZWVjaFJl
Y29nbml0aW9uLmgiCiAKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC02
OSw3ICs3MCw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNwZWVjaFJlY29nbml0aW9uOjpzdGFydFJl
Y29nbml0aW9uKCkKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFVua25vd25FcnJvciwgIlJlY29nbml0aW9uIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBj
b25uZWN0aW9uIl9zIH07CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnN0YXJ0KGlkZW50aWZpZXIoKSwg
bV9sYW5nLCBtX2NvbnRpbnVvdXMsIG1faW50ZXJpbVJlc3VsdHMsIG1fbWF4QWx0ZXJuYXRpdmVz
KTsKKyAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnN0YXJ0KGlkZW50aWZpZXIoKSwgbV9s
YW5nLCBtX2NvbnRpbnVvdXMsIG1faW50ZXJpbVJlc3VsdHMsIG1fbWF4QWx0ZXJuYXRpdmVzLCBD
bGllbnRPcmlnaW4geyBkb2N1bWVudC50b3BPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LnNlY3Vy
aXR5T3JpZ2luKCkuZGF0YSgpIH0pOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3RhcnRpbmc7CiAg
ICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKaW5kZXggM2ZkMmQzM2FjYTAy
MDUyNjM0MDU4ZDBmYjU2NTJlYjcwMDdmYTUyYS4uNjllZWJjMjkzZDViN2RlMWUzOGNlZWFkMmEz
ZWUzOGYwMGQxY2E1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKQEAgLTMxLDE1ICszMSwxNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudDsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOworc3RydWN0IENsaWVudE9y
aWdpbjsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uIDogcHVibGljIFJlZkNv
dW50ZWQ8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJp
bVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWlu
dDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBDbGllbnRPcmlnaW4mJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzdG9wKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNv
bnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYpID0gMDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuY3BwCmluZGV4IDRhNWU4YzE2MzAzYzE4
NjVjMmIxZmZjZTliNTZlZTI2MjAzYTdmYzUuLmQzYmQ3YTk0YTQyYjlkNWUwNTkyMGM1YmZlN2Ri
YzQ0YTkxODg3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmNwcApAQCAtMjgsMTEgKzI4LDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiBTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3Q6OmNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZv
JiYgcmVxdWVzdEluZm8pCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0KFdURk1vdmUocmVxdWVzdEluZm8pKSk7Ci19Ci0KIFNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdDo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdEluZm8mJiByZXF1ZXN0SW5mbykKICAgICA6IG1faW5mbyhXVEZNb3ZlKHJlcXVlc3RJbmZv
KSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0LmgKaW5kZXggNWNlZWEwMWM3Mzg2NTU2ZDQyNTFmOGM4Yjk1YzMx
MjRiYWZjNjAxMi4uOWFhZGU2MTcxZTA2MmY1YThjYzNhMTYyODkyOTk0OTlkZmQ5ZDBhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdD4geworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4geworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiBjcmVhdGUoU3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0SW5mbyYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsKIAogICAgIFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5jbGllbnRJZGVudGlmaWVyOyB9CiAgICAgY29uc3Qg
U3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmxhbmc7IH0KICAgICBib29sIGNv
bnRpbnVvdXMoKSBjb25zdCB7IHJldHVybiBtX2luZm8uY29udGludW91czs7IH0KICAgICBib29s
IGludGVyaW1SZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmludGVyaW1SZXN1bHRzOyB9
CiAgICAgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLm1h
eEFsdGVybmF0aXZlczsgfQorICAgIGNvbnN0IENsaWVudE9yaWdpbiBjbGllbnRPcmlnaW4oKSBj
b25zdCB7IHJldHVybiBtX2luZm8uY2xpZW50T3JpZ2luOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhw
bGljaXQgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8mJik7Ci0KICAgICBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIG1faW5mbzsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uUmVxdWVzdEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdEluZm8uaAppbmRleCBhYjFlMWFlNmVmMzg4OThjMjFhMmE5ZGY3YWYx
ZjAwN2UyNGIxN2QwLi4xZWZlOWUwNjQ2ZTc0N2NiNTVkN2NjYjBmN2IxOGZmNWUwYjNjNGMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3RJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0zNSw2ICszNiw3IEBAIHN0cnVjdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIHsKICAg
ICBib29sIGNvbnRpbnVvdXMgeyBmYWxzZSB9OwogICAgIGJvb2wgaW50ZXJpbVJlc3VsdHMgeyBm
YWxzZSB9OwogICAgIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcyB7IDEgfTsKKyAgICBDbGllbnRP
cmlnaW4gY2xpZW50T3JpZ2luOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBkZWNvZGUoRGVjb2RlciYp
OwpAQCAtNDMsNyArNDUsNyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7
CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJ
bmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGNs
aWVudElkZW50aWZpZXIgPDwgbGFuZyA8PCBjb250aW51b3VzIDw8IGludGVyaW1SZXN1bHRzIDw8
IG1heEFsdGVybmF0aXZlczsKKyAgICBlbmNvZGVyIDw8IGNsaWVudElkZW50aWZpZXIgPDwgbGFu
ZyA8PCBjb250aW51b3VzIDw8IGludGVyaW1SZXN1bHRzIDw8IG1heEFsdGVybmF0aXZlcyA8PCBj
bGllbnRPcmlnaW47CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC03NCwxMiArNzYs
MTggQEAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbz4gU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2RlKERlY28KICAgICBpZiAoIW1heEFsdGVybmF0aXZlcykK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIE9wdGlvbmFsPENsaWVudE9yaWdp
bj4gY2xpZW50T3JpZ2luOworICAgIGRlY29kZXIgPj4gY2xpZW50T3JpZ2luOworICAgIGlmICgh
Y2xpZW50T3JpZ2luKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgcmV0dXJu
IHt7CiAgICAgICAgIFdURk1vdmUoKmNsaWVudElkZW50aWZpZXIpLAogICAgICAgICBXVEZNb3Zl
KCpsYW5nKSwKICAgICAgICAgV1RGTW92ZSgqY29udGludW91cyksCiAgICAgICAgIFdURk1vdmUo
KmludGVyaW1SZXN1bHRzKSwKLSAgICAgICAgV1RGTW92ZSgqbWF4QWx0ZXJuYXRpdmVzKQorICAg
ICAgICBXVEZNb3ZlKCptYXhBbHRlcm5hdGl2ZXMpLAorICAgICAgICBXVEZNb3ZlKCpjbGllbnRP
cmlnaW4pCiAgICAgfX07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcAppbmRleCA1MzRlZGEzZDI0Nzdl
ZTFjNmYxN2VjNmFmMTc5MzI2YmI3OWYwMjA3Li45YTlhN2Q5MjA2OTY1NWM0NTcxNjA3ZGRhMThj
NGU2YjMzMGY3MmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFN0cmlu
ZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUg
ZW51bWVyYXRpb25WYWx1ZSkKIAogU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgU3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSB0eXBl
KQogewotICAgIHJldHVybiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7IGNsaWVudElkZW50aWZp
ZXIsIHR5cGUgfTsKKyAgICByZXR1cm4gU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgeyBjbGllbnRJ
ZGVudGlmaWVyLCB0eXBlLCBXVEY6Ok1vbm9zdGF0ZSgpIH07CiB9CiAKIFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIGNvbnN0
IFNwZWVjaFJlY29nbml0aW9uRXJyb3ImIGVycm9yKQpAQCAtODMsNyArODMsNyBAQCBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUoU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZQogU3BlZWNoUmVjb2duaXRpb25FcnJvciBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZTo6ZXJyb3IoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fY29u
dGVudCwKLSAgICAgICAgW10gKFNwZWVjaFJlY29nbml0aW9uRXJyb3ImIGVycm9yKSB7IHJldHVy
biBlcnJvcjsgfSwKKyAgICAgICAgW10gKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXJyb3ImIGVy
cm9yKSB7IHJldHVybiBlcnJvcjsgfSwKICAgICAgICAgW10gKGNvbnN0IGF1dG8mKSB7IHJldHVy
biBTcGVlY2hSZWNvZ25pdGlvbkVycm9yKCk7IH0KICAgICApOwogfQpAQCAtOTEsNyArOTEsNyBA
QCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjplcnJvcigp
IGNvbnN0CiBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiBTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZTo6cmVzdWx0KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbiht
X2NvbnRlbnQsCi0gICAgICAgIFtdIChWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRh
PiYgZGF0YSkgeyByZXR1cm4gZGF0YTsgfSwKKyAgICAgICAgW10gKGNvbnN0IFZlY3RvcjxTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdERhdGE+JiBkYXRhKSB7IHJldHVybiBkYXRhOyB9LAogICAgICAg
ICBbXSAoY29uc3QgYXV0byYpIHsgcmV0dXJuIFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dERhdGE+IHsgfTsgfQogICAgICk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAppbmRleCAzYTgyYmY2YmFmNTRj
ZTBjNGIxMzM0ZWY2ZjhiNTg5M2YzYjg5ODJlLi44OTE0OTE3OTNmNGUwMWVjMmZmNjAxMDdjYjQ4
NWY0ODhmYTQzZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKQEAgLTUyLDggKzUyLDggQEAgU3RyaW5nIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSk7CiBj
bGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIGNyZWF0ZShTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUp
OwotICAgIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVFcnJvcihTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTcGVlY2hSZWNvZ25p
dGlvbkVycm9yJik7Ci0gICAgc3RhdGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIGNyZWF0ZVJl
c3VsdChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBW
ZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVFcnJvcihTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
IGNyZWF0ZVJlc3VsdChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
LCBjb25zdCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYpOwogCiAgICAgU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyOyB9CiAgICAgU3BlZWNoUmVjb2du
aXRpb25VcGRhdGVUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KQEAgLTY1LDcg
KzY1LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHVzaW5nIENvbnRlbnQgPSBWYXJpYW50
PFdURjo6TW9ub3N0YXRlLCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yLCBWZWN0b3I8U3BlZWNoUmVj
b2duaXRpb25SZXN1bHREYXRhPj47Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU3BlZWNo
UmVjb2duaXRpb25VcGRhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlLCBDb250ZW50ID0gV1RGOjpNb25vc3Rh
dGUoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUoU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25V
cGRhdGVUeXBlLCBDb250ZW50KTsKIAogICAgIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIgbV9jbGllbnRJZGVudGlmaWVyOwogICAgIFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlVHlwZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15
U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNw
ZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaAppbmRleCBjZjllNzJiOTNjMDY0YTU1ZGRkZmFiN2Iz
Y2FmYjQ4OTBlMDM1ZjQ2Li4yNDBhYTNkNDg0YTk3M2I0NDExMmFlZjYxZThlYWFhODQ3YjU4ZDE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Q
cm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlv
blByb3ZpZGVyLmgKQEAgLTM5LDEwICszOSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEdW1teVNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbigpKTsKICAg
ICAgICAgfQogICAgICAgICB2b2lkIHJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudCYpIGZpbmFsIHsgfQotICAgICAgICB2b2lkIHN0YXJ0KFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJv
b2wsIHVpbnQ2NF90KSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBib29sLCBib29s
LCB1aW50NjRfdCwgQ2xpZW50T3JpZ2luJiYpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIHN0b3Ao
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmluYWwgeyB9CiAg
ICAgICAgIHZvaWQgYWJvcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllcikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShjb25zdCBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZSYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVV
cGRhdGUoU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmJikgZmluYWwgeyB9CiAgICAgfTsKICAgICBE
dW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAgICAgU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uJiBzcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYktpdC9IZWFkZXJz
LmNtYWtlCmluZGV4IDQzNjM5NzBmMWFlMDM2NmVhMDM5NTU3YTI3M2Q4YjgzZTY2MTY0NDguLjNl
N2U1OTU4NGZmMjgwMDBlMTBkOTlhZTQ0YWJlYzNmZmEyMTM5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0hlYWRlcnMuY21ha2UK
QEAgLTk5LDYgKzk5LDcgQEAgc2V0KFdlYktpdF9QVUJMSUNfRlJBTUVXT1JLX0hFQURFUlMKICAg
ICBVSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Nl
c3Npb25TdGF0ZVJlZi5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Rlc3RpbmdTdXBwb3J0
LmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5oCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElP
YmplY3QuaAppbmRleCBiN2I3ZWU2ODhhYTZmZjg5MDVhMjFiNzc4ZDRkOTYzNTIyNTE2Mzk3Li4w
NTU2OTM0M2EwZGMzYWFkNmMyZDMzNDAzZThlMjliYTg2ZmU0Y2FiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0xNjgsNiArMTY4LDcgQEAgcHVibGljOgogICAgICAgICBS
dW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lciwKICAgICAgICAgUnVuSmF2YVNjcmlwdENv
bmZpcm1SZXN1bHRMaXN0ZW5lciwKICAgICAgICAgUnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExp
c3RlbmVyLAorICAgICAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaywKICAg
ICAgICAgVGV4dENoZWNrZXIsCiAgICAgICAgIFVSTFNjaGVtZVRhc2ssCiAgICAgICAgIFVzZXJD
b250ZW50Q29udHJvbGxlciwKQEAgLTQxNiw2ICs0MTcsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBF
bnVtVHJhaXRzPEFQSTo6T2JqZWN0OjpUeXBlPiB7CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBl
OjpSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lciwKICAgICAgICAgQVBJOjpPYmplY3Q6
OlR5cGU6OlJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIEFQSTo6
T2JqZWN0OjpUeXBlOjpSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXIsCisgICAgICAg
IEFQSTo6T2JqZWN0OjpUeXBlOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaywK
ICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlRleHRDaGVja2VyLAogICAgICAgICBBUEk6Ok9i
amVjdDo6VHlwZTo6VVJMU2NoZW1lVGFzaywKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlVz
ZXJDb250ZW50Q29udHJvbGxlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXgg
OWU4MmU1NjAwMTg3ZWMxY2Y4YWY5YmVlNzllNzFkMGU4ZDdmZDE1YS4uODRlZTZjMjg4ZjZkMmVi
ZDUxZmE3M2VhNzI3MDhmMzI5NDZiZGQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNl
LmgKQEAgLTE0MSw2ICsxNDEsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNp
dGVEYXRhQ29uZmlndXJhdGlvblN0b3JlKiBXS1dlYnNpdGVEYXRhU3RvcmVDbwogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tXZWJzaXRlRGF0YVN0b3JlKiBXS1dlYnNpdGVEYXRhU3RvcmVS
ZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNpdGVQb2xpY2llcyogV0tXZWJz
aXRlUG9saWNpZXNSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dpbmRvd0ZlYXR1
cmVzKiBXS1dpbmRvd0ZlYXR1cmVzUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayogV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFja1JlZjsKIAogLyogV2ViS2l0MiBCdW5kbGUgdHlwZXMgKi8KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKaW5kZXggMDQ4MWJjYzM0MmNhY2RjZWExODliOTgwMDk4ZjlmNWM4MDVjMjA4NC4uNWYy
YjE0NzM1YmQyZmY2MWE3YjEwNzg4YmI4MmRmYTU2NWI0YzIyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0y
OTEsNiArMjkxLDcgQEAgVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCiBVSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVBy
b3h5LmNwcAogVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmNwcAorVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwCiBVSVByb2Nlc3MvVGV4dENo
ZWNrZXIuY3BwCiBVSVByb2Nlc3MvVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcAogVUlQcm9jZXNz
L1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcApAQCAtNDA0LDYgKzQwNSw3IEBAIFVJ
UHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVj
dGlvblNwYWNlLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3Bw
CiBVSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuY3BwCitVSVByb2Nlc3MvQVBJL0Mv
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAKIFVJUHJvY2Vzcy9BUEkv
Qy9XS1RleHRDaGVja2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9s
bGVyUmVmLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJl
Zi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA1ZDliOTNkMTdhZjI0YmVhYTAyMGUyODUy
OTg1NjkwOWJjYjZlYWYyLi42MGVkNTFkM2UyYzk4ZDY3NjA2NDE0NzAxMTgxY2Q2NzEyZjRlOTBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zNzQsNiArMzc0LDcgQEAgVUlQcm9jZXNzL0Nv
Y29hL0dsb2JhbEZpbmRJblBhZ2VTdGF0ZS5tbQogVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5n
RGVsZWdhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQubW0KIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVV0aWxpdGllcy5tbQorVUlQcm9jZXNzL0Nv
Y29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KIFVJUHJv
Y2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggYWE3ZDg5YzAxZTczNTIwY2UzZWUwNDIy
NmI5YWU4NTk3MGJmYWE2ZS4uYTBkYmE4MzcyN2E5NmFkNjEwNDdiOWVkMTViNjRiMzEzNGVlZGFi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTIwMiw2
ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBBUEk6Okluc3BlY3RvckNvbmZpZ3Vy
YXRpb246OmNyZWF0ZSgpOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lG
b3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
LmgKaW5kZXggYjUyYzQ0YmFlYTlhY2Y5ZmMwMzMyZDVhOWYzNzM1NmU5ZDIzODYyOS4uMThjYmZk
NWI3NGViODc3MGE1NzhmMTVjOGEwMTYxNDk5MDIxNDU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKQEAgLTc5LDYgKzc5LDcgQEAgY2xhc3MgQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyOwogY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdDsKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOwogY2xhc3Mg
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OwpAQCAtMTUyLDYgKzE1Myw3
IEBAIFdLX0FERF9BUElfTUFQUElORyhXS1ByZWZlcmVuY2VzUmVmLCBXZWJQcmVmZXJlbmNlcykK
IFdLX0FERF9BUElfTUFQUElORyhXS1Byb3RlY3Rpb25TcGFjZVJlZiwgV2ViUHJvdGVjdGlvblNw
YWNlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJS
ZWYsIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyKQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLU2Vzc2lvblN0YXRlUmVmLCBBUEk6OlNlc3Npb25TdGF0ZSkKK1dLX0FERF9BUElfTUFQUElO
RyhXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmLCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFjaykKIFdLX0FERF9BUElfTUFQUElORyhXS1RleHRDaGVja2Vy
UmVmLCBXZWJUZXh0Q2hlY2tlcikKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJDb250ZW50Q29u
dHJvbGxlclJlZiwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpCiBXS19BRERfQVBJX01B
UFBJTkcoV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUmVmLCBBUEk6OkNvbnRlbnRSdWxlTGlz
dFN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggZTc2
ZTAwNzgwYTQxNDY2MjA1ZWEyOWY2MTIwNTUzYjZiM2E2ZTQ0OS4uYTRlMWEwMWQ4NzU2ZTU2Mjg3
MjA2MTgwMzQ1NjQyNTkyN2NjZWYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIlBsdWdpbkluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiUHJpbnRJbmZvLmgiCisjaW5j
bHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLUGFnZVBvbGljeUNsaWVudEludGVybmFsLmgiCiAjaW5j
bHVkZSAiV0tQYWdlUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNJbnRlcm5hbC5oIgpAQCAtMTE1LDcg
KzExNiw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VQb2xpY3lDbGll
bnRCYXNlPiB7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tQYWdlVUlD
bGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZVVJQ2xpZW50VjAsIFdL
UGFnZVVJQ2xpZW50VjEsIFdLUGFnZVVJQ2xpZW50VjIsIFdLUGFnZVVJQ2xpZW50VjMsIFdLUGFn
ZVVJQ2xpZW50VjQsIFdLUGFnZVVJQ2xpZW50VjUsIFdLUGFnZVVJQ2xpZW50VjYsIFdLUGFnZVVJ
Q2xpZW50VjcsIFdLUGFnZVVJQ2xpZW50VjgsIFdLUGFnZVVJQ2xpZW50VjksIFdLUGFnZVVJQ2xp
ZW50VjEwLCBXS1BhZ2VVSUNsaWVudFYxMSwgV0tQYWdlVUlDbGllbnRWMTIsIFdLUGFnZVVJQ2xp
ZW50VjEzLCBXS1BhZ2VVSUNsaWVudFYxND4gVmVyc2lvbnM7CisgICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPFdLUGFnZVVJQ2xpZW50VjAsIFdLUGFnZVVJQ2xpZW50VjEsIFdLUGFnZVVJQ2xpZW50VjIs
IFdLUGFnZVVJQ2xpZW50VjMsIFdLUGFnZVVJQ2xpZW50VjQsIFdLUGFnZVVJQ2xpZW50VjUsIFdL
UGFnZVVJQ2xpZW50VjYsIFdLUGFnZVVJQ2xpZW50VjcsIFdLUGFnZVVJQ2xpZW50VjgsIFdLUGFn
ZVVJQ2xpZW50VjksIFdLUGFnZVVJQ2xpZW50VjEwLCBXS1BhZ2VVSUNsaWVudFYxMSwgV0tQYWdl
VUlDbGllbnRWMTIsIFdLUGFnZVVJQ2xpZW50VjEzLCBXS1BhZ2VVSUNsaWVudFYxNCwgV0tQYWdl
VUlDbGllbnRWMTU+IFZlcnNpb25zOwogfTsKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpA
QCAtMjExMCw2ICsyMTExLDEzIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6
OlByZXNlbnRlZCk7CiAgICAgICAgIH0KICNlbmRpZgorICAgICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiBwYWdl
LCBBUEk6OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50LmRl
Y2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QodG9BUEkoJnBh
Z2UpLCB0b0FQSSgmb3JpZ2luKSwgdG9BUEkoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkucHRyKCkpKTsKKyAgICAg
ICAgfQogICAgIH07CiAKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFVJQ2xpZW50KG1ha2VVbmlx
dWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlVUlDbGllbnQuaAppbmRleCBiNjM4ODE1NWNkMzAzNmU2NjYxMTBmMTkyNTYxNmFm
ZDM3ZTg2OGJhLi42MzYzNTU1NjRkMDBiMTEyMmE4N2UyMjlhMzBiOTRkN2U5OWU0ZWY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKQEAgLTEz
Niw2ICsxMzYsNyBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZXNpZ25JbnB1dEVsZW1lbnRT
dHJvbmdQYXNzd29yZEFwcGVhcmFuY2VDYWxsYmFjaykoV0tQYQogdHlwZWRlZiBib29sICgqV0tQ
YWdlU2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NhbGxiYWNrKShX
S1BhZ2VSZWYgcGFnZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7CiAKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVJ1bldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxDYWxsYmFjaykoKTsKK3R5cGVkZWYgdm9pZCAoKldLUGFnZURlY2lkZVBvbGlj
eUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjaykoV0tQYWdlUmVm
IHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYgdG9wT3JpZ2luLCBXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrUmVmIGNhbGxiYWNrKTsKIAogLy8gRGVwcmVjYXRlZAogdHlwZWRl
ZiBXS1BhZ2VSZWYgKCpXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMCkoV0tQYWdlUmVmIHBhZ2UsIFdLRGljdGlvbmFyeVJlZiBmZWF0dXJlcywgV0tFdmVu
dE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbyk7CkBAIC0xMzUzLDYgKzEzNTQsMTE3IEBAIHR5cGVkZWYgc3Ry
dWN0IFdLUGFnZVVJQ2xpZW50VjE0IHsKICAgICBXS1BhZ2VSdW5XZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0
aW9uUGFuZWw7CiB9IFdLUGFnZVVJQ2xpZW50VjE0OwogCit0eXBlZGVmIHN0cnVjdCBXS1BhZ2VV
SUNsaWVudFYxNSB7CisgICAgV0tQYWdlVUlDbGllbnRCYXNlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOworCisgICAgLy8gVmVyc2lvbiAwLgor
ICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAg
ICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAg
IFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2hvd1BhZ2U7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZTsKKyAgICBXS1BhZ2VU
YWtlRm9jdXNDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRha2VGb2N1czsKKyAgICBXS1BhZ2VGb2N1c0NhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzOworICAgIFdLUGFnZVVuZm9jdXND
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5m
b2N1czsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9y
VXNlV2l0aFYwICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNl
V2l0aFYwOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMCAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZv
clVzZVdpdGhWMDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VTZXRTdGF0dXNUZXh0Q2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXR1c1RleHQ7CisgICAgV0tQYWdl
TW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAg
ICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAg
IFdLUGFnZU1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMCAgICAgbWlzc2luZ1BsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMDsKKyAgICBXS1BhZ2VEaWROb3RIYW5kbGVLZXlFdmVudENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpZE5vdEhhbmRsZUtleUV2ZW50OworICAgIFdLUGFnZURp
ZE5vdEhhbmRsZVdoZWVsRXZlbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlkTm90SGFuZGxlV2hlZWxFdmVudDsKKyAgICBXS1BhZ2VHZXRUb29sYmFyc0FyZVZpc2li
bGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJzQXJlVmlz
aWJsZTsKKyAgICBXS1BhZ2VTZXRUb29sYmFyc0FyZVZpc2libGVDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFRvb2xiYXJzQXJlVmlzaWJsZTsKKyAgICBXS1BhZ2VH
ZXRNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1lbnVCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlU2V0TWVudUJhcklzVmlzaWJsZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNZW51QmFySXNWaXNpYmxl
OworICAgIFdLUGFnZUdldFN0YXR1c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFnZVNldFN0YXR1
c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
U3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFnZUdldElzUmVzaXphYmxlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZXNpemFibGU7CisgICAgV0tQ
YWdlU2V0SXNSZXNpemFibGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRJc1Jlc2l6YWJsZTsKKyAgICBXS1BhZ2VHZXRXaW5kb3dGcmFtZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFdpbmRvd0ZyYW1lOwor
ICAgIFdLUGFnZVNldFdpbmRvd0ZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0V2luZG93RnJhbWU7CisgICAgV0tQYWdlUnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNiAgICBydW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWNjsKKyAgICBXS1BhZ2VVSUNs
aWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZERyYXc7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlRGlkU2Nyb2xsOworICAgIFdLUGFnZUV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZWVkZWREYXRhYmFzZVF1b3RhOworICAgIFdLUGFnZVJ1bk9wZW5QYW5lbENhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuT3BlblBhbmVsOworICAg
IFdLUGFnZURlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFj
ayAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsK
KyAgICBXS1BhZ2VIZWFkZXJIZWlnaHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlYWRlckhlaWdodDsKKyAgICBXS1BhZ2VGb290ZXJIZWlnaHRDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlckhlaWdo
dDsKKyAgICBXS1BhZ2VEcmF3SGVhZGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRyYXdIZWFkZXI7CisgICAgV0tQYWdlRHJhd0Zvb3RlckNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3Rm9vdGVy
OworICAgIFdLUGFnZVByaW50RnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJpbnRGcmFtZTsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bk1vZGFsOwor
ICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW51c2VkMTsgLy8gVXNlZCB0byBiZSBkaWRDb21wbGV0ZVJ1YmJlckJh
bmRGb3JNYWluRnJhbWUKKyAgICBXS1BhZ2VTYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVy
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNG
b2xkZXI7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0X3VuYXZhaWxh
YmxlOworCisgICAgLy8gVmVyc2lvbiAxLgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFj
a19kZXByZWNhdGVkRm9yVXNlV2l0aFYxICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZV9k
ZXByZWNhdGVkRm9yVXNlV2l0aFYxOworICAgIFdLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnQ7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RDYWxsYmFjayAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRDYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tl
ZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOworCisgICAgLy8gVmVyc2lvbiAyLgorICAgIFdLUGFn
ZVNob3dDb2xvclBpY2tlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2hvd0NvbG9yUGlja2VyOworICAgIFdLUGFnZUhpZGVDb2xvclBpY2tlckNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUNvbG9yUGlja2VyOwor
ICAgIFdLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkOworCisgICAgLy8g
VmVyc2lvbiAzLgorICAgIFdLUGFnZVBpbm5lZFN0YXRlRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkU3RhdGVEaWRDaGFuZ2U7CisKKyAgICAv
LyBWZXJzaW9uIDQuCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQyOyAvLyBVc2VkIHRvIGJlIGRpZEJl
Z2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcy4KKyAgICB2b2lkKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNl
ZDM7IC8vIFVzZWQgdG8gYmUgZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MuCisgICAgdm9pZCog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnVzZWQ0OyAvLyBVc2VkIHRvIGJlIGRpZENhbmNlbFRyYWNraW5nUG90ZW50aWFsTG9u
Z01vdXNlUHJlc3MuCisgICAgV0tQYWdlSXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2VDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZTsKKwor
ICAgIC8vIFZlcnNpb24gNS4KKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZvclVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZURpZENsaWNrQXV0b0ZpbGxCdXR0b25DYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRv
bjsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNl
V2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0
aFY1OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZv
clVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVz
ZVdpdGhWNTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZv
clVzZVdpdGhWNTsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVkaWFT
ZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCisKKyAgICAvLyBWZXJzaW9uIDYuCisgICAgV0tQYWdl
Q3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVOZXdQYWdlOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0Owor
ICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm07CisgICAgV0tQYWdlUnVuSmF2YVNj
cmlwdFByb21wdENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5K
YXZhU2NyaXB0UHJvbXB0OworICAgIFdLQ2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yT3JpZ2luOworCisgICAgLy8gVmVyc2lvbiA3LgorICAgIFdLUGFnZVJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsOworICAgIFdLRnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVlbk1heVJldHVyblRv
SW5saW5lOworCisgICAgLy8gVmVyc2lvbiA4LgorICAgIFdLUmVxdWVzdFBvaW50ZXJMb2NrQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFBvaW50
ZXJMb2NrOworICAgIFdLRGlkTG9zZVBvaW50ZXJMb2NrQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGlkTG9zZVBvaW50ZXJMb2NrOworCisgICAgLy8gVmVy
c2lvbiA5LgorICAgIFdLSGFuZGxlQXV0b3BsYXlFdmVudENhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQXV0b3BsYXlFdmVudDsKKworICAgIC8vIFZl
cnNpb24gMTAuCisgICAgV0tIYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICBoYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENo
YW5nZTsKKyAgICBXS0RpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVn
cm91bmRDYWxsYmFjayAgICAgICAgIGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hp
bGVJbkZvcmVncm91bmQ7CisKKyAgICAvLyBWZXJzaW9uIDExLgorICAgIFdLUGFnZURpZFJlc2ln
bklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZUNhbGxiYWNrICAgICAgICAgZGlk
UmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlOworCisgICAgLy8gVmVy
c2lvbiAxMi4KKyAgICBXS1BhZ2VSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm1DYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybTsKKwor
ICAgIC8vIFZlcnNpb24gMTMuCisgICAgV0tQYWdlU2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlv
bkFuZE1vdGlvbkFjY2Vzc0NhbGxiYWNrICAgICAgICAgICBzaG91bGRBbGxvd0RldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uQWNjZXNzOworCisgICAgLy8gVmVyc2lvbiAxNC4KKyAgICBXS1BhZ2VS
dW5XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWw7CisKKyAgICAvLyBWZXJzaW9uIDE1LgorICAg
IFdLUGFnZURlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RD
YWxsYmFjayAgICAgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdDsKKyAgICAKK30gV0tQYWdlVUlDbGllbnRWMTU7CisKICNpZmRlZiBfX2NwbHVzcGx1cwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBjYzhmOWEzNWRiODQxMWUwMzg1YTdhZTE1NDlhMzlhZjgxMzJlZDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suaCIKKworI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3QuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKworV0tUeXBlSUQgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0dl
dFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrOjpBUElUeXBlKTsKK30KKwordm9pZCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNhbGxiYWNrQ29tcGxldGUoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
a1JlZiBzcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaywgYm9vbCBncmFudGVkKQor
eworICAgIHJldHVybiB0b0ltcGwoc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sp
LT5jb21wbGV0ZShncmFudGVkKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iOGFlYWZjNjk4NGJhOTZmNTQ4OTJlNzMyYWZlYTNhMDYzYzlj
NzJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCkBAIC0wLDAgKzEsNDAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKwor
I2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tU
eXBlSUQgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0dldFR5cGVJRCh2b2lk
KTsKKworV0tfRVhQT1JUIHZvaWQgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
a0NvbXBsZXRlKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgc3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2ssIGJvb2wgZ3JhbnRlZCk7CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCmluZGV4IDMyMDVlMjg3Mzc3NGQ5NzkxZTVjY2E3N2Iy
YjA2M2JjMzcxZGE3ZjUuLmFkYzYyMzY2MWJmODI5NmVlMTY1YjBmOTZlODkxMzE0OTgyMjU2MjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVu
Y2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVu
Y2VzLm1tCkBAIC0xNDM3LDYgKzE0MzcsMTYgQEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlu
a0JlaGF2aW9yIHRvRWRpdGFibGVMaW5rQmVoYXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICNl
bmRpZgogfQogCistIChCT09MKV9zcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQKK3sKKyAgICByZXR1
cm4gX3ByZWZlcmVuY2VzLT5zcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQoKTsKK30KKworLSAodm9p
ZClfc2V0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkOihCT09MKXNwZWVjaFJlY29nbml0aW9uRW5h
YmxlZAoreworICAgIF9wcmVmZXJlbmNlcy0+c2V0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkKHNw
ZWVjaFJlY29nbml0aW9uRW5hYmxlZCk7Cit9CisKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmlu
ZGV4IDBhOGNkZDE1ZDVmN2YzMDc1OGZlNjM4YTg1NTY0MjNhOTFhNmE1NGYuLmNhMWRkZjdkZTVh
N2UyM2EwYzlhYzQ2ODA4ZGU4MmNkYzJiZmQ4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC0xNjEs
NiArMTYxLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLRWRpdGFibGVMaW5rQmVo
YXZpb3IpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJlcXVlc3RBbmltYXRp
b25GcmFtZUVuYWJsZWQ6KSBCT09MIF9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxl
ZEZvclRlc3Rpbmc6KSBCT09MIF9zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRl
c3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEFjY2Vzc2liaWxpdHlJc29sYXRl
ZFRyZWVFbmFibGVkOikgQk9PTCBfYWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZUVuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNikpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRl
cj1fc2V0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkOikgQk9PTCBfc3BlZWNoUmVjb2duaXRpb25F
bmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRl
cj1fc2V0V2ViR0xFbmFibGVkOikgQk9PTCBfd2ViR0xFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTMuNCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggZDFlYWUyMDFlNjU0MmY0ZmFiNjAx
OTgwZGM2NjEyNDkxMzE5NzkzZi4uZjBhOWJhNDFmNTE1ZWY3MThmNzQ2YzdmZGZmZmVhNGEzNWU4
ZGUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlE
ZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC0xNTIsNiArMTUyLDggQEAgc3RydWN0IFVJRWRnZUlu
c2V0czsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3aWxsU2hhcmVB
Y3Rpdml0eUl0ZW1zOihOU0FycmF5ICopYWN0aXZpdHlJdGVtcyBXS19BUElfQVZBSUxBQkxFKGlv
cyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9y
aWdpbiAqKW9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgYXV0aG9yaXplZCkp
ZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CisKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAKIC0gKEJPT0wpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgc2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9yRWxlbWVu
dDooX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKillbGVtZW50IFdLX0FQSV9BVkFJTEFCTEUoaW9z
KDkuMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQ
ZXJtaXNzaW9uVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVk
aWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4YjczZDQ4M2E3NWU1NDI4M2U0
YjJiMTZmOGMyOWY2MDY2ODc0MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KQEAgLTAsMCArMSwxNzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1lZGlhUGVybWlz
c2lvblV0aWxpdGllcy5oIgorCisjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCisjaW1wb3J0
ICJUQ0NTUEkuaCIKKyNpbXBvcnQgPG11dGV4PgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+Cisj
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRi
b3hTUEkuaD4KKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKyNpbXBvcnQgPFNwZWVjaC9T
cGVlY2guaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhTcGVlY2gpCitTT0ZUX0xJTktfQ0xBU1Mo
U3BlZWNoLCBTRlNwZWVjaFJlY29nbml6ZXIpCisjZW5kaWYKKworI2ltcG9ydCA8cGFsL2NvY29h
L0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisKK1NPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhU
Q0MpCitTT0ZUX0xJTksoVENDLCBUQ0NBY2Nlc3NQcmVmbGlnaHQsIFRDQ0FjY2Vzc1ByZWZsaWdo
dFJlc3VsdCwgKENGU3RyaW5nUmVmIHNlcnZpY2UsIENGRGljdGlvbmFyeVJlZiBvcHRpb25zKSwg
KHNlcnZpY2UsIG9wdGlvbnMpKQorU09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RDQ1NlcnZpY2VN
aWNyb3Bob25lLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVChUQ0MsIGtUQ0NTZXJ2
aWNlQ2FtZXJhLCBDRlN0cmluZ1JlZikKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgY2hl
Y2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGUgdHlwZSkKK3sK
KyNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGF1ZGlvRmxhZzsK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgdmlkZW9GbGFnOworICAgIHN0YXRpYyBib29sIGlz
QXVkaW9FbnRpdGxlZCA9IHRydWU7CisgICAgc3RhdGljIGJvb2wgaXNWaWRlb0VudGl0bGVkID0g
dHJ1ZTsKKyAgICAKKyAgICBhdXRvIGNoZWNrRnVuY3Rpb24gPSBbXShjb25zdCBjaGFyKiBvcGVy
YXRpb24sIGJvb2wqIGVudGl0bGVkKSB7CisgICAgICAgIGlmICghY3VycmVudFByb2Nlc3NJc1Nh
bmRib3hlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGludCByZXN1bHQgPSBz
YW5kYm94X2NoZWNrKGdldHBpZCgpLCBvcGVyYXRpb24sIFNBTkRCT1hfRklMVEVSX05PTkUpOwor
ICAgICAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJv
ciBjaGVja2luZyAnJXMnIHNhbmRib3ggYWNjZXNzLCBlcnJubz0lbGQiLCBvcGVyYXRpb24sIChs
b25nKWVycm5vKTsKKyAgICAgICAgKmVudGl0bGVkID0gIXJlc3VsdDsKKyAgICB9OworCisgICAg
c3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbzoKKyAg
ICAgICAgc3RkOjpjYWxsX29uY2UoYXVkaW9GbGFnLCBjaGVja0Z1bmN0aW9uLCAiZGV2aWNlLW1p
Y3JvcGhvbmUiLCAmaXNBdWRpb0VudGl0bGVkKTsKKyAgICAgICAgcmV0dXJuIGlzQXVkaW9FbnRp
dGxlZDsKKyAgICBjYXNlIE1lZGlhUGVybWlzc2lvblR5cGU6OlZpZGVvOgorICAgICAgICBzdGQ6
OmNhbGxfb25jZSh2aWRlb0ZsYWcsIGNoZWNrRnVuY3Rpb24sICJkZXZpY2UtY2FtZXJhIiwgJmlz
VmlkZW9FbnRpdGxlZCk7CisgICAgICAgIHJldHVybiBpc1ZpZGVvRW50aXRsZWQ7CisgICAgfQor
I2VuZGlmCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgY2hlY2tVc2FnZURlc2NyaXB0aW9u
U3RyaW5nRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlIHR5cGUpCit7CisgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIGF1ZGlvRGVzY3JpcHRpb25GbGFnOworICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyB2aWRlb0Rlc2NyaXB0aW9uRmxhZzsKKyAgICBzdGF0aWMgYm9vbCBoYXNNaWNyb3Bob25l
RGVzY3JpcHRpb25TdHJpbmcgPSBmYWxzZTsKKyAgICBzdGF0aWMgYm9vbCBoYXNDYW1lcmFEZXNj
cmlwdGlvblN0cmluZyA9IGZhbHNlOworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBN
ZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbzoKKyAgICAgICAgc3RhdGljIFRDQ0FjY2Vzc1ByZWZs
aWdodFJlc3VsdCBhdWRpb0FjY2VzcyA9IFRDQ0FjY2Vzc1ByZWZsaWdodChnZXRrVENDU2Vydmlj
ZU1pY3JvcGhvbmUoKSwgTlVMTCk7CisgICAgICAgIGlmIChhdWRpb0FjY2VzcyA9PSBrVENDQWNj
ZXNzUHJlZmxpZ2h0R3JhbnRlZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBz
dGQ6OmNhbGxfb25jZShhdWRpb0Rlc2NyaXB0aW9uRmxhZywgW10geworICAgICAgICAgICAgaGFz
TWljcm9waG9uZURlc2NyaXB0aW9uU3RyaW5nID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNTdHJpbmc+
KE5TQnVuZGxlLm1haW5CdW5kbGUuaW5mb0RpY3Rpb25hcnlbQCJOU01pY3JvcGhvbmVVc2FnZURl
c2NyaXB0aW9uIl0pLmxlbmd0aCA+IDA7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gaGFz
TWljcm9waG9uZURlc2NyaXB0aW9uU3RyaW5nOworICAgIGNhc2UgTWVkaWFQZXJtaXNzaW9uVHlw
ZTo6VmlkZW86CisgICAgICAgIHN0YXRpYyBUQ0NBY2Nlc3NQcmVmbGlnaHRSZXN1bHQgdmlkZW9B
Y2Nlc3MgPSBUQ0NBY2Nlc3NQcmVmbGlnaHQoZ2V0a1RDQ1NlcnZpY2VDYW1lcmEoKSwgTlVMTCk7
CisgICAgICAgIGlmICh2aWRlb0FjY2VzcyA9PSBrVENDQWNjZXNzUHJlZmxpZ2h0R3JhbnRlZCkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBzdGQ6OmNhbGxfb25jZSh2aWRlb0Rl
c2NyaXB0aW9uRmxhZywgW10geworICAgICAgICAgICAgaGFzQ2FtZXJhRGVzY3JpcHRpb25TdHJp
bmcgPSBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZv
RGljdGlvbmFyeVtAIk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb24iXSkubGVuZ3RoID4gMDsK
KyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBoYXNDYW1lcmFEZXNjcmlwdGlvblN0cmluZzsK
KyAgICB9Cit9CisKK2Jvb2wgY2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yU3BlZWNoUmVj
b2duaXRpb24oKQoreworICAgIHJldHVybiBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNC
dW5kbGUubWFpbkJ1bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TU3BlZWNoUmVjb2duaXRpb25Vc2Fn
ZURlc2NyaXB0aW9uIl0pLmxlbmd0aCA+IDA7Cit9CisKKyNpZiBIQVZFKEFWQ0FQVFVSRURFVklD
RSkKKwordm9pZCByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25U
eXBlIHR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhdXRob3JpemVkKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgQVZN
ZWRpYVR5cGUgbWVkaWFUeXBlID0gdHlwZSA9PSBNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbyA/
IEFWTWVkaWFUeXBlQXVkaW8gOiBBVk1lZGlhVHlwZVZpZGVvOworICAgIGF1dG8gZGVjaXNpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShCT09MIGF1dGhvcml6ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoaXNN
YWluVGhyZWFkKCkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgYXV0
aG9yaXplZF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhv
cml6ZWQpOworICAgICAgICB9KTsKKyAgICB9KTsKKyAgICBbUEFMOjpnZXRBVkNhcHR1cmVEZXZp
Y2VDbGFzcygpIHJlcXVlc3RBY2Nlc3NGb3JNZWRpYVR5cGU6bWVkaWFUeXBlIGNvbXBsZXRpb25I
YW5kbGVyOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07Cit9CisKK01lZGlhUGVybWlzc2lvblJlc3Vs
dCBjaGVja0FWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSB0eXBlKQor
eworICAgIEFWTWVkaWFUeXBlIG1lZGlhVHlwZSA9IHR5cGUgPT0gTWVkaWFQZXJtaXNzaW9uVHlw
ZTo6QXVkaW8gPyBBVk1lZGlhVHlwZUF1ZGlvIDogQVZNZWRpYVR5cGVWaWRlbzsKKyAgICBhdXRv
IGF1dGhvcml6YXRpb25TdGF0dXMgPSBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIGF1
dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6bWVkaWFUeXBlXTsKKyAgICBpZiAoYXV0aG9y
aXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQgfHwgYXV0aG9yaXph
dGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkKQorICAgICAgICBy
ZXR1cm4gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpEZW5pZWQ7CisgICAgaWYgKGF1dGhvcml6YXRp
b25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZCkKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGVybWlzc2lvblJlc3VsdDo6VW5rbm93bjsKKyAgICByZXR1cm4gTWVkaWFQ
ZXJtaXNzaW9uUmVzdWx0OjpHcmFudGVkOworfQorCisjZW5kaWYgLy8gSEFWRShBVkNBUFRVUkVE
RVZJQ0UpCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisKK3ZvaWQgcmVxdWVzdFNwZWVj
aFJlY29nbml0aW9uQWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhdXRob3JpemVk
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNGU3BlZWNoUmVjb2duaXplckF1dGhv
cml6YXRpb25TdGF0dXMgc3RhdHVzKSBtdXRhYmxlIHsKKyAgICAgICAgYm9vbCBhdXRob3JpemVk
ID0gc3RhdHVzID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNBdXRob3Jp
emVkOworICAgICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBhdXRob3JpemVkXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGF1dGhvcml6ZWQpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgfSk7
CisgICAgW2dldFNGU3BlZWNoUmVjb2duaXplckNsYXNzKCkgcmVxdWVzdEF1dGhvcml6YXRpb246
ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKK30KKworTWVkaWFQZXJtaXNzaW9uUmVzdWx0IGNoZWNr
U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCkKK3sKKyAgICBhdXRvIGF1dGhvcml6YXRp
b25TdGF0dXMgPSBbZ2V0U0ZTcGVlY2hSZWNvZ25pemVyQ2xhc3MoKSBhdXRob3JpemF0aW9uU3Rh
dHVzXTsKKyAgICBpZiAoYXV0aG9yaXphdGlvblN0YXR1cyA9PSBTRlNwZWVjaFJlY29nbml6ZXJB
dXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IGF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZTcGVl
Y2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpCisgICAgICAgIHJldHVy
biBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkRlbmllZDsKKyAgICBpZiAoYXV0aG9yaXphdGlvblN0
YXR1cyA9PSBTRlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZCkK
KyAgICAgICAgcmV0dXJuIE1lZGlhUGVybWlzc2lvblJlc3VsdDo6R3JhbnRlZDsKKyAgICByZXR1
cm4gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duOworfQorCisjZW5kaWYgLy8gSEFWRShT
UEVFQ0hSRUNPR05JWkVSKQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAppbmRleCA4YTA5NDc0NWMxZjI0YmUxMDVkYmIw
MmFiOTFlMzA3YjMxZDQ4NmIxLi42MmQ3YThhMThmNmViODM5NGNiZTAyY2ZhYzQzNzZhNTRkMGEx
ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCkBAIC0x
NjEsNiArMTYxLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgICAgICB2
b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsJiwgV2ViRnJhbWVQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJikgZmluYWw7
CiAjZW5kaWYKKyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKIAogICAgICAgICBVSURlbGVnYXRl
JiBtX3VpRGVsZWdhdGU7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLm1tCmluZGV4IGQwMzM4ZjhkNmUzYjlhMTNkZjJhZjE1M2FjYjVkZWIzOGUxZmNk
OWIuLjBmOWVhOTA5YTZlZjk5OTExYmU4MWVlZTllMDkzODk4NTdhMjY4ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMTMzMiw0ICsxMzMyLDI2
IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNo
YW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6CiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS1VJRGVs
ZWdhdGVQcml2YXRlPj4oZGVsZWdhdGUpIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcg
aW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZDpuZXdTaXplXTsKIH0KIAordm9pZCBVSURl
bGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpTZWN1cml0eU9yaWdp
biYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGF1dG8gZGVsZWdhdGUgPSAoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KW1f
dWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKCFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpy
ZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOmRlY2lzaW9uSGFuZGxl
cjopXSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyOjpjcmVhdGUoZGVsZWdhdGUsIEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOmRlY2lzaW9uSGFuZGxlcjopKTsKKyAgICBbZGVs
ZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyByZXF1ZXN0U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOndyYXBwZXIob3JpZ2luKSBkZWNpc2lvbkhhbmRsZXI6
bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UoY29tcGxldGlv
bkhhbmRsZXIsIHsgfSksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCBncmFudGVk
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVl
bkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2VyLT5kaWRDYWxs
Q29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZ3JhbnRlZCk7
CisgICAgfSkuZ2V0KCldOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0KaW5kZXggOTk3NTc1ZGUwMjE2YTljMGNk
NzZhZmNiNDFjNzY0MWRiMTMxNWFmYi4uZTJlZmEzOTQ0NjM3MWM4MDhiMGQ2YjAzNWY4N2FmNWFl
OTBmMzJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0K
QEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKIAorI2ltcG9ydCAiTWVkaWFQZXJtaXNz
aW9uVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJU
Q0NTUEkuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgpAQCAtMzcsNDAgKzM4LDEyIEBACiAj
aW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9z
cGkvZGFyd2luL1NhbmRib3hTUEkuaD4KIAotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFRD
QykKLVNPRlRfTElOSyhUQ0MsIFRDQ0FjY2Vzc1ByZWZsaWdodCwgVENDQWNjZXNzUHJlZmxpZ2h0
UmVzdWx0LCAoQ0ZTdHJpbmdSZWYgc2VydmljZSwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpLCAo
c2VydmljZSwgb3B0aW9ucykpCi1TT0ZUX0xJTksoVENDLCBUQ0NBY2Nlc3NQcmVmbGlnaHRXaXRo
QXVkaXRUb2tlbiwgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0LCAoQ0ZTdHJpbmdSZWYgc2Vydmlj
ZSwgYXVkaXRfdG9rZW5fdCB0b2tlbiwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpLCAoc2Vydmlj
ZSwgdG9rZW4sIG9wdGlvbnMpKQotU09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RDQ1NlcnZpY2VN
aWNyb3Bob25lLCBDRlN0cmluZ1JlZikKLVNPRlRfTElOS19DT05TVEFOVChUQ0MsIGtUQ0NTZXJ2
aWNlQ2FtZXJhLCBDRlN0cmluZ1JlZikKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZUF1
ZGlvKCkKIHsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGF0aWMgYm9vbCBlbnRp
dGxlZCA9IHRydWU7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAg
aWYgKCFjdXJyZW50UHJvY2Vzc0lzU2FuZGJveGVkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgaW50IHJlc3VsdCA9IHNhbmRib3hfY2hlY2soZ2V0cGlkKCksICJkZXZpY2UtbWlj
cm9waG9uZSIsIFNBTkRCT1hfRklMVEVSX05PTkUpOwotICAgICAgICBlbnRpdGxlZCA9ICFyZXN1
bHQ7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAgICAgICAgICBXVEZMb2dBbHdheXMo
IkVycm9yIGNoZWNraW5nICdkZXZpY2UtbWljcm9waG9uZScgc2FuZGJveCBhY2Nlc3MsIGVycm5v
PSVsZCIsIChsb25nKWVycm5vKTsKLSAgICB9KTsKLSAgICBpZiAoIWVudGl0bGVkKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQotCi0gICAgc3RhdGljIFRD
Q0FjY2Vzc1ByZWZsaWdodFJlc3VsdCBhY2Nlc3MgPSBUQ0NBY2Nlc3NQcmVmbGlnaHQoZ2V0a1RD
Q1NlcnZpY2VNaWNyb3Bob25lKCksIE5VTEwpOwotICAgIGlmIChhY2Nlc3MgPT0ga1RDQ0FjY2Vz
c1ByZWZsaWdodEdyYW50ZWQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgc3RhdGljIGJv
b2wgaXNQZXJtaXR0ZWQgPSBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFp
bkJ1bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb24iXSku
bGVuZ3RoOwotICAgIHJldHVybiBpc1Blcm1pdHRlZDsKKyAgICByZXR1cm4gY2hlY2tTYW5kYm94
UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKSAmJiBjaGVja1Vz
YWdlRGVzY3JpcHRpb25TdHJpbmdGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKTsK
ICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC03OSw0OSArNTIsMTMgQEAgYm9v
bCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cGVybWl0dGVkVG9DYXB0
dXJlQXVkaW8oKQogYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
cGVybWl0dGVkVG9DYXB0dXJlVmlkZW8oKQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0K
LSNpZiBQTEFURk9STShNQUMpCi0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwot
ICAgIHN0YXRpYyBib29sIGVudGl0bGVkID0gdHJ1ZTsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10gewotICAgICAgICBpZiAoIWN1cnJlbnRQcm9jZXNzSXNTYW5kYm94ZWQoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpbnQgcmVzdWx0ID0gc2FuZGJveF9jaGVjayhn
ZXRwaWQoKSwgImRldmljZS1jYW1lcmEiLCBTQU5EQk9YX0ZJTFRFUl9OT05FKTsKLSAgICAgICAg
ZW50aXRsZWQgPSAhcmVzdWx0OwotICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAg
ICAgV1RGTG9nQWx3YXlzKCJFcnJvciBjaGVja2luZyAnZGV2aWNlLWNhbWVyYScgc2FuZGJveCBh
Y2Nlc3MsIGVycm5vPSVsZCIsIChsb25nKWVycm5vKTsKLSAgICB9KTsKLSAgICBpZiAoIWVudGl0
bGVkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQotCi0g
ICAgc3RhdGljIFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3VsdCBhY2Nlc3MgPSBUQ0NBY2Nlc3NQcmVm
bGlnaHQoZ2V0a1RDQ1NlcnZpY2VDYW1lcmEoKSwgTlVMTCk7Ci0gICAgaWYgKGFjY2VzcyA9PSBr
VENDQWNjZXNzUHJlZmxpZ2h0R3JhbnRlZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBz
dGF0aWMgYm9vbCBpc1Blcm1pdHRlZCA9IGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihOU0J1
bmRsZS5tYWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNDYW1lcmFVc2FnZURlc2NyaXB0aW9u
Il0pLmxlbmd0aDsKLSAgICByZXR1cm4gaXNQZXJtaXR0ZWQ7CisgICAgcmV0dXJuIGNoZWNrU2Fu
ZGJveFJlcXVpcmVtZW50Rm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpWaWRlbykgJiYgY2hl
Y2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpWaWRl
byk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogfQogCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKLXN0YXRpYyB2b2lkIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5
cGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChCT09MIGF1dGhvcml6ZWQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyLCBBVk1lZGlhVHlwZSB0eXBlKQotewotICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShCT09MIGF1dGhvcml6ZWQpIG11dGFibGUgewotICAgICAgICBpZiAoIWlzTWFpblRocmVh
ZCgpKSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBhdXRob3JpemVkXSgpIG11dGFibGUgewotICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoYXV0aG9yaXplZCk7Ci0gICAgfSk7Ci0gICAgW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNl
Q2xhc3MoKSByZXF1ZXN0QWNjZXNzRm9yTWVkaWFUeXBlOnR5cGUgY29tcGxldGlvbkhhbmRsZXI6
ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKLX0KLQogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6cmVxdWVzdFN5c3RlbVZhbGlkYXRpb24oY29uc3QgV2ViUGFnZVBy
b3h5JiBwYWdlLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JiByZXF1ZXN0LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChwYWdlLnBy
ZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpKSB7CkBAIC0xMzAsMzYgKzY3
LDM2IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlcXVl
c3RTeXN0ZW1WYWxpZGF0aW9uKGNvbnN0IFdlYlBhCiAgICAgfQogCiAgICAgLy8gRklYTUU6IEFk
ZCBUQ0MgZW50aXRsZW1lbnQgY2hlY2sgZm9yIHNjcmVlbnNoYXJpbmcuCi0gICAgYm9vbCByZXF1
aXJlc0F1ZGlvQ2FwdHVyZSA9IHJlcXVlc3QucmVxdWlyZXNBdWRpb0NhcHR1cmUoKTsKLSAgICBi
b29sIHJlcXVpcmVzVmlkZW9DYXB0dXJlID0gcmVxdWVzdC5yZXF1aXJlc1ZpZGVvQ2FwdHVyZSgp
OwotCi0gICAgYXV0byBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9ICFyZXF1aXJlc0F1
ZGlvQ2FwdHVyZSA/IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQgOiBbUEFMOjpnZXRB
VkNhcHR1cmVEZXZpY2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6QVZN
ZWRpYVR5cGVBdWRpb107Ci0gICAgaWYgKG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09
IEFWQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCB8fCBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0
YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkKSB7CisgICAgYXV0byBhdWRp
b1N0YXR1cyA9IHJlcXVlc3QucmVxdWlyZXNBdWRpb0NhcHR1cmUoKSA/IGNoZWNrQVZDYXB0dXJl
QWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbykgOiBNZWRpYVBlcm1pc3Np
b25SZXN1bHQ6OkdyYW50ZWQ7CisgICAgaWYgKGF1ZGlvU3RhdHVzID09IE1lZGlhUGVybWlzc2lv
blJlc3VsdDo6RGVuaWVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FtZXJhQXV0aG9yaXphdGlvblN0YXR1cyA9ICFyZXF1
aXJlc1ZpZGVvQ2FwdHVyZSA/IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQgOiBbUEFM
OjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5
cGU6QVZNZWRpYVR5cGVWaWRlb107Ci0gICAgaWYgKGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMg
PT0gQVZBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IGNhbWVyYUF1dGhvcml6YXRpb25TdGF0
dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkgeworICAgIGF1dG8gdmlkZW9T
dGF0dXMgPSByZXF1ZXN0LnJlcXVpcmVzVmlkZW9DYXB0dXJlKCkgPyBjaGVja0FWQ2FwdHVyZUFj
Y2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6VmlkZW8pIDogTWVkaWFQZXJtaXNzaW9u
UmVzdWx0OjpHcmFudGVkOworICAgIGlmICh2aWRlb1N0YXR1cyA9PSBNZWRpYVBlcm1pc3Npb25S
ZXN1bHQ6OkRlbmllZCkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBib29sIHJlcXVpcmVzVmlkZW9UQ0NQcm9tcHQgPSByZXF1aXJlc1Zp
ZGVvQ2FwdHVyZSAmJiBjYW1lcmFBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlv
blN0YXR1c05vdERldGVybWluZWQ7Ci0gICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHJlcXVp
cmVzVmlkZW9UQ0NQcm9tcHQgPyBbcmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgaXNPSykgbXV0YWJsZSB7Ci0gICAgICAgIGlmICgh
aXNPSykgewotICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUo
V1RGTW92ZShjYWxsYmFjayksIEFWTWVkaWFUeXBlVmlkZW8pOwotICAgIH0gOiBXVEZNb3ZlKGNh
bGxiYWNrKTsKKyAgICBpZiAoYXVkaW9TdGF0dXMgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpV
bmtub3duKSB7CisgICAgICAgIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVy
bWlzc2lvblR5cGU6OkF1ZGlvLCBbdmlkZW9TdGF0dXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjYWxsYmFjayldKGJvb2wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAodmlkZW9TdGF0dXMgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpHcmFudGVkKSB7CisgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
cmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6VmlkZW8s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKLSAgICBib29sIHJlcXVpcmVzQXVkaW9UQ0NQcm9tcHQgPSByZXF1aXJlc0F1
ZGlvQ2FwdHVyZSAmJiBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6
YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOwotICAgIGlmICghcmVxdWlyZXNBdWRpb1RDQ1Byb21w
dCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICBpZiAodmlkZW9TdGF0
dXMgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIHJlcXVlc3RB
VkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OlZpZGVvLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcmVxdWVzdEFWQ2FwdHVy
ZUFjY2Vzc0Zvck1lZGlhVHlwZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgQVZNZWRpYVR5
cGVBdWRpbyk7CisKKyAgICBjYWxsYmFjayh0cnVlKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDg2NjIzOGJhZmU4ZjA1YzE3YTIzZDZmOWNjOTlh
MjEwMTRkZDkzMTAuLmNkMzAxNDFmY2VhNjIyMmRlNWJhN2NmMWM2N2E5YTJmNjRkMDIwZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94
eUNvY29hLm1tCkBAIC00MSw2ICs0MSwxMCBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNv
Y29hLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CiAKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCIKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaD4KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
ZmUzYzMxNmQ0YzUzZTYyMDczN2IxZjNhNGZjNjRmZDMwNGQwNGQ0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgKQEAg
LTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBNZWRpYVBlcm1pc3Npb25UeXBlIHsKKyAgICBBdWRp
bywKKyAgICBWaWRlbworfTsKKworZW51bSBjbGFzcyBNZWRpYVBlcm1pc3Npb25SZXN1bHQgewor
ICAgIERlbmllZCwKKyAgICBHcmFudGVkLAorICAgIFVua25vd24KK307CisKKyNpZiBQTEFURk9S
TShDT0NPQSkKK2Jvb2wgY2hlY2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlz
c2lvblR5cGUpOworYm9vbCBjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdGb3JUeXBlKE1lZGlh
UGVybWlzc2lvblR5cGUpOworYm9vbCBjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdGb3JTcGVl
Y2hSZWNvZ25pdGlvbigpOworI2VuZGlmCisKKyNpZiBIQVZFKEFWQ0FQVFVSRURFVklDRSkKK3Zv
aWQgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQpPiYmKTsKK01lZGlhUGVybWlzc2lv
blJlc3VsdCBjaGVja0FWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSk7
CisjZW5kaWYKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKK3ZvaWQgcmVxdWVzdFNwZWVj
aFJlY29nbml0aW9uQWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhdXRob3JpemVk
KT4mJik7CitNZWRpYVBlcm1pc3Npb25SZXN1bHQgY2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZp
Y2VBY2Nlc3MoKTsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMGQ5ODI4YjU0MmIzOTVjOTgyMGNjNjI2MGUz
NWY4ZmUwMjBlYzk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKQEAgLTAsMCArMSwyMjMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIgorCisjaW5jbHVkZSAiQVBJU2VjdXJpdHlPcmlnaW4u
aCIKKyNpbmNsdWRlICJBUElVSUNsaWVudC5oIgorI2luY2x1ZGUgIk1lZGlhUGVybWlzc2lvblV0
aWxpdGllcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXI6OkNoZWNrUmVzdWx0IGNvbXB1dGVNaWNyb3Bob25lQWNjZXNz
KCkKK3sKKyNpZiBIQVZFKEFWQ0FQVFVSRURFVklDRSkKKyAgICBhdXRvIHJlc3VsdCA9IGNoZWNr
QVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbyk7CisgICAg
aWYgKHJlc3VsdCAhPSBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OlVua25vd24pCisgICAgICAgIHJl
dHVybiByZXN1bHQgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpHcmFudGVkID8gU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Q2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpDaGVja1Jlc3VsdDo6RGVuaWVkOworICAgIAor
ICAgIGlmICghY2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yVHlwZShNZWRpYVBlcm1pc3Np
b25UeXBlOjpBdWRpbykpCisgICAgICAgIHJldHVybiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyOjpDaGVja1Jlc3VsdDo6RGVuaWVkOworCisgICAgcmV0dXJuIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OkNoZWNrUmVzdWx0OjpVbmtub3duOworI2Vsc2UKKyAg
ICByZXR1cm4gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Q2hlY2tSZXN1bHQ6
OkdyYW50ZWQ7CisjZW5kaWYKK30KKworc3RhdGljIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OkNoZWNrUmVzdWx0IGNvbXB1dGVTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nl
c3MoKQoreworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKyAgICBhdXRvIHJlc3VsdCA9IGNo
ZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7CisgICAgaWYgKHJlc3VsdCAhPSBN
ZWRpYVBlcm1pc3Npb25SZXN1bHQ6OlVua25vd24pCisgICAgICAgIHJldHVybiByZXN1bHQgPT0g
TWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpHcmFudGVkID8gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6Q2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyOjpDaGVja1Jlc3VsdDo6RGVuaWVkOworCisgICAgaWYgKCFjaGVja1VzYWdl
RGVzY3JpcHRpb25TdHJpbmdGb3JTcGVlY2hSZWNvZ25pdGlvbigpKQorICAgICAgICByZXR1cm4g
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Q2hlY2tSZXN1bHQ6OkRlbmllZDsK
KworICAgIHJldHVybiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpDaGVja1Jl
c3VsdDo6VW5rbm93bjsKKyNlbHNlCisgICAgcmV0dXJuIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI6OkNoZWNrUmVzdWx0OjpHcmFudGVkOworI2VuZGlmCit9CisKK1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIoV2ViUGFnZVByb3h5JiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6On5TcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyKCkKK3sKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3JlcXVlc3RzKQor
ICAgICAgICByZXF1ZXN0LT5jb21wbGV0ZShTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNp
c2lvbjo6RGVueSk7Cit9CisgICAgCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXI6OnJlcXVlc3QoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYm
IGNvbXBsZXRpb250SGFuZGxlcikKK3sKKyAgICBtX3JlcXVlc3RzLmFwcGVuZChTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUob3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRp
b250SGFuZGxlcikpKTsKKyAgICBpZiAobV9yZXF1ZXN0cy5zaXplKCkgPT0gMSkKKyAgICAgICAg
c3RhcnROZXh0UmVxdWVzdCgpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OnN0YXJ0TmV4dFJlcXVlc3QoKQoreworICAgIGlmIChtX3JlcXVlc3RzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgpOwor
fQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0UHJvY2Vz
c2luZ1JlcXVlc3QoKQoreworI2lmIFBMQVRGT1JNKENPT0NBKQorICAgIGlmICghY2hlY2tTYW5k
Ym94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKSkgeworICAg
ICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRl
Y2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgLy8g
VENDIHN0YXR1cyBtYXkgaGF2ZSBjaGFuZ2VkIGJldHdlZW4gcmVxdWVzdHMuCisgICAgbV9taWNy
b3Bob25lQ2hlY2sgPSBjb21wdXRlTWljcm9waG9uZUFjY2VzcygpOworICAgIG1fc3BlZWNoUmVj
b2duaXRpb25TZXJ2aWNlQ2hlY2sgPSBjb21wdXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNj
ZXNzKCk7CisKKyAgICBpZiAobV9wYWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2Vz
RW5hYmxlZCgpKSB7CisgICAgICAgIG1fbWljcm9waG9uZUNoZWNrID0gQ2hlY2tSZXN1bHQ6Okdy
YW50ZWQ7CisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPSBDaGVja1Jl
c3VsdDo6R3JhbnRlZDsKKyAgICB9CisKKyAgICAvLyBXZSBjdXJyZW50bHkgZG9uJ3QgYWxsb3cg
dGhpcmQtcGFydHkgYWNjZXNzLgorICAgIGlmIChtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPT0gQ2hl
Y2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgYXV0byBjbGllbnRPcmlnaW4gPSBtX3JlcXVl
c3RzLmZpcnN0KCktPm9yaWdpbigpOworICAgICAgICBhdXRvIHJlcXVlc3RpbmdPcmlnaW4gPSBj
bGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgICAgIGF1dG8g
dG9wT3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOworICAg
ICAgICBpZiAoIXJlcXVlc3RpbmdPcmlnaW4tPmlzU2FtZU9yaWdpbkFzKHRvcE9yaWdpbikpCisg
ICAgICAgICAgICBtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPSBDaGVja1Jlc3VsdDo6RGVuaWVkOwor
ICAgIH0KKworICAgIGlmIChtX21pY3JvcGhvbmVDaGVjayA9PSBDaGVja1Jlc3VsdDo6RGVuaWVk
IHx8IG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OkRlbmll
ZCB8fCBtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OkRlbmllZCkgeworICAg
ICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRl
Y2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnRpbnVlUHJv
Y2Vzc2luZ1JlcXVlc3QoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCkKK3sKKyAgICBpZiAobV9zcGVlY2hS
ZWNvZ25pdGlvblNlcnZpY2VDaGVjayA9PSBDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAg
ICByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgQVNTRVJUKG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0g
Q2hlY2tSZXN1bHQ6OkdyYW50ZWQpOworCisgICAgaWYgKG1fbWljcm9waG9uZUNoZWNrID09IENo
ZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIHJlcXVlc3RNaWNyb3Bob25lQWNjZXNzKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKG1fbWljcm9waG9uZUNoZWNrID09
IENoZWNrUmVzdWx0OjpHcmFudGVkKTsKKworICAgIGlmIChtX3VzZXJQZXJtaXNzaW9uQ2hlY2sg
PT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgcmVxdWVzdFVzZXJQZXJtaXNzaW9u
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKG1fdXNlclBlcm1pc3Npb25D
aGVjayA9PSBDaGVja1Jlc3VsdDo6R3JhbnRlZCk7CisKKyAgICBjb21wbGV0ZUN1cnJlbnRSZXF1
ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpHcmFudCk7Cit9CisKK3Zv
aWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y29tcGxldGVDdXJyZW50UmVx
dWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikKK3sKKyAg
ICBBU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKyAgICBhdXRvIGN1cnJlbnRSZXF1ZXN0
ID0gbV9yZXF1ZXN0cy50YWtlRmlyc3QoKTsKKyAgICBjdXJyZW50UmVxdWVzdC0+Y29tcGxldGUo
ZGVjaXNpb24pOworCisgICAgc3RhcnROZXh0UmVxdWVzdCgpOworfQorCit2b2lkIFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNlcnZp
Y2VBY2Nlc3MoKQoreworICAgIEFTU0VSVChtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNr
ID09IENoZWNrUmVzdWx0OjpVbmtub3duKTsKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikK
KyAgICByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25BY2Nlc3MoW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyldKGJvb2wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICgh
d2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9zcGVlY2hSZWNvZ25p
dGlvblNlcnZpY2VDaGVjayA9IGF1dGhvcml6ZWQgPyBDaGVja1Jlc3VsdDo6R3JhbnRlZCA6IENo
ZWNrUmVzdWx0OjpEZW5pZWQ7CisgICAgICAgIGlmIChtX3NwZWVjaFJlY29nbml0aW9uU2Vydmlj
ZUNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAgICAgICAgICAgIGNvbXBsZXRlQ3Vy
cmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29udGludWVQcm9jZXNz
aW5nUmVxdWVzdCgpOworICAgIH0pOworI2VuZGlmCit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3MoKQoreworICAgIEFT
U0VSVChtX21pY3JvcGhvbmVDaGVjayA9PSBDaGVja1Jlc3VsdDo6VW5rbm93bik7CisKKyNpZiBI
QVZFKEFWQ0FQVFVSRURFVklDRSkKKyAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yVHlwZShN
ZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbywgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyldKGJvb2wgYXV0aG9yaXplZCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIG1fbWljcm9waG9uZUNoZWNrID0gYXV0aG9yaXplZCA/
IENoZWNrUmVzdWx0OjpHcmFudGVkIDogQ2hlY2tSZXN1bHQ6OkRlbmllZDsKKyAgICAgICAgaWYg
KG1fbWljcm9waG9uZUNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNp
b246OkRlbnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29u
dGludWVQcm9jZXNzaW5nUmVxdWVzdCgpOworICAgIH0pOworI2VuZGlmCit9CisKK3ZvaWQgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdFVzZXJQZXJtaXNzaW9uKCkK
K3sKKyAgICBBU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKworICAgIGF1dG8mIGN1cnJl
bnRSZXF1ZXN0ID0gbV9yZXF1ZXN0cy5maXJzdCgpOworICAgIGF1dG8gY2xpZW50T3JpZ2luID0g
Y3VycmVudFJlcXVlc3QtPm9yaWdpbigpOworICAgIGF1dG8gdG9wT3JpZ2luID0gY2xpZW50T3Jp
Z2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8gZGVjaXNpb25IYW5kbGVy
ID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShib29sIGdyYW50ZWQpIHsK
KyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBt
X3VzZXJQZXJtaXNzaW9uQ2hlY2sgPSBncmFudGVkID8gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBD
aGVja1Jlc3VsdDo6RGVuaWVkOworICAgICAgICBpZiAobV91c2VyUGVybWlzc2lvbkNoZWNrID09
IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAgICAgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVl
c3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVz
dCgpOworICAgIH07CisgICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSh0b3BPcmlnaW4uZ2V0KCkpLmdldCgpLCBXVEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjAwYjU3MWQ5N2EwMmZjMzNkMTQzMThkOTgwYjRkNzQ0OTZmOTkyMmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgor
I2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorICAgIGVudW0gY2xhc3MgQ2hlY2tSZXN1bHQgeyBEZW5pZWQsIEdyYW50ZWQs
IFVua25vd24gfTsKKyAgICBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyKFdlYlBhZ2VQcm94eSYpOworICAgIH5TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyKCk7CisgICAgdm9pZCByZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24p
PiYmKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHN0YXJ0TmV4dFJlcXVlc3QoKTsKKyAgICB2b2lk
IHN0YXJ0UHJvY2Vzc2luZ1JlcXVlc3QoKTsKKyAgICB2b2lkIGNvbnRpbnVlUHJvY2Vzc2luZ1Jl
cXVlc3QoKTsKKyAgICB2b2lkIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uRGVjaXNpb24pOworICAgIHZvaWQgcmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3Mo
KTsKKyAgICB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKKyAg
ICB2b2lkIHJlcXVlc3RVc2VyUGVybWlzc2lvbigpOworCisgICAgV2ViUGFnZVByb3h5JiBtX3Bh
Z2U7CisgICAgRGVxdWU8UmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+PiBt
X3JlcXVlc3RzOworICAgIENoZWNrUmVzdWx0IG1fbWljcm9waG9uZUNoZWNrIHsgQ2hlY2tSZXN1
bHQ6OlVua25vd24gfTsKKyAgICBDaGVja1Jlc3VsdCBtX3NwZWVjaFJlY29nbml0aW9uU2Vydmlj
ZUNoZWNrIHsgQ2hlY2tSZXN1bHQ6OlVua25vd24gfTsKKyAgICBDaGVja1Jlc3VsdCBtX3VzZXJQ
ZXJtaXNzaW9uQ2hlY2sgeyBDaGVja1Jlc3VsdDo6VW5rbm93biB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjI1MTdiM2Vm
YTYxMjg5ZDQzNzQzY2I0ZjQ3NzkxNjVkMGUwYTM4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaApA
QCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJB
UElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgorI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBj
bGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiA6IGJvb2wgeyBEZW55LCBH
cmFudCB9OworCitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0IDogcHVi
bGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4geworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4g
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Qob3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkpOworICAgIH0KKworICAgIHZvaWQgY29tcGxldGUoU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uRGVjaXNpb24gZGVjaXNpb24pCisgICAgeworICAgICAgICBhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihkZWNpc2lvbik7CisgICAgfQorCisgICAgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQorCitw
cml2YXRlOgorICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
ICAgICA6IG1fb3JpZ2luKG9yaWdpbikKKyAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgIHsgfQorCisgICAgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luIG1fb3JpZ2luOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworfTsKKworY2xh
c3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sgOiBwdWJsaWMgQVBJOjpPYmpl
Y3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjaz4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2s+IGNyZWF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
KTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBsZXRlKGJvb2wgZ3JhbnRlZCkgeyBtX2NvbXBsZXRp
b25IYW5kbGVyKGdyYW50ZWQpOyB9CisKK3ByaXZhdGU6CisgICAgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKQorICAgIHsgfQorCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3Bw
CmluZGV4IDljZTk3NGNmOWRhYTU2NTgyZWViY2ZhMDMwNjcwYjdhMzc1YmU3MWUuLjQ3YzQ0YTc1
MDA3MDRmMDA4YzU0OWM4NTNiMDg1MWE2MjYxYjM2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKQEAgLTMwLDg3ICszMCwx
MDggQEAKICNpbmNsdWRlICJXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaD4KIAorI2RlZmlu
ZSBNRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwg
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSkKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVNwZWVj
aFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBp
ZGVudGlmaWVyKQorU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNo
ZWNrZXImJiBwZXJtaXNzaW9uQ2hlY2tlcikKICAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNv
bm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX3Blcm1p
c3Npb25DaGVja2VyKFdURk1vdmUocGVybWlzc2lvbkNoZWNrZXIpKQogewogfQogCi12b2lkIFNw
ZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3RJbmZvJiYgcmVxdWVzdEluZm8pCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpz
dGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
IGNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBp
bnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mJiBvcmlnaW4pCiB7Ci0gICAgYXV0byByZXF1ZXN0ID0gV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0OjpjcmVhdGUoV1RGTW92ZShyZXF1ZXN0SW5mbykpOwotICAgIG1fcGVu
ZGluZ1JlcXVlc3RzLmFwcGVuZChXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICBNRVNTQUdFX0NIRUNL
KGNsaWVudElkZW50aWZpZXIpOworICAgIEFTU0VSVCghbV9wZW5kaW5nUmVxdWVzdHMuY29udGFp
bnMoY2xpZW50SWRlbnRpZmllcikpOworICAgIEFTU0VSVCghbV9vbmdvaW5nUmVxdWVzdHMuY29u
dGFpbnMoY2xpZW50SWRlbnRpZmllcikpOworICAgIGF1dG8gcmVxdWVzdEluZm8gPSBTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvIHsgY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShsYW5nKSwg
Y29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVybmF0aXZlcywgV1RGTW92ZShvcmln
aW4pIH07CisgICAgYXV0byYgcGVuZGluZ1JlcXVlc3QgPSBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQo
Y2xpZW50SWRlbnRpZmllciwgbWFrZVVuaXF1ZTxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3Q+KFdURk1vdmUocmVxdWVzdEluZm8pKSkuaXRlcmF0b3ItPnZhbHVlOzsKIAotICAgIHBy
b2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJZk5lZWRlZCgpOworICAgIHJlcXVlc3RQZXJtaXNzaW9u
Rm9yUmVxdWVzdCgqcGVuZGluZ1JlcXVlc3QpOwogfQogCi12b2lkIFNwZWVjaFJlY29nbml0aW9u
U2VydmVyOjpwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKQordm9pZCBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBpZiAobV9jdXJyZW50UmVx
dWVzdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fcGVuZGluZ1JlcXVlc3RzLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuOworICAgIG1fcGVybWlzc2lvbkNoZWNrZXIocmVxdWVzdC5j
bGllbnRPcmlnaW4oKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYWtS
ZXF1ZXN0ID0gbWFrZVdlYWtQdHIocmVxdWVzdCldKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkRlY2lzaW9uIGRlY2lzaW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIXdlYWtSZXF1ZXN0KQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IHdlYWtSZXF1ZXN0LT5jbGll
bnRJZGVudGlmaWVyKCk7CisgICAgICAgIGF1dG8gdGFrZW5SZXF1ZXN0ID0gbV9wZW5kaW5nUmVx
dWVzdHMudGFrZShpZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGRlY2lzaW9uID09IFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KSB7CisgICAgICAgICAgICBhdXRvIGVy
cm9yID0gU3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBl
OjpOb3RBbGxvd2VkLCAiUGVybWlzc2lvbiBjaGVjayBmYWlsZWQiX3MgfTsKKyAgICAgICAgICAg
IHNlbmRVcGRhdGUoaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVU
eXBlOjpFcnJvciwgZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAg
ICBtX2N1cnJlbnRSZXF1ZXN0ID0gbV9wZW5kaW5nUmVxdWVzdHMudGFrZUZpcnN0KCk7Ci0gICAg
c3RhcnRQb2Nlc3NpbmdSZXF1ZXN0KCptX2N1cnJlbnRSZXF1ZXN0KTsKKyAgICAgICAgbV9vbmdv
aW5nUmVxdWVzdHMuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUodGFrZW5SZXF1ZXN0KSk7CisgICAg
ICAgIGhhbmRsZVJlcXVlc3QoKm1fb25nb2luZ1JlcXVlc3RzLmdldChpZGVudGlmaWVyKSk7Cisg
ICAgfSk7CiB9CiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0b3AoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlm
aWVyKQogewotICAgIGlmIChtX2N1cnJlbnRSZXF1ZXN0ICYmIG1fY3VycmVudFJlcXVlc3QtPmNs
aWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlmaWVyKSB7Ci0gICAgICAgIHN0b3BQcm9j
ZXNzaW5nUmVxdWVzdCgqbV9jdXJyZW50UmVxdWVzdCk7CisgICAgTUVTU0FHRV9DSEVDSyhjbGll
bnRJZGVudGlmaWVyKTsKKyAgICBpZiAobV9wZW5kaW5nUmVxdWVzdHMucmVtb3ZlKGNsaWVudElk
ZW50aWZpZXIpKSB7CisgICAgICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgcmVtb3ZlUGVuZGluZ1JlcXVlc3QoY2xpZW50SWRlbnRpZmllcik7CisgICAg
QVNTRVJUKG1fb25nb2luZ1JlcXVlc3RzLmNvbnRhaW5zKGNsaWVudElkZW50aWZpZXIpKTsKKyAg
ICBzdG9wUmVxdWVzdCgqbV9vbmdvaW5nUmVxdWVzdHMuZ2V0KGNsaWVudElkZW50aWZpZXIpKTsK
IH0KIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQog
ewotICAgIGlmIChtX2N1cnJlbnRSZXF1ZXN0ICYmIG1fY3VycmVudFJlcXVlc3QtPmNsaWVudElk
ZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlmaWVyKSB7Ci0gICAgICAgIG1fY3VycmVudFJlcXVl
c3QgPSBudWxscHRyOwotICAgICAgICBhdXRvIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjpjcmVhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25VcGRhdGVUeXBlOjpFbmQpOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OkRpZFJlY2VpdmVVcGRhdGUodXBkYXRlKSwgbV9pZGVu
dGlmaWVyKTsKLQotICAgICAgICBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsK
KyAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElkZW50aWZpZXIpOworICAgIGlmIChtX3BlbmRpbmdS
ZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAgc2VuZFVwZGF0ZShj
bGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVu
ZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZW1vdmVQZW5kaW5nUmVxdWVzdChj
bGllbnRJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQobV9vbmdvaW5nUmVxdWVzdHMuY29udGFpbnMo
Y2xpZW50SWRlbnRpZmllcikpOworICAgIGF1dG8gcmVxdWVzdCA9IG1fb25nb2luZ1JlcXVlc3Rz
LnRha2UoY2xpZW50SWRlbnRpZmllcik7CisgICAgYWJvcnRSZXF1ZXN0KCpyZXF1ZXN0KTsKKyAg
ICBhdXRvIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUo
Y2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpF
bmQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6
RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFNwZWVj
aFJlY29nbml0aW9uU2VydmVyOjpyZW1vdmVQZW5kaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCit2
b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjppbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKIHsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiB0YWtlblJlcXVl
c3Q7Ci0gICAgYXV0byBwZW5kaW5nUmVxdWVzdHMgPSBzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1Jl
cXVlc3RzLCB7IH0pOwotICAgIHdoaWxlICghcGVuZGluZ1JlcXVlc3RzLmlzRW1wdHkoKSkgewot
ICAgICAgICBhdXRvIHJlcXVlc3QgPSBwZW5kaW5nUmVxdWVzdHMudGFrZUZpcnN0KCk7Ci0gICAg
ICAgIGlmIChyZXF1ZXN0LT5jbGllbnRJZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikg
ewotICAgICAgICAgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZTo6Y3JlYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
VXBkYXRlVHlwZTo6RW5kKTsKLSAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbjo6RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50aWZp
ZXIpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgbV9wZW5kaW5n
UmVxdWVzdHMuYXBwZW5kKFdURk1vdmUocmVxdWVzdCkpOwotICAgIH0KKyAgICBNRVNTQUdFX0NI
RUNLKGNsaWVudElkZW50aWZpZXIpOworICAgIGF1dG8gcmVxdWVzdCA9IG1fb25nb2luZ1JlcXVl
c3RzLnRha2UoY2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKHJlcXVlc3QpCisgICAgICAgIGFi
b3J0UmVxdWVzdCgqcmVxdWVzdCk7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6
OmludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciBjbGllbnRJZGVudGlmaWVyKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6
aGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3Qp
CiB7Ci0gICAgaWYgKG1fY3VycmVudFJlcXVlc3QgJiYgbV9jdXJyZW50UmVxdWVzdC0+Y2xpZW50
SWRlbnRpZmllcigpID09IGNsaWVudElkZW50aWZpZXIpIHsKLSAgICAgICAgbV9jdXJyZW50UmVx
dWVzdCA9IG51bGxwdHI7Ci0gICAgICAgIHByb2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJZk5lZWRl
ZCgpOwotICAgIH0KKyAgICAvLyBUT0RPOiBzdGFydCBjYXB0dXJpbmcgYXVkaW8gYW5kIHJlY29n
bml0aW9uLgogfQogCi12b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydFBvY2Vzc2lu
Z1JlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JikKK3ZvaWQgU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OnN0b3BSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdCYgcmVxdWVzdCkKIHsKKyAgICAvLyBUT0RPOiBzdG9wIGNhcHR1cmluZyBhdWRpbyBh
bmQgZmluYWxpemluZyByZXN1bHRzIGJ5IHJlY29nbml6aW5nIGNhcHR1cmVkIGF1ZGlvLgogfQog
Ci12b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdG9wUHJvY2Vzc2luZ1JlcXVlc3QoV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JikKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6OmFib3J0UmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJl
cXVlc3QpCiB7CisgICAgLy8gVE9ETzogc3RvcCBjYXB0dXJpbmcgYXVkaW8gYW5kIHJlY29nbml0
aW9uIGltbWVkaWF0ZWx5IHdpdGhvdXQgZ2VuZXJhdGluZyByZXN1bHRzLgorfQorCit2b2lkIFNw
ZWVjaFJlY29nbml0aW9uU2VydmVyOjpzZW5kVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25V
cGRhdGVUeXBlIHR5cGUsIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+IGVycm9yLCBP
cHRpb25hbDxWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gcmVzdWx0KQorewor
ICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0
ZShjbGllbnRJZGVudGlmaWVyLCB0eXBlKTsKKyAgICBpZiAodHlwZSA9PSBTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZVR5cGU6OkVycm9yKQorICAgICAgICB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRlbnRpZmllciwgKmVycm9yKTsK
KyAgICBpZiAodHlwZSA9PSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlJlc3VsdCkKKyAg
ICAgICAgdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZVJl
c3VsdChjbGllbnRJZGVudGlmaWVyLCAqcmVzdWx0KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OkRpZFJlY2VpdmVVcGRhdGUodXBkYXRlKSwgbV9p
ZGVudGlmaWVyKTsKIH0KIAogSVBDOjpDb25uZWN0aW9uKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdApAQCAtMTI0LDMgKzE0NSw1IEBAIHVp
bnQ2NF90IFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIGNvbnN0CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjdW5kZWYgTUVTU0FHRV9D
SEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2Vy
dmVyLmgKaW5kZXggN2FhMjQxNjM4YjljMzUxNDk2Njk4NDQzMmRiYzUzMGRmODQ4NGEzNy4uMzYz
Y2EyMGViYmUzY2ZjZWVkYWY1OGZlZTM0ZmJjMmUxZDE4YTI0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC0yOCwzMiArMjgs
NDAgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2Vu
ZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU3BlZWNoUmVjb2duaXRpb25FcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TcGVlY2hSZWNvZ25pdGlv
blJlc3VsdERhdGEuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAorbmFtZXNwYWNlIFdlYkNv
cmUgeworZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU7CitzdHJ1Y3QgQ2xp
ZW50T3JpZ2luOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUHJvY2Vzc1By
b3h5OworZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiA6IGJv
b2w7CiAKIHVzaW5nIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciA9IFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyOwordXNpbmcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tl
ciA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYpPjsK
IAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHBy
aXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9u
PiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIpOworICAgIFNwZWVjaFJlY29n
bml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVySWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmKTsKIAot
ICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsK
KyAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIsIFN0cmluZyYmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmlt
UmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
Jik7CiAgICAgdm9pZCBzdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIpOwogICAgIHZvaWQgYWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CiAgICAgdm9pZCBpbnZhbGlkYXRlKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwogCiBwcml2
YXRlOgotICAgIHZvaWQgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7Ci0gICAg
dm9pZCByZW1vdmVQZW5kaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyKTsKLQotICAgIC8vIFRPRE86IGltcGxlbWVudCB0aGVzZS4K
LSAgICB2b2lkIHN0YXJ0UG9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3QmKTsKLSAgICB2b2lkIHN0b3BQcm9jZXNzaW5nUmVxdWVzdChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKKyAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uRm9yUmVx
dWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKKyAgICB2b2lkIGhhbmRs
ZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7CisgICAgdm9pZCBz
dG9wUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKKyAgICB2b2lk
IGFib3J0UmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKKyAgICB2
b2lkIHNlbmRVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlLCBPcHRpb25h
bDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiA9IFdURjo6bnVsbG9wdCwgT3B0aW9u
YWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+ID0gV1RGOjpu
dWxsb3B0KTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CkBA
IC02NCw4ICs3Miw5IEBAIHByaXZhdGU6CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb247CiAgICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKLSAgICBEZXF1ZTxSZWY8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Pj4g
bV9wZW5kaW5nUmVxdWVzdHM7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdD4gbV9jdXJyZW50UmVxdWVzdDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+PiBtX3BlbmRpbmdSZXF1ZXN0czsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+PiBt
X29uZ29pbmdSZXF1ZXN0czsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2Vy
IG1fcGVybWlzc2lvbkNoZWNrZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIubWVzc2FnZXMuaW4KaW5kZXggZTMxYmVmYjA5NWFkODhkYWRjMzBmMDk5NWM1N2U0MTUzNzNm
MTJmNC4uYTI4YjkyMWNiOTY0YWZhZjJmZjIyYzkxNmJiZTQ2ZTgyOTkxMzI5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogIAogIG1lc3NhZ2VzIC0+IFNw
ZWVjaFJlY29nbml0aW9uU2VydmVyIE5vdFJlZkNvdW50ZWQgewotICAgIFN0YXJ0KHN0cnVjdCBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIGluZm8pCisgICAgU3RhcnQoV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlm
aWVyLCBTdHJpbmcgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1
aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3Jp
Z2luKQogICAgIFN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBJbnZhbGlkYXRl
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRl
bnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGYw
NTRmMmJjOGI3ZmRkZTBlNTA4ZTNkYTcwZTYxNGRiZmVmMTcwYjcuLmQ2ZDgwNzkzYWI5MmRlYmIw
YzM5NmJiNjRkMWU5YmU2ODY3MTM4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtODYsNiArODYsNyBAQAogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVBy
b3h5LmgiCiAjaW5jbHVkZSAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlLmgi
CiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgi
CkBAIC00ODkyLDYgKzQ4OTMsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlTWFpbkRv
Y3VtZW50KEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKICNlbmRpZgogICAgIG1faXNRdW90YUluY3JlYXNlRGVuaWVkID0gZmFsc2U7CisKKyAgICBt
X3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBudWxscHRyOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6dmlld0lzQmVjb21pbmdWaXNpYmxlKCkKQEAgLTc2MDUsNiArNzYwOCw4
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVzZXRT
dGF0ZVJlYXNvbikKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgIG1fd2Vic2l0ZURhdGFTdG9y
ZS0+YXV0aGVudGljYXRvck1hbmFnZXIoKS5jYW5jZWxSZXF1ZXN0KG1fd2ViUGFnZUlELCBXVEY6
Om51bGxvcHQpOwogI2VuZGlmCisKKyAgICBtX3NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIgPSBudWxscHRyOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVy
UHJvY2Vzc0V4aXRlZChQcm9jZXNzVGVybWluYXRpb25SZWFzb24gdGVybWluYXRpb25SZWFzb24p
CkBAIC0xMDI1MCw2ICsxMDI1NSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rp
dml0eVN0YXRlVXBkYXRlRm9yVGVzdGluZygpCiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBpZiAoIW1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcikKKyAgICAgICAgbV9z
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyPigqdGhpcyk7CisKKyAgICBtX3NwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXItPnJlcXVlc3QoY2xpZW50T3JpZ2luLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCBmMmM5YWQ0ZjI4NWUxNGZjNGYxNGE0ZmY0ODA2MzA1MWQ1ODk2MGY2Li42MDNmNWEyNzg1
NzBjYWVjYWIzOTAyYTQ4MzQzOWM0ZmM2MWY4MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtMzA0LDYgKzMwNCw3IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZVNj
cm9sbGluZ1BlcmZvcm1hbmNlRGF0YTsKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OwogY2xhc3MgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTsKIGNsYXNzIFNlY0tleVBy
b3h5U3RvcmU7CitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOwogY2xh
c3MgVXNlckRhdGE7CiBjbGFzcyBWaWV3U25hcHNob3Q7CiBjbGFzcyBWaXNpdGVkTGlua1N0b3Jl
OwpAQCAtMzY0LDYgKzM2NSw3IEBAIHN0cnVjdCBVc2VyTWVzc2FnZTsKIAogZW51bSBjbGFzcyBO
ZWdvdGlhdGVkTGVnYWN5VExTIDogYm9vbDsKIGVudW0gY2xhc3MgUHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCA6IGJvb2w7CitlbnVtIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkRlY2lzaW9uIDogYm9vbDsKIGVudW0gY2xhc3MgVW5kb09yUmVkbyA6IGJvb2w7CiBlbnVtIGNs
YXNzIFdlYkNvbnRlbnRNb2RlIDogdWludDhfdDsKIApAQCAtMTgxOCw2ICsxODIwLDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXkoU2Vjb25kcyBjYXB0
dXJlUmVwb3J0aW5nRGVsYXkpIHsgbV9tZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheSA9IGNhcHR1
cmVSZXBvcnRpbmdEZWxheTsgfQogICAgIHNpemVfdCBzdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50
ZXIoKSB7IHJldHVybiBtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlcjsgfQogCisgICAgdm9p
ZCByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uRGVjaXNpb24pPiYmKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVu
dCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAg
ICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjg0OCw2ICsyODUyLDkgQEAgcHJpdmF0
ZToKICAgICB9OwogICAgIE9wdGlvbmFsPFNwZWVjaFN5bnRoZXNpc0RhdGE+IG1fc3BlZWNoU3lu
dGhlc2lzRGF0YTsKICNlbmRpZgorCisgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXI+IG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
cjsKKwogI2lmIFVTRShESVJFQ1QyRCkKICAgICBDT01QdHI8SUQzRDExRGV2aWNlMT4gbV9kZXZp
Y2U7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IGE5ZjgyODJiZTU0MDEwODljMjk0MjdiMDg4NjA3N2E0ODY5NGM3ODEuLjhkMTAxMTk2
YmI1OThiOGQ2NTFhYjgxYjEzMGQ5YzllYmYxM2I1YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlBs
dWdpbkluZm9TdG9yZS5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNr
ZXJTdGF0ZS5oIgpAQCAtMTcxNiw3ICsxNzE3LDI1IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpj
cmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50
CiB7CiAgICAgYXV0byBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1fc3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXJNYXAuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOwogICAgIEFTU0VSVChzcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5pc05ld0VudHJ5KTsKLSAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPiht
YWtlUmVmKCpjb25uZWN0aW9uKCkpLCBpZGVudGlmaWVyKTsKKyAgICBXZWJQYWdlUHJveHkqIHRh
cmdldFBhZ2UgPSBudWxscHRyOworICAgIGZvciAoYXV0byogcGFnZSA6IHBhZ2VzKCkpIHsKKyAg
ICAgICAgaWYgKHBhZ2UgJiYgcGFnZS0+d2ViUGFnZUlEKCkgPT0gaWRlbnRpZmllcikgeworICAg
ICAgICAgICAgdGFyZ2V0UGFnZSA9IHBhZ2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmICghdGFyZ2V0UGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
c3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmllciwg
W3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKGF1dG8mIG9yaWdpbiwgYXV0byYm
IGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrUGFnZSkgewor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
RGVjaXNpb246OkRlbnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgd2Vha1BhZ2UtPnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24ob3JpZ2luLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7CiAgICAgYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBpZGVudGlmaWVyLCAqc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVl
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNDJjZTg2YzRhYzFjMmU0NGRhZmU1NjhiNzMzZDgwNTlkOWMzYmJjZS4uYjU2MzQz
MDQ3OTQ3NTBhZWMzMDc0NzBmZDY4OTdjNmI1NWYzYTkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzcxLDYgKzEzNzEsNyBAQAog
CQk5MzNFODM1NTIzQTA3QzA2MDBERUYyODkgLyogV2ViSURCU2VydmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzNFODM1MzIzQTA3QkY4MDBERUYy
ODkgLyogV2ViSURCU2VydmVyLmggKi87IH07CiAJCTkzM0U4MzVBMjNBMUFFMjgwMERFRjI4OSAv
KiBXZWJJREJTZXJ2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTMzRTgzNTkyM0ExQURGNTAwREVGMjg5IC8qIFdlYklEQlNlcnZlck1l
c3NhZ2VzLmggKi87IH07CiAJCTkzM0U4MzVCMjNBMUI3NTAwMERFRjI4OSAvKiBXZWJJREJTZXJ2
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTMzRTgzNTgyM0ExQURGNTAwREVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi87IH07CisJCTkzNDI1ODlBMjU1QjUzNUEwMDU5RUVERCAvKiBNZWRp
YVBlcm1pc3Npb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzNDI1ODk4MjU1QjUzNEIwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25V
dGlsaXRpZXMuaCAqLzsgfTsKIAkJOTM0QjcyNDQxOUY1QjlCRTAwQUU5NkQ2IC8qIFdLQWN0aW9u
TWVudUl0ZW1UeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM0QjcyNDMxOUY1QjlCRTAwQUU5NkQ2IC8qIFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNTZG
MkRDMjE1MkI2QjUwMEU2RDVERiAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E1MzAyMUY0NzkzQjIwMERD
REMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uaCAqLzsgfTsKIAkJOTM1NkYyREQyMTUyQjZG
NjAwRTZENURGIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCQTA0RTAyMTUxQURGNDAwN0Y0NTVGIC8qIFdl
YlNXU2VydmVyQ29ubmVjdGlvbi5oICovOyB9OwpAQCAtMTQwNSw2ICsxNDA2LDkgQEAKIAkJOTNE
NkI3ODcyNTRDQ0Q4QzAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0Q2Qjc4NjI1NENDRDhCMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
TWVzc2FnZXMuaCAqLzsgfTsKIAkJOTNENkI3ODgyNTRDQ0Q5NDAwNThERDNBIC8qIFdlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3N0UyNTRDQ0FCQjAwNThERDNBIC8q
IFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oICovOyB9Owog
CQk5M0Q2Qjc4QTI1NENENDNFMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRDZCNzdEMjU0Q0NBQkIwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQk5M0Q2QjdCNDI1NTI2
OEQ1MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNENkI3QUYyNTUyNjhB
MTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCAqLzsgfTsK
KwkJOTNENkI3QjUyNTUyNjhENzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzRDZCN0IyMjU1MjY4QTIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyLmggKi87IH07CisJCTkzRDZCN0I5MjU1MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRTZBNEVFMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tI
aXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjU0OUI0MUUz
MTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5
IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHVibGljLCApOyB9OyB9OwogCQk5NTBGMjg4MDI1MjQxNEVBMDBCNzRGMUMgLyogV0tNb3Vz
ZURldmljZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NTBGMjg3RTI1MjQxNEU5MDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVy
LmggKi87IH07CkBAIC00NDU2LDYgKzQ0NjAsOCBAQAogCQk5MzNFODM1NzIzQTFBODcyMDBERUYy
ODkgLyogV2ViSURCU2VydmVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdl
YklEQlNlcnZlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMz
RTgzNTgyM0ExQURGNTAwREVGMjg5IC8qIFdlYklEQlNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJJREJTZXJ2ZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJREJTZXJ2ZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQk5MzNFODM1OTIzQTFBREY1MDBERUYyODkgLyogV2ViSURCU2VydmVyTWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViSURCU2VydmVyTWVzc2FnZXMuaDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSURCU2VydmVyTWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJOTM0MjU4OEYyNTU1RENBNTAwNTlFRURE
IC8qIE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1l
ZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTM0MjU4OTgyNTVCNTM0QjAwNTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0QjcyNDMxOUY1QjlCRTAwQUU5NkQ2
IC8qIFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0FjdGlvbk1lbnVJdGVtVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTM1RUVCOTUxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlQmFja0Zvcndh
cmRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1RUVCOTYxMjc3NjE2
RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00NTE2LDYgKzQ1MjIsMTEgQEAKIAkJOTNENkI3ODAyNTRDQ0FCQzAw
NThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2Qjc4MTI1NENDQUJDMDA1OEREM0EgLyog
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Q2Qjc4NjI1NENDRDhC
MDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QUYyNTUy
NjhBMTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdCMDI1NTI2OEEx
MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjIyNTUy
NjhBMjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdCNzI1NTM0QTEx
MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0I4MjU1MzRB
MTIwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0U2
QTRFRDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBfV0tIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzRjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmln
dXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NuYXBzaG90Q29u
ZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y1NDlCNTFFMzE3
NERBMDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0NTYsNiArNjQ2Nyw3IEBACiAJCQkJN0E4MjFG
NEQxRTJGNjc5RTAwNjA0NTc3IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5t
bSAqLywKIAkJCQlBMURGNjMxMTE4RTBCN0M4MDAzQTNFMkEgLyogTGVnYWN5RG93bmxvYWRDbGll
bnQuaCAqLywKIAkJCQlBMURGNjMxMDE4RTBCN0M4MDAzQTNFMkEgLyogTGVnYWN5RG93bmxvYWRD
bGllbnQubW0gKi8sCisJCQkJOTM0MjU4OEYyNTU1RENBNTAwNTlFRUREIC8qIE1lZGlhUGVybWlz
c2lvblV0aWxpdGllcy5tbSAqLywKIAkJCQk0MTEyODZFRjIxQzhBOTBDMDAzQTg1NTAgLyogTWVk
aWFVdGlsaXRpZXMuaCAqLywKIAkJCQk0MTEyODZGMDIxQzhBOTBEMDAzQTg1NTAgLyogTWVkaWFV
dGlsaXRpZXMubW0gKi8sCiAJCQkJMUFCQzNERjQxODk5RTQzNzAwNEYwNjI2IC8qIE5hdmlnYXRp
b25TdGF0ZS5oICovLApAQCAtOTE5OSw2ICs5MjExLDcgQEAKIAkJCQk1Q0VBQkEyQjIzMzMyNTE0
MDA3OTc3OTcgLyogTGVnYWN5R2xvYmFsU2V0dGluZ3MuY3BwICovLAogCQkJCTVDRUFCQTJBMjMz
MzI0NzcwMDc5Nzc5NyAvKiBMZWdhY3lHbG9iYWxTZXR0aW5ncy5oICovLAogCQkJCTMxNjA3RjM4
MTk2MjcwMDIwMDlCODdEQSAvKiBMZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuaCAqLywKKwkJCQk5
MzQyNTg5ODI1NUI1MzRCMDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggKi8s
CiAJCQkJQkM2RURBQTUxMTEyNzFDNjAwRTc2NzhCIC8qIFBhZ2VDbGllbnQuaCAqLywKIAkJCQkx
QUM3NTM3OTE4M0E5RkRBMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5jcHAgKi8sCiAJCQkJMUFD
NzUzN0ExODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuaCAqLywKQEAgLTkyMTgsNiAr
OTIzMSw5IEBACiAJCQkJQkMxMTFCMDgxMTJGNUUzQzAwMzM3QkFCIC8qIFJlc3BvbnNpdmVuZXNz
VGltZXIuY3BwICovLAogCQkJCTFBMzAwNjZDMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNwb25zaXZl
bmVzc1RpbWVyLmggKi8sCiAJCQkJNUNBOTg1NDkyMTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93
c2luZ1dhcm5pbmcuaCAqLywKKwkJCQk5M0Q2QjdCMDI1NTI2OEExMDA1OEREM0EgLyogU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAgKi8sCisJCQkJOTNENkI3QjIyNTUyNjhB
MjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCAqLywKKwkJ
CQk5M0Q2QjdBRjI1NTI2OEExMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdC5oICovLAogCQkJCTkzRDZCNzZCMjU0Qjg5NTgwMDU4REQzQSAvKiBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlci5jcHAgKi8sCiAJCQkJOTNENkI3NkMyNTRCODk1ODAwNThERDNBIC8qIFNw
ZWVjaFJlY29nbml0aW9uU2VydmVyLmggKi8sCiAJCQkJOTNENkI3N0EyNTRDOTg0RDAwNThERDNB
IC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2VzLmluICovLApAQCAtOTU1OSw2ICs5
NTc1LDggQEAKIAkJCQkzMzM2NzYzOTEzMEM5OURDMDA2QzlERTIgLyogV0tSZXNvdXJjZUNhY2hl
TWFuYWdlci5oICovLAogCQkJCTFBREU0NkIwMTk1NEVDNjEwMDBGNzk4NSAvKiBXS1Nlc3Npb25T
dGF0ZVJlZi5jcHAgKi8sCiAJCQkJMUFERTQ2QjExOTU0RUM2MTAwMEY3OTg1IC8qIFdLU2Vzc2lv
blN0YXRlUmVmLmggKi8sCisJCQkJOTNENkI3QjgyNTUzNEExMjAwNThERDNBIC8qIFdLU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwICovLAorCQkJCTkzRDZCN0I3MjU1MzRB
MTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggKi8s
CiAJCQkJNTFGODg2QTMxRjJDMjE0QTAwQzE5M0VGIC8qIFdLVGVzdGluZ1N1cHBvcnQuY3BwICov
LAogCQkJCTUxRjg4NkE0MUYyQzIxNEEwMEMxOTNFRiAvKiBXS1Rlc3RpbmdTdXBwb3J0LmggKi8s
CiAJCQkJMzE0ODg4RkUxRDkxQjExRDAwMzc3MDQyIC8qIFdLVGV4dENoZWNrZXIuY3BwICovLApA
QCAtMTExNTMsNiArMTExNzEsNyBAQAogCQkJCTFBNkQ4NkMyMURGNzUyNjUwMDc3NDVFOCAvKiBN
YWNoTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDNTZGNzkxMTU5OTU3RDAwMUNDQUY5
IC8qIE1hY2hQb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTI0QjVGMzExRjUzMUU4MDBDMzgy
NjkgLyogTWFjaFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTM0MjU4OUEyNTVCNTM1
QTAwNTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDdFMTlFRkMyM0Q0MDFGMTAwOTRGRkI0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0UxOUVGRDIzRDQwMUYxMDA5NEZGQjQgLyog
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMTM5NCw2ICsxMTQxMyw4IEBACiAJCQkJNTdCQkVBNkQyMkJDMEJGRTAwMjcz
OTk1IC8qIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3
NkNBOUQ3MjJCODYyMTgwMDMwMTQzQyAvKiBTT0F1dGhvcml6YXRpb25OU1VSTEV4dHJhcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODUyMkIzNTE2OTAwOEQwRThCIC8qIFNPQXV0aG9yaXph
dGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRDZCN0I1MjU1MjY4RDcwMDU4REQz
QSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5M0Q2QjdCNDI1NTI2OEQ1MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3NzIyNTRCQjUxOTAwNThERDNB
IC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4
NDI1NENDRDBFMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3ODUyNTRDQ0Q0MzAwNThERDNBIC8qIFNwZWVjaFJlY29n
bml0aW9uU2VydmVyTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTEyMDEwLDYg
KzEyMDMxLDcgQEAKIAkJCQk1MTNFNDYyRDFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2Vy
dmljZVBpY2tlckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Y1NDlCNDFFMzE3NEI3
MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU3RkQzMTg3MjJCMzUxNzAwMDhEMEU4QiAvKiBXS1NPQXV0aG9yaXphdGlvbkRlbGVnYXRlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5M0Q2QjdCOTI1NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E3OEZG
MzIyMjQxOTE5NjAwOTY0ODNFIC8qIFdLU3RvcmFnZUFjY2Vzc0FsZXJ0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzQwNzYwNjEyNEZGMDI3MDA2OEYyMEEgLyogV0tTdHJpbmcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDNDA3NjFBMTI0RkYwMzcwMDY4RjIwQSAvKiBXS1N0cmluZ0NGLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5j
cHAKaW5kZXggZWExNmIyZWQ3NjY1YjMyYmQzOWNhYzQ2MzJiNGI5YTUxYTc1ZDZiMS4uM2YzNTMx
OTRhMzJjM2U2NzliY2EyOWZiZWE4NTAzMWM5MjFlNGZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAKQEAgLTU5LDEwICs1OSw5IEBAIHZvaWQg
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpyZWdpc3RlckNsaWVudChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvCiAgICAgbV9jbGllbnRNYXAuYWRkKGNsaWVudC5pZGVudGlmaWVy
KCksIG1ha2VXZWFrUHRyKGNsaWVudCkpOwogfQogCi12b2lkIFdlYlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wg
Y29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVz
KQordm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0YXJ0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3Vs
dHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgY2xp
ZW50T3JpZ2luKQogewotICAgIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8g
aW5mbyB7IGNsaWVudElkZW50aWZpZXIsIGxhbmcsIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRz
LCBtYXhBbHRlcm5hdGl2ZXMgfTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6U3RhcnQoaW5mbykpOworICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjpTdGFydChjbGllbnRJZGVudGlmaWVyLCBsYW5nLCBjb250aW51b3VzLCBpbnRl
cmltUmVzdWx0cywgbWF4QWx0ZXJuYXRpdmVzLCBXVEZNb3ZlKGNsaWVudE9yaWdpbikpKTsKIH0K
IAogdm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnN0b3AoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVy
KQpAQCAtODAsNyArNzksNyBAQCB2b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6
aW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lYwogICAgIHNlbmQoTWVz
c2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpJbnZhbGlkYXRlKGNsaWVudElkZW50aWZp
ZXIpKTsKIH0KIAotdm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OmRpZFJlY2Vp
dmVVcGRhdGUoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmIHVwZGF0ZSkK
K3ZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpkaWRSZWNlaXZlVXBkYXRlKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYgdXBkYXRlKQogewogICAgIGF1dG8gY2xp
ZW50SWRlbnRpZmllciA9IHVwZGF0ZS5jbGllbnRJZGVudGlmaWVyKCk7CiAgICAgaWYgKCFtX2Ns
aWVudE1hcC5jb250YWlucyhjbGllbnRJZGVudGlmaWVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAppbmRleCAyOGRiZDE5N2NiM2Y3OThmYzc2MzE5OWVi
YjEyZGUxM2FlZDc1MWIxLi40NDNiMDRmMWNjYWFiMGEwZTZhYTUzODMxZTk4NWQxMGE2YTUzMzI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCkBAIC00
MywxMSArNDMsMTEgQEAgY2xhc3MgV2ViUGFnZTsKIAogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uSWRlbnRpZmllciA9IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyOwogCi1jbGFzcyBX
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRl
IElQQzo6TWVzc2FnZVNlbmRlciB7CitjbGFzcyBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLCBw
cml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24+
IGNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIAotICAgIHZv
aWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJl
c3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcykgZmluYWw7CisgICAgdm9pZCBzdGFydChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWlu
dDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJikgZmluYWw7CiAg
ICAgdm9pZCBzdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmluYWw7CiAKQEAgLTU2LDcgKzU2LDcgQEAg
cHJpdmF0ZToKICAgICB+V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uKCk7CiAKICAgICB2
b2lkIHJlZ2lzdGVyQ2xpZW50KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudCYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVVwZGF0
ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYmKSBmaW5hbDsKICAgICB2b2lkIGlu
dmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
Zmllcik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMTA1ZWI1OWNhNWQxZDYyNDYxZjc2
OTU2MGQxYTMyN2QwNDNjODBlLi44ZTU4YTI3YTlhNDliMWUzYjA1MjJjMzljZjhiYmRjZDQ4YmQ0
NDA1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMjAtMTEtMTMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sgZm9yIFNwZWVj
aFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTg0NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMv
SW5mby5wbGlzdDoKKyAgICAgICAgKiBNb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nl
ci9JbmZvLnBsaXN0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU3BlZWNoUmVjb2duaXRpb24ubW06IEFkZGVkLgorICAgICAgICAoLVtTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25VSURlbGVnYXRlIF93ZWJWaWV3OnJlcXVlc3RTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtTcGVlY2hSZWNvZ25pdGlvbk1lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjpk
aWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evc3BlZWNocmVjb2du
aXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25HcmFudGVkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdUUjo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uUmVxdWVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjb21wbGV0ZVNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMpOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52
b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6
CisKIDIwMjAtMTEtMTMgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtidWlsZC53ZWJraXQub3JnXSBVc2UgcHl0aG9uMyB0byBydW4gdHJhbnNmZXItdG8t
czMgc2NyaXB0CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvSW5mby5wbGlzdCBi
L1Rvb2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0CmluZGV4IDRlMmIxZjQ4MTlhZDUxMDNl
NGNmMTcwOWI3YzUzYTY2ZThiMzk1ZTUuLjMzYTNjYTFiZTczNTA4ZTFmZmNiMDI5NTdjODY0ZTg1
OTJkYWFhNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0Cisr
KyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0CkBAIC01Miw5ICs1MiwxMSBAQAog
CQkJPHN0cmluZz5FZGl0b3I8L3N0cmluZz4KIAkJPC9kaWN0PgogCTwvYXJyYXk+Ci0gICAgPGtl
eT5OU0NhbWVyYVVzYWdlRGVzY3JpcHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJlY29yZGluZyB2
aWRlbyBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KLSAgICA8a2V5Pk5TTWljcm9waG9u
ZVVzYWdlRGVzY3JpcHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBi
ZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlv
bjwva2V5PgorCTxzdHJpbmc+UmVjb3JkaW5nIHZpZGVvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwv
c3RyaW5nPgorCTxrZXk+TlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJp
bmc+UmVjb3JkaW5nIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+
TlNTcGVlY2hSZWNvZ25pdGlvblVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29n
bml6aW5nIGNhcHR1cmVkIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgogPC9k
aWN0PgogPC9wbGlzdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL01vYmlsZU1pbmlCcm93c2VyL01vYmls
ZU1pbmlCcm93c2VyL0luZm8ucGxpc3QgYi9Ub29scy9Nb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVN
aW5pQnJvd3Nlci9JbmZvLnBsaXN0CmluZGV4IDJkMWJjNTgyZmJlNzY1Y2ZkYzQxMDVlZmU5ZWNj
MWQ4MzIwY2M5NTkuLjUzODdiMzc0OWE0NzRmZTBiM2Q5YzYwOTVjYjI4ODE3YjhmOTIzMGEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL01vYmlsZU1pbmlCcm93c2VyL01vYmlsZU1pbmlCcm93c2VyL0luZm8u
cGxpc3QKKysrIGIvVG9vbHMvTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5m
by5wbGlzdApAQCAtNTQsOSArNTQsMTEgQEAKIAkJPGtleT5OU0FsbG93c0FyYml0cmFyeUxvYWRz
SW5XZWJDb250ZW50PC9rZXk+CiAJCTx0cnVlLz4KIAk8L2RpY3Q+Ci0gICAgPGtleT5OU0NhbWVy
YVVzYWdlRGVzY3JpcHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJlY29yZGluZyB2aWRlbyBvbiBi
ZWhhbGYgb2Ygd2Vic2l0ZXM8L3N0cmluZz4KLSAgICA8a2V5Pk5TTWljcm9waG9uZVVzYWdlRGVz
Y3JpcHRpb248L2tleT4KLSAgICA8c3RyaW5nPlJlY29yZGluZyBhdWRpbyBvbiBiZWhhbGYgb2Yg
d2Vic2l0ZXM8L3N0cmluZz4KKwk8a2V5Pk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlvbjwva2V5Pgor
CTxzdHJpbmc+UmVjb3JkaW5nIHZpZGVvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgor
CTxrZXk+TlNNaWNyb3Bob25lVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVjb3Jk
aW5nIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+TlNTcGVlY2hS
ZWNvZ25pdGlvblVzYWdlRGVzY3JpcHRpb248L2tleT4KKwk8c3RyaW5nPlJlY29nbml6aW5nIGNh
cHR1cmVkIGF1ZGlvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgogPC9kaWN0PgogPC9w
bGlzdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODk3ZjgyM2E1MWU3NjBhNDFjNmUzNmRh
ZDk1NDVmODYyMjhiZmE4OS4uNTQyMzE2NTg0ZjcyMTljZGMwNGM5ZDljMzNlNDQ4YzY0ZDBlN2Uz
MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgwMCw2ICs4MDAsOCBAQAogCQk5MzI5QUEy
OTFERTNGODFFMDAzQUJEMDcgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyOUFBMjgxREUzRjgxRTAwM0FCRDA3
IC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJOTMyQUU1M0QxRDM3MTA0NzAwNURG
RkFGIC8qIGZvY3VzLWlucHV0cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNTc1QzU1MUQzMDM2NkUwMDBENjA0RCAvKiBmb2N1cy1p
bnB1dHMuaHRtbCAqLzsgfTsKIAkJOTMzRDYzMUQxRkNCNzYyMDAwMzJFQ0Q2IC8qIEhhc2hlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzNENjMx
QjFGQ0I3NjE4MDAzMkVDRDYgLyogSGFzaGVyLmNwcCAqLzsgfTsKKwkJOTM0MjU4OUMyNTVCNjA5
QjAwNTlFRUREIC8qIFNwZWVjaFJlY29nbml0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0MjU4OUIyNTVCNjA5QTAwNTlFRUREIC8qIFNwZWVj
aFJlY29nbml0aW9uLm1tICovOyB9OworCQk5MzQyNTg5RTI1NUI2QTEyMDA1OUVFREQgLyogc3Bl
ZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0MjU4OUQyNTVC
NjZBMDAwNTlFRUREIC8qIHNwZWVjaHJlY29nbml0aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0
ZW5jZS5odG1sICovOyB9OwogCQk5MzU3ODZDQzIwRjZBMjcwMDAwMENERkMgLyogSW5kZXhlZERC
LnNxbGl0ZTMtd2FsIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzNEZBNUM1MjBGNjlGRUQwMDQwREMxQiAvKiBJbmRleGVkREIuc3FsaXRlMy13
YWwgKi87IH07CiAJCTkzNTc4NkNEMjBGNkEyOTEwMDAwQ0RGQyAvKiBJbmRleGVkREIuc3FsaXRl
MyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzRGQTVDNzIwRjY5RkVFMDA0MERDMUIgLyogSW5kZXhlZERCLnNxbGl0ZTMgKi87IH07CiAJCTkz
NTc4NkNFMjBGNkEyQTEwMDAwQ0RGQyAvKiBJbmRleGVkREIuc3FsaXRlMy1zaG0gaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RkE1QzYyMEY2
OUZFRDAwNDBEQzFCIC8qIEluZGV4ZWREQi5zcWxpdGUzLXNobSAqLzsgfTsKQEAgLTE2MTEsNiAr
MTYxMyw3IEBACiAJCQkJRjRGNDA1QkQxRDRDMEQxQzAwN0E5NzA3IC8qIHNraW5ueS1hdXRvcGxh
eWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzAx
QTIzRjIxMjY2MTU2NzAwQzlFRDU1IC8qIHNwYWNlYmFyLXNjcm9sbGluZy5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCUY0Q0ZDRERBMjQ5RkM5RTQwMDUyNzQ4MiAvKiBTcGFjZU9ubHku
b3RmIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTkzNDI1ODlFMjU1QjZBMTIwMDU5RUVERCAv
KiBzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKIAkJCQlFMTk0RTFCRDE3N0U1M0M3MDA5QzRENEUgLyogU3RvcExv
YWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJNTE1QkUxNkYxRDQyOEJCMTAwREQ3QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJOUJENkQzQTIxRjdCMjE4MzAwQkQ0OTYyIC8qIHN1
bnNldC1pbi1jdXBlcnRpbm8tMTAwcHgudGlmZiBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTI0
MDIsNiArMjQwNSw4IEBACiAJCTkzMjlBQTI4MURFM0Y4MUUwMDNBQkQwNyAvKiBUZXh0QnJlYWtJ
dGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0QnJl
YWtJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMzE0MDdCMTdC
NDQxOTAwMEYwODNCMSAvKiBEaWROb3RIYW5kbGVLZXlEb3duLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpZE5vdEhhbmRsZUtleURvd24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5MzNENjMxQjFGQ0I3NjE4MDAzMkVDRDYgLyogSGFzaGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhhc2hlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNDI1ODlCMjU1QjYwOUEwMDU5RUVERCAvKiBTcGVl
Y2hSZWNvZ25pdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFNwZWVjaFJlY29nbml0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzQy
NTg5RDI1NUI2NkEwMDA1OUVFREQgLyogc3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9u
LXBlcnNpc3RlbmNlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAic3BlZWNocmVj
b2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5MzRGQTVDNTIwRjY5RkVEMDA0MERDMUIgLyogSW5kZXhlZERCLnNx
bGl0ZTMtd2FsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gZmlsZTsgcGF0aCA9ICJJbmRleGVkREIuc3FsaXRlMy13YWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzRGQTVDNjIwRjY5RkVEMDA0MERDMUIgLyogSW5kZXhlZERCLnNxbGl0
ZTMtc2htICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
ZmlsZTsgcGF0aCA9ICJJbmRleGVkREIuc3FsaXRlMy1zaG0iOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzRGQTVDNzIwRjY5RkVFMDA0MERDMUIgLyogSW5kZXhlZERCLnNxbGl0ZTMg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBw
YXRoID0gSW5kZXhlZERCLnNxbGl0ZTM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
MzgzLDYgKzMzODgsNyBAQAogCQkJCTM3QkNBNjFCMUI1OTZCQTkwMDIwMTJDQSAvKiBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzSW5OZXdXaW5kb3dBY3Rpb25zLm1tICovLAogCQkJCTJEOUE1M0FFMUIz
MUZBOEQwMDc0RDVBQSAvKiBTaHJpbmtUb0ZpdC5tbSAqLywKIAkJCQkyREZGN0I2QzFEQTQ4N0FG
MDA4MTQ2MTQgLyogU25hcHNob3RTdG9yZS5tbSAqLywKKwkJCQk5MzQyNTg5QjI1NUI2MDlBMDA1
OUVFREQgLyogU3BlZWNoUmVjb2duaXRpb24ubW0gKi8sCiAJCQkJQ0RDMDkzMkQyMUM5OTM0NDAw
MzBDNEIwIC8qIFN0b3BTdXNwZW5kUmVzdW1lQWxsTWVkaWEubW0gKi8sCiAJCQkJNDE0QUQ2ODUy
Mjg1RDFCMDAwNzc3RjJEIC8qIFN0b3JhZ2VRdW90YS5tbSAqLywKIAkJCQk1MTVCRTE3MDFENDI4
QkQxMDBERDdDNjggLyogU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbSAqLywKQEAgLTM5MDMsNiArMzkw
OSw3IEBACiAJCQkJNDY1NkE3NTcyMEY5MDU0RjAwMDJFMjFGIC8qIFNpbXBsZVNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25zLTQuc3FsaXRlMyAqLywKIAkJCQlGNEY0MDVCQjFENEMwQ0Y4MDA3QTk3
MDcgLyogc2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLywKIAkJCQlG
NENGQ0REODI0OUZDOUQ5MDA1Mjc0ODIgLyogU3BhY2VPbmx5Lm90ZiAqLywKKwkJCQk5MzQyNTg5
RDI1NUI2NkEwMDA1OUVFREQgLyogc3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBl
cnNpc3RlbmNlLmh0bWwgKi8sCiAJCQkJNTE1QkUxNkUxRDQyODhGRjAwREQ3QzY4IC8qIFN0b3Jl
QmxvYlRvQmVEZWxldGVkLmh0bWwgKi8sCiAJCQkJOUJENkQzQTExRjdCMjAyMTAwQkQ0OTYyIC8q
IHN1bnNldC1pbi1jdXBlcnRpbm8tMTAwcHgudGlmZiAqLywKIAkJCQk5QkQ2RDNBMDFGN0IyMDIw
MDBCRDQ5NjIgLyogc3Vuc2V0LWluLWN1cGVydGluby0yMDBweC5wbmcgKi8sCkBAIC01NDUzLDYg
KzU0NjAsNyBAQAogCQkJCTUxMEE5MUY4MjREMzYyMjEwMEJGRDg5QyAvKiBTb255RHVhbFNob2Nr
My5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRUIxMjY0MjRDQTZCNjYwMDBDQjAzMCAvKiBTb255
RHVhbFNob2NrNC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjE1MUE0MTFBRTYwMDQ0N0M0
QyAvKiBTcGFjZWJhclNjcm9sbGluZy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5MzQyNTg5QzI1
NUI2MDlCMDA1OUVFREQgLyogU3BlZWNoUmVjb2duaXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk1N0Y0QUFBMDIwOEZBRUYwMDBBNjhFOUUgLyogU1NMS2V5R2VuZXJhdG9yLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODNCQzVBQzAyMEU2QzBERjAwRjU4NzlGIC8qIFN0YXJ0TG9hZEluRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRUIxMjY1MjRDQTZCNjYw
MDBDQjAzMCAvKiBTdGVlbFNlcmllc05pbWJ1cy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TcGVlY2hSZWNvZ25pdGlv
bi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3BlZWNoUmVjb2du
aXRpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMzYWQwMmI1NDE1MmMxMDU2ZTY0OGM2YWEyYmY2MTMxNGJh
MTQwNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvU3BlZWNoUmVjb2duaXRpb24ubW0KQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNp
bXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJp
dmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KKyNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXcuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0
aW9uLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK3N0YXRpYyBib29sIHNob3VsZEdy
YW50UGVybWlzc2lvblJlcXVlc3QgPSB0cnVlOworc3RhdGljIGJvb2wgcGVybWlzc2lvblJlcXVl
c3RlZCA9IGZhbHNlOworc3RhdGljIGJvb2wgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlOworc3RhdGlj
IFJldGFpblB0cjxXS1NjcmlwdE1lc3NhZ2U+IGxhc3RTY3JpcHRNZXNzYWdlOworCitAaW50ZXJm
YWNlIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblVJRGVsZWdhdGUgOiBOU09iamVjdDxXS1VJ
RGVsZWdhdGVQcml2YXRlPgorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBy
ZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3Jp
Z2luICopb3JpZ2luIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5k
bGVyOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
VUlEZWxlZ2F0ZQorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICop
b3JpZ2luIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVyCit7
CisgICAgcGVybWlzc2lvblJlcXVlc3RlZCA9IHRydWU7CisgICAgZGVjaXNpb25IYW5kbGVyKHNo
b3VsZEdyYW50UGVybWlzc2lvblJlcXVlc3QpOworfQorQGVuZAorCitAaW50ZXJmYWNlIFNwZWVj
aFJlY29nbml0aW9uTWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcj4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFNwZWVjaFJlY29nbml0aW9uTWVzc2FnZUhh
bmRsZXIKKy0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJv
bGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tT
Y3JpcHRNZXNzYWdlICopbWVzc2FnZQoreworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IHRy
dWU7CisgICAgbGFzdFNjcmlwdE1lc3NhZ2UgPSBtZXNzYWdlOworfQorQGVuZAorCituYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV2ViS2l0MiwgU3BlZWNoUmVjb2duaXRpb25Vc2Vy
UGVybWlzc2lvblBlcnNpc3RlbmNlKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5k
bGVyID0gYWRvcHROUyhbW1NwZWVjaFJlY29nbml0aW9uTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGlu
aXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3Jp
cHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworICAg
IGF1dG8gcHJlZmVyZW5jZXMgPSBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc107CisgICAgcHJl
ZmVyZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBZRVM7CisgICAgcHJlZmVyZW5j
ZXMuX3NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCA9IFlFUzsKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblVJRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKKworICAgIHNob3VsZEdyYW50UGVybWlzc2lvblJlcXVlc3QgPSBmYWxzZTsKKyAg
ICBwZXJtaXNzaW9uUmVxdWVzdGVkID0gZmFsc2U7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzcGVlY2hyZWNvZ25p
dGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UiXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAi
RXJyb3I6IG5vdC1hbGxvd2VkIC0gUGVybWlzc2lvbiBjaGVjayBmYWlsZWQiLCBbbGFzdFNjcmlw
dE1lc3NhZ2UgYm9keV0pOworICAgIEVYUEVDVF9UUlVFKHBlcm1pc3Npb25SZXF1ZXN0ZWQpOwor
CisgICAgLy8gUGVybWlzc2lvbiByZXN1bHQgaXMgcmVtZW1iZXJlZC4KKyAgICBwZXJtaXNzaW9u
UmVxdWVzdGVkID0gZmFsc2U7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7Cisg
ICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInN0YXJ0KCkiXTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAg
RVhQRUNUX1dLX1NUUkVRKEAiRXJyb3I6IG5vdC1hbGxvd2VkIC0gUGVybWlzc2lvbiBjaGVjayBm
YWlsZWQiLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworICAgIEVYUEVDVF9GQUxTRShwZXJt
aXNzaW9uUmVxdWVzdGVkKTsKKworICAgIC8vIFBlcm1pc3Npb24gcmVzdWx0IHdpbGwgYmUgY2xl
YXJlZCBhZnRlciBkb2N1bWVudCBjaGFuZ2VzLgorICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiYWJvdXQ6YmxhbmsiXV1dOworCisgICAgc2hvdWxkR3JhbnRQZXJtaXNzaW9uUmVxdWVz
dCA9IHRydWU7CisgICAgcGVybWlzc2lvblJlcXVlc3RlZCA9IGZhbHNlOworICAgIHJlY2VpdmVk
U2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAi
c3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlIl07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZXJtaXNzaW9uUmVxdWVzdGVkKTsKKyAgICAvLyBTaG91
bGQgbm90IGdldCBlcnJvciBtZXNzYWdlIGFzIHBlcm1pc3Npb24gaXMgZ3JhbnRlZC4KKyAgICBF
WFBFQ1RfRkFMU0UocmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9zcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRt
bCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evc3BlZWNocmVjb2duaXRp
b24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRjYTZlZDBj
ODRmNGJjZTdlODZhZDEzY2RmN2YzMDQyMGZiZmNhMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Evc3BlZWNocmVjb2duaXRpb24tdXNlci1w
ZXJtaXNzaW9uLXBlcnNpc3RlbmNlLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPGJvZHkgb25sb2Fk
PSJzdGFydCgpIj4KKzxzY3JpcHQ+CisKK3ZhciBzcGVlY2hSZWNvZ25pdGlvbiA9IG51bGw7Citm
dW5jdGlvbiBzdGFydCgpCit7CisgICAgc3RvcCgpOworCisgICAgc3BlZWNoUmVjb2duaXRpb24g
PSBuZXcgU3BlZWNoUmVjb2duaXRpb24oKTsKKyAgICBzcGVlY2hSZWNvZ25pdGlvbi5vbmVycm9y
ID0gKGV2ZW50KSA9PiB7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRl
c3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJFcnJvcjogIiArIGV2ZW50LmVycm9yICsgIiAtICIgKyAg
ZXZlbnQubWVzc2FnZSk7CisgICAgfQorICAgIHNwZWVjaFJlY29nbml0aW9uLm9uZW5kID0gKGV2
ZW50KSA9PiB7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5k
bGVyLnBvc3RNZXNzYWdlKCJFbmQiKTsKKyAgICB9CisgICAgc3BlZWNoUmVjb2duaXRpb24uc3Rh
cnQoKTsKK30KKworZnVuY3Rpb24gc3RvcCgpCit7CisgICAgaWYgKCFzcGVlY2hSZWNvZ25pdGlv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgc3BlZWNoUmVjb2duaXRpb24uc3RvcCgpOworICAg
IHNwZWVjaFJlY29nbml0aW9uID0gbnVsbDsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCBmZTg1MzlmMzUxOGZlNjU3MGQ3NDM1OGRhNzcwMDRh
ZTA5YmY5Y2RkLi5kMGZmODE2NWZiMTk2MTkyNmNiNmI1ZjVlODMxMzU5MjFmNTIzYTVkIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTQwMyw0ICs0MDMsNyBAQCBpbnRlcmZhY2UgVGVz
dFJ1bm5lciB7CiAgICAgdW5kZWZpbmVkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50T3ZlcnJp
ZGVUaW1lckZvclRlc3RpbmcoYm9vbGVhbiB2YWx1ZSk7CiAgICAgdW5kZWZpbmVkIHNldFByaXZh
dGVDbGlja01lYXN1cmVtZW50Q29udmVyc2lvblVSTEZvclRlc3RpbmcoRE9NU3RyaW5nIHVybCk7
CiAgICAgdW5kZWZpbmVkIG1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JU
ZXN0aW5nKCk7CisKKyAgICAvLyBTcGVlY2hSZWNvZ25pdGlvbgorICAgIHVuZGVmaW5lZCBzZXRJ
c1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbGVhbiB2YWx1ZSk7CiB9Owpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHAKaW5kZXggMDc3ZTIyYjM2Njc1NjAyNDE0NjgwNzY1NzJhNTYxMzc4MGFiMjY3OC4uNWIx
OTU0MmQwNjliODBlZmNmZDcyZjRkOWIwMzExODQzYTBjN2RhNCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yMDY5
LDYgKzIwNjksMTEgQEAgdm9pZCBUZXN0UnVubmVyOjpkaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxs
YmFjaygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhEaWRTZXRBcHBCb3VuZERvbWFpbnND
YWxsYmFja0lEKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkdyYW50ZWQoYm9vbCBncmFudGVkKQoreworICAgIHBvc3RTeW5jaHJvbm91c1Bh
Z2VNZXNzYWdlKCJzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQiLCBncmFu
dGVkKTsKK30KKwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIH0gLy8gbmFt
ZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaAppbmRleCAxNGU1M2M1MTNhMjkyYjFhMDAzY2VmZDIzNTM3YjYwOTQ4OGE3
YWRhLi5iMzAyYzhlMzIxMGM0NmNjYTI2OGY1ZmRjZjU5Mzk4Y2M3M2QyOTY5IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAt
NTE1LDYgKzUxNSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByaXZhdGVDbGlja01lYXN1cmVt
ZW50Q29udmVyc2lvblVSTEZvclRlc3RpbmcoSlNTdHJpbmdSZWYpOwogICAgIHZvaWQgbWFya1By
aXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKIAorICAgIHZvaWQg
c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wpOworCiBwcml2YXRl
OgogICAgIFRlc3RSdW5uZXIoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAppbmRleCAxNmFkMTdlMjRiYTNlYjFkZTc3Mzc5ZWZiODUyNGI4NjZlM2M3YjY3Li43
YmE2NzJhYzlmOTI1ZjYzMjVhYTA3ZmE2ZjE2MWE1MDIzNWZiYjhjIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUg
PFdlYktpdC9XS1Byb3RlY3Rpb25TcGFjZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0
ci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1NlY3VyaXR5T3JpZ2luUmVmLmg+CisjaW5jbHVkZSA8
V2ViS2l0L1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaD4KICNpbmNsdWRl
IDxXZWJLaXQvV0tUZXh0Q2hlY2tlci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1VSTC5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5oPgpAQCAtMjk3LDYgKzI5
OCwyMSBAQCBzdGF0aWMgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKCkKIHsKIH0KIAor
c3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdChXS1BhZ2VSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2tSZWYgY2FsbGJhY2spCit7CisgICAgVGVzdENvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLmNvbXBsZXRlU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2soY2FsbGJh
Y2spOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpjb21wbGV0ZVNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNoZWNrKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYg
Y2FsbGJhY2spCit7CisgICAgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0Nv
bXBsZXRlKGNhbGxiYWNrLCBtX2lzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCk7
Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uR3JhbnRlZChib29sIGdyYW50ZWQpCit7CisgICAgbV9pc1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkdyYW50ZWQgPSBncmFudGVkOworfQorCiBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6
OmNyZWF0ZU90aGVyUGFnZShXS1BhZ2VSZWYsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmln
dXJhdGlvbiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmlnYXRpb25BY3Rpb24sIFdLV2luZG93
RmVhdHVyZXNSZWYgd2luZG93RmVhdHVyZXMsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7CiAg
ICAgUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3ID0gc3RhdGljX2Nhc3Q8UGxhdGZvcm1XZWJW
aWV3Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwpAQCAtNjUwLDggKzY2Niw4IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0
T3B0aW9ucyYgb3B0aW9ucykKICAgICBXS0hUVFBDb29raWVTdG9yZURlbGV0ZUFsbENvb2tpZXMo
V0tXZWJzaXRlRGF0YVN0b3JlR2V0SFRUUENvb2tpZVN0b3JlKHdlYnNpdGVEYXRhU3RvcmUoKSks
IG51bGxwdHIsIG51bGxwdHIpOwogCiAgICAgcGxhdGZvcm1DcmVhdGVXZWJWaWV3KGNvbmZpZ3Vy
YXRpb24uZ2V0KCksIG9wdGlvbnMpOwotICAgIFdLUGFnZVVJQ2xpZW50VjE0IHBhZ2VVSUNsaWVu
dCA9IHsKLSAgICAgICAgeyAxNCwgbV9tYWluV2ViVmlldy5nZXQoKSB9LAorICAgIFdLUGFnZVVJ
Q2xpZW50VjE1IHBhZ2VVSUNsaWVudCA9IHsKKyAgICAgICAgeyAxNSwgbV9tYWluV2ViVmlldy5n
ZXQoKSB9LAogICAgICAgICAwLCAvLyBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjAKICAgICAgICAgMCwgLy8gc2hvd1BhZ2UKICAgICAgICAgMCwgLy8gY2xvc2UKQEAgLTcyNCw3
ICs3NDAsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMo
Y29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgICAgIDAsIC8vIGRpZFJlc2lnbklucHV0
RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZQogICAgICAgICAwLCAvLyByZXF1ZXN0U3Rv
cmFnZUFjY2Vzc0NvbmZpcm0KICAgICAgICAgc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFu
ZE1vdGlvbkFjY2VzcywKLSAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbAorICAgICAg
ICBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsLAorICAgICAgICBkZWNpZGVQb2xpY3lGb3JTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0CiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdl
VUlDbGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAmcGFnZVVJQ2xpZW50LmJhc2UpOwogCkBA
IC0xMDU0LDYgKzEwNzEsOCBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25z
aXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAgIG1fc2VydmVy
VHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50ID0gMDsKICAgICBtX3Nob3VsZERpc21p
c3NKYXZhU2NyaXB0QWxlcnRzQXN5bmNocm9ub3VzbHkgPSBmYWxzZTsKIAorICAgIHNldElzU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCh0cnVlKTsKKwogICAgIGF1dG8gbG9hZEFi
b3V0QmxhbmsgPSBbdGhpc10gewogICAgICAgICBtX2RvbmVSZXNldHRpbmcgPSBmYWxzZTsKICAg
ICAgICAgV0tQYWdlTG9hZFVSTChtX21haW5XZWJWaWV3LT5wYWdlKCksIGJsYW5rVVJMKCkpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDA5MTVlZDhjZmI1ZWM0
YzU3OGUyODhhOTk4OTVhNDhiMDllYzQzZGEuLmI1N2I4ZjdhMDU5NTIzZWNmODc3YWIwMTk3MjBk
NGRiZTU4ZmNiNWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAg
LTM1MSw2ICszNTEsOSBAQCBwdWJsaWM6CiAKICAgICBXS1VSTFJlZiBjdXJyZW50VGVzdFVSTCgp
IGNvbnN0OwogCisgICAgdm9pZCBjb21wbGV0ZVNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNo
ZWNrKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYpOworICAgIHZvaWQg
c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wpOworCiBwcml2YXRl
OgogICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlUGFnZUNv
bmZpZ3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnMmKTsKICAgICBXS1JldGFpblB0cjxXS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKGNvbnN0IFRl
c3RPcHRpb25zJikgY29uc3Q7CkBAIC02NDAsNiArNjQzLDggQEAgcHJpdmF0ZToKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBib29sIG1faGFzU2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
IHsgZmFsc2UgfTsKICNlbmRpZgorCisgICAgYm9vbCBtX2lzU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uR3JhbnRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggZjI0N2ZiNTZhMDU2ODNk
MjhmZTM4ZjQ1OTZkMzNmM2EwODQ3ZWIxYy4uMjliNjUyYzYwMzllZThjNTMwOWZmMGRlYWFlZTgw
ZjU4NDUzOTAyYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAK
QEAgLTEzNDUsNiArMTM0NSwxMSBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0
aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgInNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRl
ZCIpKSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRJc1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbGVhblZhbHVlKG1lc3NhZ2VCb2R5KSk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYzNjNkYTA2YmY5MzE4MGYyMDhhYjE1
MjdlNTk5Yzk3ZjMyMDNkMDkuLjRkZTQyMTA5YzI2NzgzYWMxZGIzNmMwNmJjYTZiOTE0OTg5Njdm
M2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0xMS0xMyAgU2lodWkgTGl1ICA8c2lodWlf
bGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVj
ayBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxODQ3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMjI2Mzg+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIFRlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9u
LWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zcGVlY2hyZWNvZ25p
dGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc3BlZWNo
cmVjb2duaXRpb24vcmVzb3VyY2VzL3JlbW92ZWQtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVjb2duaXRpb24taW4tcmVtb3ZlZC1p
ZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaHJlY29nbml0
aW9uL3N0YXJ0LXJlY29nbml0aW9uLWluLXJlbW92ZWQtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTExLTEyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZvcmNlIHdoZWVs
IGV2ZW50IGxpc3RlbmVycyBvbiB0aGUgcm9vdCB0byBiZSBwYXNzaXZlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCAxN2UwMGUzOTc1YzlhZWVkZTdjNjM1YTA1MTlhZjc3ODE2Yjk0NjY4Li4yZjM3NjQ2
Zjg1YmNlYjZiZDQzMjZkMzYyOGU5OWJkOTk5OTc1N2M4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTE3Nyw2ICsxNzcsNyBAQCBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLWFm
dGVyLXN0b3JhZ2UtY3Jhc2guaHRtbCBbIFNraXAgXQogc3RvcmFnZS9pbmRleGVkZGIvSURCT2Jq
ZWN0LWxlYWsuaHRtbCBbIFNraXAgXQogZmFzdC9mb3Jtcy9jYWxsLXRleHQtZGlkLWNoYW5nZS1p
bi10ZXh0LWZpZWxkLXdoZW4tdHlwaW5nLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvaW4tYXBw
LWJyb3dzZXItcHJpdmFjeS8gWyBTa2lwIF0KK2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlz
c2lvbi1lcnJvci5odG1sIFsgU2tpcCBdCiAKICMgT25seSBwYXJ0aWFsIHN1cHBvcnQgb24gQ29j
b2EgcGxhdGZvcm1zLgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zcGVlY2gtYXBp
LyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlv
bi9wZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
cmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUz
ZTc5NGRhMGE5YzhjODI4NWQyYmEzOTZmNDllNDVjYThjMTc1MwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVmVyaWZ5IHRoYXQgZXJyb3IgZXZlbnQgaXMgZmly
ZWQgd2hlbiBwZXJtaXNzaW9uIGlzIGRlbmllZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgcmVjb2duaXRpb24gPSBuZXcgU3BlZWNoUmVjb2duaXRpb24oKSBkaWQgbm90
IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgcmVjb2duaXRpb24uc3RhcnQoKSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK1BBU1MgZXZlbnQuZXJyb3IgaXMgIm5vdC1hbGxvd2VkIgorUEFTUyBldmVu
dC5tZXNzYWdlIGlzICJQZXJtaXNzaW9uIGNoZWNrIGZhaWxlZCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUyZDAzMzMwZTIwMzkwNDEwNjg3ZDU3ZTZjMTY3OWZhZjY4Y2I4NDEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24tZXJy
b3IuaHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCBlcnJvciBldmVudCBpcyBmaXJlZCB3aGVu
IHBlcm1pc3Npb24gaXMgZGVuaWVkLiIpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICB0ZXN0UnVubmVyLnNldElzU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uR3JhbnRlZChmYWxzZSk7Cit9CisKK3Nob3VsZE5vdFRocm93KCJyZWNv
Z25pdGlvbiA9IG5ldyBTcGVlY2hSZWNvZ25pdGlvbigpIik7CitzaG91bGROb3RUaHJvdygicmVj
b2duaXRpb24uc3RhcnQoKSIpOworcmVjb2duaXRpb24ub25lcnJvciA9IChldmVudCkgPT4gewor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQuZXJyb3IiLCAibm90LWFsbG93ZWQiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50Lm1lc3NhZ2UiLCAiUGVybWlzc2lvbiBj
aGVjayBmYWlsZWQiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Jlc291cmNlcy9yZW1vdmVkLWlmcmFt
ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9yZXNvdXJjZXMvcmVt
b3ZlZC1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzg3ZDExMGFlMzcyNjM2YTUwMGU3YTM0YmE2
MjdmZjA1NzNmMTgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hy
ZWNvZ25pdGlvbi9yZXNvdXJjZXMvcmVtb3ZlZC1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDE0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBz
dGFydFJlY29nbml0aW9uKCkgeworICAgIHJlY29nbml0aW9uID0gbmV3IFNwZWVjaFJlY29nbml0
aW9uKCk7CisgICAgcGFyZW50LnJlbW92ZUZyYW1lKCk7CisgICAgcmVjb2duaXRpb24uc3RhcnQo
KTsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9z
dGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJlY29nbml0aW9uLWluLXJlbW92ZWQt
aWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWYwZGE0M2M4MzIzMGFjMTQ5ZTA4MTAw
OTU0OWVjZDliNDkyYjhmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVl
Y2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlmcmFtZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVmVyaWZ5IHRoYXQgcHJvY2VzcyBkb2VzIG5vdCBjcmFz
aCB3aGVuIHN0YXJ0aW5nIHJlY29nbml0aW9uIGluIGEgcmVtb3ZlZCBpZnJhbWUuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGlmcmFtZS5wYXJlbnROb2RlLnJlbW92ZUNo
aWxkKGlmcmFtZSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGlmcmFtZS5jb250ZW50
V2luZG93LnN0YXJ0UmVjb2duaXRpb24oKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJlY29nbml0aW9uLWlu
LXJlbW92ZWQtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9u
L3N0YXJ0LXJlY29nbml0aW9uLWluLXJlbW92ZWQtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM3
NmU1MzI3NWQwZTAzMDI5NWY1ZDA0MjRiYTZkZGQ2OWMxYmMzNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVjb2duaXRpb24taW4t
cmVtb3ZlZC1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCBwcm9jZXNzIGRvZXMg
bm90IGNyYXNoIHdoZW4gc3RhcnRpbmcgcmVjb2duaXRpb24gaW4gYSByZW1vdmVkIGlmcmFtZS4i
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ2lmcmFtZScpWzBdOworICAgIHNob3VsZE5vdFRocm93KCJpZnJhbWUuY29u
dGVudFdpbmRvdy5zdGFydFJlY29nbml0aW9uKCkiKTsgCit9CisKK2Z1bmN0aW9uIHJlbW92ZUZy
YW1lKCkKK3sKKyAgICBzaG91bGROb3RUaHJvdygiaWZyYW1lLnBhcmVudE5vZGUucmVtb3ZlQ2hp
bGQoaWZyYW1lKSIpOworfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHRlc3Qs
IGZhbHNlKTsKKzwvc2NyaXB0PgorPGlmcmFtZSBzcmM9InJlc291cmNlcy9yZW1vdmVkLWlmcmFt
ZS5odG1sIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGE1
Nzc4ZDgxMjdiYTYzMWM0YTAxNTRlZWEwMmJhYmZlNzM1MDIxNmYuLjdkNTM0YTA2YTIyYTNiMjk3
Yjc1NDNkNDFiODY5ZjU0ZWYwYmNjMmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3drMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0
RXhwZWN0YXRpb25zCkBAIC04MDMsNCArODAzLDUgQEAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbG9zZWQtcG9ydC1kZWxheS5odG1sIFsgUGFzcyBdCiAKICMgV2ViS2l0MiBvbmx5
LgoganMvdGhyb3ctbGFyZ2Utc3RyaW5nLW9vbS5odG1sIFsgUGFzcyBdCitmYXN0L3NwZWVjaHJl
Y29nbml0aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbCBbIFBhc3MgXQogZnVsbHNjcmVlbi9mdWxs
LXNjcmVlbi1lbnRlci13aGlsZS1leGl0aW5nLmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414104</attachid>
            <date>2020-11-13 16:28:15 -0800</date>
            <delta_ts>2020-11-13 18:17:15 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-218476-20201113162808.patch</filename>
            <type>text/plain</type>
            <size>141857</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNhNzViNThmM2I5NTMxYTMzNzM0YjJh
ZjE2MjZmMDczMzViNmI2MjkuLmJiNTMzNzNiZGE5MmE0ZjljMzkzMjc2NTYzNGNhNWRmODM4OGU2
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMTEtMTMgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24gY2hlY2sg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIyNjM4Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiB3dGYvUGxh
dGZvcm1IYXZlLmg6CisKIDIwMjAtMTEtMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgRm9yY2Ugd2hlZWwgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSBy
b290IHRvIGJlIHBhc3NpdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NTIwOWNjODY2NTA2ZmMwMWVlNDBkYmJi
ZDIzZmNiYzJiNDliZDZhLi4yYTY1OTU1NTZjYjVkZGEwMmVkMjkwMGRjYmIwZDg1ZDMxYjZhYzJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMTEtMTMgIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHBlcm1pc3Npb24g
Y2hlY2sgZm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjIy
NjM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgVGVz
dHM6IGZhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJlY29nbml0aW9uLWluLXJlbW92
ZWQtaWZyYW1lLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uOjpzdGFydFJlY29n
bml0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OjpjcmVh
dGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
UmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Ojpj
bGllbnRPcmlnaW4gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uUmVxdWVzdEluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm86OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGU6OmVycm9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uVXBkYXRlOjpyZXN1bHQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uVXBkYXRlLmg6CisgICAgICAgICogcGFnZS9EdW1teVNwZWVjaFJlY29nbml0
aW9uUHJvdmlkZXIuaDoKKwogMjAyMC0xMS0xMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBGb3JjZSB3aGVlbCBldmVudCBsaXN0ZW5lcnMgb24gdGhl
IHJvb3QgdG8gYmUgcGFzc2l2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyN2JhNjZjODcyNTEwZThhMmY3YjE2NjBi
Y2RhOWQ1NjNmNjRjMGFjLi42NGVkYTk2NWRhZjI4MzcwZjQ1MDVlNTVlODc4NjZkNTQyMjRlMWQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAyMC0xMS0xMyAgU2lodWkgTGl1ICA8c2lo
dWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBj
aGVjayBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxODQ3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMjI2
Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBJbnRy
b2R1Y2UgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciwgd2hpY2ggY2hlY2tzIGFu
ZCByZXF1ZXN0cyBzcGVlY2ggcmVjb2duaXRpb24gcGVybWlzc2lvbnMgYmVmb3JlIAorICAgICAg
ICB3ZSBhY3R1YWxseSBzdGFydCBjYXB0dXJpbmcgYXVkaW8gYW5kIHBlcmZvcm0gcmVjb2duaXRp
b24uIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgaXMgcGVyLXBhZ2UsIGxpa2UK
KyAgICAgICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuIFRoZSBjaGVja3MgaW5jbHVkZToKKyAg
ICAgICAgMS4gU2FuZGJveCByZXF1aXJlbWVudCBmb3IgbWljcm9waG9uZQorICAgICAgICAyLiBU
Q0MgY2hlY2sgZm9yIG1pY3JvcGhvbmUKKyAgICAgICAgMy4gVENDIGNoZWNrIGZvciBTRlNwZWVj
aFJlY29nbml6ZXIKKyAgICAgICAgNC4gVXNlciBwZXJtaXNzaW9uIG9uIHNwZWVjaCByZWNvZ25p
dGlvbiBmb3Igb3JpZ2luCisKKyAgICAgICAgQWRkIGEgZGVsZWdhdGUgZnVuY3Rpb24gZm9yIHJl
cXVlc3RpbmcgdXNlciBwZXJtaXNzaW9uLiBCeSBkZWZhdWx0LCB1c2VyIHBlcm1pc3Npb24gaXMg
bm90IGdyYW50ZWQuCisKKyAgICAgICAgQVBJIHRlc3Q6IFdlYktpdDIuU3BlZWNoUmVjb2duaXRp
b25Vc2VyUGVybWlzc2lvblBlcnNpc3RlbmNlCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9j
L1dLQmFzZS5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgorICAgICAgICAo
QVBJOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
UmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJ
Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlVUlDbGllbnQuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
YWxsYmFja0dldFR5cGVJRCk6CisgICAgICAgIChXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBf
c3BlZWNoUmVjb2duaXRpb25FbmFibGVkXSk6CisgICAgICAgICgtW1dLUHJlZmVyZW5jZXMgX3Nl
dFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL01lZGlh
UGVybWlzc2lvblV0aWxpdGllcy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmNoZWNrU2Fu
ZGJveFJlcXVpcmVtZW50Rm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrVXNhZ2VEZXNj
cmlwdGlvblN0cmluZ0ZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpjaGVja1VzYWdlRGVzY3Jp
cHRpb25TdHJpbmdGb3JTcGVlY2hSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJLaXQ6OnJlcXVl
c3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6Y2hlY2tBVkNhcHR1
cmVBY2Nlc3NGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6cmVxdWVzdFNwZWVjaFJlY29nbml0
aW9uQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6Y2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZp
Y2VBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpwZXJtaXR0ZWRUb0NhcHR1cmVBdWRpbyk6Cisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpw
ZXJtaXR0ZWRUb0NhcHR1cmVWaWRlbyk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0U3lzdGVtVmFsaWRhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OnJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmg6IENvcGllZCBmcm9t
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OmNvbXB1dGVNaWNyb3Bob25lQWNj
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6Y29tcHV0ZVNwZWVjaFJlY29nbml0aW9uU2VydmljZUFj
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0
OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjp+U3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXI6OnJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25NYW5hZ2VyOjpzdGFydE5leHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6c3RhcnRQcm9jZXNzaW5nUmVx
dWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFn
ZXI6OmNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVz
dFNwZWVjaFJlY29nbml0aW9uU2VydmljZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RNaWNyb3Bob25lQWNjZXNzKToK
KyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVx
dWVzdFVzZXJQZXJtaXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y29tcGxldGUpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpvcmlnaW4g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0OjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpjb21wbGV0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOjpT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKFdlYktp
dDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6U3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdG9wKToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFib3J0KToKKyAgICAgICAgKFdlYktpdDo6
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdG9wUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjphYm9ydFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0
OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c2VuZFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVk
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6
cmVtb3ZlUGVuZGluZ1JlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcjo6c3RhcnRQb2Nlc3NpbmdSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0b3BQcm9jZXNzaW5nUmVxdWVz
dCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZENoYW5nZU1haW5Eb2N1bWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJl
Y29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbjo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb246OmRpZFJlY2VpdmVVcGRhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmg6CisKIDIwMjAt
MTEtMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
Rm9yY2Ugd2hlZWwgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSByb290IHRvIGJlIHBhc3NpdmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1IYXZlLmgKaW5kZXggNTI4YmM3NjI3MjU0NjAzYTZhMzM4MTM3YWQ4MjIwMjI3NGE4
YzQ5ZC4uZTI0NGQ4NTk0ODUwY2RiZDA0YmFmYWQwZjE3YmE0NzZkNmEzODE4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1IYXZlLmgKQEAgLTc2MiwzICs3NjIsMTEgQEAKICAgICB8fCAoUExBVEZPUk0oQVBQTEVU
VikgJiYgX19UVl9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCiAjZGVmaW5lIEhB
VkVfQVZPVVRQVVRERVZJQ0VfU1BBVElBTEFVRElPIDEKICNlbmRpZgorCisjaWYgUExBVEZPUk0o
SU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApCisjZGVmaW5lIEhBVkVfU1BFRUNI
UkVDT0dOSVpFUiAxCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFD
Q0FUQUxZU1QpIHx8IFBMQVRGT1JNKE1BQykKKyNkZWZpbmUgSEFWRV9BVkNBUFRVUkVERVZJQ0Ug
MQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvbi5jcHAKaW5kZXggNTFhMzJjZGFhY2FhMWVkMDExNDI3NjdkMjJlMzAyNTI2ZGVi
ZjU5NS4uZjExN2MxZmIxYjViZDA0YWU3NTUyNTY1ZmJhYTg4OTFjNWMxYWViYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNwZWVjaFJl
Y29nbml0aW9uLmgiCiAKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC02
OSw3ICs3MCw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNwZWVjaFJlY29nbml0aW9uOjpzdGFydFJl
Y29nbml0aW9uKCkKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFVua25vd25FcnJvciwgIlJlY29nbml0aW9uIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBj
b25uZWN0aW9uIl9zIH07CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnN0YXJ0KGlkZW50aWZpZXIoKSwg
bV9sYW5nLCBtX2NvbnRpbnVvdXMsIG1faW50ZXJpbVJlc3VsdHMsIG1fbWF4QWx0ZXJuYXRpdmVz
KTsKKyAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnN0YXJ0KGlkZW50aWZpZXIoKSwgbV9s
YW5nLCBtX2NvbnRpbnVvdXMsIG1faW50ZXJpbVJlc3VsdHMsIG1fbWF4QWx0ZXJuYXRpdmVzLCBD
bGllbnRPcmlnaW4geyBkb2N1bWVudC50b3BPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LnNlY3Vy
aXR5T3JpZ2luKCkuZGF0YSgpIH0pOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3RhcnRpbmc7CiAg
ICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKaW5kZXggM2ZkMmQzM2FjYTAy
MDUyNjM0MDU4ZDBmYjU2NTJlYjcwMDdmYTUyYS4uNjllZWJjMjkzZDViN2RlMWUzOGNlZWFkMmEz
ZWUzOGYwMGQxY2E1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKQEAgLTMxLDE1ICszMSwxNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudDsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOworc3RydWN0IENsaWVudE9y
aWdpbjsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uIDogcHVibGljIFJlZkNv
dW50ZWQ8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudCYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJp
bVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWlu
dDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBDbGllbnRPcmlnaW4mJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzdG9wKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNv
bnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlVXBkYXRlKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYpID0gMDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QuY3BwCmluZGV4IDRhNWU4YzE2MzAzYzE4
NjVjMmIxZmZjZTliNTZlZTI2MjAzYTdmYzUuLmQzYmQ3YTk0YTQyYjlkNWUwNTkyMGM1YmZlN2Ri
YzQ0YTkxODg3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LmNwcApAQCAtMjgsMTEgKzI4LDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiBTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3Q6OmNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZv
JiYgcmVxdWVzdEluZm8pCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0KFdURk1vdmUocmVxdWVzdEluZm8pKSk7Ci19Ci0KIFNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdDo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdEluZm8mJiByZXF1ZXN0SW5mbykKICAgICA6IG1faW5mbyhXVEZNb3ZlKHJlcXVlc3RJbmZv
KSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0LmgKaW5kZXggNWNlZWEwMWM3Mzg2NTU2ZDQyNTFmOGM4Yjk1YzMx
MjRiYWZjNjAxMi4uOWFhZGU2MTcxZTA2MmY1YThjYzNhMTYyODkyOTk0OTlkZmQ5ZDBhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdD4geworY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4geworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0PiBjcmVhdGUoU3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0SW5mbyYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyYmKTsKIAogICAgIFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faW5mby5jbGllbnRJZGVudGlmaWVyOyB9CiAgICAgY29uc3Qg
U3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmxhbmc7IH0KICAgICBib29sIGNv
bnRpbnVvdXMoKSBjb25zdCB7IHJldHVybiBtX2luZm8uY29udGludW91czs7IH0KICAgICBib29s
IGludGVyaW1SZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLmludGVyaW1SZXN1bHRzOyB9
CiAgICAgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLm1h
eEFsdGVybmF0aXZlczsgfQorICAgIGNvbnN0IENsaWVudE9yaWdpbiBjbGllbnRPcmlnaW4oKSBj
b25zdCB7IHJldHVybiBtX2luZm8uY2xpZW50T3JpZ2luOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhw
bGljaXQgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdElu
Zm8mJik7Ci0KICAgICBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIG1faW5mbzsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uUmVxdWVzdEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdEluZm8uaAppbmRleCBhYjFlMWFlNmVmMzg4OThjMjFhMmE5ZGY3YWYx
ZjAwN2UyNGIxN2QwLi4xZWZlOWUwNjQ2ZTc0N2NiNTVkN2NjYjBmN2IxOGZmNWUwYjNjNGMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3RJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0zNSw2ICszNiw3IEBAIHN0cnVjdCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvIHsKICAg
ICBib29sIGNvbnRpbnVvdXMgeyBmYWxzZSB9OwogICAgIGJvb2wgaW50ZXJpbVJlc3VsdHMgeyBm
YWxzZSB9OwogICAgIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcyB7IDEgfTsKKyAgICBDbGllbnRP
cmlnaW4gY2xpZW50T3JpZ2luOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBkZWNvZGUoRGVjb2RlciYp
OwpAQCAtNDMsNyArNDUsNyBAQCBzdHJ1Y3QgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyB7
CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJ
bmZvOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGNs
aWVudElkZW50aWZpZXIgPDwgbGFuZyA8PCBjb250aW51b3VzIDw8IGludGVyaW1SZXN1bHRzIDw8
IG1heEFsdGVybmF0aXZlczsKKyAgICBlbmNvZGVyIDw8IGNsaWVudElkZW50aWZpZXIgPDwgbGFu
ZyA8PCBjb250aW51b3VzIDw8IGludGVyaW1SZXN1bHRzIDw8IG1heEFsdGVybmF0aXZlcyA8PCBj
bGllbnRPcmlnaW47CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC03NCwxMiArNzYs
MTggQEAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbz4gU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2RlKERlY28KICAgICBpZiAoIW1heEFsdGVybmF0aXZlcykK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIE9wdGlvbmFsPENsaWVudE9yaWdp
bj4gY2xpZW50T3JpZ2luOworICAgIGRlY29kZXIgPj4gY2xpZW50T3JpZ2luOworICAgIGlmICgh
Y2xpZW50T3JpZ2luKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgcmV0dXJu
IHt7CiAgICAgICAgIFdURk1vdmUoKmNsaWVudElkZW50aWZpZXIpLAogICAgICAgICBXVEZNb3Zl
KCpsYW5nKSwKICAgICAgICAgV1RGTW92ZSgqY29udGludW91cyksCiAgICAgICAgIFdURk1vdmUo
KmludGVyaW1SZXN1bHRzKSwKLSAgICAgICAgV1RGTW92ZSgqbWF4QWx0ZXJuYXRpdmVzKQorICAg
ICAgICBXVEZNb3ZlKCptYXhBbHRlcm5hdGl2ZXMpLAorICAgICAgICBXVEZNb3ZlKCpjbGllbnRP
cmlnaW4pCiAgICAgfX07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmNwcAppbmRleCA1MzRlZGEzZDI0Nzdl
ZTFjNmYxN2VjNmFmMTc5MzI2YmI3OWYwMjA3Li45YTlhN2Q5MjA2OTY1NWM0NTcxNjA3ZGRhMThj
NGU2YjMzMGY3MmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFN0cmlu
ZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUg
ZW51bWVyYXRpb25WYWx1ZSkKIAogU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgU3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZShTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSB0eXBl
KQogewotICAgIHJldHVybiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7IGNsaWVudElkZW50aWZp
ZXIsIHR5cGUgfTsKKyAgICByZXR1cm4gU3BlZWNoUmVjb2duaXRpb25VcGRhdGUgeyBjbGllbnRJ
ZGVudGlmaWVyLCB0eXBlLCBXVEY6Ok1vbm9zdGF0ZSgpIH07CiB9CiAKIFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIGNvbnN0
IFNwZWVjaFJlY29nbml0aW9uRXJyb3ImIGVycm9yKQpAQCAtODMsNyArODMsNyBAQCBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUoU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZQogU3BlZWNoUmVjb2duaXRpb25FcnJvciBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZTo6ZXJyb3IoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fY29u
dGVudCwKLSAgICAgICAgW10gKFNwZWVjaFJlY29nbml0aW9uRXJyb3ImIGVycm9yKSB7IHJldHVy
biBlcnJvcjsgfSwKKyAgICAgICAgW10gKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uRXJyb3ImIGVy
cm9yKSB7IHJldHVybiBlcnJvcjsgfSwKICAgICAgICAgW10gKGNvbnN0IGF1dG8mKSB7IHJldHVy
biBTcGVlY2hSZWNvZ25pdGlvbkVycm9yKCk7IH0KICAgICApOwogfQpAQCAtOTEsNyArOTEsNyBA
QCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjplcnJvcigp
IGNvbnN0CiBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiBTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZTo6cmVzdWx0KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbiht
X2NvbnRlbnQsCi0gICAgICAgIFtdIChWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRh
PiYgZGF0YSkgeyByZXR1cm4gZGF0YTsgfSwKKyAgICAgICAgW10gKGNvbnN0IFZlY3RvcjxTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdERhdGE+JiBkYXRhKSB7IHJldHVybiBkYXRhOyB9LAogICAgICAg
ICBbXSAoY29uc3QgYXV0byYpIHsgcmV0dXJuIFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dERhdGE+IHsgfTsgfQogICAgICk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAppbmRleCAzYTgyYmY2YmFmNTRj
ZTBjNGIxMzM0ZWY2ZjhiNTg5M2YzYjg5ODJlLi44OTE0OTE3OTNmNGUwMWVjMmZmNjAxMDdjYjQ4
NWY0ODhmYTQzZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKQEAgLTUyLDggKzUyLDggQEAgU3RyaW5nIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSk7CiBj
bGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIGNyZWF0ZShTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUp
OwotICAgIHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVFcnJvcihTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTcGVlY2hSZWNvZ25p
dGlvbkVycm9yJik7Ci0gICAgc3RhdGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIGNyZWF0ZVJl
c3VsdChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBW
ZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSBjcmVhdGVFcnJvcihTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
IGNyZWF0ZVJlc3VsdChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
LCBjb25zdCBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiYpOwogCiAgICAgU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyOyB9CiAgICAgU3BlZWNoUmVjb2du
aXRpb25VcGRhdGVUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KQEAgLTY1LDcg
KzY1LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHVzaW5nIENvbnRlbnQgPSBWYXJpYW50
PFdURjo6TW9ub3N0YXRlLCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yLCBWZWN0b3I8U3BlZWNoUmVj
b2duaXRpb25SZXN1bHREYXRhPj47Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU3BlZWNo
UmVjb2duaXRpb25VcGRhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlLCBDb250ZW50ID0gV1RGOjpNb25vc3Rh
dGUoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUoU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25V
cGRhdGVUeXBlLCBDb250ZW50KTsKIAogICAgIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIgbV9jbGllbnRJZGVudGlmaWVyOwogICAgIFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlVHlwZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15
U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EdW1teVNw
ZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaAppbmRleCBjZjllNzJiOTNjMDY0YTU1ZGRkZmFiN2Iz
Y2FmYjQ4OTBlMDM1ZjQ2Li4yNDBhYTNkNDg0YTk3M2I0NDExMmFlZjYxZThlYWFhODQ3YjU4ZDE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Q
cm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHVtbXlTcGVlY2hSZWNvZ25pdGlv
blByb3ZpZGVyLmgKQEAgLTM5LDEwICszOSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEdW1teVNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbigpKTsKICAg
ICAgICAgfQogICAgICAgICB2b2lkIHJlZ2lzdGVyQ2xpZW50KFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudCYpIGZpbmFsIHsgfQotICAgICAgICB2b2lkIHN0YXJ0KFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJv
b2wsIHVpbnQ2NF90KSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBib29sLCBib29s
LCB1aW50NjRfdCwgQ2xpZW50T3JpZ2luJiYpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIHN0b3Ao
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikgZmluYWwgeyB9CiAg
ICAgICAgIHZvaWQgYWJvcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllcikgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZVVwZGF0ZShjb25zdCBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZSYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVV
cGRhdGUoU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmJikgZmluYWwgeyB9CiAgICAgfTsKICAgICBE
dW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAgICAgU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uJiBzcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYktpdC9IZWFkZXJz
LmNtYWtlCmluZGV4IDQzNjM5NzBmMWFlMDM2NmVhMDM5NTU3YTI3M2Q4YjgzZTY2MTY0NDguLjNl
N2U1OTU4NGZmMjgwMDBlMTBkOTlhZTQ0YWJlYzNmZmEyMTM5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0hlYWRlcnMuY21ha2UK
QEAgLTk5LDYgKzk5LDcgQEAgc2V0KFdlYktpdF9QVUJMSUNfRlJBTUVXT1JLX0hFQURFUlMKICAg
ICBVSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Nl
c3Npb25TdGF0ZVJlZi5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2suaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Rlc3RpbmdTdXBwb3J0
LmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5oCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElP
YmplY3QuaAppbmRleCBiN2I3ZWU2ODhhYTZmZjg5MDVhMjFiNzc4ZDRkOTYzNTIyNTE2Mzk3Li4w
NTU2OTM0M2EwZGMzYWFkNmMyZDMzNDAzZThlMjliYTg2ZmU0Y2FiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0xNjgsNiArMTY4LDcgQEAgcHVibGljOgogICAgICAgICBS
dW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lciwKICAgICAgICAgUnVuSmF2YVNjcmlwdENv
bmZpcm1SZXN1bHRMaXN0ZW5lciwKICAgICAgICAgUnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExp
c3RlbmVyLAorICAgICAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaywKICAg
ICAgICAgVGV4dENoZWNrZXIsCiAgICAgICAgIFVSTFNjaGVtZVRhc2ssCiAgICAgICAgIFVzZXJD
b250ZW50Q29udHJvbGxlciwKQEAgLTQxNiw2ICs0MTcsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBF
bnVtVHJhaXRzPEFQSTo6T2JqZWN0OjpUeXBlPiB7CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBl
OjpSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lciwKICAgICAgICAgQVBJOjpPYmplY3Q6
OlR5cGU6OlJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIEFQSTo6
T2JqZWN0OjpUeXBlOjpSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXIsCisgICAgICAg
IEFQSTo6T2JqZWN0OjpUeXBlOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaywK
ICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlRleHRDaGVja2VyLAogICAgICAgICBBUEk6Ok9i
amVjdDo6VHlwZTo6VVJMU2NoZW1lVGFzaywKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OlVz
ZXJDb250ZW50Q29udHJvbGxlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXgg
OWU4MmU1NjAwMTg3ZWMxY2Y4YWY5YmVlNzllNzFkMGU4ZDdmZDE1YS4uODRlZTZjMjg4ZjZkMmVi
ZDUxZmE3M2VhNzI3MDhmMzI5NDZiZGQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tCYXNl
LmgKQEAgLTE0MSw2ICsxNDEsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNp
dGVEYXRhQ29uZmlndXJhdGlvblN0b3JlKiBXS1dlYnNpdGVEYXRhU3RvcmVDbwogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tXZWJzaXRlRGF0YVN0b3JlKiBXS1dlYnNpdGVEYXRhU3RvcmVS
ZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNpdGVQb2xpY2llcyogV0tXZWJz
aXRlUG9saWNpZXNSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dpbmRvd0ZlYXR1
cmVzKiBXS1dpbmRvd0ZlYXR1cmVzUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjayogV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFja1JlZjsKIAogLyogV2ViS2l0MiBCdW5kbGUgdHlwZXMgKi8KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKaW5kZXggMDQ4MWJjYzM0MmNhY2RjZWExODliOTgwMDk4ZjlmNWM4MDVjMjA4NC4uNWYy
YjE0NzM1YmQyZmY2MWE3YjEwNzg4YmI4MmRmYTU2NWI0YzIyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0y
OTEsNiArMjkxLDcgQEAgVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCiBVSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVBy
b3h5LmNwcAogVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmNwcAorVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuY3BwCiBVSVByb2Nlc3MvVGV4dENo
ZWNrZXIuY3BwCiBVSVByb2Nlc3MvVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcAogVUlQcm9jZXNz
L1VzZXJNZWRpYVBlcm1pc3Npb25DaGVja1Byb3h5LmNwcApAQCAtNDA0LDYgKzQwNSw3IEBAIFVJ
UHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLUHJvdGVj
dGlvblNwYWNlLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3Bw
CiBVSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuY3BwCitVSVByb2Nlc3MvQVBJL0Mv
V0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAKIFVJUHJvY2Vzcy9BUEkv
Qy9XS1RleHRDaGVja2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250cm9s
bGVyUmVmLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZVJl
Zi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA1ZDliOTNkMTdhZjI0YmVhYTAyMGUyODUy
OTg1NjkwOWJjYjZlYWYyLi42MGVkNTFkM2UyYzk4ZDY3NjA2NDE0NzAxMTgxY2Q2NzEyZjRlOTBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zNzQsNiArMzc0LDcgQEAgVUlQcm9jZXNzL0Nv
Y29hL0dsb2JhbEZpbmRJblBhZ2VTdGF0ZS5tbQogVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5n
RGVsZWdhdGUubW0KIFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQubW0KIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVV0aWxpdGllcy5tbQorVUlQcm9jZXNzL0Nv
Y29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQogVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KIFVJUHJv
Y2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggYWE3ZDg5YzAxZTczNTIwY2UzZWUwNDIy
NmI5YWU4NTk3MGJmYWE2ZS4uYTBkYmE4MzcyN2E5NmFkNjEwNDdiOWVkMTViNjRiMzEzNGVlZGFi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTIwMiw2
ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBBUEk6Okluc3BlY3RvckNvbmZpZ3Vy
YXRpb246OmNyZWF0ZSgpOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lG
b3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
LmgKaW5kZXggYjUyYzQ0YmFlYTlhY2Y5ZmMwMzMyZDVhOWYzNzM1NmU5ZDIzODYyOS4uMThjYmZk
NWI3NGViODc3MGE1NzhmMTVjOGEwMTYxNDk5MDIxNDU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKQEAgLTc5LDYgKzc5LDcgQEAgY2xhc3MgQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyOwogY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdDsKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrOwogY2xhc3Mg
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OwpAQCAtMTUyLDYgKzE1Myw3
IEBAIFdLX0FERF9BUElfTUFQUElORyhXS1ByZWZlcmVuY2VzUmVmLCBXZWJQcmVmZXJlbmNlcykK
IFdLX0FERF9BUElfTUFQUElORyhXS1Byb3RlY3Rpb25TcGFjZVJlZiwgV2ViUHJvdGVjdGlvblNw
YWNlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXJS
ZWYsIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyKQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLU2Vzc2lvblN0YXRlUmVmLCBBUEk6OlNlc3Npb25TdGF0ZSkKK1dLX0FERF9BUElfTUFQUElO
RyhXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrUmVmLCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DYWxsYmFjaykKIFdLX0FERF9BUElfTUFQUElORyhXS1RleHRDaGVja2Vy
UmVmLCBXZWJUZXh0Q2hlY2tlcikKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJDb250ZW50Q29u
dHJvbGxlclJlZiwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkpCiBXS19BRERfQVBJX01B
UFBJTkcoV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUmVmLCBBUEk6OkNvbnRlbnRSdWxlTGlz
dFN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggZTc2
ZTAwNzgwYTQxNDY2MjA1ZWEyOWY2MTIwNTUzYjZiM2E2ZTQ0OS4uYTRlMWEwMWQ4NzU2ZTU2Mjg3
MjA2MTgwMzQ1NjQyNTkyN2NjZWYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIlBsdWdpbkluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiUHJpbnRJbmZvLmgiCisjaW5j
bHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLUGFnZVBvbGljeUNsaWVudEludGVybmFsLmgiCiAjaW5j
bHVkZSAiV0tQYWdlUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNJbnRlcm5hbC5oIgpAQCAtMTE1LDcg
KzExNiw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VQb2xpY3lDbGll
bnRCYXNlPiB7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tQYWdlVUlD
bGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZVVJQ2xpZW50VjAsIFdL
UGFnZVVJQ2xpZW50VjEsIFdLUGFnZVVJQ2xpZW50VjIsIFdLUGFnZVVJQ2xpZW50VjMsIFdLUGFn
ZVVJQ2xpZW50VjQsIFdLUGFnZVVJQ2xpZW50VjUsIFdLUGFnZVVJQ2xpZW50VjYsIFdLUGFnZVVJ
Q2xpZW50VjcsIFdLUGFnZVVJQ2xpZW50VjgsIFdLUGFnZVVJQ2xpZW50VjksIFdLUGFnZVVJQ2xp
ZW50VjEwLCBXS1BhZ2VVSUNsaWVudFYxMSwgV0tQYWdlVUlDbGllbnRWMTIsIFdLUGFnZVVJQ2xp
ZW50VjEzLCBXS1BhZ2VVSUNsaWVudFYxND4gVmVyc2lvbnM7CisgICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPFdLUGFnZVVJQ2xpZW50VjAsIFdLUGFnZVVJQ2xpZW50VjEsIFdLUGFnZVVJQ2xpZW50VjIs
IFdLUGFnZVVJQ2xpZW50VjMsIFdLUGFnZVVJQ2xpZW50VjQsIFdLUGFnZVVJQ2xpZW50VjUsIFdL
UGFnZVVJQ2xpZW50VjYsIFdLUGFnZVVJQ2xpZW50VjcsIFdLUGFnZVVJQ2xpZW50VjgsIFdLUGFn
ZVVJQ2xpZW50VjksIFdLUGFnZVVJQ2xpZW50VjEwLCBXS1BhZ2VVSUNsaWVudFYxMSwgV0tQYWdl
VUlDbGllbnRWMTIsIFdLUGFnZVVJQ2xpZW50VjEzLCBXS1BhZ2VVSUNsaWVudFYxNCwgV0tQYWdl
VUlDbGllbnRWMTU+IFZlcnNpb25zOwogfTsKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpA
QCAtMjExMCw2ICsyMTExLDEzIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6
OlByZXNlbnRlZCk7CiAgICAgICAgIH0KICNlbmRpZgorICAgICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiBwYWdl
LCBBUEk6OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50LmRl
Y2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QodG9BUEkoJnBh
Z2UpLCB0b0FQSSgmb3JpZ2luKSwgdG9BUEkoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkucHRyKCkpKTsKKyAgICAg
ICAgfQogICAgIH07CiAKICAgICB0b0ltcGwocGFnZVJlZiktPnNldFVJQ2xpZW50KG1ha2VVbmlx
dWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlVUlDbGllbnQuaAppbmRleCBiNjM4ODE1NWNkMzAzNmU2NjYxMTBmMTkyNTYxNmFm
ZDM3ZTg2OGJhLi42MzYzNTU1NjRkMDBiMTEyMmE4N2UyMjlhMzBiOTRkN2U5OWU0ZWY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VVSUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVVJQ2xpZW50LmgKQEAgLTEz
Niw2ICsxMzYsNyBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZXNpZ25JbnB1dEVsZW1lbnRT
dHJvbmdQYXNzd29yZEFwcGVhcmFuY2VDYWxsYmFjaykoV0tQYQogdHlwZWRlZiBib29sICgqV0tQ
YWdlU2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NhbGxiYWNrKShX
S1BhZ2VSZWYgcGFnZSwgV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbiwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7CiAKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVJ1bldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxDYWxsYmFjaykoKTsKK3R5cGVkZWYgdm9pZCAoKldLUGFnZURlY2lkZVBvbGlj
eUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFjaykoV0tQYWdlUmVm
IHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYgdG9wT3JpZ2luLCBXS1NwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNhbGxiYWNrUmVmIGNhbGxiYWNrKTsKIAogLy8gRGVwcmVjYXRlZAogdHlwZWRl
ZiBXS1BhZ2VSZWYgKCpXS1BhZ2VDcmVhdGVOZXdQYWdlQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMCkoV0tQYWdlUmVmIHBhZ2UsIFdLRGljdGlvbmFyeVJlZiBmZWF0dXJlcywgV0tFdmVu
dE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbyk7CkBAIC0xMzUzLDYgKzEzNTQsMTE3IEBAIHR5cGVkZWYgc3Ry
dWN0IFdLUGFnZVVJQ2xpZW50VjE0IHsKICAgICBXS1BhZ2VSdW5XZWJBdXRoZW50aWNhdGlvblBh
bmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bldlYkF1dGhlbnRpY2F0
aW9uUGFuZWw7CiB9IFdLUGFnZVVJQ2xpZW50VjE0OwogCit0eXBlZGVmIHN0cnVjdCBXS1BhZ2VV
SUNsaWVudFYxNSB7CisgICAgV0tQYWdlVUlDbGllbnRCYXNlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOworCisgICAgLy8gVmVyc2lvbiAwLgor
ICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAg
ICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAg
IFdLUGFnZVVJQ2xpZW50Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2hvd1BhZ2U7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZTsKKyAgICBXS1BhZ2VU
YWtlRm9jdXNDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRha2VGb2N1czsKKyAgICBXS1BhZ2VGb2N1c0NhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzOworICAgIFdLUGFnZVVuZm9jdXND
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5m
b2N1czsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9y
VXNlV2l0aFYwICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNl
V2l0aFYwOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMCAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZv
clVzZVdpdGhWMDsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMCAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMDsKKyAgICBXS1BhZ2VTZXRTdGF0dXNUZXh0Q2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXR1c1RleHQ7CisgICAgV0tQYWdl
TW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYwICAg
ICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwOworICAg
IFdLUGFnZU1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMCAgICAgbWlzc2luZ1BsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMDsKKyAgICBXS1BhZ2VEaWROb3RIYW5kbGVLZXlFdmVudENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpZE5vdEhhbmRsZUtleUV2ZW50OworICAgIFdLUGFnZURp
ZE5vdEhhbmRsZVdoZWVsRXZlbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlkTm90SGFuZGxlV2hlZWxFdmVudDsKKyAgICBXS1BhZ2VHZXRUb29sYmFyc0FyZVZpc2li
bGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJzQXJlVmlz
aWJsZTsKKyAgICBXS1BhZ2VTZXRUb29sYmFyc0FyZVZpc2libGVDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldFRvb2xiYXJzQXJlVmlzaWJsZTsKKyAgICBXS1BhZ2VH
ZXRNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1lbnVCYXJJc1Zpc2libGU7CisgICAgV0tQYWdlU2V0TWVudUJhcklzVmlzaWJsZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNZW51QmFySXNWaXNpYmxl
OworICAgIFdLUGFnZUdldFN0YXR1c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFnZVNldFN0YXR1
c0JhcklzVmlzaWJsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
U3RhdHVzQmFySXNWaXNpYmxlOworICAgIFdLUGFnZUdldElzUmVzaXphYmxlQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZXNpemFibGU7CisgICAgV0tQ
YWdlU2V0SXNSZXNpemFibGVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRJc1Jlc2l6YWJsZTsKKyAgICBXS1BhZ2VHZXRXaW5kb3dGcmFtZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFdpbmRvd0ZyYW1lOwor
ICAgIFdLUGFnZVNldFdpbmRvd0ZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0V2luZG93RnJhbWU7CisgICAgV0tQYWdlUnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsQ2FsbGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWNiAgICBydW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWNjsKKyAgICBXS1BhZ2VVSUNs
aWVudENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZERyYXc7CisgICAgV0tQYWdlVUlDbGllbnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlRGlkU2Nyb2xsOworICAgIFdLUGFnZUV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhjZWVkZWREYXRhYmFzZVF1b3RhOworICAgIFdLUGFnZVJ1bk9wZW5QYW5lbENhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuT3BlblBhbmVsOworICAg
IFdLUGFnZURlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDYWxsYmFj
ayAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdDsK
KyAgICBXS1BhZ2VIZWFkZXJIZWlnaHRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlYWRlckhlaWdodDsKKyAgICBXS1BhZ2VGb290ZXJIZWlnaHRDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlckhlaWdo
dDsKKyAgICBXS1BhZ2VEcmF3SGVhZGVyQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRyYXdIZWFkZXI7CisgICAgV0tQYWdlRHJhd0Zvb3RlckNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3Rm9vdGVy
OworICAgIFdLUGFnZVByaW50RnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJpbnRGcmFtZTsKKyAgICBXS1BhZ2VVSUNsaWVudENhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bk1vZGFsOwor
ICAgIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW51c2VkMTsgLy8gVXNlZCB0byBiZSBkaWRDb21wbGV0ZVJ1YmJlckJh
bmRGb3JNYWluRnJhbWUKKyAgICBXS1BhZ2VTYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVy
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNG
b2xkZXI7CisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0X3VuYXZhaWxh
YmxlOworCisgICAgLy8gVmVyc2lvbiAxLgorICAgIFdLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFj
a19kZXByZWNhdGVkRm9yVXNlV2l0aFYxICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3UGFnZV9k
ZXByZWNhdGVkRm9yVXNlV2l0aFYxOworICAgIFdLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnQ7CisgICAgV0tQYWdlRGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RDYWxsYmFjayAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdDsKKyAgICBXS1BhZ2VVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRDYWxs
YmFja19kZXByZWNhdGVkRm9yVXNlV2l0aFYxIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tl
ZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxOworCisgICAgLy8gVmVyc2lvbiAyLgorICAgIFdLUGFn
ZVNob3dDb2xvclBpY2tlckNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2hvd0NvbG9yUGlja2VyOworICAgIFdLUGFnZUhpZGVDb2xvclBpY2tlckNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUNvbG9yUGlja2VyOwor
ICAgIFdLUGFnZVVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZENhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkOworCisgICAgLy8g
VmVyc2lvbiAzLgorICAgIFdLUGFnZVBpbm5lZFN0YXRlRGlkQ2hhbmdlQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkU3RhdGVEaWRDaGFuZ2U7CisKKyAgICAv
LyBWZXJzaW9uIDQuCisgICAgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQyOyAvLyBVc2VkIHRvIGJlIGRpZEJl
Z2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcy4KKyAgICB2b2lkKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNl
ZDM7IC8vIFVzZWQgdG8gYmUgZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MuCisgICAgdm9pZCog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnVzZWQ0OyAvLyBVc2VkIHRvIGJlIGRpZENhbmNlbFRyYWNraW5nUG90ZW50aWFsTG9u
Z01vdXNlUHJlc3MuCisgICAgV0tQYWdlSXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2VDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZTsKKwor
ICAgIC8vIFZlcnNpb24gNS4KKyAgICBXS1BhZ2VEZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdENhbGxiYWNrICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZvclVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0OworICAgIFdLUGFnZURpZENsaWNrQXV0b0ZpbGxCdXR0b25DYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRv
bjsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFja19kZXByZWNhdGVkRm9yVXNl
V2l0aFY1ICAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0
aFY1OworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2tfZGVwcmVjYXRlZEZv
clVzZVdpdGhWNSAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm1fZGVwcmVjYXRlZEZvclVz
ZVdpdGhWNTsKKyAgICBXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0Q2FsbGJhY2tfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWNSAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRQcm9tcHRfZGVwcmVjYXRlZEZv
clVzZVdpdGhWNTsKKyAgICB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZDU7IC8vIFVzZWQgdG8gYmUgbWVkaWFT
ZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UuCisKKyAgICAvLyBWZXJzaW9uIDYuCisgICAgV0tQYWdl
Q3JlYXRlTmV3UGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVOZXdQYWdlOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydENhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0Owor
ICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm07CisgICAgV0tQYWdlUnVuSmF2YVNj
cmlwdFByb21wdENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5K
YXZhU2NyaXB0UHJvbXB0OworICAgIFdLQ2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yT3JpZ2luOworCisgICAgLy8gVmVyc2lvbiA3LgorICAgIFdLUGFnZVJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsOworICAgIFdLRnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVlbk1heVJldHVyblRv
SW5saW5lOworCisgICAgLy8gVmVyc2lvbiA4LgorICAgIFdLUmVxdWVzdFBvaW50ZXJMb2NrQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFBvaW50
ZXJMb2NrOworICAgIFdLRGlkTG9zZVBvaW50ZXJMb2NrQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGlkTG9zZVBvaW50ZXJMb2NrOworCisgICAgLy8gVmVy
c2lvbiA5LgorICAgIFdLSGFuZGxlQXV0b3BsYXlFdmVudENhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQXV0b3BsYXlFdmVudDsKKworICAgIC8vIFZl
cnNpb24gMTAuCisgICAgV0tIYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZUNhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICBoYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENo
YW5nZTsKKyAgICBXS0RpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVn
cm91bmRDYWxsYmFjayAgICAgICAgIGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hp
bGVJbkZvcmVncm91bmQ7CisKKyAgICAvLyBWZXJzaW9uIDExLgorICAgIFdLUGFnZURpZFJlc2ln
bklucHV0RWxlbWVudFN0cm9uZ1Bhc3N3b3JkQXBwZWFyYW5jZUNhbGxiYWNrICAgICAgICAgZGlk
UmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlOworCisgICAgLy8gVmVy
c2lvbiAxMi4KKyAgICBXS1BhZ2VSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm1DYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybTsKKwor
ICAgIC8vIFZlcnNpb24gMTMuCisgICAgV0tQYWdlU2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlv
bkFuZE1vdGlvbkFjY2Vzc0NhbGxiYWNrICAgICAgICAgICBzaG91bGRBbGxvd0RldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uQWNjZXNzOworCisgICAgLy8gVmVyc2lvbiAxNC4KKyAgICBXS1BhZ2VS
dW5XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWw7CisKKyAgICAvLyBWZXJzaW9uIDE1LgorICAg
IFdLUGFnZURlY2lkZVBvbGljeUZvclNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3RD
YWxsYmFjayAgICAgZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVx
dWVzdDsKKyAgICAKK30gV0tQYWdlVUlDbGllbnRWMTU7CisKICNpZmRlZiBfX2NwbHVzcGx1cwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBjYzhmOWEzNWRiODQxMWUwMzg1YTdhZTE1NDlhMzlhZjgxMzJlZDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suaCIKKworI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
blJlcXVlc3QuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKworV0tUeXBlSUQgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0dl
dFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNhbGxiYWNrOjpBUElUeXBlKTsKK30KKwordm9pZCBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNhbGxiYWNrQ29tcGxldGUoV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
a1JlZiBzcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjaywgYm9vbCBncmFudGVkKQor
eworICAgIHJldHVybiB0b0ltcGwoc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sp
LT5jb21wbGV0ZShncmFudGVkKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iOGFlYWZjNjk4NGJhOTZmNTQ4OTJlNzMyYWZlYTNhMDYzYzlj
NzJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oCkBAIC0wLDAgKzEsNDAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKwor
I2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tU
eXBlSUQgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja0dldFR5cGVJRCh2b2lk
KTsKKworV0tfRVhQT1JUIHZvaWQgV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFj
a0NvbXBsZXRlKFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2tSZWYgc3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2ssIGJvb2wgZ3JhbnRlZCk7CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCmluZGV4IDMyMDVlMjg3Mzc3NGQ5NzkxZTVjY2E3N2Iy
YjA2M2JjMzcxZGE3ZjUuLmFkYzYyMzY2MWJmODI5NmVlMTY1YjBmOTZlODkxMzE0OTgyMjU2MjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVu
Y2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVu
Y2VzLm1tCkBAIC0xNDM3LDYgKzE0MzcsMTYgQEAgc3RhdGljIFdlYkNvcmU6OkVkaXRhYmxlTGlu
a0JlaGF2aW9yIHRvRWRpdGFibGVMaW5rQmVoYXZpb3IoX1dLRWRpdGFibGVMaW5rQmVoYXYKICNl
bmRpZgogfQogCistIChCT09MKV9zcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQKK3sKKyAgICByZXR1
cm4gX3ByZWZlcmVuY2VzLT5zcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQoKTsKK30KKworLSAodm9p
ZClfc2V0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkOihCT09MKXNwZWVjaFJlY29nbml0aW9uRW5h
YmxlZAoreworICAgIF9wcmVmZXJlbmNlcy0+c2V0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkKHNw
ZWVjaFJlY29nbml0aW9uRW5hYmxlZCk7Cit9CisKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmlu
ZGV4IDBhOGNkZDE1ZDVmN2YzMDc1OGZlNjM4YTg1NTY0MjNhOTFhNmE1NGYuLmNhMWRkZjdkZTVh
N2UyM2EwYzlhYzQ2ODA4ZGU4MmNkYzJiZmQ4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC0xNjEs
NiArMTYxLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLRWRpdGFibGVMaW5rQmVo
YXZpb3IpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJlcXVlc3RBbmltYXRp
b25GcmFtZUVuYWJsZWQ6KSBCT09MIF9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxl
ZEZvclRlc3Rpbmc6KSBCT09MIF9zZXJ2aWNlV29ya2VyRW50aXRsZW1lbnREaXNhYmxlZEZvclRl
c3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEFjY2Vzc2liaWxpdHlJc29sYXRl
ZFRyZWVFbmFibGVkOikgQk9PTCBfYWNjZXNzaWJpbGl0eUlzb2xhdGVkVHJlZUVuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNikpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRl
cj1fc2V0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkOikgQk9PTCBfc3BlZWNoUmVjb2duaXRpb25F
bmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRl
cj1fc2V0V2ViR0xFbmFibGVkOikgQk9PTCBfd2ViR0xFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTMuNCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggZDFlYWUyMDFlNjU0MmY0ZmFiNjAx
OTgwZGM2NjEyNDkxMzE5NzkzZi4uZjBhOWJhNDFmNTE1ZWY3MThmNzQ2YzdmZGZmZmVhNGEzNWU4
ZGUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlE
ZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC0xNTIsNiArMTUyLDggQEAgc3RydWN0IFVJRWRnZUlu
c2V0czsKIAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3aWxsU2hhcmVB
Y3Rpdml0eUl0ZW1zOihOU0FycmF5ICopYWN0aXZpdHlJdGVtcyBXS19BUElfQVZBSUxBQkxFKGlv
cyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkZvck9yaWdpbjooV0tTZWN1cml0eU9y
aWdpbiAqKW9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgYXV0aG9yaXplZCkp
ZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CisKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAKIC0gKEJPT0wpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgc2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9yRWxlbWVu
dDooX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKillbGVtZW50IFdLX0FQSV9BVkFJTEFCTEUoaW9z
KDkuMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVkaWFQ
ZXJtaXNzaW9uVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVk
aWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4YjczZDQ4M2E3NWU1NDI4M2U0
YjJiMTZmOGMyOWY2MDY2ODc0MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KQEAgLTAsMCArMSwxNzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1lZGlhUGVybWlz
c2lvblV0aWxpdGllcy5oIgorCisjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCisjaW1wb3J0
ICJUQ0NTUEkuaCIKKyNpbXBvcnQgPG11dGV4PgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+Cisj
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRi
b3hTUEkuaD4KKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKyNpbXBvcnQgPFNwZWVjaC9T
cGVlY2guaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhTcGVlY2gpCitTT0ZUX0xJTktfQ0xBU1Mo
U3BlZWNoLCBTRlNwZWVjaFJlY29nbml6ZXIpCisjZW5kaWYKKworI2ltcG9ydCA8cGFsL2NvY29h
L0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisKK1NPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhU
Q0MpCitTT0ZUX0xJTksoVENDLCBUQ0NBY2Nlc3NQcmVmbGlnaHQsIFRDQ0FjY2Vzc1ByZWZsaWdo
dFJlc3VsdCwgKENGU3RyaW5nUmVmIHNlcnZpY2UsIENGRGljdGlvbmFyeVJlZiBvcHRpb25zKSwg
KHNlcnZpY2UsIG9wdGlvbnMpKQorU09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RDQ1NlcnZpY2VN
aWNyb3Bob25lLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVChUQ0MsIGtUQ0NTZXJ2
aWNlQ2FtZXJhLCBDRlN0cmluZ1JlZikKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgY2hl
Y2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGUgdHlwZSkKK3sK
KyNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGF1ZGlvRmxhZzsK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgdmlkZW9GbGFnOworICAgIHN0YXRpYyBib29sIGlz
QXVkaW9FbnRpdGxlZCA9IHRydWU7CisgICAgc3RhdGljIGJvb2wgaXNWaWRlb0VudGl0bGVkID0g
dHJ1ZTsKKyAgICAKKyAgICBhdXRvIGNoZWNrRnVuY3Rpb24gPSBbXShjb25zdCBjaGFyKiBvcGVy
YXRpb24sIGJvb2wqIGVudGl0bGVkKSB7CisgICAgICAgIGlmICghY3VycmVudFByb2Nlc3NJc1Nh
bmRib3hlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGludCByZXN1bHQgPSBz
YW5kYm94X2NoZWNrKGdldHBpZCgpLCBvcGVyYXRpb24sIFNBTkRCT1hfRklMVEVSX05PTkUpOwor
ICAgICAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJv
ciBjaGVja2luZyAnJXMnIHNhbmRib3ggYWNjZXNzLCBlcnJubz0lbGQiLCBvcGVyYXRpb24sIChs
b25nKWVycm5vKTsKKyAgICAgICAgKmVudGl0bGVkID0gIXJlc3VsdDsKKyAgICB9OworCisgICAg
c3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbzoKKyAg
ICAgICAgc3RkOjpjYWxsX29uY2UoYXVkaW9GbGFnLCBjaGVja0Z1bmN0aW9uLCAiZGV2aWNlLW1p
Y3JvcGhvbmUiLCAmaXNBdWRpb0VudGl0bGVkKTsKKyAgICAgICAgcmV0dXJuIGlzQXVkaW9FbnRp
dGxlZDsKKyAgICBjYXNlIE1lZGlhUGVybWlzc2lvblR5cGU6OlZpZGVvOgorICAgICAgICBzdGQ6
OmNhbGxfb25jZSh2aWRlb0ZsYWcsIGNoZWNrRnVuY3Rpb24sICJkZXZpY2UtY2FtZXJhIiwgJmlz
VmlkZW9FbnRpdGxlZCk7CisgICAgICAgIHJldHVybiBpc1ZpZGVvRW50aXRsZWQ7CisgICAgfQor
I2VuZGlmCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgY2hlY2tVc2FnZURlc2NyaXB0aW9u
U3RyaW5nRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlIHR5cGUpCit7CisgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIGF1ZGlvRGVzY3JpcHRpb25GbGFnOworICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyB2aWRlb0Rlc2NyaXB0aW9uRmxhZzsKKyAgICBzdGF0aWMgYm9vbCBoYXNNaWNyb3Bob25l
RGVzY3JpcHRpb25TdHJpbmcgPSBmYWxzZTsKKyAgICBzdGF0aWMgYm9vbCBoYXNDYW1lcmFEZXNj
cmlwdGlvblN0cmluZyA9IGZhbHNlOworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBN
ZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbzoKKyAgICAgICAgc3RhdGljIFRDQ0FjY2Vzc1ByZWZs
aWdodFJlc3VsdCBhdWRpb0FjY2VzcyA9IFRDQ0FjY2Vzc1ByZWZsaWdodChnZXRrVENDU2Vydmlj
ZU1pY3JvcGhvbmUoKSwgTlVMTCk7CisgICAgICAgIGlmIChhdWRpb0FjY2VzcyA9PSBrVENDQWNj
ZXNzUHJlZmxpZ2h0R3JhbnRlZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBz
dGQ6OmNhbGxfb25jZShhdWRpb0Rlc2NyaXB0aW9uRmxhZywgW10geworICAgICAgICAgICAgaGFz
TWljcm9waG9uZURlc2NyaXB0aW9uU3RyaW5nID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNTdHJpbmc+
KE5TQnVuZGxlLm1haW5CdW5kbGUuaW5mb0RpY3Rpb25hcnlbQCJOU01pY3JvcGhvbmVVc2FnZURl
c2NyaXB0aW9uIl0pLmxlbmd0aCA+IDA7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gaGFz
TWljcm9waG9uZURlc2NyaXB0aW9uU3RyaW5nOworICAgIGNhc2UgTWVkaWFQZXJtaXNzaW9uVHlw
ZTo6VmlkZW86CisgICAgICAgIHN0YXRpYyBUQ0NBY2Nlc3NQcmVmbGlnaHRSZXN1bHQgdmlkZW9B
Y2Nlc3MgPSBUQ0NBY2Nlc3NQcmVmbGlnaHQoZ2V0a1RDQ1NlcnZpY2VDYW1lcmEoKSwgTlVMTCk7
CisgICAgICAgIGlmICh2aWRlb0FjY2VzcyA9PSBrVENDQWNjZXNzUHJlZmxpZ2h0R3JhbnRlZCkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBzdGQ6OmNhbGxfb25jZSh2aWRlb0Rl
c2NyaXB0aW9uRmxhZywgW10geworICAgICAgICAgICAgaGFzQ2FtZXJhRGVzY3JpcHRpb25TdHJp
bmcgPSBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFpbkJ1bmRsZS5pbmZv
RGljdGlvbmFyeVtAIk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb24iXSkubGVuZ3RoID4gMDsK
KyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBoYXNDYW1lcmFEZXNjcmlwdGlvblN0cmluZzsK
KyAgICB9Cit9CisKK2Jvb2wgY2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yU3BlZWNoUmVj
b2duaXRpb24oKQoreworICAgIHJldHVybiBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNC
dW5kbGUubWFpbkJ1bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TU3BlZWNoUmVjb2duaXRpb25Vc2Fn
ZURlc2NyaXB0aW9uIl0pLmxlbmd0aCA+IDA7Cit9CisKKyNpZiBIQVZFKEFWQ0FQVFVSRURFVklD
RSkKKwordm9pZCByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25U
eXBlIHR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhdXRob3JpemVkKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgQVZN
ZWRpYVR5cGUgbWVkaWFUeXBlID0gdHlwZSA9PSBNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbyA/
IEFWTWVkaWFUeXBlQXVkaW8gOiBBVk1lZGlhVHlwZVZpZGVvOworICAgIGF1dG8gZGVjaXNpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShCT09MIGF1dGhvcml6ZWQpIG11dGFibGUgeworICAgICAgICBpZiAoaXNN
YWluVGhyZWFkKCkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgYXV0
aG9yaXplZF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhv
cml6ZWQpOworICAgICAgICB9KTsKKyAgICB9KTsKKyAgICBbUEFMOjpnZXRBVkNhcHR1cmVEZXZp
Y2VDbGFzcygpIHJlcXVlc3RBY2Nlc3NGb3JNZWRpYVR5cGU6bWVkaWFUeXBlIGNvbXBsZXRpb25I
YW5kbGVyOmRlY2lzaW9uSGFuZGxlci5nZXQoKV07Cit9CisKK01lZGlhUGVybWlzc2lvblJlc3Vs
dCBjaGVja0FWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSB0eXBlKQor
eworICAgIEFWTWVkaWFUeXBlIG1lZGlhVHlwZSA9IHR5cGUgPT0gTWVkaWFQZXJtaXNzaW9uVHlw
ZTo6QXVkaW8gPyBBVk1lZGlhVHlwZUF1ZGlvIDogQVZNZWRpYVR5cGVWaWRlbzsKKyAgICBhdXRv
IGF1dGhvcml6YXRpb25TdGF0dXMgPSBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIGF1
dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6bWVkaWFUeXBlXTsKKyAgICBpZiAoYXV0aG9y
aXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNEZW5pZWQgfHwgYXV0aG9yaXph
dGlvblN0YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkKQorICAgICAgICBy
ZXR1cm4gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpEZW5pZWQ7CisgICAgaWYgKGF1dGhvcml6YXRp
b25TdGF0dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzTm90RGV0ZXJtaW5lZCkKKyAgICAgICAg
cmV0dXJuIE1lZGlhUGVybWlzc2lvblJlc3VsdDo6VW5rbm93bjsKKyAgICByZXR1cm4gTWVkaWFQ
ZXJtaXNzaW9uUmVzdWx0OjpHcmFudGVkOworfQorCisjZW5kaWYgLy8gSEFWRShBVkNBUFRVUkVE
RVZJQ0UpCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisKK3ZvaWQgcmVxdWVzdFNwZWVj
aFJlY29nbml0aW9uQWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhdXRob3JpemVk
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNGU3BlZWNoUmVjb2duaXplckF1dGhv
cml6YXRpb25TdGF0dXMgc3RhdHVzKSBtdXRhYmxlIHsKKyAgICAgICAgYm9vbCBhdXRob3JpemVk
ID0gc3RhdHVzID09IFNGU3BlZWNoUmVjb2duaXplckF1dGhvcml6YXRpb25TdGF0dXNBdXRob3Jp
emVkOworICAgICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBhdXRob3JpemVkXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGF1dGhvcml6ZWQpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgfSk7
CisgICAgW2dldFNGU3BlZWNoUmVjb2duaXplckNsYXNzKCkgcmVxdWVzdEF1dGhvcml6YXRpb246
ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKK30KKworTWVkaWFQZXJtaXNzaW9uUmVzdWx0IGNoZWNr
U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCkKK3sKKyAgICBhdXRvIGF1dGhvcml6YXRp
b25TdGF0dXMgPSBbZ2V0U0ZTcGVlY2hSZWNvZ25pemVyQ2xhc3MoKSBhdXRob3JpemF0aW9uU3Rh
dHVzXTsKKyAgICBpZiAoYXV0aG9yaXphdGlvblN0YXR1cyA9PSBTRlNwZWVjaFJlY29nbml6ZXJB
dXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IGF1dGhvcml6YXRpb25TdGF0dXMgPT0gU0ZTcGVl
Y2hSZWNvZ25pemVyQXV0aG9yaXphdGlvblN0YXR1c1Jlc3RyaWN0ZWQpCisgICAgICAgIHJldHVy
biBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OkRlbmllZDsKKyAgICBpZiAoYXV0aG9yaXphdGlvblN0
YXR1cyA9PSBTRlNwZWVjaFJlY29nbml6ZXJBdXRob3JpemF0aW9uU3RhdHVzQXV0aG9yaXplZCkK
KyAgICAgICAgcmV0dXJuIE1lZGlhUGVybWlzc2lvblJlc3VsdDo6R3JhbnRlZDsKKyAgICByZXR1
cm4gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duOworfQorCisjZW5kaWYgLy8gSEFWRShT
UEVFQ0hSRUNPR05JWkVSKQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAppbmRleCA4YTA5NDc0NWMxZjI0YmUxMDVkYmIw
MmFiOTFlMzA3YjMxZDQ4NmIxLi42MmQ3YThhMThmNmViODM5NGNiZTAyY2ZhYzQzNzZhNTRkMGEx
ZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCkBAIC0x
NjEsNiArMTYxLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgICAgICB2
b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViUGFnZVByb3h5JiwgQVBJOjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsJiwgV2ViRnJhbWVQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJikgZmluYWw7
CiAjZW5kaWYKKyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKIAogICAgICAgICBVSURlbGVnYXRl
JiBtX3VpRGVsZWdhdGU7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLm1tCmluZGV4IGQwMzM4ZjhkNmUzYjlhMTNkZjJhZjE1M2FjYjVkZWIzOGUxZmNk
OWIuLjBmOWVhOTA5YTZlZjk5OTExYmU4MWVlZTllMDkzODk4NTdhMjY4ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMTMzMiw0ICsxMzMyLDI2
IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNo
YW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6CiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS1VJRGVs
ZWdhdGVQcml2YXRlPj4oZGVsZWdhdGUpIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcg
aW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZDpuZXdTaXplXTsKIH0KIAordm9pZCBVSURl
bGVnYXRlOjpVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpTZWN1cml0eU9yaWdp
biYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGF1dG8gZGVsZWdhdGUgPSAoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KW1f
dWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKCFbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpy
ZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOmRlY2lzaW9uSGFuZGxl
cjopXSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyOjpjcmVhdGUoZGVsZWdhdGUsIEBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOmRlY2lzaW9uSGFuZGxlcjopKTsKKyAgICBbZGVs
ZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyByZXF1ZXN0U3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uRm9yT3JpZ2luOndyYXBwZXIob3JpZ2luKSBkZWNpc2lvbkhhbmRsZXI6
bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UoY29tcGxldGlv
bkhhbmRsZXIsIHsgfSksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXSAoQk9PTCBncmFudGVk
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVl
bkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2VyLT5kaWRDYWxs
Q29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZ3JhbnRlZCk7
CisgICAgfSkuZ2V0KCldOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0KaW5kZXggOTk3NTc1ZGUwMjE2YTljMGNk
NzZhZmNiNDFjNzY0MWRiMTMxNWFmYi4uZTJlZmEzOTQ0NjM3MWM4MDhiMGQ2YjAzNWY4N2FmNWFl
OTBmMzJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkubW0K
QEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKIAorI2ltcG9ydCAiTWVkaWFQZXJtaXNz
aW9uVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJU
Q0NTUEkuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgpAQCAtMzcsNDAgKzM4LDEyIEBACiAj
aW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9z
cGkvZGFyd2luL1NhbmRib3hTUEkuaD4KIAotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFRD
QykKLVNPRlRfTElOSyhUQ0MsIFRDQ0FjY2Vzc1ByZWZsaWdodCwgVENDQWNjZXNzUHJlZmxpZ2h0
UmVzdWx0LCAoQ0ZTdHJpbmdSZWYgc2VydmljZSwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpLCAo
c2VydmljZSwgb3B0aW9ucykpCi1TT0ZUX0xJTksoVENDLCBUQ0NBY2Nlc3NQcmVmbGlnaHRXaXRo
QXVkaXRUb2tlbiwgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0LCAoQ0ZTdHJpbmdSZWYgc2Vydmlj
ZSwgYXVkaXRfdG9rZW5fdCB0b2tlbiwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpLCAoc2Vydmlj
ZSwgdG9rZW4sIG9wdGlvbnMpKQotU09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RDQ1NlcnZpY2VN
aWNyb3Bob25lLCBDRlN0cmluZ1JlZikKLVNPRlRfTElOS19DT05TVEFOVChUQ0MsIGtUQ0NTZXJ2
aWNlQ2FtZXJhLCBDRlN0cmluZ1JlZikKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnBlcm1pdHRlZFRvQ2FwdHVyZUF1
ZGlvKCkKIHsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGF0aWMgYm9vbCBlbnRp
dGxlZCA9IHRydWU7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAg
aWYgKCFjdXJyZW50UHJvY2Vzc0lzU2FuZGJveGVkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgaW50IHJlc3VsdCA9IHNhbmRib3hfY2hlY2soZ2V0cGlkKCksICJkZXZpY2UtbWlj
cm9waG9uZSIsIFNBTkRCT1hfRklMVEVSX05PTkUpOwotICAgICAgICBlbnRpdGxlZCA9ICFyZXN1
bHQ7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAgICAgICAgICBXVEZMb2dBbHdheXMo
IkVycm9yIGNoZWNraW5nICdkZXZpY2UtbWljcm9waG9uZScgc2FuZGJveCBhY2Nlc3MsIGVycm5v
PSVsZCIsIChsb25nKWVycm5vKTsKLSAgICB9KTsKLSAgICBpZiAoIWVudGl0bGVkKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQotCi0gICAgc3RhdGljIFRD
Q0FjY2Vzc1ByZWZsaWdodFJlc3VsdCBhY2Nlc3MgPSBUQ0NBY2Nlc3NQcmVmbGlnaHQoZ2V0a1RD
Q1NlcnZpY2VNaWNyb3Bob25lKCksIE5VTEwpOwotICAgIGlmIChhY2Nlc3MgPT0ga1RDQ0FjY2Vz
c1ByZWZsaWdodEdyYW50ZWQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgc3RhdGljIGJv
b2wgaXNQZXJtaXR0ZWQgPSBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oTlNCdW5kbGUubWFp
bkJ1bmRsZS5pbmZvRGljdGlvbmFyeVtAIk5TTWljcm9waG9uZVVzYWdlRGVzY3JpcHRpb24iXSku
bGVuZ3RoOwotICAgIHJldHVybiBpc1Blcm1pdHRlZDsKKyAgICByZXR1cm4gY2hlY2tTYW5kYm94
UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKSAmJiBjaGVja1Vz
YWdlRGVzY3JpcHRpb25TdHJpbmdGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKTsK
ICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC03OSw0OSArNTIsMTMgQEAgYm9v
bCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6cGVybWl0dGVkVG9DYXB0
dXJlQXVkaW8oKQogYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
cGVybWl0dGVkVG9DYXB0dXJlVmlkZW8oKQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0K
LSNpZiBQTEFURk9STShNQUMpCi0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwot
ICAgIHN0YXRpYyBib29sIGVudGl0bGVkID0gdHJ1ZTsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10gewotICAgICAgICBpZiAoIWN1cnJlbnRQcm9jZXNzSXNTYW5kYm94ZWQoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpbnQgcmVzdWx0ID0gc2FuZGJveF9jaGVjayhn
ZXRwaWQoKSwgImRldmljZS1jYW1lcmEiLCBTQU5EQk9YX0ZJTFRFUl9OT05FKTsKLSAgICAgICAg
ZW50aXRsZWQgPSAhcmVzdWx0OwotICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAg
ICAgV1RGTG9nQWx3YXlzKCJFcnJvciBjaGVja2luZyAnZGV2aWNlLWNhbWVyYScgc2FuZGJveCBh
Y2Nlc3MsIGVycm5vPSVsZCIsIChsb25nKWVycm5vKTsKLSAgICB9KTsKLSAgICBpZiAoIWVudGl0
bGVkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQotCi0g
ICAgc3RhdGljIFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3VsdCBhY2Nlc3MgPSBUQ0NBY2Nlc3NQcmVm
bGlnaHQoZ2V0a1RDQ1NlcnZpY2VDYW1lcmEoKSwgTlVMTCk7Ci0gICAgaWYgKGFjY2VzcyA9PSBr
VENDQWNjZXNzUHJlZmxpZ2h0R3JhbnRlZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBz
dGF0aWMgYm9vbCBpc1Blcm1pdHRlZCA9IGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihOU0J1
bmRsZS5tYWluQnVuZGxlLmluZm9EaWN0aW9uYXJ5W0AiTlNDYW1lcmFVc2FnZURlc2NyaXB0aW9u
Il0pLmxlbmd0aDsKLSAgICByZXR1cm4gaXNQZXJtaXR0ZWQ7CisgICAgcmV0dXJuIGNoZWNrU2Fu
ZGJveFJlcXVpcmVtZW50Rm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpWaWRlbykgJiYgY2hl
Y2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpWaWRl
byk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogfQogCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKLXN0YXRpYyB2b2lkIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5
cGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChCT09MIGF1dGhvcml6ZWQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyLCBBVk1lZGlhVHlwZSB0eXBlKQotewotICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShCT09MIGF1dGhvcml6ZWQpIG11dGFibGUgewotICAgICAgICBpZiAoIWlzTWFpblRocmVh
ZCgpKSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBhdXRob3JpemVkXSgpIG11dGFibGUgewotICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF1dGhvcml6ZWQpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoYXV0aG9yaXplZCk7Ci0gICAgfSk7Ci0gICAgW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNl
Q2xhc3MoKSByZXF1ZXN0QWNjZXNzRm9yTWVkaWFUeXBlOnR5cGUgY29tcGxldGlvbkhhbmRsZXI6
ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKLX0KLQogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6cmVxdWVzdFN5c3RlbVZhbGlkYXRpb24oY29uc3QgV2ViUGFnZVBy
b3h5JiBwYWdlLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JiByZXF1ZXN0LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChwYWdlLnBy
ZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpKSB7CkBAIC0xMzAsMzYgKzY3
LDM2IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlcXVl
c3RTeXN0ZW1WYWxpZGF0aW9uKGNvbnN0IFdlYlBhCiAgICAgfQogCiAgICAgLy8gRklYTUU6IEFk
ZCBUQ0MgZW50aXRsZW1lbnQgY2hlY2sgZm9yIHNjcmVlbnNoYXJpbmcuCi0gICAgYm9vbCByZXF1
aXJlc0F1ZGlvQ2FwdHVyZSA9IHJlcXVlc3QucmVxdWlyZXNBdWRpb0NhcHR1cmUoKTsKLSAgICBi
b29sIHJlcXVpcmVzVmlkZW9DYXB0dXJlID0gcmVxdWVzdC5yZXF1aXJlc1ZpZGVvQ2FwdHVyZSgp
OwotCi0gICAgYXV0byBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9ICFyZXF1aXJlc0F1
ZGlvQ2FwdHVyZSA/IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQgOiBbUEFMOjpnZXRB
VkNhcHR1cmVEZXZpY2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6QVZN
ZWRpYVR5cGVBdWRpb107Ci0gICAgaWYgKG1pY3JvcGhvbmVBdXRob3JpemF0aW9uU3RhdHVzID09
IEFWQXV0aG9yaXphdGlvblN0YXR1c0RlbmllZCB8fCBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0
YXR1cyA9PSBBVkF1dGhvcml6YXRpb25TdGF0dXNSZXN0cmljdGVkKSB7CisgICAgYXV0byBhdWRp
b1N0YXR1cyA9IHJlcXVlc3QucmVxdWlyZXNBdWRpb0NhcHR1cmUoKSA/IGNoZWNrQVZDYXB0dXJl
QWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbykgOiBNZWRpYVBlcm1pc3Np
b25SZXN1bHQ6OkdyYW50ZWQ7CisgICAgaWYgKGF1ZGlvU3RhdHVzID09IE1lZGlhUGVybWlzc2lv
blJlc3VsdDo6RGVuaWVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gY2FtZXJhQXV0aG9yaXphdGlvblN0YXR1cyA9ICFyZXF1
aXJlc1ZpZGVvQ2FwdHVyZSA/IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQgOiBbUEFM
OjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5
cGU6QVZNZWRpYVR5cGVWaWRlb107Ci0gICAgaWYgKGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMg
PT0gQVZBdXRob3JpemF0aW9uU3RhdHVzRGVuaWVkIHx8IGNhbWVyYUF1dGhvcml6YXRpb25TdGF0
dXMgPT0gQVZBdXRob3JpemF0aW9uU3RhdHVzUmVzdHJpY3RlZCkgeworICAgIGF1dG8gdmlkZW9T
dGF0dXMgPSByZXF1ZXN0LnJlcXVpcmVzVmlkZW9DYXB0dXJlKCkgPyBjaGVja0FWQ2FwdHVyZUFj
Y2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6VmlkZW8pIDogTWVkaWFQZXJtaXNzaW9u
UmVzdWx0OjpHcmFudGVkOworICAgIGlmICh2aWRlb1N0YXR1cyA9PSBNZWRpYVBlcm1pc3Npb25S
ZXN1bHQ6OkRlbmllZCkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBib29sIHJlcXVpcmVzVmlkZW9UQ0NQcm9tcHQgPSByZXF1aXJlc1Zp
ZGVvQ2FwdHVyZSAmJiBjYW1lcmFBdXRob3JpemF0aW9uU3RhdHVzID09IEFWQXV0aG9yaXphdGlv
blN0YXR1c05vdERldGVybWluZWQ7Ci0gICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHJlcXVp
cmVzVmlkZW9UQ0NQcm9tcHQgPyBbcmVxdWVzdCA9IG1ha2VSZWYocmVxdWVzdCksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgaXNPSykgbXV0YWJsZSB7Ci0gICAgICAgIGlmICgh
aXNPSykgewotICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JNZWRpYVR5cGUo
V1RGTW92ZShjYWxsYmFjayksIEFWTWVkaWFUeXBlVmlkZW8pOwotICAgIH0gOiBXVEZNb3ZlKGNh
bGxiYWNrKTsKKyAgICBpZiAoYXVkaW9TdGF0dXMgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpV
bmtub3duKSB7CisgICAgICAgIHJlcXVlc3RBVkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVy
bWlzc2lvblR5cGU6OkF1ZGlvLCBbdmlkZW9TdGF0dXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjYWxsYmFjayldKGJvb2wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAodmlkZW9TdGF0dXMgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpHcmFudGVkKSB7CisgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXV0aG9yaXplZCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
cmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZTo6VmlkZW8s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKLSAgICBib29sIHJlcXVpcmVzQXVkaW9UQ0NQcm9tcHQgPSByZXF1aXJlc0F1
ZGlvQ2FwdHVyZSAmJiBtaWNyb3Bob25lQXV0aG9yaXphdGlvblN0YXR1cyA9PSBBVkF1dGhvcml6
YXRpb25TdGF0dXNOb3REZXRlcm1pbmVkOwotICAgIGlmICghcmVxdWlyZXNBdWRpb1RDQ1Byb21w
dCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICBpZiAodmlkZW9TdGF0
dXMgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIHJlcXVlc3RB
VkNhcHR1cmVBY2Nlc3NGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OlZpZGVvLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcmVxdWVzdEFWQ2FwdHVy
ZUFjY2Vzc0Zvck1lZGlhVHlwZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgQVZNZWRpYVR5
cGVBdWRpbyk7CisKKyAgICBjYWxsYmFjayh0cnVlKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDg2NjIzOGJhZmU4ZjA1YzE3YTIzZDZmOWNjOTlh
MjEwMTRkZDkzMTAuLmNkMzAxNDFmY2VhNjIyMmRlNWJhN2NmMWM2N2E5YTJmNjRkMDIwZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94
eUNvY29hLm1tCkBAIC00MSw2ICs0MSwxMCBAQAogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNv
Y29hLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CiAKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCIKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9SZW1vdGVJbnNwZWN0b3JDb25zdGFudHMuaD4KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
ZmUzYzMxNmQ0YzUzZTYyMDczN2IxZjNhNGZjNjRmZDMwNGQwNGQ0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmgKQEAg
LTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBNZWRpYVBlcm1pc3Npb25UeXBlIHsKKyAgICBBdWRp
bywKKyAgICBWaWRlbworfTsKKworZW51bSBjbGFzcyBNZWRpYVBlcm1pc3Npb25SZXN1bHQgewor
ICAgIERlbmllZCwKKyAgICBHcmFudGVkLAorICAgIFVua25vd24KK307CisKKyNpZiBQTEFURk9S
TShDT0NPQSkKK2Jvb2wgY2hlY2tTYW5kYm94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlz
c2lvblR5cGUpOworYm9vbCBjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdGb3JUeXBlKE1lZGlh
UGVybWlzc2lvblR5cGUpOworYm9vbCBjaGVja1VzYWdlRGVzY3JpcHRpb25TdHJpbmdGb3JTcGVl
Y2hSZWNvZ25pdGlvbigpOworI2VuZGlmCisKKyNpZiBIQVZFKEFWQ0FQVFVSRURFVklDRSkKK3Zv
aWQgcmVxdWVzdEFWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sIGF1dGhvcml6ZWQpPiYmKTsKK01lZGlhUGVybWlzc2lv
blJlc3VsdCBjaGVja0FWQ2FwdHVyZUFjY2Vzc0ZvclR5cGUoTWVkaWFQZXJtaXNzaW9uVHlwZSk7
CisjZW5kaWYKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKK3ZvaWQgcmVxdWVzdFNwZWVj
aFJlY29nbml0aW9uQWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhdXRob3JpemVk
KT4mJik7CitNZWRpYVBlcm1pc3Npb25SZXN1bHQgY2hlY2tTcGVlY2hSZWNvZ25pdGlvblNlcnZp
Y2VBY2Nlc3MoKTsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMGQ5ODI4YjU0MmIzOTVjOTgyMGNjNjI2MGUz
NWY4ZmUwMjBlYzk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5jcHAKQEAgLTAsMCArMSwyMjMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIgorCisjaW5jbHVkZSAiQVBJU2VjdXJpdHlPcmlnaW4u
aCIKKyNpbmNsdWRlICJBUElVSUNsaWVudC5oIgorI2luY2x1ZGUgIk1lZGlhUGVybWlzc2lvblV0
aWxpdGllcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbk1hbmFnZXI6OkNoZWNrUmVzdWx0IGNvbXB1dGVNaWNyb3Bob25lQWNjZXNz
KCkKK3sKKyNpZiBIQVZFKEFWQ0FQVFVSRURFVklDRSkKKyAgICBhdXRvIHJlc3VsdCA9IGNoZWNr
QVZDYXB0dXJlQWNjZXNzRm9yVHlwZShNZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbyk7CisgICAg
aWYgKHJlc3VsdCAhPSBNZWRpYVBlcm1pc3Npb25SZXN1bHQ6OlVua25vd24pCisgICAgICAgIHJl
dHVybiByZXN1bHQgPT0gTWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpHcmFudGVkID8gU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Q2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpDaGVja1Jlc3VsdDo6RGVuaWVkOworICAgIAor
ICAgIGlmICghY2hlY2tVc2FnZURlc2NyaXB0aW9uU3RyaW5nRm9yVHlwZShNZWRpYVBlcm1pc3Np
b25UeXBlOjpBdWRpbykpCisgICAgICAgIHJldHVybiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25NYW5hZ2VyOjpDaGVja1Jlc3VsdDo6RGVuaWVkOworCisgICAgcmV0dXJuIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OkNoZWNrUmVzdWx0OjpVbmtub3duOworI2Vsc2UKKyAg
ICByZXR1cm4gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Q2hlY2tSZXN1bHQ6
OkdyYW50ZWQ7CisjZW5kaWYKK30KKworc3RhdGljIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OkNoZWNrUmVzdWx0IGNvbXB1dGVTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nl
c3MoKQoreworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKyAgICBhdXRvIHJlc3VsdCA9IGNo
ZWNrU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7CisgICAgaWYgKHJlc3VsdCAhPSBN
ZWRpYVBlcm1pc3Npb25SZXN1bHQ6OlVua25vd24pCisgICAgICAgIHJldHVybiByZXN1bHQgPT0g
TWVkaWFQZXJtaXNzaW9uUmVzdWx0OjpHcmFudGVkID8gU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uTWFuYWdlcjo6Q2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyOjpDaGVja1Jlc3VsdDo6RGVuaWVkOworCisgICAgaWYgKCFjaGVja1VzYWdl
RGVzY3JpcHRpb25TdHJpbmdGb3JTcGVlY2hSZWNvZ25pdGlvbigpKQorICAgICAgICByZXR1cm4g
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Q2hlY2tSZXN1bHQ6OkRlbmllZDsK
KworICAgIHJldHVybiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyOjpDaGVja1Jl
c3VsdDo6VW5rbm93bjsKKyNlbHNlCisgICAgcmV0dXJuIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXI6OkNoZWNrUmVzdWx0OjpHcmFudGVkOworI2VuZGlmCit9CisKK1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIoV2ViUGFnZVByb3h5JiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK1Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6On5TcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyKCkKK3sKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3JlcXVlc3RzKQor
ICAgICAgICByZXF1ZXN0LT5jb21wbGV0ZShTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNp
c2lvbjo6RGVueSk7Cit9CisgICAgCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXI6OnJlcXVlc3QoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYm
IGNvbXBsZXRpb250SGFuZGxlcikKK3sKKyAgICBtX3JlcXVlc3RzLmFwcGVuZChTcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUob3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRp
b250SGFuZGxlcikpKTsKKyAgICBpZiAobV9yZXF1ZXN0cy5zaXplKCkgPT0gMSkKKyAgICAgICAg
c3RhcnROZXh0UmVxdWVzdCgpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXI6OnN0YXJ0TmV4dFJlcXVlc3QoKQoreworICAgIGlmIChtX3JlcXVlc3RzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgpOwor
fQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnN0YXJ0UHJvY2Vz
c2luZ1JlcXVlc3QoKQoreworI2lmIFBMQVRGT1JNKENPT0NBKQorICAgIGlmICghY2hlY2tTYW5k
Ym94UmVxdWlyZW1lbnRGb3JUeXBlKE1lZGlhUGVybWlzc2lvblR5cGU6OkF1ZGlvKSkgeworICAg
ICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRl
Y2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgLy8g
VENDIHN0YXR1cyBtYXkgaGF2ZSBjaGFuZ2VkIGJldHdlZW4gcmVxdWVzdHMuCisgICAgbV9taWNy
b3Bob25lQ2hlY2sgPSBjb21wdXRlTWljcm9waG9uZUFjY2VzcygpOworICAgIG1fc3BlZWNoUmVj
b2duaXRpb25TZXJ2aWNlQ2hlY2sgPSBjb21wdXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNj
ZXNzKCk7CisKKyAgICBpZiAobV9wYWdlLnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2Vz
RW5hYmxlZCgpKSB7CisgICAgICAgIG1fbWljcm9waG9uZUNoZWNrID0gQ2hlY2tSZXN1bHQ6Okdy
YW50ZWQ7CisgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPSBDaGVja1Jl
c3VsdDo6R3JhbnRlZDsKKyAgICB9CisKKyAgICAvLyBXZSBjdXJyZW50bHkgZG9uJ3QgYWxsb3cg
dGhpcmQtcGFydHkgYWNjZXNzLgorICAgIGlmIChtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPT0gQ2hl
Y2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgYXV0byBjbGllbnRPcmlnaW4gPSBtX3JlcXVl
c3RzLmZpcnN0KCktPm9yaWdpbigpOworICAgICAgICBhdXRvIHJlcXVlc3RpbmdPcmlnaW4gPSBj
bGllbnRPcmlnaW4uY2xpZW50T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgICAgIGF1dG8g
dG9wT3JpZ2luID0gY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOworICAg
ICAgICBpZiAoIXJlcXVlc3RpbmdPcmlnaW4tPmlzU2FtZU9yaWdpbkFzKHRvcE9yaWdpbikpCisg
ICAgICAgICAgICBtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPSBDaGVja1Jlc3VsdDo6RGVuaWVkOwor
ICAgIH0KKworICAgIGlmIChtX21pY3JvcGhvbmVDaGVjayA9PSBDaGVja1Jlc3VsdDo6RGVuaWVk
IHx8IG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OkRlbmll
ZCB8fCBtX3VzZXJQZXJtaXNzaW9uQ2hlY2sgPT0gQ2hlY2tSZXN1bHQ6OkRlbmllZCkgeworICAg
ICAgICBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRl
Y2lzaW9uOjpEZW55KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnRpbnVlUHJv
Y2Vzc2luZ1JlcXVlc3QoKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyOjpjb250aW51ZVByb2Nlc3NpbmdSZXF1ZXN0KCkKK3sKKyAgICBpZiAobV9zcGVlY2hS
ZWNvZ25pdGlvblNlcnZpY2VDaGVjayA9PSBDaGVja1Jlc3VsdDo6VW5rbm93bikgeworICAgICAg
ICByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgQVNTRVJUKG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQ2hlY2sgPT0g
Q2hlY2tSZXN1bHQ6OkdyYW50ZWQpOworCisgICAgaWYgKG1fbWljcm9waG9uZUNoZWNrID09IENo
ZWNrUmVzdWx0OjpVbmtub3duKSB7CisgICAgICAgIHJlcXVlc3RNaWNyb3Bob25lQWNjZXNzKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKG1fbWljcm9waG9uZUNoZWNrID09
IENoZWNrUmVzdWx0OjpHcmFudGVkKTsKKworICAgIGlmIChtX3VzZXJQZXJtaXNzaW9uQ2hlY2sg
PT0gQ2hlY2tSZXN1bHQ6OlVua25vd24pIHsKKyAgICAgICAgcmVxdWVzdFVzZXJQZXJtaXNzaW9u
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKG1fdXNlclBlcm1pc3Npb25D
aGVjayA9PSBDaGVja1Jlc3VsdDo6R3JhbnRlZCk7CisKKyAgICBjb21wbGV0ZUN1cnJlbnRSZXF1
ZXN0KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpHcmFudCk7Cit9CisKK3Zv
aWQgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6Y29tcGxldGVDdXJyZW50UmVx
dWVzdChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiBkZWNpc2lvbikKK3sKKyAg
ICBBU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKyAgICBhdXRvIGN1cnJlbnRSZXF1ZXN0
ID0gbV9yZXF1ZXN0cy50YWtlRmlyc3QoKTsKKyAgICBjdXJyZW50UmVxdWVzdC0+Y29tcGxldGUo
ZGVjaXNpb24pOworCisgICAgc3RhcnROZXh0UmVxdWVzdCgpOworfQorCit2b2lkIFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNlcnZp
Y2VBY2Nlc3MoKQoreworICAgIEFTU0VSVChtX3NwZWVjaFJlY29nbml0aW9uU2VydmljZUNoZWNr
ID09IENoZWNrUmVzdWx0OjpVbmtub3duKTsKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikK
KyAgICByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25BY2Nlc3MoW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyldKGJvb2wgYXV0aG9yaXplZCkgbXV0YWJsZSB7CisgICAgICAgIGlmICgh
d2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9zcGVlY2hSZWNvZ25p
dGlvblNlcnZpY2VDaGVjayA9IGF1dGhvcml6ZWQgPyBDaGVja1Jlc3VsdDo6R3JhbnRlZCA6IENo
ZWNrUmVzdWx0OjpEZW5pZWQ7CisgICAgICAgIGlmIChtX3NwZWVjaFJlY29nbml0aW9uU2Vydmlj
ZUNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAgICAgICAgICAgIGNvbXBsZXRlQ3Vy
cmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29udGludWVQcm9jZXNz
aW5nUmVxdWVzdCgpOworICAgIH0pOworI2VuZGlmCit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3MoKQoreworICAgIEFT
U0VSVChtX21pY3JvcGhvbmVDaGVjayA9PSBDaGVja1Jlc3VsdDo6VW5rbm93bik7CisKKyNpZiBI
QVZFKEFWQ0FQVFVSRURFVklDRSkKKyAgICByZXF1ZXN0QVZDYXB0dXJlQWNjZXNzRm9yVHlwZShN
ZWRpYVBlcm1pc3Npb25UeXBlOjpBdWRpbywgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyldKGJvb2wgYXV0aG9yaXplZCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIG1fbWljcm9waG9uZUNoZWNrID0gYXV0aG9yaXplZCA/
IENoZWNrUmVzdWx0OjpHcmFudGVkIDogQ2hlY2tSZXN1bHQ6OkRlbmllZDsKKyAgICAgICAgaWYg
KG1fbWljcm9waG9uZUNoZWNrID09IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNp
b246OkRlbnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29u
dGludWVQcm9jZXNzaW5nUmVxdWVzdCgpOworICAgIH0pOworI2VuZGlmCit9CisKK3ZvaWQgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcjo6cmVxdWVzdFVzZXJQZXJtaXNzaW9uKCkK
K3sKKyAgICBBU1NFUlQoIW1fcmVxdWVzdHMuaXNFbXB0eSgpKTsKKworICAgIGF1dG8mIGN1cnJl
bnRSZXF1ZXN0ID0gbV9yZXF1ZXN0cy5maXJzdCgpOworICAgIGF1dG8gY2xpZW50T3JpZ2luID0g
Y3VycmVudFJlcXVlc3QtPm9yaWdpbigpOworICAgIGF1dG8gdG9wT3JpZ2luID0gY2xpZW50T3Jp
Z2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8gZGVjaXNpb25IYW5kbGVy
ID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShib29sIGdyYW50ZWQpIHsK
KyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBt
X3VzZXJQZXJtaXNzaW9uQ2hlY2sgPSBncmFudGVkID8gQ2hlY2tSZXN1bHQ6OkdyYW50ZWQgOiBD
aGVja1Jlc3VsdDo6RGVuaWVkOworICAgICAgICBpZiAobV91c2VyUGVybWlzc2lvbkNoZWNrID09
IENoZWNrUmVzdWx0OjpEZW5pZWQpIHsKKyAgICAgICAgICAgIGNvbXBsZXRlQ3VycmVudFJlcXVl
c3QoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29udGludWVQcm9jZXNzaW5nUmVxdWVz
dCgpOworICAgIH07CisgICAgbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsIEFQSTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSh0b3BPcmlnaW4uZ2V0KCkpLmdldCgpLCBXVEZNb3ZlKGRlY2lzaW9uSGFuZGxlcikp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjAwYjU3MWQ5N2EwMmZjMzNkMTQzMThkOTgwYjRkNzQ0OTZmOTkyMmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgor
I2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uTWFuYWdlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorICAgIGVudW0gY2xhc3MgQ2hlY2tSZXN1bHQgeyBEZW5pZWQsIEdyYW50ZWQs
IFVua25vd24gfTsKKyAgICBleHBsaWNpdCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyKFdlYlBhZ2VQcm94eSYpOworICAgIH5TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5h
Z2VyKCk7CisgICAgdm9pZCByZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24p
PiYmKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHN0YXJ0TmV4dFJlcXVlc3QoKTsKKyAgICB2b2lk
IHN0YXJ0UHJvY2Vzc2luZ1JlcXVlc3QoKTsKKyAgICB2b2lkIGNvbnRpbnVlUHJvY2Vzc2luZ1Jl
cXVlc3QoKTsKKyAgICB2b2lkIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uRGVjaXNpb24pOworICAgIHZvaWQgcmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3Mo
KTsKKyAgICB2b2lkIHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKKyAg
ICB2b2lkIHJlcXVlc3RVc2VyUGVybWlzc2lvbigpOworCisgICAgV2ViUGFnZVByb3h5JiBtX3Bh
Z2U7CisgICAgRGVxdWU8UmVmPFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Q+PiBt
X3JlcXVlc3RzOworICAgIENoZWNrUmVzdWx0IG1fbWljcm9waG9uZUNoZWNrIHsgQ2hlY2tSZXN1
bHQ6OlVua25vd24gfTsKKyAgICBDaGVja1Jlc3VsdCBtX3NwZWVjaFJlY29nbml0aW9uU2Vydmlj
ZUNoZWNrIHsgQ2hlY2tSZXN1bHQ6OlVua25vd24gfTsKKyAgICBDaGVja1Jlc3VsdCBtX3VzZXJQ
ZXJtaXNzaW9uQ2hlY2sgeyBDaGVja1Jlc3VsdDo6VW5rbm93biB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjI1MTdiM2Vm
YTYxMjg5ZDQzNzQzY2I0ZjQ3NzkxNjVkMGUwYTM4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaApA
QCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJB
UElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgorI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBj
bGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiA6IGJvb2wgeyBEZW55LCBH
cmFudCB9OworCitjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0IDogcHVi
bGljIFJlZkNvdW50ZWQ8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4geworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdD4g
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvblJlcXVlc3Qob3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkpOworICAgIH0KKworICAgIHZvaWQgY29tcGxldGUoU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uRGVjaXNpb24gZGVjaXNpb24pCisgICAgeworICAgICAgICBhdXRvIGNvbXBsZXRpb25I
YW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihkZWNpc2lvbik7CisgICAgfQorCisgICAgY29uc3QgV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQorCitw
cml2YXRlOgorICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QoY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
ICAgICA6IG1fb3JpZ2luKG9yaWdpbikKKyAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgIHsgfQorCisgICAgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luIG1fb3JpZ2luOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworfTsKKworY2xh
c3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2sgOiBwdWJsaWMgQVBJOjpPYmpl
Y3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjaz4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2s+IGNyZWF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
KTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBsZXRlKGJvb2wgZ3JhbnRlZCkgeyBtX2NvbXBsZXRp
b25IYW5kbGVyKGdyYW50ZWQpOyB9CisKK3ByaXZhdGU6CisgICAgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKQorICAgIHsgfQorCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3Bw
CmluZGV4IDljZTk3NGNmOWRhYTU2NTgyZWViY2ZhMDMwNjcwYjdhMzc1YmU3MWUuLjg1MzM3N2Y1
Y2VjZWVlYTE5ZTc2MDk2NDFmYjQwMmI4M2E1OWRkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKQEAgLTMwLDg3ICszMCwx
MDggQEAKICNpbmNsdWRlICJXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaD4KIAorI2RlZmlu
ZSBNRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwg
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSkKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVNwZWVj
aFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBp
ZGVudGlmaWVyKQorU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNo
ZWNrZXImJiBwZXJtaXNzaW9uQ2hlY2tlcikKICAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNv
bm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX3Blcm1p
c3Npb25DaGVja2VyKFdURk1vdmUocGVybWlzc2lvbkNoZWNrZXIpKQogewogfQogCi12b2lkIFNw
ZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3RJbmZvJiYgcmVxdWVzdEluZm8pCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpz
dGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
IGNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBp
bnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mJiBvcmlnaW4pCiB7Ci0gICAgYXV0byByZXF1ZXN0ID0gV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0OjpjcmVhdGUoV1RGTW92ZShyZXF1ZXN0SW5mbykpOwotICAgIG1fcGVu
ZGluZ1JlcXVlc3RzLmFwcGVuZChXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICBNRVNTQUdFX0NIRUNL
KGNsaWVudElkZW50aWZpZXIpOworICAgIEFTU0VSVCghbV9wZW5kaW5nUmVxdWVzdHMuY29udGFp
bnMoY2xpZW50SWRlbnRpZmllcikpOworICAgIEFTU0VSVCghbV9vbmdvaW5nUmVxdWVzdHMuY29u
dGFpbnMoY2xpZW50SWRlbnRpZmllcikpOworICAgIGF1dG8gcmVxdWVzdEluZm8gPSBTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvIHsgY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShsYW5nKSwg
Y29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVybmF0aXZlcywgV1RGTW92ZShvcmln
aW4pIH07CisgICAgYXV0byYgcGVuZGluZ1JlcXVlc3QgPSBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQo
Y2xpZW50SWRlbnRpZmllciwgbWFrZVVuaXF1ZTxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3Q+KFdURk1vdmUocmVxdWVzdEluZm8pKSkuaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgcHJv
Y2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVkKCk7CisgICAgcmVxdWVzdFBlcm1pc3Npb25G
b3JSZXF1ZXN0KCpwZW5kaW5nUmVxdWVzdCk7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6OnByb2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJZk5lZWRlZCgpCit2b2lkIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyOjpyZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmIChtX2N1cnJlbnRSZXF1
ZXN0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9wZW5kaW5nUmVxdWVzdHMuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm47CisgICAgbV9wZXJtaXNzaW9uQ2hlY2tlcihyZXF1ZXN0LmNs
aWVudE9yaWdpbigpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd2Vha1Jl
cXVlc3QgPSBtYWtlV2Vha1B0cihyZXF1ZXN0KV0oU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
RGVjaXNpb24gZGVjaXNpb24pIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghd2Vha1JlcXVlc3QpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgYXV0byBpZGVudGlmaWVyID0gd2Vha1JlcXVlc3QtPmNsaWVu
dElkZW50aWZpZXIoKTsKKyAgICAgICAgYXV0byB0YWtlblJlcXVlc3QgPSBtX3BlbmRpbmdSZXF1
ZXN0cy50YWtlKGlkZW50aWZpZXIpOworICAgICAgICBpZiAoZGVjaXNpb24gPT0gU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpIHsKKyAgICAgICAgICAgIGF1dG8gZXJy
b3IgPSBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6
Ok5vdEFsbG93ZWQsICJQZXJtaXNzaW9uIGNoZWNrIGZhaWxlZCJfcyB9OworICAgICAgICAgICAg
c2VuZFVwZGF0ZShpZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5
cGU6OkVycm9yLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAg
IG1fY3VycmVudFJlcXVlc3QgPSBtX3BlbmRpbmdSZXF1ZXN0cy50YWtlRmlyc3QoKTsKLSAgICBz
dGFydFBvY2Vzc2luZ1JlcXVlc3QoKm1fY3VycmVudFJlcXVlc3QpOworICAgICAgICBtX29uZ29p
bmdSZXF1ZXN0cy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZSh0YWtlblJlcXVlc3QpKTsKKyAgICAg
ICAgaGFuZGxlUmVxdWVzdCgqbV9vbmdvaW5nUmVxdWVzdHMuZ2V0KGlkZW50aWZpZXIpKTsKKyAg
ICB9KTsKIH0KIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RvcChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZp
ZXIpCiB7Ci0gICAgaWYgKG1fY3VycmVudFJlcXVlc3QgJiYgbV9jdXJyZW50UmVxdWVzdC0+Y2xp
ZW50SWRlbnRpZmllcigpID09IGNsaWVudElkZW50aWZpZXIpIHsKLSAgICAgICAgc3RvcFByb2Nl
c3NpbmdSZXF1ZXN0KCptX2N1cnJlbnRSZXF1ZXN0KTsKKyAgICBNRVNTQUdFX0NIRUNLKGNsaWVu
dElkZW50aWZpZXIpOworICAgIGlmIChtX3BlbmRpbmdSZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRl
bnRpZmllcikpIHsKKyAgICAgICAgc2VuZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICByZW1vdmVQZW5kaW5nUmVxdWVzdChjbGllbnRJZGVudGlmaWVyKTsKKyAgICBB
U1NFUlQobV9vbmdvaW5nUmVxdWVzdHMuY29udGFpbnMoY2xpZW50SWRlbnRpZmllcikpOworICAg
IHN0b3BSZXF1ZXN0KCptX29uZ29pbmdSZXF1ZXN0cy5nZXQoY2xpZW50SWRlbnRpZmllcikpOwog
fQogCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjphYm9ydChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCiB7
Ci0gICAgaWYgKG1fY3VycmVudFJlcXVlc3QgJiYgbV9jdXJyZW50UmVxdWVzdC0+Y2xpZW50SWRl
bnRpZmllcigpID09IGNsaWVudElkZW50aWZpZXIpIHsKLSAgICAgICAgbV9jdXJyZW50UmVxdWVz
dCA9IG51bGxwdHI7Ci0gICAgICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OkVuZCk7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbjo6RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lkZW50
aWZpZXIpOwotCi0gICAgICAgIHByb2Nlc3NOZXh0UGVuZGluZ1JlcXVlc3RJZk5lZWRlZCgpOwor
ICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKG1fcGVuZGluZ1Jl
cXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKSkgeworICAgICAgICBzZW5kVXBkYXRlKGNs
aWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5k
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlbW92ZVBlbmRpbmdSZXF1ZXN0KGNs
aWVudElkZW50aWZpZXIpOworICAgIEFTU0VSVChtX29uZ29pbmdSZXF1ZXN0cy5jb250YWlucyhj
bGllbnRJZGVudGlmaWVyKSk7CisgICAgYXV0byByZXF1ZXN0ID0gbV9vbmdvaW5nUmVxdWVzdHMu
dGFrZShjbGllbnRJZGVudGlmaWVyKTsKKyAgICBhYm9ydFJlcXVlc3QoKnJlcXVlc3QpOworICAg
IGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShj
bGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVu
ZCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpE
aWRSZWNlaXZlVXBkYXRlKHVwZGF0ZSksIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OnJlbW92ZVBlbmRpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKK3Zv
aWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQogewot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+IHRha2VuUmVxdWVz
dDsKLSAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0cyA9IHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nUmVx
dWVzdHMsIHsgfSk7Ci0gICAgd2hpbGUgKCFwZW5kaW5nUmVxdWVzdHMuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIGF1dG8gcmVxdWVzdCA9IHBlbmRpbmdSZXF1ZXN0cy50YWtlRmlyc3QoKTsKLSAgICAg
ICAgaWYgKHJlcXVlc3QtPmNsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlmaWVyKSB7
Ci0gICAgICAgICAgICBhdXRvIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBk
YXRlOjpjcmVhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25V
cGRhdGVUeXBlOjpFbmQpOwotICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uOjpEaWRSZWNlaXZlVXBkYXRlKHVwZGF0ZSksIG1faWRlbnRpZmll
cik7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBtX3BlbmRpbmdS
ZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShyZXF1ZXN0KSk7Ci0gICAgfQorICAgIE1FU1NBR0VfQ0hF
Q0soY2xpZW50SWRlbnRpZmllcik7CisgICAgYXV0byByZXF1ZXN0ID0gbV9vbmdvaW5nUmVxdWVz
dHMudGFrZShjbGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAocmVxdWVzdCkKKyAgICAgICAgYWJv
cnRSZXF1ZXN0KCpyZXF1ZXN0KTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6
aW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyIGNsaWVudElkZW50aWZpZXIpCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpo
YW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkK
IHsKLSAgICBpZiAobV9jdXJyZW50UmVxdWVzdCAmJiBtX2N1cnJlbnRSZXF1ZXN0LT5jbGllbnRJ
ZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikgewotICAgICAgICBtX2N1cnJlbnRSZXF1
ZXN0ID0gbnVsbHB0cjsKLSAgICAgICAgcHJvY2Vzc05leHRQZW5kaW5nUmVxdWVzdElmTmVlZGVk
KCk7Ci0gICAgfQorICAgIC8vIFRPRE86IHN0YXJ0IGNhcHR1cmluZyBhdWRpbyBhbmQgcmVjb2du
aXRpb24uCiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0YXJ0UG9jZXNzaW5n
UmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKQordm9pZCBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcjo6c3RvcFJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0JiByZXF1ZXN0KQogeworICAgIC8vIFRPRE86IHN0b3AgY2FwdHVyaW5nIGF1ZGlvIGFu
ZCBmaW5hbGl6aW5nIHJlc3VsdHMgYnkgcmVjb2duaXppbmcgY2FwdHVyZWQgYXVkaW8uCiB9CiAK
LXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0b3BQcm9jZXNzaW5nUmVxdWVzdChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6YWJvcnRSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVx
dWVzdCkKIHsKKyAgICAvLyBUT0RPOiBzdG9wIGNhcHR1cmluZyBhdWRpbyBhbmQgcmVjb2duaXRp
b24gaW1tZWRpYXRlbHkgd2l0aG91dCBnZW5lcmF0aW5nIHJlc3VsdHMuCit9CisKK3ZvaWQgU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnNlbmRVcGRhdGUoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGUgdHlwZSwgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gZXJyb3IsIE9w
dGlvbmFsPFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PiByZXN1bHQpCit7Cisg
ICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRl
KGNsaWVudElkZW50aWZpZXIsIHR5cGUpOworICAgIGlmICh0eXBlID09IFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlVHlwZTo6RXJyb3IpCisgICAgICAgIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihjbGllbnRJZGVudGlmaWVyLCAqZXJyb3IpOwor
ICAgIGlmICh0eXBlID09IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6UmVzdWx0KQorICAg
ICAgICB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVz
dWx0KGNsaWVudElkZW50aWZpZXIsICpyZXN1bHQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6RGlkUmVjZWl2ZVVwZGF0ZSh1cGRhdGUpLCBtX2lk
ZW50aWZpZXIpOwogfQogCiBJUEM6OkNvbm5lY3Rpb24qIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CkBAIC0xMjQsMyArMTQ1LDUgQEAgdWlu
dDY0X3QgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3QKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyN1bmRlZiBNRVNTQUdFX0NI
RUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIuaAppbmRleCA3YWEyNDE2MzhiOWMzNTE0OTY2OTg0NDMyZGJjNTMwZGY4NDg0YTM3Li4zNjNj
YTIwZWJiZTNjZmNlZWRhZjU4ZmVlMzRmYmMyZTFkMThhMjRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKQEAgLTI4LDMyICsyOCw0
MCBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5k
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TcGVlY2hSZWNvZ25pdGlvbkVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NwZWVjaFJlY29nbml0aW9u
UmVzdWx0RGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitlbnVtIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTsKK3N0cnVjdCBDbGll
bnRPcmlnaW47Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQcm9jZXNzUHJv
eHk7CitlbnVtIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIDogYm9v
bDsKIAogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyID0gV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI7Cit1c2luZyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2Vy
ID0gRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJik+Owog
CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJp
dmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllcik7CisgICAgU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXJJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYpOwogCi0g
ICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvJiYpOwor
ICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1S
ZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYm
KTsKICAgICB2b2lkIHN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcik7CiAgICAgdm9pZCBhYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKICAgICB2b2lkIGludmFsaWRhdGUoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CiAKIHByaXZh
dGU6Ci0gICAgdm9pZCBwcm9jZXNzTmV4dFBlbmRpbmdSZXF1ZXN0SWZOZWVkZWQoKTsKLSAgICB2
b2lkIHJlbW92ZVBlbmRpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIpOwotCi0gICAgLy8gVE9ETzogaW1wbGVtZW50IHRoZXNlLgot
ICAgIHZvaWQgc3RhcnRQb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdCYpOwotICAgIHZvaWQgc3RvcFByb2Nlc3NpbmdSZXF1ZXN0KFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdCYpOworICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1
ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOworICAgIHZvaWQgaGFuZGxl
UmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKKyAgICB2b2lkIHN0
b3BSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOworICAgIHZvaWQg
YWJvcnRSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOworICAgIHZv
aWQgc2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIE9wdGlvbmFs
PFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+ID0gV1RGOjpudWxsb3B0LCBPcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gPSBXVEY6Om51
bGxvcHQpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKQEAg
LTY0LDggKzcyLDkgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29u
bmVjdGlvbjsKICAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgbV9pZGVudGlm
aWVyOwotICAgIERlcXVlPFJlZjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+PiBt
X3BlbmRpbmdSZXF1ZXN0czsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0PiBtX2N1cnJlbnRSZXF1ZXN0OworICAgIEhhc2hNYXA8V2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4+IG1fcGVuZGluZ1JlcXVlc3RzOworICAgIEhh
c2hNYXA8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4+IG1f
b25nb2luZ1JlcXVlc3RzOworICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXIg
bV9wZXJtaXNzaW9uQ2hlY2tlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5tZXNzYWdlcy5pbgppbmRleCBlMzFiZWZiMDk1YWQ4OGRhZGMzMGYwOTk1YzU3ZTQxNTM3M2Yx
MmY0Li5hMjhiOTIxY2I5NjRhZmFmMmZmMjJjOTE2YmJlNDZlODI5OTEzMjlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAogICovCiAgCiAgbWVzc2FnZXMgLT4gU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgU3RhcnQoc3RydWN0IFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8gaW5mbykKKyAgICBTdGFydChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFN0cmluZyBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVp
bnQ2NF90IG1heEFsdGVybmF0aXZlcywgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmln
aW4pCiAgICAgU3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgQWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEludmFsaWRhdGUo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVu
dGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZjA1
NGYyYmM4YjdmZGRlMGU1MDhlM2RhNzBlNjE0ZGJmZWYxNzBiNy4uZDZkODA3OTNhYjkyZGViYjBj
Mzk2YmI2NGQxZTliZTY4NjcxMzg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC04Niw2ICs4Niw3IEBACiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJv
eHkuaCIKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJuaW5nLmgiCiAjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUuaCIK
ICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIK
QEAgLTQ4OTIsNiArNDg5Myw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VNYWluRG9j
dW1lbnQoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQp
OwogI2VuZGlmCiAgICAgbV9pc1F1b3RhSW5jcmVhc2VEZW5pZWQgPSBmYWxzZTsKKworICAgIG1f
c3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciA9IG51bGxwdHI7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5Ojp2aWV3SXNCZWNvbWluZ1Zpc2libGUoKQpAQCAtNzYwNSw2ICs3NjA4LDgg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0
YXRlUmVhc29uKQogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgbV93ZWJzaXRlRGF0YVN0b3Jl
LT5hdXRoZW50aWNhdG9yTWFuYWdlcigpLmNhbmNlbFJlcXVlc3QobV93ZWJQYWdlSUQsIFdURjo6
bnVsbG9wdCk7CiAjZW5kaWYKKworICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlciA9IG51bGxwdHI7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlQWZ0ZXJQ
cm9jZXNzRXhpdGVkKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB0ZXJtaW5hdGlvblJlYXNvbikK
QEAgLTEwMjUwLDYgKzEwMjU1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2
aXR5U3RhdGVVcGRhdGVGb3JUZXN0aW5nKCkKICAgICB9KTsKIH0KIAordm9pZCBXZWJQYWdlUHJv
eHk6OnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24oY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGlmICghbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyKQorICAgICAgICBtX3Nw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXI+KCp0aGlzKTsKKworICAgIG1fc3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlci0+cmVxdWVzdChjbGllbnRPcmlnaW4sIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxF
QVNFX0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IGYyYzlhZDRmMjg1ZTE0ZmM0ZjE0YTRmZjQ4MDYzMDUxZDU4OTYwZjYuLjYwM2Y1YTI3ODU3
MGNhZWNhYjM5MDJhNDgzNDM5YzRmYzYxZjgwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC0zMDQsNiArMzA0LDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlU2Ny
b2xsaW5nUGVyZm9ybWFuY2VEYXRhOwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb247
CiBjbGFzcyBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OwogY2xhc3MgU2VjS2V5UHJv
eHlTdG9yZTsKK2NsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXI7CiBjbGFz
cyBVc2VyRGF0YTsKIGNsYXNzIFZpZXdTbmFwc2hvdDsKIGNsYXNzIFZpc2l0ZWRMaW5rU3RvcmU7
CkBAIC0zNjQsNiArMzY1LDcgQEAgc3RydWN0IFVzZXJNZXNzYWdlOwogCiBlbnVtIGNsYXNzIE5l
Z290aWF0ZWRMZWdhY3lUTFMgOiBib29sOwogZW51bSBjbGFzcyBQcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50IDogYm9vbDsKK2VudW0gY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
RGVjaXNpb24gOiBib29sOwogZW51bSBjbGFzcyBVbmRvT3JSZWRvIDogYm9vbDsKIGVudW0gY2xh
c3MgV2ViQ29udGVudE1vZGUgOiB1aW50OF90OwogCkBAIC0xODE4LDYgKzE4MjAsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheShTZWNvbmRzIGNhcHR1
cmVSZXBvcnRpbmdEZWxheSkgeyBtX21lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5ID0gY2FwdHVy
ZVJlcG9ydGluZ0RlbGF5OyB9CiAgICAgc2l6ZV90IHN1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRl
cigpIHsgcmV0dXJuIG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyOyB9CiAKKyAgICB2b2lk
IHJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24oY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25EZWNpc2lvbik+JiYpOworCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50
JiwgV2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0yODQ4LDYgKzI4NTIsOSBAQCBwcml2YXRl
OgogICAgIH07CiAgICAgT3B0aW9uYWw8U3BlZWNoU3ludGhlc2lzRGF0YT4gbV9zcGVlY2hTeW50
aGVzaXNEYXRhOwogI2VuZGlmCisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uTWFuYWdlcj4gbV9zcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2Vy
OworCiAjaWYgVVNFKERJUkVDVDJEKQogICAgIENPTVB0cjxJRDNEMTFEZXZpY2UxPiBtX2Rldmlj
ZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
aW5kZXggYTlmODI4MmJlNTQwMTA4OWMyOTQyN2IwODg2MDc3YTQ4Njk0Yzc4MS4uOGQxMDExOTZi
YjU5OGI4ZDY1MWFiODFiMTMwZDljOWViZjEzYjVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUGx1
Z2luSW5mb1N0b3JlLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNs
dWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvblJlcXVlc3QuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tl
clN0YXRlLmgiCkBAIC0xNzE2LDcgKzE3MTcsMjUgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNy
ZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnQK
IHsKICAgICBhdXRvIHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0gbV9zcGVlY2hSZWNvZ25pdGlv
blNlcnZlck1hcC5hZGQoaWRlbnRpZmllciwgbnVsbHB0cik7CiAgICAgQVNTRVJUKHNwZWVjaFJl
Y29nbml0aW9uU2VydmVyLmlzTmV3RW50cnkpOwotICAgIHNwZWVjaFJlY29nbml0aW9uU2VydmVy
Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1h
a2VSZWYoKmNvbm5lY3Rpb24oKSksIGlkZW50aWZpZXIpOworICAgIFdlYlBhZ2VQcm94eSogdGFy
Z2V0UGFnZSA9IG51bGxwdHI7CisgICAgZm9yIChhdXRvKiBwYWdlIDogcGFnZXMoKSkgeworICAg
ICAgICBpZiAocGFnZSAmJiBwYWdlLT53ZWJQYWdlSUQoKSA9PSBpZGVudGlmaWVyKSB7CisgICAg
ICAgICAgICB0YXJnZXRQYWdlID0gcGFnZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorCisgICAgaWYgKCF0YXJnZXRQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBz
cGVlY2hSZWNvZ25pdGlvblNlcnZlci5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFNwZWVj
aFJlY29nbml0aW9uU2VydmVyPihtYWtlUmVmKCpjb25uZWN0aW9uKCkpLCBpZGVudGlmaWVyLCBb
d2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oYXV0byYgb3JpZ2luLCBhdXRvJiYg
Y29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtQYWdlKSB7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25E
ZWNpc2lvbjo6RGVueSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICB3ZWFrUGFnZS0+cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihvcmlnaW4sIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKICAgICBhZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIGlkZW50aWZpZXIsICpzcGVlY2hSZWNvZ25pdGlvblNlcnZlci5pdGVyYXRvci0+dmFsdWUp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA0MmNlODZjNGFjMWMyZTQ0ZGFmZTU2OGI3MzNkODA1OWQ5YzNiYmNlLi5iNTYzNDMw
NDc5NDc1MGFlYzMwNzQ3MGZkNjg5N2M2YjU1ZjNhOTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNzEsNiArMTM3MSw3IEBACiAJ
CTkzM0U4MzU1MjNBMDdDMDYwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzM0U4MzUzMjNBMDdCRjgwMERFRjI4
OSAvKiBXZWJJREJTZXJ2ZXIuaCAqLzsgfTsKIAkJOTMzRTgzNUEyM0ExQUUyODAwREVGMjg5IC8q
IFdlYklEQlNlcnZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzNFODM1OTIzQTFBREY1MDBERUYyODkgLyogV2ViSURCU2VydmVyTWVz
c2FnZXMuaCAqLzsgfTsKIAkJOTMzRTgzNUIyM0ExQjc1MDAwREVGMjg5IC8qIFdlYklEQlNlcnZl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MzNFODM1ODIzQTFBREY1MDBERUYyODkgLyogV2ViSURCU2VydmVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTM0MjU4OUEyNTVCNTM1QTAwNTlFRUREIC8qIE1lZGlh
UGVybWlzc2lvblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTM0MjU4OTgyNTVCNTM0QjAwNTlFRUREIC8qIE1lZGlhUGVybWlzc2lvblV0
aWxpdGllcy5oICovOyB9OwogCQk5MzRCNzI0NDE5RjVCOUJFMDBBRTk2RDYgLyogV0tBY3Rpb25N
ZW51SXRlbVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzRCNzI0MzE5RjVCOUJFMDBBRTk2RDYgLyogV0tBY3Rpb25NZW51SXRlbVR5cGVzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM1NkYy
REMyMTUyQjZCNTAwRTZENURGIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTUzMDIxRjQ3OTNCMjAwRENE
QzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5oICovOyB9OwogCQk5MzU2RjJERDIxNTJCNkY2
MDBFNkQ1REYgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0JBMDRFMDIxNTFBREY0MDA3RjQ1NUYgLyogV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmggKi87IH07CkBAIC0xNDA1LDYgKzE0MDYsOSBAQAogCQk5M0Q2
Qjc4NzI1NENDRDhDMDA1OEREM0EgLyogV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RDZCNzg2MjU0Q0NEOEIwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25N
ZXNzYWdlcy5oICovOyB9OwogCQk5M0Q2Qjc4ODI1NENDRDk0MDA1OEREM0EgLyogV2ViU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2Qjc3RTI1NENDQUJCMDA1OEREM0EgLyog
V2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXNSZXBsaWVzLmggKi87IH07CiAJ
CTkzRDZCNzhBMjU0Q0Q0M0UwMDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNENkI3N0QyNTRDQ0FCQjAwNThERDNBIC8qIFdlYlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTkzRDZCN0I0MjU1MjY4
RDUwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2QjdBRjI1NTI2OEEx
MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oICovOyB9Owor
CQk5M0Q2QjdCNTI1NTI2OEQ3MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNENkI3QjIyNTUyNjhBMjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIuaCAqLzsgfTsKKwkJOTNENkI3QjkyNTUzNEExNzAwNThERDNBIC8qIFdLU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0I3MjU1MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNFNkE0RUUxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hp
dFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzRTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGNTQ5QjQxRTMx
NzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkg
LyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQdWJsaWMsICk7IH07IH07CiAJCTk1MEYyODgwMjUyNDE0RUEwMEI3NEYxQyAvKiBXS01vdXNl
RGV2aWNlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk1MEYyODdFMjUyNDE0RTkwMEI3NEYxQyAvKiBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIu
aCAqLzsgfTsKQEAgLTQ0NTYsNiArNDQ2MCw4IEBACiAJCTkzM0U4MzU3MjNBMUE4NzIwMERFRjI4
OSAvKiBXZWJJREJTZXJ2ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2Vi
SURCU2VydmVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzNF
ODM1ODIzQTFBREY1MDBERUYyODkgLyogV2ViSURCU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYklEQlNlcnZlck1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklEQlNlcnZlck1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTkzM0U4MzU5MjNBMUFERjUwMERFRjI4OSAvKiBXZWJJREJTZXJ2ZXJNZXNzYWdlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJREJTZXJ2ZXJNZXNzYWdlcy5oOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJREJTZXJ2ZXJNZXNzYWdlcy5oOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk5MzQyNTg4RjI1NTVEQ0E1MDA1OUVFREQg
LyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVk
aWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
MzQyNTg5ODI1NUI1MzRCMDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzRCNzI0MzE5RjVCOUJFMDBBRTk2RDYg
LyogV0tBY3Rpb25NZW51SXRlbVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5MzVFRUI5NTEyNzc2MTZEMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVCYWNrRm9yd2Fy
ZExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzVFRUI5NjEyNzc2MTZE
MDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTQ1MTYsNiArNDUyMiwxMSBAQAogCQk5M0Q2Qjc4MDI1NENDQUJDMDA1
OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCNzgxMjU0Q0NBQkMwMDU4REQzQSAvKiBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VSZWNl
aXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRDZCNzg2MjU0Q0NEOEIw
MDU4REQzQSAvKiBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdBRjI1NTI2
OEExMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0IwMjU1MjY4QTEw
MDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bk1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Q2QjdCMjI1NTI2
OEEyMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRDZCN0I3MjU1MzRBMTEw
MDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNENkI3QjgyNTUzNEEx
MjAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTZB
NEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0hpdFRlc3RSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1
cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU25hcHNob3RDb25m
aWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjU0OUI1MUUzMTc0
REEwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU25hcHNob3RDb25maWd1cmF0aW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQ1Niw2ICs2NDY3LDcgQEAKIAkJCQk3QTgyMUY0
RDFFMkY2NzlFMDA2MDQ1NzcgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1t
ICovLAogCQkJCUExREY2MzExMThFMEI3QzgwMDNBM0UyQSAvKiBMZWdhY3lEb3dubG9hZENsaWVu
dC5oICovLAogCQkJCUExREY2MzEwMThFMEI3QzgwMDNBM0UyQSAvKiBMZWdhY3lEb3dubG9hZENs
aWVudC5tbSAqLywKKwkJCQk5MzQyNTg4RjI1NTVEQ0E1MDA1OUVFREQgLyogTWVkaWFQZXJtaXNz
aW9uVXRpbGl0aWVzLm1tICovLAogCQkJCTQxMTI4NkVGMjFDOEE5MEMwMDNBODU1MCAvKiBNZWRp
YVV0aWxpdGllcy5oICovLAogCQkJCTQxMTI4NkYwMjFDOEE5MEQwMDNBODU1MCAvKiBNZWRpYVV0
aWxpdGllcy5tbSAqLywKIAkJCQkxQUJDM0RGNDE4OTlFNDM3MDA0RjA2MjYgLyogTmF2aWdhdGlv
blN0YXRlLmggKi8sCkBAIC05MTk5LDYgKzkyMTEsNyBAQAogCQkJCTVDRUFCQTJCMjMzMzI1MTQw
MDc5Nzc5NyAvKiBMZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHAgKi8sCiAJCQkJNUNFQUJBMkEyMzMz
MjQ3NzAwNzk3Nzk3IC8qIExlZ2FjeUdsb2JhbFNldHRpbmdzLmggKi8sCiAJCQkJMzE2MDdGMzgx
OTYyNzAwMjAwOUI4N0RBIC8qIExlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5oICovLAorCQkJCTkz
NDI1ODk4MjU1QjUzNEIwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMuaCAqLywK
IAkJCQlCQzZFREFBNTExMTI3MUM2MDBFNzY3OEIgLyogUGFnZUNsaWVudC5oICovLAogCQkJCTFB
Qzc1Mzc5MTgzQTlGREEwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmNwcCAqLywKIAkJCQkxQUM3
NTM3QTE4M0E5RkRCMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5oICovLApAQCAtOTIxOCw2ICs5
MjMxLDkgQEAKIAkJCQlCQzExMUIwODExMkY1RTNDMDAzMzdCQUIgLyogUmVzcG9uc2l2ZW5lc3NU
aW1lci5jcHAgKi8sCiAJCQkJMUEzMDA2NkMxMTEwRjRGNzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVu
ZXNzVGltZXIuaCAqLywKIAkJCQk1Q0E5ODU0OTIxMEJFQjVBMDA1N0VCNkIgLyogU2FmZUJyb3dz
aW5nV2FybmluZy5oICovLAorCQkJCTkzRDZCN0IwMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmNwcCAqLywKKwkJCQk5M0Q2QjdCMjI1NTI2OEEy
MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oICovLAorCQkJ
CTkzRDZCN0FGMjU1MjY4QTEwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmggKi8sCiAJCQkJOTNENkI3NkIyNTRCODk1ODAwNThERDNBIC8qIFNwZWVjaFJlY29n
bml0aW9uU2VydmVyLmNwcCAqLywKIAkJCQk5M0Q2Qjc2QzI1NEI4OTU4MDA1OEREM0EgLyogU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCAqLywKIAkJCQk5M0Q2Qjc3QTI1NEM5ODREMDA1OEREM0Eg
LyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIubWVzc2FnZXMuaW4gKi8sCkBAIC05NTU5LDYgKzk1
NzUsOCBAQAogCQkJCTMzMzY3NjM5MTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNlQ2FjaGVN
YW5hZ2VyLmggKi8sCiAJCQkJMUFERTQ2QjAxOTU0RUM2MTAwMEY3OTg1IC8qIFdLU2Vzc2lvblN0
YXRlUmVmLmNwcCAqLywKIAkJCQkxQURFNDZCMTE5NTRFQzYxMDAwRjc5ODUgLyogV0tTZXNzaW9u
U3RhdGVSZWYuaCAqLywKKwkJCQk5M0Q2QjdCODI1NTM0QTEyMDA1OEREM0EgLyogV0tTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5jcHAgKi8sCisJCQkJOTNENkI3QjcyNTUzNEEx
MTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLywK
IAkJCQk1MUY4ODZBMzFGMkMyMTRBMDBDMTkzRUYgLyogV0tUZXN0aW5nU3VwcG9ydC5jcHAgKi8s
CiAJCQkJNTFGODg2QTQxRjJDMjE0QTAwQzE5M0VGIC8qIFdLVGVzdGluZ1N1cHBvcnQuaCAqLywK
IAkJCQkzMTQ4ODhGRTFEOTFCMTFEMDAzNzcwNDIgLyogV0tUZXh0Q2hlY2tlci5jcHAgKi8sCkBA
IC0xMTE1Myw2ICsxMTE3MSw3IEBACiAJCQkJMUE2RDg2QzIxREY3NTI2NTAwNzc0NUU4IC8qIE1h
Y2hNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0M1NkY3OTExNTk5NTdEMDAxQ0NBRjkg
LyogTWFjaFBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjRCNUYzMTFGNTMxRTgwMEMzODI2
OSAvKiBNYWNoVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzQyNTg5QTI1NUI1MzVB
MDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwN0UxOUVGQzIzRDQwMUYxMDA5NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RTE5RUZEMjNENDAxRjEwMDk0RkZCNCAvKiBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxOTMzREVGMTk2NUVCMzEwMDhBQzNFQSAvKiBNZW51VXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLywKQEAgLTExMzk0LDYgKzExNDEzLDggQEAKIAkJCQk1N0JCRUE2RDIyQkMwQkZFMDAyNzM5
OTUgLyogU09BdXRob3JpemF0aW9uTG9hZFBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc2
Q0E5RDcyMkI4NjIxODAwMzAxNDNDIC8qIFNPQXV0aG9yaXphdGlvbk5TVVJMRXh0cmFzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4NTIyQjM1MTY5MDA4RDBFOEIgLyogU09BdXRob3JpemF0
aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNENkI3QjUyNTUyNjhENzAwNThERDNB
IC8qIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTkzRDZCN0I0MjU1MjY4RDUwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0Eg
LyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzg0
MjU0Q0NEMEUwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4NTI1NENDRDQzMDA1OEREM0EgLyogU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXJNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTIwMTAsNiAr
MTIwMzEsNyBAQAogCQkJCTUxM0U0NjJEMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2
aWNlUGlja2VyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjU0OUI0MUUzMTc0Qjcw
MDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTdGRDMxODcyMkIzNTE3MDAwOEQwRThCIC8qIFdLU09BdXRob3JpemF0aW9uRGVsZWdhdGUuaCBp
biBIZWFkZXJzICovLAorCQkJCTkzRDZCN0I5MjU1MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTc4RkYz
MjIyNDE5MTk2MDA5NjQ4M0UgLyogV0tTdG9yYWdlQWNjZXNzQWxlcnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDNDA3NjA2MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1N0cmluZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkM0MDc2MUExMjRGRjAzNzAwNjhGMjBBIC8qIFdLU3RyaW5nQ0YuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNw
cAppbmRleCBlYTE2YjJlZDc2NjViMzJiZDM5Y2FjNDYzMmI0YjlhNTFhNzVkNmIxLi4zZjM1MzE5
NGEzMmMzZTY3OWJjYTI5ZmJlYTg1MDMxYzkyMWU0ZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcApAQCAtNTksMTAgKzU5LDkgQEAgdm9pZCBX
ZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OnJlZ2lzdGVyQ2xpZW50KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ28KICAgICBtX2NsaWVudE1hcC5hZGQoY2xpZW50LmlkZW50aWZpZXIo
KSwgbWFrZVdlYWtQdHIoY2xpZW50KSk7CiB9CiAKLXZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uOjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBj
b250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMp
Cit2b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RhcnQoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0
cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGll
bnRPcmlnaW4pCiB7Ci0gICAgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbyBp
bmZvIHsgY2xpZW50SWRlbnRpZmllciwgbGFuZywgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMs
IG1heEFsdGVybmF0aXZlcyB9OwotICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9u
U2VydmVyOjpTdGFydChpbmZvKSk7CisgICAgc2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OlN0YXJ0KGNsaWVudElkZW50aWZpZXIsIGxhbmcsIGNvbnRpbnVvdXMsIGludGVy
aW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMsIFdURk1vdmUoY2xpZW50T3JpZ2luKSkpOwogfQog
CiB2b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6c3RvcChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIp
CkBAIC04MCw3ICs3OSw3IEBAIHZvaWQgV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uOjpp
bnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjCiAgICAgc2VuZChNZXNz
YWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OkludmFsaWRhdGUoY2xpZW50SWRlbnRpZmll
cikpOwogfQogCi12b2lkIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYgdXBkYXRlKQor
dm9pZCBXZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb246OmRpZFJlY2VpdmVVcGRhdGUoV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmJiB1cGRhdGUpCiB7CiAgICAgYXV0byBjbGll
bnRJZGVudGlmaWVyID0gdXBkYXRlLmNsaWVudElkZW50aWZpZXIoKTsKICAgICBpZiAoIW1fY2xp
ZW50TWFwLmNvbnRhaW5zKGNsaWVudElkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbi5oCmluZGV4IDI4ZGJkMTk3Y2IzZjc5OGZjNzYzMTk5ZWJi
MTJkZTEzYWVkNzUxYjEuLjQ0M2IwNGYxY2NhYWIwYTBlNmFhNTM4MzFlOTg1ZDEwYTZhNTMzMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgKQEAgLTQz
LDExICs0MywxMSBAQCBjbGFzcyBXZWJQYWdlOwogCiB1c2luZyBTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25JZGVudGlmaWVyID0gV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI7CiAKLWNsYXNzIFdl
YlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUg
SVBDOjpNZXNzYWdlU2VuZGVyIHsKK2NsYXNzIFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
biBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24sIHBy
aXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbj4g
Y3JlYXRlKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgdm9p
ZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVz
dWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0KFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50
NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmKSBmaW5hbDsKICAg
ICB2b2lkIHN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBhYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKSBmaW5hbDsKIApAQCAtNTYsNyArNTYsNyBAQCBw
cml2YXRlOgogICAgIH5XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24oKTsKIAogICAgIHZv
aWQgcmVnaXN0ZXJDbGllbnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRlKGNvbnN0IFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlVXBkYXRl
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiYpIGZpbmFsOwogICAgIHZvaWQgaW52
YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGMxMDVlYjU5Y2E1ZDFkNjI0NjFmNzY5
NTYwZDFhMzI3ZDA0M2M4MGUuLjhlNThhMjdhOWE0OWIxZTNiMDUyMmMzOWNmOGJiZGNkNDhiZDQ0
MDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMyBAQAorMjAyMC0xMS0xMyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcGVybWlzc2lvbiBjaGVjayBmb3IgU3BlZWNo
UmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODQ3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzEyMjI2Mzg+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9J
bmZvLnBsaXN0OgorICAgICAgICAqIE1vYmlsZU1pbmlCcm93c2VyL01vYmlsZU1pbmlCcm93c2Vy
L0luZm8ucGxpc3Q6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9TcGVlY2hSZWNvZ25pdGlvbi5tbTogQWRkZWQuCisgICAgICAgICgtW1NwZWVjaFJl
Y29nbml0aW9uUGVybWlzc2lvblVJRGVsZWdhdGUgX3dlYlZpZXc6cmVxdWVzdFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkZvck9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgt
W1NwZWVjaFJlY29nbml0aW9uTWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRp
ZFJlY2VpdmVTY3JpcHRNZXNzYWdlOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9zcGVlY2hyZWNvZ25p
dGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbDogQWRkZWQuCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
OgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkdyYW50ZWQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV1RSOjpkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25SZXF1ZXN0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNvbXBsZXRlU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2spOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZv
Y2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToK
KwogMjAyMC0xMS0xMyAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW2J1aWxkLndlYmtpdC5vcmddIFVzZSBweXRob24zIHRvIHJ1biB0cmFuc2Zlci10by1z
MyBzY3JpcHQKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9JbmZvLnBsaXN0IGIv
VG9vbHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QKaW5kZXggNGUyYjFmNDgxOWFkNTEwM2U0
Y2YxNzA5YjdjNTNhNjZlOGIzOTVlNS4uMzNhM2NhMWJlNzM1MDhlMWZmY2IwMjk1N2M4NjRlODU5
MmRhYWE0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QKKysr
IGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0luZm8ucGxpc3QKQEAgLTUyLDkgKzUyLDExIEBACiAJ
CQk8c3RyaW5nPkVkaXRvcjwvc3RyaW5nPgogCQk8L2RpY3Q+CiAJPC9hcnJheT4KLSAgICA8a2V5
Pk5TQ2FtZXJhVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5nIHZp
ZGVvIG9uIGJlaGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgotICAgIDxrZXk+TlNNaWNyb3Bob25l
VXNhZ2VEZXNjcmlwdGlvbjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5nIGF1ZGlvIG9uIGJl
aGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9u
PC9rZXk+CisJPHN0cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9z
dHJpbmc+CisJPGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmlu
Zz5SZWNvcmRpbmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5O
U1NwZWVjaFJlY29nbml0aW9uVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVjb2du
aXppbmcgY2FwdHVyZWQgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CiA8L2Rp
Y3Q+CiA8L3BsaXN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxl
TWluaUJyb3dzZXIvSW5mby5wbGlzdCBiL1Rvb2xzL01vYmlsZU1pbmlCcm93c2VyL01vYmlsZU1p
bmlCcm93c2VyL0luZm8ucGxpc3QKaW5kZXggMmQxYmM1ODJmYmU3NjVjZmRjNDEwNWVmZTllY2Mx
ZDgzMjBjYzk1OS4uNTM4N2IzNzQ5YTQ3NGZlMGIzZDljNjA5NWNiMjg4MTdiOGY5MjMwYSAxMDA2
NDQKLS0tIGEvVG9vbHMvTW9iaWxlTWluaUJyb3dzZXIvTW9iaWxlTWluaUJyb3dzZXIvSW5mby5w
bGlzdAorKysgYi9Ub29scy9Nb2JpbGVNaW5pQnJvd3Nlci9Nb2JpbGVNaW5pQnJvd3Nlci9JbmZv
LnBsaXN0CkBAIC01NCw5ICs1NCwxMSBAQAogCQk8a2V5Pk5TQWxsb3dzQXJiaXRyYXJ5TG9hZHNJ
bldlYkNvbnRlbnQ8L2tleT4KIAkJPHRydWUvPgogCTwvZGljdD4KLSAgICA8a2V5Pk5TQ2FtZXJh
VXNhZ2VEZXNjcmlwdGlvbjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5nIHZpZGVvIG9uIGJl
aGFsZiBvZiB3ZWJzaXRlczwvc3RyaW5nPgotICAgIDxrZXk+TlNNaWNyb3Bob25lVXNhZ2VEZXNj
cmlwdGlvbjwva2V5PgotICAgIDxzdHJpbmc+UmVjb3JkaW5nIGF1ZGlvIG9uIGJlaGFsZiBvZiB3
ZWJzaXRlczwvc3RyaW5nPgorCTxrZXk+TlNDYW1lcmFVc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJ
PHN0cmluZz5SZWNvcmRpbmcgdmlkZW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJ
PGtleT5OU01pY3JvcGhvbmVVc2FnZURlc2NyaXB0aW9uPC9rZXk+CisJPHN0cmluZz5SZWNvcmRp
bmcgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CisJPGtleT5OU1NwZWVjaFJl
Y29nbml0aW9uVXNhZ2VEZXNjcmlwdGlvbjwva2V5PgorCTxzdHJpbmc+UmVjb2duaXppbmcgY2Fw
dHVyZWQgYXVkaW8gb24gYmVoYWxmIG9mIHdlYnNpdGVzPC9zdHJpbmc+CiA8L2RpY3Q+CiA8L3Bs
aXN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4OTdmODIzYTUxZTc2MGE0MWM2ZTM2ZGFk
OTU0NWY4NjIyOGJmYTg5Li41NDIzMTY1ODRmNzIxOWNkYzA0YzlkOWMzM2U0NDhjNjRkMGU3ZTMw
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODAwLDYgKzgwMCw4IEBACiAJCTkzMjlBQTI5
MURFM0Y4MUUwMDNBQkQwNyAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzI5QUEyODFERTNGODFFMDAzQUJEMDcg
LyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwICovOyB9OwogCQk5MzJBRTUzRDFEMzcxMDQ3MDA1REZG
QUYgLyogZm9jdXMtaW5wdXRzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1NzVDNTUxRDMwMzY2RTAwMEQ2MDREIC8qIGZvY3VzLWlu
cHV0cy5odG1sICovOyB9OwogCQk5MzNENjMxRDFGQ0I3NjIwMDAzMkVDRDYgLyogSGFzaGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzM0Q2MzFC
MUZDQjc2MTgwMDMyRUNENiAvKiBIYXNoZXIuY3BwICovOyB9OworCQk5MzQyNTg5QzI1NUI2MDlC
MDA1OUVFREQgLyogU3BlZWNoUmVjb2duaXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQyNTg5QjI1NUI2MDlBMDA1OUVFREQgLyogU3BlZWNo
UmVjb2duaXRpb24ubW0gKi87IH07CisJCTkzNDI1ODlFMjU1QjZBMTIwMDU5RUVERCAvKiBzcGVl
Y2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQyNTg5RDI1NUI2
NkEwMDA1OUVFREQgLyogc3BlZWNocmVjb2duaXRpb24tdXNlci1wZXJtaXNzaW9uLXBlcnNpc3Rl
bmNlLmh0bWwgKi87IH07CiAJCTkzNTc4NkNDMjBGNkEyNzAwMDAwQ0RGQyAvKiBJbmRleGVkREIu
c3FsaXRlMy13YWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM0RkE1QzUyMEY2OUZFRDAwNDBEQzFCIC8qIEluZGV4ZWREQi5zcWxpdGUzLXdh
bCAqLzsgfTsKIAkJOTM1Nzg2Q0QyMEY2QTI5MTAwMDBDREZDIC8qIEluZGV4ZWREQi5zcWxpdGUz
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
NEZBNUM3MjBGNjlGRUUwMDQwREMxQiAvKiBJbmRleGVkREIuc3FsaXRlMyAqLzsgfTsKIAkJOTM1
Nzg2Q0UyMEY2QTJBMTAwMDBDREZDIC8qIEluZGV4ZWREQi5zcWxpdGUzLXNobSBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRGQTVDNjIwRjY5
RkVEMDA0MERDMUIgLyogSW5kZXhlZERCLnNxbGl0ZTMtc2htICovOyB9OwpAQCAtMTYxMSw2ICsx
NjEzLDcgQEAKIAkJCQlGNEY0MDVCRDFENEMwRDFDMDA3QTk3MDcgLyogc2tpbm55LWF1dG9wbGF5
aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDMDFB
MjNGMjEyNjYxNTY3MDBDOUVENTUgLyogc3BhY2ViYXItc2Nyb2xsaW5nLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCiAJCQkJRjRDRkNEREEyNDlGQzlFNDAwNTI3NDgyIC8qIFNwYWNlT25seS5v
dGYgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJOTM0MjU4OUUyNTVCNkExMjAwNTlFRUREIC8q
IHNwZWVjaHJlY29nbml0aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5jZS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCUUxOTRFMUJEMTc3RTUzQzcwMDlDNEQ0RSAvKiBTdG9wTG9h
ZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQk1MTVCRTE2RjFENDI4QkIxMDBERDdDNjggLyogU3RvcmVCbG9iVG9CZURlbGV0ZWQuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk5QkQ2RDNBMjFGN0IyMTgzMDBCRDQ5NjIgLyogc3Vu
c2V0LWluLWN1cGVydGluby0xMDBweC50aWZmIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjQw
Miw2ICsyNDA1LDggQEAKIAkJOTMyOUFBMjgxREUzRjgxRTAwM0FCRDA3IC8qIFRleHRCcmVha0l0
ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRCcmVh
a0l0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMzMTQwN0IxN0I0
NDE5MDAwRjA4M0IxIC8qIERpZE5vdEhhbmRsZUtleURvd24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGlkTm90SGFuZGxlS2V5RG93bi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzM0Q2MzFCMUZDQjc2MTgwMDMyRUNENiAvKiBIYXNoZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGFzaGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM0MjU4OUIyNTVCNjA5QTAwNTlFRUREIC8qIFNwZWVj
aFJlY29nbml0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
U3BlZWNoUmVjb2duaXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNDI1
ODlEMjU1QjY2QTAwMDU5RUVERCAvKiBzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24t
cGVyc2lzdGVuY2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJzcGVlY2hyZWNv
Z25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzNEZBNUM1MjBGNjlGRUQwMDQwREMxQiAvKiBJbmRleGVkREIuc3Fs
aXRlMy13YWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBmaWxlOyBwYXRoID0gIkluZGV4ZWREQi5zcWxpdGUzLXdhbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzNEZBNUM2MjBGNjlGRUQwMDQwREMxQiAvKiBJbmRleGVkREIuc3FsaXRl
My1zaG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBm
aWxlOyBwYXRoID0gIkluZGV4ZWREQi5zcWxpdGUzLXNobSI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzNEZBNUM3MjBGNjlGRUUwMDQwREMxQiAvKiBJbmRleGVkREIuc3FsaXRlMyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBh
dGggPSBJbmRleGVkREIuc3FsaXRlMzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMz
ODMsNiArMzM4OCw3IEBACiAJCQkJMzdCQ0E2MUIxQjU5NkJBOTAwMjAxMkNBIC8qIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0FjdGlvbnMubW0gKi8sCiAJCQkJMkQ5QTUzQUUxQjMx
RkE4RDAwNzRENUFBIC8qIFNocmlua1RvRml0Lm1tICovLAogCQkJCTJERkY3QjZDMURBNDg3QUYw
MDgxNDYxNCAvKiBTbmFwc2hvdFN0b3JlLm1tICovLAorCQkJCTkzNDI1ODlCMjU1QjYwOUEwMDU5
RUVERCAvKiBTcGVlY2hSZWNvZ25pdGlvbi5tbSAqLywKIAkJCQlDREMwOTMyRDIxQzk5MzQ0MDAz
MEM0QjAgLyogU3RvcFN1c3BlbmRSZXN1bWVBbGxNZWRpYS5tbSAqLywKIAkJCQk0MTRBRDY4NTIy
ODVEMUIwMDA3NzdGMkQgLyogU3RvcmFnZVF1b3RhLm1tICovLAogCQkJCTUxNUJFMTcwMUQ0MjhC
RDEwMEREN0M2OCAvKiBTdG9yZUJsb2JUaGVuRGVsZXRlLm1tICovLApAQCAtMzkwMyw2ICszOTA5
LDcgQEAKIAkJCQk0NjU2QTc1NzIwRjkwNTRGMDAwMkUyMUYgLyogU2ltcGxlU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbnMtNC5zcWxpdGUzICovLAogCQkJCUY0RjQwNUJCMUQ0QzBDRjgwMDdBOTcw
NyAvKiBza2lubnktYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sICovLAogCQkJCUY0
Q0ZDREQ4MjQ5RkM5RDkwMDUyNzQ4MiAvKiBTcGFjZU9ubHkub3RmICovLAorCQkJCTkzNDI1ODlE
MjU1QjY2QTAwMDU5RUVERCAvKiBzcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVy
c2lzdGVuY2UuaHRtbCAqLywKIAkJCQk1MTVCRTE2RTFENDI4OEZGMDBERDdDNjggLyogU3RvcmVC
bG9iVG9CZURlbGV0ZWQuaHRtbCAqLywKIAkJCQk5QkQ2RDNBMTFGN0IyMDIxMDBCRDQ5NjIgLyog
c3Vuc2V0LWluLWN1cGVydGluby0xMDBweC50aWZmICovLAogCQkJCTlCRDZEM0EwMUY3QjIwMjAw
MEJENDk2MiAvKiBzdW5zZXQtaW4tY3VwZXJ0aW5vLTIwMHB4LnBuZyAqLywKQEAgLTU0NTMsNiAr
NTQ2MCw3IEBACiAJCQkJNTEwQTkxRjgyNEQzNjIyMTAwQkZEODlDIC8qIFNvbnlEdWFsU2hvY2sz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFQjEyNjQyNENBNkI2NjAwMENCMDMwIC8qIFNvbnlE
dWFsU2hvY2s0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMTUxQTQxMUFFNjAwNDQ3QzRD
IC8qIFNwYWNlYmFyU2Nyb2xsaW5nLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzNDI1ODlDMjU1
QjYwOUIwMDU5RUVERCAvKiBTcGVlY2hSZWNvZ25pdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTU3RjRBQUEwMjA4RkFFRjAwMEE2OEU5RSAvKiBTU0xLZXlHZW5lcmF0b3IubW0gaW4gU291cmNl
cyAqLywKIAkJCQk4M0JDNUFDMDIwRTZDMERGMDBGNTg3OUYgLyogU3RhcnRMb2FkSW5EaWRGYWls
UHJvdmlzaW9uYWxMb2FkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFQjEyNjUyNENBNkI2NjAw
MENCMDMwIC8qIFN0ZWVsU2VyaWVzTmltYnVzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NwZWVjaFJlY29nbml0aW9u
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TcGVlY2hSZWNvZ25p
dGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lMzNhZDAyYjU0MTUyYzEwNTZlNjQ4YzZhYTJiZjYxMzE0YmEx
NDA0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TcGVlY2hSZWNvZ25pdGlvbi5tbQpAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2lt
cG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2
YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlldy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24uaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworc3RhdGljIGJvb2wgc2hvdWxkR3Jh
bnRQZXJtaXNzaW9uUmVxdWVzdCA9IHRydWU7CitzdGF0aWMgYm9vbCBwZXJtaXNzaW9uUmVxdWVz
dGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3NhZ2U7CitzdGF0aWMg
UmV0YWluUHRyPFdLU2NyaXB0TWVzc2FnZT4gbGFzdFNjcmlwdE1lc3NhZ2U7CisKK0BpbnRlcmZh
Y2UgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uVUlEZWxlZ2F0ZSA6IE5TT2JqZWN0PFdLVUlE
ZWxlZ2F0ZVByaXZhdGU+CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJl
cXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmln
aW4gKilvcmlnaW4gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShCT09MKSlkZWNpc2lvbkhhbmRs
ZXI7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25V
SURlbGVnYXRlCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3RT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25Gb3JPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilv
cmlnaW4gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShCT09MKSlkZWNpc2lvbkhhbmRsZXIKK3sK
KyAgICBwZXJtaXNzaW9uUmVxdWVzdGVkID0gdHJ1ZTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoc2hv
dWxkR3JhbnRQZXJtaXNzaW9uUmVxdWVzdCk7Cit9CitAZW5kCisKK0BpbnRlcmZhY2UgU3BlZWNo
UmVjb2duaXRpb25NZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gU3BlZWNoUmVjb2duaXRpb25NZXNzYWdlSGFu
ZGxlcgorLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9s
bGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1Nj
cmlwdE1lc3NhZ2UgKiltZXNzYWdlCit7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gdHJ1
ZTsKKyAgICBsYXN0U2NyaXB0TWVzc2FnZSA9IG1lc3NhZ2U7Cit9CitAZW5kCisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXZWJLaXQyLCBTcGVlY2hSZWNvZ25pdGlvblVzZXJQ
ZXJtaXNzaW9uUGVyc2lzdGVuY2UpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGhhbmRs
ZXIgPSBhZG9wdE5TKFtbU3BlZWNoUmVjb2duaXRpb25NZXNzYWdlSGFuZGxlciBhbGxvY10gaW5p
dF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlw
dE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisgICAg
YXV0byBwcmVmZXJlbmNlcyA9IFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKKyAgICBwcmVm
ZXJlbmNlcy5fbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKKyAgICBwcmVmZXJlbmNl
cy5fc3BlZWNoUmVjb2duaXRpb25FbmFibGVkID0gWUVTOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1
dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uVUlEZWxl
Z2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUu
Z2V0KCldOworCisgICAgc2hvdWxkR3JhbnRQZXJtaXNzaW9uUmVxdWVzdCA9IGZhbHNlOworICAg
IHBlcm1pc3Npb25SZXF1ZXN0ZWQgPSBmYWxzZTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2Ug
PSBmYWxzZTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNwZWVjaHJlY29nbml0
aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5jZSJdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJF
cnJvcjogbm90LWFsbG93ZWQgLSBQZXJtaXNzaW9uIGNoZWNrIGZhaWxlZCIsIFtsYXN0U2NyaXB0
TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX1RSVUUocGVybWlzc2lvblJlcXVlc3RlZCk7CisK
KyAgICAvLyBQZXJtaXNzaW9uIHJlc3VsdCBpcyByZW1lbWJlcmVkLgorICAgIHBlcm1pc3Npb25S
ZXF1ZXN0ZWQgPSBmYWxzZTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAg
ICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic3RhcnQoKSJdOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBF
WFBFQ1RfV0tfU1RSRVEoQCJFcnJvcjogbm90LWFsbG93ZWQgLSBQZXJtaXNzaW9uIGNoZWNrIGZh
aWxlZCIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CisgICAgRVhQRUNUX0ZBTFNFKHBlcm1p
c3Npb25SZXF1ZXN0ZWQpOworCisgICAgLy8gUGVybWlzc2lvbiByZXN1bHQgd2lsbCBiZSBjbGVh
cmVkIGFmdGVyIGRvY3VtZW50IGNoYW5nZXMuCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJhYm91dDpibGFuayJdXV07CisKKyAgICBzaG91bGRHcmFudFBlcm1pc3Npb25SZXF1ZXN0
ID0gdHJ1ZTsKKyAgICBwZXJtaXNzaW9uUmVxdWVzdGVkID0gZmFsc2U7CisgICAgcmVjZWl2ZWRT
Y3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJz
cGVlY2hyZWNvZ25pdGlvbi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UiXTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlcm1pc3Npb25SZXF1ZXN0ZWQpOworICAgIC8vIFNob3Vs
ZCBub3QgZ2V0IGVycm9yIG1lc3NhZ2UgYXMgcGVybWlzc2lvbiBpcyBncmFudGVkLgorICAgIEVY
UEVDVF9GQUxTRShyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL3NwZWVjaHJlY29nbml0aW9uLXVzZXItcGVybWlzc2lvbi1wZXJzaXN0ZW5jZS5odG1s
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9zcGVlY2hyZWNvZ25pdGlv
bi11c2VyLXBlcm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGNhNmVkMGM4
NGY0YmNlN2U4NmFkMTNjZGY3ZjMwNDIwZmJmY2EzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9zcGVlY2hyZWNvZ25pdGlvbi11c2VyLXBl
cm1pc3Npb24tcGVyc2lzdGVuY2UuaHRtbApAQCAtMCwwICsxLDI5IEBACis8Ym9keSBvbmxvYWQ9
InN0YXJ0KCkiPgorPHNjcmlwdD4KKwordmFyIHNwZWVjaFJlY29nbml0aW9uID0gbnVsbDsKK2Z1
bmN0aW9uIHN0YXJ0KCkKK3sKKyAgICBzdG9wKCk7CisKKyAgICBzcGVlY2hSZWNvZ25pdGlvbiA9
IG5ldyBTcGVlY2hSZWNvZ25pdGlvbigpOworICAgIHNwZWVjaFJlY29nbml0aW9uLm9uZXJyb3Ig
PSAoZXZlbnQpID0+IHsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVz
dEhhbmRsZXIucG9zdE1lc3NhZ2UoIkVycm9yOiAiICsgZXZlbnQuZXJyb3IgKyAiIC0gIiArICBl
dmVudC5tZXNzYWdlKTsKKyAgICB9CisgICAgc3BlZWNoUmVjb2duaXRpb24ub25lbmQgPSAoZXZl
bnQpID0+IHsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRs
ZXIucG9zdE1lc3NhZ2UoIkVuZCIpOworICAgIH0KKyAgICBzcGVlY2hSZWNvZ25pdGlvbi5zdGFy
dCgpOworfQorCitmdW5jdGlvbiBzdG9wKCkKK3sKKyAgICBpZiAoIXNwZWVjaFJlY29nbml0aW9u
KQorICAgICAgICByZXR1cm47CisKKyAgICBzcGVlY2hSZWNvZ25pdGlvbi5zdG9wKCk7CisgICAg
c3BlZWNoUmVjb2duaXRpb24gPSBudWxsOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IGZlODUzOWYzNTE4ZmU2NTcwZDc0MzU4ZGE3NzAwNGFl
MDliZjljZGQuLmQwZmY4MTY1ZmIxOTYxOTI2Y2I2YjVmNWU4MzEzNTkyMWY1MjNhNWQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtNDAzLDQgKzQwMyw3IEBAIGludGVyZmFjZSBUZXN0
UnVubmVyIHsKICAgICB1bmRlZmluZWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlk
ZVRpbWVyRm9yVGVzdGluZyhib29sZWFuIHZhbHVlKTsKICAgICB1bmRlZmluZWQgc2V0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRDb252ZXJzaW9uVVJMRm9yVGVzdGluZyhET01TdHJpbmcgdXJsKTsK
ICAgICB1bmRlZmluZWQgbWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRl
c3RpbmcoKTsKKworICAgIC8vIFNwZWVjaFJlY29nbml0aW9uCisgICAgdW5kZWZpbmVkIHNldElz
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChib29sZWFuIHZhbHVlKTsKIH07CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcAppbmRleCAwNzdlMjJiMzY2NzU2MDI0MTQ2ODA3NjU3MmE1NjEzNzgwYWIyNjc4Li41YjE5
NTQyZDA2OWI4MGVmY2ZkNzJmNGQ5YjAzMTE4NDNhMGM3ZGE0IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTIwNjks
NiArMjA2OSwxMSBAQCB2b2lkIFRlc3RSdW5uZXI6OmRpZFNldEFwcEJvdW5kRG9tYWluc0NhbGxi
YWNrKCkKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKERpZFNldEFwcEJvdW5kRG9tYWluc0Nh
bGxiYWNrSUQpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldElzU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uR3JhbnRlZChib29sIGdyYW50ZWQpCit7CisgICAgcG9zdFN5bmNocm9ub3VzUGFn
ZU1lc3NhZ2UoInNldElzU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZCIsIGdyYW50
ZWQpOworfQorCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogfSAvLyBuYW1l
c3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oCmluZGV4IDE0ZTUzYzUxM2EyOTJiMWEwMDNjZWZkMjM1MzdiNjA5NDg4YTdh
ZGEuLmIzMDJjOGUzMjEwYzQ2Y2NhMjY4ZjVmZGNmNTkzOThjYzczZDI5NjkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC01
MTUsNiArNTE1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRDb252ZXJzaW9uVVJMRm9yVGVzdGluZyhKU1N0cmluZ1JlZik7CiAgICAgdm9pZCBtYXJrUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZygpOwogCisgICAgdm9pZCBz
ZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCk7CisKIHByaXZhdGU6
CiAgICAgVGVzdFJ1bm5lcigpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCmluZGV4IDE2YWQxN2UyNGJhM2ViMWRlNzczNzllZmI4NTI0Yjg2NmUzYzdiNjcuLjdi
YTY3MmFjOWY5MjVmNjMyNWFhMDdmYTZmMTYxYTUwMjM1ZmJiOGMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSA8
V2ViS2l0L1dLUHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRy
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW5SZWYuaD4KKyNpbmNsdWRlIDxX
ZWJLaXQvV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFjay5oPgogI2luY2x1ZGUg
PFdlYktpdC9XS1RleHRDaGVja2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVVJMLmg+CiAjaW5j
bHVkZSA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmg+CkBAIC0yOTcsNiArMjk4
LDIxIEBAIHN0YXRpYyB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoKQogewogfQogCitz
dGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25SZXF1
ZXN0KFdLUGFnZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25DYWxsYmFja1JlZiBjYWxsYmFjaykKK3sKKyAgICBUZXN0Q29udHJvbGxlcjo6c2lu
Z2xldG9uKCkuY29tcGxldGVTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVjayhjYWxsYmFj
ayk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNvbXBsZXRlU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2hlY2soV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZiBj
YWxsYmFjaykKK3sKKyAgICBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrQ29t
cGxldGUoY2FsbGJhY2ssIG1faXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKTsK
K30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25HcmFudGVkKGJvb2wgZ3JhbnRlZCkKK3sKKyAgICBtX2lzU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uR3JhbnRlZCA9IGdyYW50ZWQ7Cit9CisKIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6
Y3JlYXRlT3RoZXJQYWdlKFdLUGFnZVJlZiwgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1
cmF0aW9uLCBXS05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvbiwgV0tXaW5kb3dG
ZWF0dXJlc1JlZiB3aW5kb3dGZWF0dXJlcywgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKICAg
ICBQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcgPSBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdlYlZp
ZXcqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CkBAIC02NTAsOCArNjY2LDggQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKGNvbnN0IFRlc3RP
cHRpb25zJiBvcHRpb25zKQogICAgIFdLSFRUUENvb2tpZVN0b3JlRGVsZXRlQWxsQ29va2llcyhX
S1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29va2llU3RvcmUod2Vic2l0ZURhdGFTdG9yZSgpKSwg
bnVsbHB0ciwgbnVsbHB0cik7CiAKICAgICBwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoY29uZmlndXJh
dGlvbi5nZXQoKSwgb3B0aW9ucyk7Ci0gICAgV0tQYWdlVUlDbGllbnRWMTQgcGFnZVVJQ2xpZW50
ID0gewotICAgICAgICB7IDE0LCBtX21haW5XZWJWaWV3LmdldCgpIH0sCisgICAgV0tQYWdlVUlD
bGllbnRWMTUgcGFnZVVJQ2xpZW50ID0geworICAgICAgICB7IDE1LCBtX21haW5XZWJWaWV3Lmdl
dCgpIH0sCiAgICAgICAgIDAsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MAogICAgICAgICAwLCAvLyBzaG93UGFnZQogICAgICAgICAwLCAvLyBjbG9zZQpAQCAtNzI0LDcg
Kzc0MCw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhj
b25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKICAgICAgICAgMCwgLy8gZGlkUmVzaWduSW5wdXRF
bGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlCiAgICAgICAgIDAsIC8vIHJlcXVlc3RTdG9y
YWdlQWNjZXNzQ29uZmlybQogICAgICAgICBzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uQWNjZXNzLAotICAgICAgICBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsCisgICAgICAg
IHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwsCisgICAgICAgIGRlY2lkZVBvbGljeUZvclNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VV
SUNsaWVudChtX21haW5XZWJWaWV3LT5wYWdlKCksICZwYWdlVUlDbGllbnQuYmFzZSk7CiAKQEAg
LTEwNTQsNiArMTA3MSw4IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNp
c3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgbV9zZXJ2ZXJU
cnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQgPSAwOwogICAgIG1fc2hvdWxkRGlzbWlz
c0phdmFTY3JpcHRBbGVydHNBc3luY2hyb25vdXNseSA9IGZhbHNlOwogCisgICAgc2V0SXNTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKHRydWUpOworCiAgICAgYXV0byBsb2FkQWJv
dXRCbGFuayA9IFt0aGlzXSB7CiAgICAgICAgIG1fZG9uZVJlc2V0dGluZyA9IGZhbHNlOwogICAg
ICAgICBXS1BhZ2VMb2FkVVJMKG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgYmxhbmtVUkwoKSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggMDkxNWVkOGNmYjVlYzRj
NTc4ZTI4OGE5OTg5NWE0OGIwOWVjNDNkYS4uYjU3YjhmN2EwNTk1MjNlY2Y4NzdhYjAxOTcyMGQ0
ZGJlNThmY2I1ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAt
MzUxLDYgKzM1MSw5IEBAIHB1YmxpYzoKIAogICAgIFdLVVJMUmVmIGN1cnJlbnRUZXN0VVJMKCkg
Y29uc3Q7CiAKKyAgICB2b2lkIGNvbXBsZXRlU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hl
Y2soV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxsYmFja1JlZik7CisgICAgdm9pZCBz
ZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCk7CisKIHByaXZhdGU6
CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVQYWdlQ29u
ZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9ucyYpOwogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4
dENvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlQ29udGV4dENvbmZpZ3VyYXRpb24oY29uc3QgVGVz
dE9wdGlvbnMmKSBjb25zdDsKQEAgLTY0MCw2ICs2NDMsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGJvb2wgbV9oYXNTZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIg
eyBmYWxzZSB9OwogI2VuZGlmCisKKyAgICBib29sIG1faXNTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25HcmFudGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBmMjQ3ZmI1NmEwNTY4M2Qy
OGZlMzhmNDU5NmQzM2YzYTA4NDdlYjFjLi4yOWI2NTJjNjAzOWVlOGM1MzA5ZmYwZGVhYWVlODBm
NTg0NTM5MDJjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApA
QCAtMTM0NSw2ICsxMzQ1LDExIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKG1lc3NhZ2VOYW1lLCAic2V0SXNTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVk
IikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldElzU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uR3JhbnRlZChib29sZWFuVmFsdWUobWVzc2FnZUJvZHkpKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjM2M2RhMDZiZjkzMTgwZjIwOGFiMTUy
N2U1OTljOTdmMzIwM2QwOS4uNGRlNDIxMDljMjY3ODNhYzFkYjM2YzA2YmNhNmI5MTQ5ODk2N2Yz
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTExLTEzICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBiYXNpYyBwZXJtaXNzaW9uIGNoZWNr
IGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4NDc2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTIyMjYzOD4K
KworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogVGVzdEV4
cGVjdGF0aW9uczoKKyAgICAgICAgKiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3Blcm1pc3Npb24t
ZXJyb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaHJlY29nbml0
aW9uL3Blcm1pc3Npb24tZXJyb3IuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zcGVlY2hy
ZWNvZ25pdGlvbi9yZXNvdXJjZXMvcmVtb3ZlZC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi1pbi1yZW1vdmVkLWlm
cmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc3BlZWNocmVjb2duaXRp
b24vc3RhcnQtcmVjb2duaXRpb24taW4tcmVtb3ZlZC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjAtMTEtMTIgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRm9yY2Ugd2hlZWwg
ZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSByb290IHRvIGJlIHBhc3NpdmUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDE3ZTAwZTM5NzVjOWFlZWRlN2M2MzVhMDUxOWFmNzc4MTZiOTQ2NjguLjJmMzc2NDZm
ODViY2ViNmJkNDMyNmQzNjI4ZTk5YmQ5OTk5NzU3YzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MTc3LDYgKzE3Nyw3IEBAIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtYWZ0
ZXItc3RvcmFnZS1jcmFzaC5odG1sIFsgU2tpcCBdCiBzdG9yYWdlL2luZGV4ZWRkYi9JREJPYmpl
Y3QtbGVhay5odG1sIFsgU2tpcCBdCiBmYXN0L2Zvcm1zL2NhbGwtdGV4dC1kaWQtY2hhbmdlLWlu
LXRleHQtZmllbGQtd2hlbi10eXBpbmcuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5LyBbIFNraXAgXQorZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNz
aW9uLWVycm9yLmh0bWwgWyBTa2lwIF0KIAogIyBPbmx5IHBhcnRpYWwgc3VwcG9ydCBvbiBDb2Nv
YSBwbGF0Zm9ybXMuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NwZWVjaC1hcGkv
IFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9u
L3Blcm1pc3Npb24tZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hy
ZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTNl
Nzk0ZGEwYTljOGM4Mjg1ZDJiYTM5NmY0OWU0NWNhOGMxNzUzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitWZXJpZnkgdGhhdCBlcnJvciBldmVudCBpcyBmaXJl
ZCB3aGVuIHBlcm1pc3Npb24gaXMgZGVuaWVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyByZWNvZ25pdGlvbiA9IG5ldyBTcGVlY2hSZWNvZ25pdGlvbigpIGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgorUEFTUyByZWNvZ25pdGlvbi5zdGFydCgpIGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgorUEFTUyBldmVudC5lcnJvciBpcyAibm90LWFsbG93ZWQiCitQQVNTIGV2ZW50
Lm1lc3NhZ2UgaXMgIlBlcm1pc3Npb24gY2hlY2sgZmFpbGVkIgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9wZXJtaXNzaW9uLWVycm9yLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTJkMDMzMzBlMjAzOTA0MTA2ODdkNTdlNmMxNjc5ZmFmNjhjYjg0MQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcGVybWlzc2lvbi1lcnJv
ci5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IGVycm9yIGV2ZW50IGlzIGZpcmVkIHdoZW4g
cGVybWlzc2lvbiBpcyBkZW5pZWQuIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
IGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIHRlc3RSdW5uZXIuc2V0SXNTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25HcmFudGVkKGZhbHNlKTsKK30KKworc2hvdWxkTm90VGhyb3coInJlY29n
bml0aW9uID0gbmV3IFNwZWVjaFJlY29nbml0aW9uKCkiKTsKK3Nob3VsZE5vdFRocm93KCJyZWNv
Z25pdGlvbi5zdGFydCgpIik7CityZWNvZ25pdGlvbi5vbmVycm9yID0gKGV2ZW50KSA9PiB7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC5lcnJvciIsICJub3QtYWxsb3dlZCIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQubWVzc2FnZSIsICJQZXJtaXNzaW9uIGNo
ZWNrIGZhaWxlZCIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vcmVzb3VyY2VzL3JlbW92ZWQtaWZyYW1l
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3Jlc291cmNlcy9yZW1v
dmVkLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzODdkMTEwYWUzNzI2MzZhNTAwZTdhMzRiYTYy
N2ZmMDU3M2YxODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJl
Y29nbml0aW9uL3Jlc291cmNlcy9yZW1vdmVkLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMTQgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHN0
YXJ0UmVjb2duaXRpb24oKSB7CisgICAgcmVjb2duaXRpb24gPSBuZXcgU3BlZWNoUmVjb2duaXRp
b24oKTsKKyAgICBwYXJlbnQucmVtb3ZlRnJhbWUoKTsKKyAgICByZWNvZ25pdGlvbi5zdGFydCgp
OworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0
YXJ0LXJlY29nbml0aW9uLWluLXJlbW92ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVjb2duaXRpb24taW4tcmVtb3ZlZC1p
ZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5ZjBkYTQzYzgzMjMwYWMxNDllMDgxMDA5
NTQ5ZWNkOWI0OTJiOGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVj
aHJlY29nbml0aW9uL3N0YXJ0LXJlY29nbml0aW9uLWluLXJlbW92ZWQtaWZyYW1lLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDExIEBACitWZXJpZnkgdGhhdCBwcm9jZXNzIGRvZXMgbm90IGNyYXNo
IHdoZW4gc3RhcnRpbmcgcmVjb2duaXRpb24gaW4gYSByZW1vdmVkIGlmcmFtZS4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaWZyYW1lLnBhcmVudE5vZGUucmVtb3ZlQ2hp
bGQoaWZyYW1lKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgaWZyYW1lLmNvbnRlbnRX
aW5kb3cuc3RhcnRSZWNvZ25pdGlvbigpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vc3RhcnQtcmVjb2duaXRpb24taW4t
cmVtb3ZlZC1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24v
c3RhcnQtcmVjb2duaXRpb24taW4tcmVtb3ZlZC1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzc2
ZTUzMjc1ZDBlMDMwMjk1ZjVkMDQyNGJhNmRkZDY5YzFiYzM0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi1pbi1y
ZW1vdmVkLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlZlcmlmeSB0aGF0IHByb2Nlc3MgZG9lcyBu
b3QgY3Jhc2ggd2hlbiBzdGFydGluZyByZWNvZ25pdGlvbiBpbiBhIHJlbW92ZWQgaWZyYW1lLiIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgnaWZyYW1lJylbMF07CisgICAgc2hvdWxkTm90VGhyb3coImlmcmFtZS5jb250
ZW50V2luZG93LnN0YXJ0UmVjb2duaXRpb24oKSIpOyAKK30KKworZnVuY3Rpb24gcmVtb3ZlRnJh
bWUoKQoreworICAgIHNob3VsZE5vdFRocm93KCJpZnJhbWUucGFyZW50Tm9kZS5yZW1vdmVDaGls
ZChpZnJhbWUpIik7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgdGVzdCwg
ZmFsc2UpOworPC9zY3JpcHQ+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3JlbW92ZWQtaWZyYW1l
Lmh0bWwiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTU3
NzhkODEyN2JhNjMxYzRhMDE1NGVlYTAyYmFiZmU3MzUwMjE2Zi4uN2Q1MzRhMDZhMjJhM2IyOTdi
NzU0M2Q0MWI4NjlmNTRlZjBiY2MyYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTgwMyw0ICs4MDMsNSBAQCBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2Nsb3NlZC1wb3J0LWRlbGF5Lmh0bWwgWyBQYXNzIF0KIAogIyBXZWJLaXQyIG9ubHku
CiBqcy90aHJvdy1sYXJnZS1zdHJpbmctb29tLmh0bWwgWyBQYXNzIF0KK2Zhc3Qvc3BlZWNocmVj
b2duaXRpb24vcGVybWlzc2lvbi1lcnJvci5odG1sIFsgUGFzcyBdCiBmdWxsc2NyZWVuL2Z1bGwt
c2NyZWVuLWVudGVyLXdoaWxlLWV4aXRpbmcuaHRtbCBbIFBhc3MgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>